@seams/wallet 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1880) hide show
  1. package/README.md +4 -5
  2. package/THIRD_PARTY_NOTICES.md +1 -113
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +12 -3
  5. package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
  6. package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
  7. package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
  8. package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
  9. package/dist/esm/SeamsWeb/operations/auth/login.js +34 -49
  10. package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
  11. package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +2 -3
  12. package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
  13. package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
  14. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
  15. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
  16. package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
  17. package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
  18. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +11 -12
  19. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +2 -9
  20. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
  21. package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
  22. package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
  23. package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
  24. package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
  25. package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
  26. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
  27. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +5 -9
  28. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
  29. package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +5 -20
  30. package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
  31. package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
  32. package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
  33. package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
  34. package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -1
  35. package/dist/esm/SeamsWeb/publicApi/auth.js +2 -1
  36. package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
  37. package/dist/esm/SeamsWeb/publicApi/tempo.js +6 -0
  38. package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
  39. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +28 -19
  40. package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
  41. package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
  42. package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
  43. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
  44. package/dist/esm/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +29 -0
  45. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
  46. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +194 -385
  47. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
  48. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
  49. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
  50. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
  51. package/dist/esm/advanced.js +0 -1
  52. package/dist/esm/base-styles.js +2 -2
  53. package/dist/esm/build-paths.js +0 -2
  54. package/dist/esm/core/accountData/near/accountProjection.js +0 -1
  55. package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
  56. package/dist/esm/core/browser/walletIframe/events.js +1 -5
  57. package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
  58. package/dist/esm/core/config/chains.js +1 -2
  59. package/dist/esm/core/config/configBuilder.js +0 -1
  60. package/dist/esm/core/config/configHelpers.js +0 -1
  61. package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
  62. package/dist/esm/core/indexedDB/index.js +3 -4
  63. package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +6 -14
  64. package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
  65. package/dist/esm/core/indexedDB/schemaNames.js +0 -22
  66. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
  67. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
  68. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
  69. package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
  70. package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
  71. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
  72. package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
  73. package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
  74. package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
  75. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
  76. package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
  77. package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
  78. package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
  79. package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
  80. package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
  81. package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +72 -125
  82. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
  83. package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
  84. package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
  85. package/dist/esm/core/signingEngine/assembly/ports/recovery.js +1 -1
  86. package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
  87. package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
  88. package/dist/esm/core/signingEngine/chains/evm/display/functionSelectors.js +2 -5
  89. package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
  90. package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
  91. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportFlow.js +2 -2
  92. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -29
  93. package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
  94. package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
  95. package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +2 -5
  96. package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
  97. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
  98. package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
  99. package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
  100. package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +2 -2
  101. package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
  102. package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
  103. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
  104. package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
  105. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +7 -5
  106. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
  107. package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +3 -7
  108. package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
  109. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
  110. package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
  111. package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
  112. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
  113. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
  114. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +2 -2
  115. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
  116. package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
  117. package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
  118. package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
  119. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
  120. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +2 -1
  121. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
  122. package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
  123. package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
  124. package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +1 -10
  125. package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
  126. package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +107 -24
  127. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
  128. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
  129. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +4 -15
  130. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +12 -16
  131. package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
  132. package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
  133. package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
  134. package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
  135. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
  136. package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
  137. package/dist/esm/core/signingEngine/session/identity/selectLane.js +7 -21
  138. package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +3 -9
  139. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +4 -16
  140. package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
  141. package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
  142. package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
  143. package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
  144. package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
  145. package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
  146. package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
  147. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
  148. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +13 -49
  149. package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
  150. package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -10
  151. package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
  152. package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
  153. package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
  154. package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
  155. package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
  156. package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
  157. package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
  158. package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
  159. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
  160. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
  161. package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
  162. package/dist/esm/core/signingEngine/threshold/commitQueueShared.js +20 -6
  163. package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
  164. package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
  165. package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
  166. package/dist/esm/core/signingEngine/threshold/ecdsa/signingQueue.js +8 -50
  167. package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
  168. package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
  169. package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
  170. package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
  171. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
  172. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +4 -3
  173. package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
  174. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
  175. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
  176. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +25 -16
  177. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
  178. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
  179. package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
  180. package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
  181. package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
  182. package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
  183. package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
  184. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
  185. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
  186. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
  187. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
  188. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
  189. package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
  190. package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
  191. package/dist/esm/core/signingEngine/workerManager/deviceLinkingPorts.js +67 -48
  192. package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
  193. package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
  194. package/dist/esm/core/signingEngine/workerManager/workerTransport.js +4 -47
  195. package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
  196. package/dist/esm/core/types/accountIds.js +0 -1
  197. package/dist/esm/core/types/sdkSentEvents.js +1 -2
  198. package/dist/esm/core/types/signer-worker.js +1 -36
  199. package/dist/esm/core/walletRuntimePaths/base.js +11 -1
  200. package/dist/esm/plugins/headers.js +0 -1
  201. package/dist/esm/plugins/next.js +0 -1
  202. package/dist/esm/plugins/plugin-utils.js +0 -1
  203. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
  204. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
  205. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +3 -3
  206. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +2 -2
  207. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +8 -8
  208. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
  209. package/dist/esm/react/components/AccountMenuButton/MenuItem.css +17 -0
  210. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
  211. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +0 -5
  212. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
  213. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +21 -13
  214. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
  215. package/dist/esm/react/components/AccountMenuButton/icons/GlobeIcon.js +12 -27
  216. package/dist/esm/react/components/AccountMenuButton/icons/KeyIcon.js +12 -27
  217. package/dist/esm/react/components/AccountMenuButton/icons/LaptopIcon.js +4 -19
  218. package/dist/esm/react/components/AccountMenuButton/icons/LinkIcon.js +4 -19
  219. package/dist/esm/react/components/AccountMenuButton/icons/LockIcon.js +11 -26
  220. package/dist/esm/react/components/AccountMenuButton/icons/MailIcon.js +10 -25
  221. package/dist/esm/react/components/AccountMenuButton/icons/RecoveryCodesIcon.js +16 -31
  222. package/dist/esm/react/components/AccountMenuButton/icons/ScanIcon.js +9 -24
  223. package/dist/esm/react/components/AccountMenuButton/icons/SlidersIcon.js +14 -29
  224. package/dist/esm/react/components/AccountMenuButton/icons/SmartphoneIcon.js +11 -26
  225. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
  226. package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +27 -0
  227. package/dist/esm/react/components/AccountMenuButton/icons/strokeIcon.js +7 -17
  228. package/dist/esm/react/components/AccountMenuButton/index.js +11 -11
  229. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
  230. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
  231. package/dist/esm/react/components/QRCodeScanner.css +0 -15
  232. package/dist/esm/react/components/QRCodeScanner.js +2 -2
  233. package/dist/esm/react/components/ShowQRCode.css +0 -14
  234. package/dist/esm/react/components/ShowQRCode.js +4 -4
  235. package/dist/esm/react/components/theme/design-tokens.js +1 -2
  236. package/dist/esm/react/context/index.js +1 -1
  237. package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
  238. package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
  239. package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
  240. package/dist/esm/react/context/useSeamsContextValue.js +1 -1
  241. package/dist/esm/react/context/useSeamsWithSdkFlow.js +2 -3
  242. package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -15
  243. package/dist/esm/react/hooks/useAccountInput.js +4 -4
  244. package/dist/esm/react/hooks/useNearClient.js +3 -3
  245. package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
  246. package/dist/esm/react/hooks/useQRCamera.js +2 -2
  247. package/dist/esm/react/hooks/useWallet.js +1 -1
  248. package/dist/esm/react/index.js +10 -10
  249. package/dist/esm/react/styles/styles.css +25 -86
  250. package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
  251. package/dist/esm/react/transactionReview/boundCalls.js +2 -2
  252. package/dist/esm/react/transactionReview/contract.js +1 -1
  253. package/dist/esm/react/transactionReview/controller.js +2 -2
  254. package/dist/esm/react/transactionReview/snapshot.js +2 -2
  255. package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  256. package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
  257. package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
  258. package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  259. package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
  260. package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  261. package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
  262. package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
  263. package/dist/esm/sdk/base-Xtd32asf.js +1 -0
  264. package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
  265. package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
  266. package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
  267. package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  268. package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  269. package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  270. package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
  271. package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  272. package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
  273. package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
  274. package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  275. package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
  276. package/dist/esm/sdk/display-jK7_hYho.js +1 -0
  277. package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
  278. package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  279. package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  280. package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  281. package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  282. package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  283. package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  284. package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  285. package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
  286. package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
  287. package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  288. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  289. package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
  290. package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  291. package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  292. package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  293. package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
  294. package/dist/esm/sdk/host-BAqOYnju.js +1 -0
  295. package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
  296. package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
  297. package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  298. package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
  299. package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  300. package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
  301. package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
  302. package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  303. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  304. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  305. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  306. package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
  307. package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  308. package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
  309. package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  310. package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  311. package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
  312. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  313. package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
  314. package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  315. package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
  316. package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  317. package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
  318. package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
  319. package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  320. package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
  321. package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  322. package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  323. package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  324. package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
  325. package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
  326. package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
  327. package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  328. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  329. package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
  330. package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  331. package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  332. package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  333. package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
  334. package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
  335. package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
  336. package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  337. package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  338. package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
  339. package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  340. package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  341. package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
  342. package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  343. package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  344. package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
  345. package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  346. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  347. package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  348. package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
  349. package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
  350. package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
  351. package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
  352. package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
  353. package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
  354. package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  355. package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  356. package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
  357. package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
  358. package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
  359. package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  360. package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
  361. package/dist/esm/sdk/tx-confirm-ui.js +23 -204
  362. package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
  363. package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
  364. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
  365. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
  366. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
  367. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
  368. package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  369. package/dist/esm/sdk/wallet-ui.css +1 -6134
  370. package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  371. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  372. package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  373. package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  374. package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  375. package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  376. package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
  377. package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  378. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -8
  379. package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
  380. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
  381. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
  382. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
  383. package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
  384. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +6 -9
  385. package/dist/esm/shared-ts/src/near/actions.js +10 -1
  386. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  387. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
  388. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  389. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
  390. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +3 -8
  391. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
  392. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
  393. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +13 -17
  394. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  395. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  396. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +4 -2
  397. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
  398. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
  399. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
  400. package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
  401. package/dist/esm/shared-ts/src/utils/errors.js +0 -1
  402. package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
  403. package/dist/esm/shared-ts/src/utils/index.js +4 -5
  404. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  405. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  406. package/dist/esm/shared-ts/src/utils/registrationIntent.js +2 -9
  407. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
  408. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
  409. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +2 -3
  410. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
  411. package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
  412. package/dist/esm/shared-ts/src/utils/validation.js +0 -1
  413. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  414. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
  415. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  416. package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
  417. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  418. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
  419. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
  420. package/dist/esm/theme/base-styles.js +11 -11
  421. package/dist/esm/utils/deviceDetection.js +16 -1
  422. package/dist/esm/utils/menuItemBlink.js +24 -0
  423. package/dist/esm/utils/qrScanner.js +288 -0
  424. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
  425. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
  426. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  427. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.d.ts +0 -42
  428. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
  429. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  430. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
  431. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
  432. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  433. package/dist/public/headers.manifest.json +1 -1
  434. package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  435. package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
  436. package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
  437. package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  438. package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
  439. package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  440. package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
  441. package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
  442. package/dist/public/sdk/base-Xtd32asf.js +1 -0
  443. package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
  444. package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
  445. package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
  446. package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  447. package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  448. package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  449. package/dist/public/sdk/chains-yAls2d9X.js +1 -0
  450. package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  451. package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
  452. package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
  453. package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  454. package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
  455. package/dist/public/sdk/display-jK7_hYho.js +1 -0
  456. package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
  457. package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  458. package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  459. package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  460. package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  461. package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  462. package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  463. package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  464. package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
  465. package/dist/public/sdk/events-BJyVcnsn.js +1 -0
  466. package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  467. package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  468. package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
  469. package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  470. package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  471. package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  472. package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
  473. package/dist/public/sdk/host-BAqOYnju.js +1 -0
  474. package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
  475. package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
  476. package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  477. package/dist/public/sdk/keccak-zexutGfG.js +1 -0
  478. package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  479. package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
  480. package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
  481. package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  482. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  483. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  484. package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  485. package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
  486. package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  487. package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
  488. package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  489. package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  490. package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
  491. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  492. package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
  493. package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  494. package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
  495. package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  496. package/dist/public/sdk/registration-Btozh7uh.js +1 -0
  497. package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
  498. package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  499. package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
  500. package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  501. package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  502. package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  503. package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
  504. package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
  505. package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
  506. package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  507. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  508. package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
  509. package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  510. package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  511. package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  512. package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
  513. package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
  514. package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
  515. package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  516. package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  517. package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
  518. package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  519. package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  520. package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
  521. package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  522. package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  523. package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
  524. package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  525. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  526. package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  527. package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
  528. package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
  529. package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
  530. package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
  531. package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
  532. package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
  533. package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  534. package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  535. package/dist/public/sdk/trace-M34pNGuF.js +1 -0
  536. package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
  537. package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
  538. package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  539. package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
  540. package/dist/public/sdk/tx-confirm-ui.js +23 -204
  541. package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
  542. package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
  543. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
  544. package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
  545. package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
  546. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
  547. package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  548. package/dist/public/sdk/wallet-ui.css +1 -6134
  549. package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  550. package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  551. package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  552. package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  553. package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  554. package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  555. package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
  556. package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  557. package/dist/public/sdk/workers/device-linking-key.worker.js +567 -2131
  558. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1529 -2683
  559. package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
  560. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +59 -346
  561. package/dist/public/sdk/workers/email-otp.worker.js +307 -2185
  562. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  563. package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
  564. package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
  565. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  566. package/dist/public/sdk/workers/near-signer.worker.js +16 -718
  567. package/dist/public/sdk/workers/near_signer.wasm +0 -0
  568. package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
  569. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
  570. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
  571. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  572. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  573. package/dist/public/sdk/workers/shamir3pass.worker.js +0 -134
  574. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  575. package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
  576. package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
  577. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  578. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +136 -1636
  579. package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
  580. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  581. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  582. package/dist/public/wallet-assets.manifest.json +234 -258
  583. package/dist/public/wallet-service/index.html +4 -4
  584. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  585. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
  586. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
  587. package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
  588. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
  589. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
  590. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
  591. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
  592. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
  593. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  594. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -12
  595. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
  596. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  597. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  598. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  599. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  600. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -845
  601. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
  602. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
  603. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
  604. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  605. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  606. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
  607. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  608. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  609. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  610. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
  611. package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
  612. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
  613. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  614. package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
  615. package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
  616. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
  617. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  618. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
  619. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  620. package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
  621. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  622. package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
  623. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
  624. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
  625. package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
  626. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
  627. package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
  628. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
  629. package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
  630. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  631. package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
  632. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
  633. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  634. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  635. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
  636. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  637. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  638. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  639. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  640. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
  641. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  642. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
  643. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
  644. package/dist/types/wallet/build-paths.d.ts +1 -2
  645. package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +2 -0
  646. package/dist/types/wallet/src/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.d.ts +11 -0
  647. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +2 -1
  648. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
  649. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +3 -20
  650. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
  651. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/walletActivation.d.ts +3 -4
  652. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.d.ts +2 -10
  653. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
  654. package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
  655. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
  656. package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
  657. package/dist/types/wallet/src/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.d.ts +1 -1
  658. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -16
  659. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
  660. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
  661. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
  662. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
  663. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  664. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
  665. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.d.ts +2 -1
  666. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
  667. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +12 -5
  668. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
  669. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
  670. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +5 -15
  671. package/dist/types/wallet/src/advanced.d.ts +1 -1
  672. package/dist/types/wallet/src/core/accountData/near/keyMaterial.d.ts +3 -5
  673. package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
  674. package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
  675. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +2 -38
  676. package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
  677. package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +3 -4
  678. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
  679. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.d.ts +7 -12
  680. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
  681. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
  682. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
  683. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
  684. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
  685. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +8 -7
  686. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  687. package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
  688. package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +7 -51
  689. package/dist/types/wallet/src/core/platform/http.d.ts +3 -5
  690. package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
  691. package/dist/types/wallet/src/core/platform/ports.d.ts +4 -58
  692. package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
  693. package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
  694. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
  695. package/dist/types/wallet/src/core/rpcClients/near/NearRpcError.d.ts +1 -2
  696. package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +2 -11
  697. package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
  698. package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +2 -9
  699. package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryPrepare.d.ts +2 -14
  700. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
  701. package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
  702. package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
  703. package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
  704. package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
  705. package/dist/types/wallet/src/core/signingEngine/chains/near/payloads.d.ts +2 -10
  706. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaDerivationExport.d.ts +3 -4
  707. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportFlow.d.ts +4 -8
  708. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
  709. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +7 -6
  710. package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +2 -21
  711. package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
  712. package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
  713. package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
  714. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.d.ts +1 -1
  715. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.d.ts +3 -4
  716. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/nonceResolution.d.ts +3 -4
  717. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +7 -18
  718. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.d.ts +1 -0
  719. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +10 -5
  720. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +4 -14
  721. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
  722. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.d.ts +3 -5
  723. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
  724. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
  725. package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNep413.d.ts +3 -7
  726. package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
  727. package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -4
  728. package/dist/types/wallet/src/core/signingEngine/interfaces/operationDeps.d.ts +3 -5
  729. package/dist/types/wallet/src/core/signingEngine/interfaces/operationStepUpPreparation.d.ts +3 -5
  730. package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
  731. package/dist/types/wallet/src/core/signingEngine/nonce/nearTransactionReadiness.d.ts +3 -5
  732. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +2 -11
  733. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/clientCeremony.d.ts +5 -22
  734. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.d.ts +3 -14
  735. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
  736. package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
  737. package/dist/types/wallet/src/core/signingEngine/session/availability/persistedAvailableSigningLanes.d.ts +1 -1
  738. package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
  739. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +37 -14
  740. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
  741. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaPublication.d.ts +3 -5
  742. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
  743. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +2 -7
  744. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
  745. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/walletUnlock.d.ts +6 -15
  746. package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
  747. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
  748. package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +3 -8
  749. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
  750. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +3 -7
  751. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionReader.d.ts +3 -6
  752. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +5 -14
  753. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +3 -5
  754. package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
  755. package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
  756. package/dist/types/wallet/src/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.d.ts +5 -10
  757. package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +4 -7
  758. package/dist/types/wallet/src/core/signingEngine/session/material/capabilityPreparationResult.d.ts +3 -22
  759. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaCapabilityHydration.d.ts +3 -4
  760. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
  761. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +3 -4
  762. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +5 -0
  763. package/dist/types/wallet/src/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.d.ts +5 -10
  764. package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +4 -9
  765. package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
  766. package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +3 -5
  767. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaBootstrap.d.ts +3 -4
  768. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaSessionProvision.d.ts +3 -4
  769. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
  770. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
  771. package/dist/types/wallet/src/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.d.ts +7 -25
  772. package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
  773. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
  774. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
  775. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
  776. package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
  777. package/dist/types/wallet/src/core/signingEngine/session/sealedRecovery/sealedRecovery.types.d.ts +3 -4
  778. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +3 -16
  779. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
  780. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.d.ts +6 -26
  781. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/persistencePorts.d.ts +3 -4
  782. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
  783. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
  784. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
  785. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
  786. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmTypes.d.ts +11 -36
  787. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
  788. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +5 -8
  789. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +4 -7
  790. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +3 -9
  791. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
  792. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +7 -32
  793. package/dist/types/wallet/src/core/signingEngine/threshold/commitQueueShared.d.ts +10 -10
  794. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.d.ts +1 -1
  795. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
  796. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
  797. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +3 -8
  798. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/signingQueue.d.ts +1 -7
  799. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/commitQueue.d.ts +1 -6
  800. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
  801. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/walletSession.d.ts +6 -36
  802. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
  803. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +3 -4
  804. package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
  805. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +5 -9
  806. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
  807. package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
  808. package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
  809. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
  810. package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
  811. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
  812. package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
  813. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
  814. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignLifecycle.d.ts +5 -16
  815. package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
  816. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +9 -109
  817. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
  818. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +2 -12
  819. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -10
  820. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
  821. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
  822. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
  823. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
  824. package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
  825. package/dist/types/wallet/src/core/types/index.d.ts +0 -18
  826. package/dist/types/wallet/src/core/types/linkDevice.d.ts +3 -18
  827. package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +5 -18
  828. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -23
  829. package/dist/types/wallet/src/core/types/seams.d.ts +17 -71
  830. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
  831. package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
  832. package/dist/types/wallet/src/externalEvm/types.d.ts +5 -12
  833. package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
  834. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -4
  835. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -4
  836. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -4
  837. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -4
  838. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -4
  839. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -4
  840. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -4
  841. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -4
  842. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -4
  843. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -4
  844. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +5 -0
  845. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
  846. package/dist/types/wallet/src/react/hooks/useAccountInput.d.ts +1 -22
  847. package/dist/types/wallet/src/react/transactionReview/controller.d.ts +3 -10
  848. package/dist/types/wallet/src/utils/menuItemBlink.d.ts +9 -0
  849. package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
  850. package/dist/workers/device-linking-key.worker.js +567 -2131
  851. package/dist/workers/ecdsa-derivation-client.worker.js +1529 -2683
  852. package/dist/workers/ecdsa-online-client.worker.js +1 -273
  853. package/dist/workers/ecdsa-presign-client.worker.js +59 -346
  854. package/dist/workers/email-otp.worker.js +307 -2185
  855. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  856. package/dist/workers/evm-crypto.worker.js +0 -188
  857. package/dist/workers/evm_crypto.wasm +0 -0
  858. package/dist/workers/evm_crypto_bg.wasm +0 -0
  859. package/dist/workers/near-signer.worker.js +16 -718
  860. package/dist/workers/near_signer.wasm +0 -0
  861. package/dist/workers/passkey-confirm.worker.js +0 -134
  862. package/dist/workers/passkey-mpc-export.worker.js +149 -506
  863. package/dist/workers/passkey-mpc-session.worker.js +0 -134
  864. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  865. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  866. package/dist/workers/shamir3pass.worker.js +0 -134
  867. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  868. package/dist/workers/tempo-signer.worker.js +0 -134
  869. package/dist/workers/tempo_signer.wasm +0 -0
  870. package/dist/workers/tempo_signer_bg.wasm +0 -0
  871. package/dist/workers/wallet-custody-ceremony.worker.js +136 -1636
  872. package/dist/workers/wallet_custody_ceremony.js +0 -14
  873. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  874. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  875. package/package.json +1 -14
  876. package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  877. package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
  878. package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
  879. package/dist/esm/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  880. package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
  881. package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -181
  882. package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
  883. package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
  884. package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -182
  885. package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
  886. package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -75
  887. package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
  888. package/dist/esm/components/QRCodeScanner.css +0 -502
  889. package/dist/esm/components/ShowQRCode.css +0 -345
  890. package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -239
  891. package/dist/esm/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  892. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  893. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  894. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  895. package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  896. package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  897. package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
  898. package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
  899. package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
  900. package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1909
  901. package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
  902. package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
  903. package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
  904. package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
  905. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
  906. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
  907. package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
  908. package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
  909. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
  910. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
  911. package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
  912. package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
  913. package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4398
  914. package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
  915. package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -143
  916. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -36
  917. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
  918. package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
  919. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
  920. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
  921. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
  922. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
  923. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
  924. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
  925. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
  926. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
  927. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
  928. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
  929. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
  930. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
  931. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
  932. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
  933. package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
  934. package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
  935. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
  936. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
  937. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
  938. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -525
  939. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
  940. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -219
  941. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
  942. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
  943. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
  944. package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
  945. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
  946. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
  947. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
  948. package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
  949. package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
  950. package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
  951. package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
  952. package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
  953. package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
  954. package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
  955. package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
  956. package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
  957. package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
  958. package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
  959. package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
  960. package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
  961. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
  962. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
  963. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -386
  964. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
  965. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
  966. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
  967. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
  968. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
  969. package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -369
  970. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
  971. package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
  972. package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
  973. package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
  974. package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
  975. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
  976. package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
  977. package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
  978. package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -565
  979. package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
  980. package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
  981. package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -23
  982. package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
  983. package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
  984. package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
  985. package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
  986. package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
  987. package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
  988. package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
  989. package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
  990. package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
  991. package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
  992. package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
  993. package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -238
  994. package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
  995. package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
  996. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3908
  997. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
  998. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
  999. package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
  1000. package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
  1001. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
  1002. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
  1003. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
  1004. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
  1005. package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
  1006. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
  1007. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
  1008. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
  1009. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  1010. package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
  1011. package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
  1012. package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -625
  1013. package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
  1014. package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
  1015. package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
  1016. package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
  1017. package/dist/esm/react/base-styles.js +0 -13
  1018. package/dist/esm/react/build-paths.js +0 -111
  1019. package/dist/esm/react/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  1020. package/dist/esm/react/config.js +0 -37
  1021. package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
  1022. package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
  1023. package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
  1024. package/dist/esm/react/core/accountData/near/profileId.js +0 -24
  1025. package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
  1026. package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
  1027. package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
  1028. package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
  1029. package/dist/esm/react/core/config/chains.js +0 -90
  1030. package/dist/esm/react/core/config/configBuilder.js +0 -231
  1031. package/dist/esm/react/core/config/configHelpers.js +0 -183
  1032. package/dist/esm/react/core/config/defaultConfigs.js +0 -120
  1033. package/dist/esm/react/core/config/defineConfig.js +0 -48
  1034. package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
  1035. package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
  1036. package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
  1037. package/dist/esm/react/core/indexedDB/index.js +0 -60
  1038. package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
  1039. package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
  1040. package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
  1041. package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
  1042. package/dist/esm/react/core/indexedDB/normalization.js +0 -24
  1043. package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -482
  1044. package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -879
  1045. package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
  1046. package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
  1047. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
  1048. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
  1049. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
  1050. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
  1051. package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
  1052. package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
  1053. package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
  1054. package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
  1055. package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
  1056. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
  1057. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
  1058. package/dist/esm/react/core/indexedDB/singletons.js +0 -7
  1059. package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
  1060. package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
  1061. package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
  1062. package/dist/esm/react/core/platform/secretSources.js +0 -111
  1063. package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
  1064. package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
  1065. package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
  1066. package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
  1067. package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
  1068. package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
  1069. package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
  1070. package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
  1071. package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
  1072. package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
  1073. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
  1074. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
  1075. package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
  1076. package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
  1077. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
  1078. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
  1079. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
  1080. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
  1081. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
  1082. package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
  1083. package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
  1084. package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
  1085. package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
  1086. package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
  1087. package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
  1088. package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
  1089. package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
  1090. package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
  1091. package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
  1092. package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
  1093. package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
  1094. package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
  1095. package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
  1096. package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
  1097. package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
  1098. package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
  1099. package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
  1100. package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -75
  1101. package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
  1102. package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
  1103. package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
  1104. package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
  1105. package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
  1106. package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
  1107. package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
  1108. package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
  1109. package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
  1110. package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
  1111. package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
  1112. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
  1113. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
  1114. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -243
  1115. package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
  1116. package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -216
  1117. package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
  1118. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
  1119. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
  1120. package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -195
  1121. package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
  1122. package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
  1123. package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
  1124. package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
  1125. package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
  1126. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
  1127. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
  1128. package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
  1129. package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
  1130. package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
  1131. package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
  1132. package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
  1133. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
  1134. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
  1135. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
  1136. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
  1137. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
  1138. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
  1139. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
  1140. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
  1141. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
  1142. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
  1143. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
  1144. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
  1145. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
  1146. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
  1147. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
  1148. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
  1149. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -383
  1150. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
  1151. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
  1152. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -512
  1153. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
  1154. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
  1155. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
  1156. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
  1157. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -76
  1158. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
  1159. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
  1160. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -631
  1161. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -391
  1162. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
  1163. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
  1164. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
  1165. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -143
  1166. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
  1167. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
  1168. package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
  1169. package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
  1170. package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
  1171. package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
  1172. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
  1173. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
  1174. package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
  1175. package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
  1176. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
  1177. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
  1178. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
  1179. package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
  1180. package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
  1181. package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
  1182. package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
  1183. package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
  1184. package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
  1185. package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
  1186. package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
  1187. package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
  1188. package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
  1189. package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
  1190. package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
  1191. package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
  1192. package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
  1193. package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
  1194. package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
  1195. package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
  1196. package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
  1197. package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
  1198. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
  1199. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
  1200. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1216
  1201. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
  1202. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
  1203. package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
  1204. package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
  1205. package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1073
  1206. package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
  1207. package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
  1208. package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -213
  1209. package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
  1210. package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -47
  1211. package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
  1212. package/dist/esm/react/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  1213. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
  1214. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
  1215. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -941
  1216. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
  1217. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
  1218. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
  1219. package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
  1220. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
  1221. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
  1222. package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
  1223. package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
  1224. package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
  1225. package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
  1226. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
  1227. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
  1228. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
  1229. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
  1230. package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
  1231. package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
  1232. package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
  1233. package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
  1234. package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
  1235. package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
  1236. package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
  1237. package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
  1238. package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
  1239. package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
  1240. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
  1241. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
  1242. package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
  1243. package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
  1244. package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -349
  1245. package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
  1246. package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
  1247. package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
  1248. package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
  1249. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
  1250. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
  1251. package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
  1252. package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -323
  1253. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
  1254. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -510
  1255. package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
  1256. package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
  1257. package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
  1258. package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
  1259. package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
  1260. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
  1261. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
  1262. package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
  1263. package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
  1264. package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
  1265. package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
  1266. package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
  1267. package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
  1268. package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
  1269. package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
  1270. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
  1271. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
  1272. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
  1273. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
  1274. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
  1275. package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
  1276. package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
  1277. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
  1278. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
  1279. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
  1280. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -317
  1281. package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
  1282. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
  1283. package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
  1284. package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
  1285. package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
  1286. package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
  1287. package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
  1288. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
  1289. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
  1290. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -764
  1291. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
  1292. package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
  1293. package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
  1294. package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
  1295. package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
  1296. package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
  1297. package/dist/esm/react/core/signingEngine/session/public.js +0 -44
  1298. package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
  1299. package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
  1300. package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
  1301. package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
  1302. package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
  1303. package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
  1304. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
  1305. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
  1306. package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
  1307. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
  1308. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
  1309. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
  1310. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
  1311. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
  1312. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
  1313. package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
  1314. package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
  1315. package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
  1316. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
  1317. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
  1318. package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
  1319. package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
  1320. package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
  1321. package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
  1322. package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
  1323. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
  1324. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
  1325. package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
  1326. package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
  1327. package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
  1328. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
  1329. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
  1330. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
  1331. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
  1332. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
  1333. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
  1334. package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
  1335. package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
  1336. package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
  1337. package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -125
  1338. package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -616
  1339. package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
  1340. package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
  1341. package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
  1342. package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
  1343. package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
  1344. package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -58
  1345. package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -52
  1346. package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
  1347. package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
  1348. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
  1349. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
  1350. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
  1351. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
  1352. package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
  1353. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
  1354. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
  1355. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -745
  1356. package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
  1357. package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
  1358. package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
  1359. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
  1360. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
  1361. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
  1362. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
  1363. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
  1364. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
  1365. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
  1366. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
  1367. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
  1368. package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
  1369. package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
  1370. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
  1371. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
  1372. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
  1373. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
  1374. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
  1375. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
  1376. package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
  1377. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
  1378. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
  1379. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
  1380. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
  1381. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
  1382. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
  1383. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
  1384. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
  1385. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
  1386. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
  1387. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
  1388. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
  1389. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
  1390. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
  1391. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
  1392. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
  1393. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
  1394. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
  1395. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
  1396. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
  1397. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
  1398. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -287
  1399. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
  1400. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
  1401. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
  1402. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
  1403. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
  1404. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
  1405. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
  1406. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
  1407. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
  1408. package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
  1409. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
  1410. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
  1411. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
  1412. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
  1413. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
  1414. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
  1415. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
  1416. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  1417. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
  1418. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  1419. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  1420. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
  1421. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -258
  1422. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
  1423. package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
  1424. package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
  1425. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
  1426. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
  1427. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
  1428. package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
  1429. package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
  1430. package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
  1431. package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
  1432. package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
  1433. package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
  1434. package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
  1435. package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
  1436. package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
  1437. package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
  1438. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
  1439. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
  1440. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
  1441. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
  1442. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
  1443. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
  1444. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
  1445. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
  1446. package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
  1447. package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  1448. package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
  1449. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -323
  1450. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
  1451. package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
  1452. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
  1453. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
  1454. package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
  1455. package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  1456. package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
  1457. package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -777
  1458. package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
  1459. package/dist/esm/react/core/types/accountIds.js +0 -26
  1460. package/dist/esm/react/core/types/actionBuilders.js +0 -73
  1461. package/dist/esm/react/core/types/confirmationConfig.js +0 -39
  1462. package/dist/esm/react/core/types/eventLogging.js +0 -28
  1463. package/dist/esm/react/core/types/linkDevice.js +0 -49
  1464. package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
  1465. package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
  1466. package/dist/esm/react/core/types/signer-worker.js +0 -50
  1467. package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
  1468. package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
  1469. package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
  1470. package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
  1471. package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
  1472. package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
  1473. package/dist/esm/react/externalEvm/boundary.js +0 -309
  1474. package/dist/esm/react/externalEvm/controller.js +0 -440
  1475. package/dist/esm/react/externalEvm/types.js +0 -31
  1476. package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
  1477. package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
  1478. package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
  1479. package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
  1480. package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
  1481. package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
  1482. package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
  1483. package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
  1484. package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
  1485. package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
  1486. package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
  1487. package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
  1488. package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
  1489. package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
  1490. package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
  1491. package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
  1492. package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
  1493. package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
  1494. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
  1495. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
  1496. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
  1497. package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
  1498. package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
  1499. package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
  1500. package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
  1501. package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
  1502. package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
  1503. package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
  1504. package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
  1505. package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
  1506. package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
  1507. package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
  1508. package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
  1509. package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -118
  1510. package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
  1511. package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
  1512. package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -273
  1513. package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
  1514. package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -134
  1515. package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
  1516. package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
  1517. package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -171
  1518. package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
  1519. package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
  1520. package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
  1521. package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -545
  1522. package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
  1523. package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
  1524. package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
  1525. package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
  1526. package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
  1527. package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
  1528. package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
  1529. package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
  1530. package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -58
  1531. package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
  1532. package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
  1533. package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -66
  1534. package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
  1535. package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
  1536. package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -483
  1537. package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1538. package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1539. package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1540. package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1541. package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
  1542. package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
  1543. package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
  1544. package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
  1545. package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
  1546. package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
  1547. package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -40
  1548. package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
  1549. package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1550. package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
  1551. package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
  1552. package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
  1553. package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
  1554. package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
  1555. package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
  1556. package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
  1557. package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
  1558. package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -46
  1559. package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -39
  1560. package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
  1561. package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
  1562. package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
  1563. package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
  1564. package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
  1565. package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
  1566. package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
  1567. package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
  1568. package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
  1569. package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
  1570. package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
  1571. package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
  1572. package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
  1573. package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
  1574. package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
  1575. package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -396
  1576. package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -442
  1577. package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
  1578. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
  1579. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
  1580. package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
  1581. package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
  1582. package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
  1583. package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
  1584. package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
  1585. package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
  1586. package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
  1587. package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
  1588. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
  1589. package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
  1590. package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
  1591. package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
  1592. package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
  1593. package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
  1594. package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
  1595. package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
  1596. package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
  1597. package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
  1598. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
  1599. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
  1600. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
  1601. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
  1602. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
  1603. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -254
  1604. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
  1605. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
  1606. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
  1607. package/dist/esm/react/theme/base-styles.js +0 -117
  1608. package/dist/esm/react/theme/palette.js +0 -170
  1609. package/dist/esm/react/utils/deviceDetection.js +0 -95
  1610. package/dist/esm/react/utils/intentDigest.js +0 -77
  1611. package/dist/esm/react/utils/qrScanner.js +0 -297
  1612. package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1613. package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
  1614. package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
  1615. package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1616. package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
  1617. package/dist/esm/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
  1618. package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
  1619. package/dist/esm/sdk/adapters-B4JeK1nJ.js +0 -4864
  1620. package/dist/esm/sdk/base-D1B5mGin.js +0 -64
  1621. package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
  1622. package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
  1623. package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
  1624. package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1625. package/dist/esm/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
  1626. package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1627. package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
  1628. package/dist/esm/sdk/challengeDelivery-Dd0586fo.js +0 -74
  1629. package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
  1630. package/dist/esm/sdk/configHelpers-vAQCzUD0.js +0 -179
  1631. package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1632. package/dist/esm/sdk/defaultConfigs-B3c16M_8.js +0 -355
  1633. package/dist/esm/sdk/display-KdIL0ff7.js +0 -126
  1634. package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
  1635. package/dist/esm/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
  1636. package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1637. package/dist/esm/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
  1638. package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1639. package/dist/esm/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
  1640. package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
  1641. package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1642. package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1643. package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
  1644. package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
  1645. package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1646. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
  1647. package/dist/esm/sdk/exactSessionState-CiD5fBEs.js +0 -2612
  1648. package/dist/esm/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
  1649. package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1650. package/dist/esm/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
  1651. package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
  1652. package/dist/esm/sdk/host-BWBbCAMu.js +0 -533
  1653. package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
  1654. package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1655. package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1656. package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
  1657. package/dist/esm/sdk/keyMaterialBrands-CX41hur6.js +0 -94
  1658. package/dist/esm/sdk/localOnly-Bg8UuLZ5.js +0 -146
  1659. package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
  1660. package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1661. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1662. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
  1663. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
  1664. package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1665. package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1666. package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
  1667. package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1668. package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1669. package/dist/esm/sdk/passkey-custody-Bk1jAknm.js +0 -487
  1670. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
  1671. package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
  1672. package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1673. package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
  1674. package/dist/esm/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
  1675. package/dist/esm/sdk/registration-BZDzDv91.js +0 -14414
  1676. package/dist/esm/sdk/registration-BzVHODuD.js +0 -233
  1677. package/dist/esm/sdk/registrationAccounts-CKku_Sgy.js +0 -33
  1678. package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
  1679. package/dist/esm/sdk/registrationIntent-D0PxwEY4.js +0 -393
  1680. package/dist/esm/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
  1681. package/dist/esm/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
  1682. package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
  1683. package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
  1684. package/dist/esm/sdk/router-C5lF_J_u.js +0 -4721
  1685. package/dist/esm/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
  1686. package/dist/esm/sdk/runtime-auth-DFTqwj3u.js +0 -5540
  1687. package/dist/esm/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
  1688. package/dist/esm/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
  1689. package/dist/esm/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
  1690. package/dist/esm/sdk/runtime-export-FZWj0HxJ.js +0 -112
  1691. package/dist/esm/sdk/runtime-near-B9cjurVD.js +0 -278
  1692. package/dist/esm/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
  1693. package/dist/esm/sdk/runtime-recovery-C-vfFKF3.js +0 -45
  1694. package/dist/esm/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
  1695. package/dist/esm/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
  1696. package/dist/esm/sdk/runtimeLoader-hod6T2-m.js +0 -44
  1697. package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1698. package/dist/esm/sdk/secp256k1-el9aE4Sv.js +0 -2504
  1699. package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
  1700. package/dist/esm/sdk/sessionPolicy-CHiilOAB.js +0 -453
  1701. package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
  1702. package/dist/esm/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
  1703. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
  1704. package/dist/esm/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
  1705. package/dist/esm/sdk/signNear-Bblwn2kT.js +0 -5929
  1706. package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
  1707. package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
  1708. package/dist/esm/sdk/signerLoader-D7Aey0FD.js +0 -23
  1709. package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
  1710. package/dist/esm/sdk/signingFlow-rZfPegH9.js +0 -1320
  1711. package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1712. package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1713. package/dist/esm/sdk/trace-rHe0wz7q.js +0 -127
  1714. package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
  1715. package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
  1716. package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1717. package/dist/esm/sdk/transactionState-DP9O8F6f.js +0 -1885
  1718. package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
  1719. package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
  1720. package/dist/esm/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
  1721. package/dist/esm/sdk/walletAuthority-BQBxgUBn.js +0 -1251
  1722. package/dist/esm/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
  1723. package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1724. package/dist/esm/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
  1725. package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1726. package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1727. package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1728. package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1729. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1730. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1731. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1732. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1733. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1734. package/dist/esm/styles.css +0 -43
  1735. package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1736. package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
  1737. package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
  1738. package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1739. package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
  1740. package/dist/public/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
  1741. package/dist/public/sdk/actions-CCvThiKe.js +0 -225
  1742. package/dist/public/sdk/adapters-B4JeK1nJ.js +0 -4864
  1743. package/dist/public/sdk/base-D1B5mGin.js +0 -64
  1744. package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
  1745. package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
  1746. package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
  1747. package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1748. package/dist/public/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
  1749. package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1750. package/dist/public/sdk/chains-BMh3btVo.js +0 -124
  1751. package/dist/public/sdk/challengeDelivery-Dd0586fo.js +0 -74
  1752. package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
  1753. package/dist/public/sdk/configHelpers-vAQCzUD0.js +0 -179
  1754. package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1755. package/dist/public/sdk/defaultConfigs-B3c16M_8.js +0 -355
  1756. package/dist/public/sdk/display-KdIL0ff7.js +0 -126
  1757. package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
  1758. package/dist/public/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
  1759. package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1760. package/dist/public/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
  1761. package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1762. package/dist/public/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
  1763. package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
  1764. package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1765. package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1766. package/dist/public/sdk/errors-93h9uAW9.js +0 -92
  1767. package/dist/public/sdk/events-DYoBL2HO.js +0 -8
  1768. package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1769. package/dist/public/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
  1770. package/dist/public/sdk/exactSessionState-CiD5fBEs.js +0 -2612
  1771. package/dist/public/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
  1772. package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1773. package/dist/public/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
  1774. package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
  1775. package/dist/public/sdk/host-BWBbCAMu.js +0 -533
  1776. package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
  1777. package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1778. package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1779. package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
  1780. package/dist/public/sdk/keyMaterialBrands-CX41hur6.js +0 -94
  1781. package/dist/public/sdk/localOnly-Bg8UuLZ5.js +0 -146
  1782. package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
  1783. package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1784. package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1785. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
  1786. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
  1787. package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1788. package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1789. package/dist/public/sdk/normalization-CBt413-z.js +0 -22
  1790. package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1791. package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1792. package/dist/public/sdk/passkey-custody-Bk1jAknm.js +0 -487
  1793. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
  1794. package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
  1795. package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1796. package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
  1797. package/dist/public/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
  1798. package/dist/public/sdk/registration-BZDzDv91.js +0 -14414
  1799. package/dist/public/sdk/registration-BzVHODuD.js +0 -233
  1800. package/dist/public/sdk/registrationAccounts-CKku_Sgy.js +0 -33
  1801. package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
  1802. package/dist/public/sdk/registrationIntent-D0PxwEY4.js +0 -393
  1803. package/dist/public/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
  1804. package/dist/public/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
  1805. package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
  1806. package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
  1807. package/dist/public/sdk/router-C5lF_J_u.js +0 -4721
  1808. package/dist/public/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
  1809. package/dist/public/sdk/runtime-auth-DFTqwj3u.js +0 -5540
  1810. package/dist/public/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
  1811. package/dist/public/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
  1812. package/dist/public/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
  1813. package/dist/public/sdk/runtime-export-FZWj0HxJ.js +0 -112
  1814. package/dist/public/sdk/runtime-near-B9cjurVD.js +0 -278
  1815. package/dist/public/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
  1816. package/dist/public/sdk/runtime-recovery-C-vfFKF3.js +0 -45
  1817. package/dist/public/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
  1818. package/dist/public/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
  1819. package/dist/public/sdk/runtimeLoader-hod6T2-m.js +0 -44
  1820. package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1821. package/dist/public/sdk/secp256k1-el9aE4Sv.js +0 -2504
  1822. package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
  1823. package/dist/public/sdk/sessionPolicy-CHiilOAB.js +0 -453
  1824. package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
  1825. package/dist/public/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
  1826. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
  1827. package/dist/public/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
  1828. package/dist/public/sdk/signNear-Bblwn2kT.js +0 -5929
  1829. package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
  1830. package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
  1831. package/dist/public/sdk/signerLoader-D7Aey0FD.js +0 -23
  1832. package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
  1833. package/dist/public/sdk/signingFlow-rZfPegH9.js +0 -1320
  1834. package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1835. package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1836. package/dist/public/sdk/trace-rHe0wz7q.js +0 -127
  1837. package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
  1838. package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
  1839. package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1840. package/dist/public/sdk/transactionState-DP9O8F6f.js +0 -1885
  1841. package/dist/public/sdk/types-Dx9fczU7.js +0 -111
  1842. package/dist/public/sdk/validation-gat4LEKm.js +0 -409
  1843. package/dist/public/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
  1844. package/dist/public/sdk/walletAuthority-BQBxgUBn.js +0 -1251
  1845. package/dist/public/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
  1846. package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1847. package/dist/public/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
  1848. package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1849. package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1850. package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1851. package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1852. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  1853. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  1854. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  1855. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  1856. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  1857. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  1858. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  1859. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  1860. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
  1861. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
  1862. package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
  1863. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/coordinatorRuntime.d.ts +0 -43
  1864. package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
  1865. package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
  1866. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
  1867. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
  1868. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
  1869. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
  1870. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
  1871. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
  1872. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
  1873. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.d.ts +0 -5
  1874. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.d.ts +0 -5
  1875. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.d.ts +0 -5
  1876. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
  1877. package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
  1878. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
  1879. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
  1880. /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
@@ -1,4721 +0,0 @@
1
- import { H as toBasePath, N as joinNormalizedUrl, V as stripTrailingSlashes, h as parseMpcMaterialActivationRef } from "./domainIds-lcrFg6Sa.js";
2
- import { b as stripFunctionsShallow, c as isBoolean, f as isPlainSignedTransactionLike, o as extractBorshBytesFromPlainSignedTx, u as isObject } from "./validation-gat4LEKm.js";
3
- import { a as reviewedConfirmationConfig, n as assertTransactionReviewValid, o as sameTransactionReviewIdentity, r as parseTransactionReviewState, s as transactionReviewCancellationCode, t as TransactionReviewError } from "./transactionReview-DpHLTznU.js";
4
- import { n as walletIframeSurfaceIdFromBoundary } from "./walletIframeIdentity-DB6Z2EC9.js";
5
- import { _ as parseHostedAuthMenuExternalAuthResolution, a as buildPMRedeemHostedWalletSeamsSessionPayload, c as isDeviceLinkEmailOtpBaseFactorSelectionProgressV1, g as parseHostedAuthMenuExternalAuthRequest, h as parseHostedAuthMenuErrorEvent, i as buildHostedAuthMenuCancelPayload, l as isDeviceLinkTargetFactorActivationProgressV1, m as parseHostedAuthMenuDemoEmailOtpDelivery, n as WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH, r as WALLET_PROTOCOL_VERSION, s as hostedAuthMenuSessionIdFromBoundary, t as HOSTED_AUTH_MENU_ERROR_EVENT, u as isRegistrationTimingSpanV1, v as parseHostedAuthMenuOpenRequest, x as parseWalletIframeSurfaceMeasurement, y as parseHostedAuthMenuOutcome } from "./messages-C7Dbx9iN.js";
6
- import { o as toError } from "./errors-93h9uAW9.js";
7
- import { t as secureRandomBase36 } from "./secureRandomId-BORsmdS4.js";
8
- import "./sessionPolicy-CHiilOAB.js";
9
- import { kt as parseWalletSessionOperationCredentialV1 } from "./ecdsaPresignLifecycle-BFOTNYCK.js";
10
- import "./capabilityKinds-hvYqa6S_.js";
11
- import { r as cloneResolvedChainConfig } from "./chains-BMh3btVo.js";
12
- import { c as toWalletId, s as thresholdEcdsaChainTargetsEqual } from "./ecdsaChainTarget-Bl-JWyuw.js";
13
- import "./signerDomain-IEAVrOrc.js";
14
- import { $ as parseLinkedDeviceListRequestV1, et as parseLinkedDeviceListResultV1, nt as parseLinkedDeviceRevokeResultV1, tt as parseLinkedDeviceRevokeRequestV1 } from "./evmFamilyEcdsaIdentity-Co5XDcEA.js";
15
- import "./walletAuthority-BQBxgUBn.js";
16
- import "./encoders-D8d07vpx.js";
17
- import { o as walletIdFromString } from "./registrationIds-DLSdEKSv.js";
18
- import { _ as isWalletFlowEvent, c as classifyLinkDeviceFlowEvent, d as createLinkDeviceFlowEvent, g as createUnlockFlowEvent, i as RegistrationEventPhase, l as createAccountSyncFlowEvent, m as createSigningFlowEvent, n as KeyExportEventPhase, o as SigningEventPhase, p as createRegistrationFlowEvent, r as LinkDeviceEventPhase, s as UnlockEventPhase, t as AccountSyncEventPhase, u as createKeyExportFlowEvent, v as parseNearProvisioningState, y as parseSdkLifecycleEvent } from "./sdkSentEvents-MqDkbQg1.js";
19
- import "./signingSessionSeal-Cu-GHm6y.js";
20
- import { c as serializeRegistrationCredentialWithPRF, s as serializeAuthenticationCredentialWithPRF } from "./helpers-ZrowMnev.js";
21
- import { S as requireTempoFeeTokenPreferenceSigningRequest, _ as provisionalWalletIframeSurfaceGeometry, a as parseWalletIframeExactSessionState, c as buildPMUnlockPayload, f as needsExplicitActivation, g as isWalletIframeModalGeometry, h as anchorWalletIframeModalGeometry, i as parseWalletIframeExactSessionLockResult, m as ensureOverlayBase, o as parseWalletSessionFromBoundary, p as OverlayController, t as WalletIframeSessionExpiredRequestError, v as resolveWalletIframeSurfaceGeometry, w as WebAuthnBridgeMessage } from "./exactSessionState-CiD5fBEs.js";
22
- import { h as parseExactEd25519ExportMaterialIdentity, m as parseExactEcdsaSigningLaneIdentity } from "./exactSigningLaneIdentity-DQeqPMST.js";
23
- import { n as SignedTransaction } from "./NearClient-DY4NfHeD.js";
24
- import { n as PASSKEY_MANAGER_DEFAULT_CONFIGS } from "./defaultConfigs-B3c16M_8.js";
25
- //#region src/SeamsWeb/walletIframe/client/transactionReviewReservation.ts
26
- var TransactionReviewReservation = class {
27
- constructor(connectionId, identity, slot, title, validity, confirmationConfig, generation, lease, assertCurrent, cancelRequest, finishRequest, resumeRequest) {
28
- this.connectionId = connectionId;
29
- this.identity = identity;
30
- this.slot = slot;
31
- this.title = title;
32
- this.confirmationConfig = confirmationConfig;
33
- this.lease = lease;
34
- this.assertCurrent = assertCurrent;
35
- this.cancelRequest = cancelRequest;
36
- this.finishRequest = finishRequest;
37
- this.resumeRequest = resumeRequest;
38
- this.currentState = { kind: "reviewing" };
39
- this.listeners = /* @__PURE__ */ new Set();
40
- this.metadata = Object.freeze({
41
- kind: "transaction_review_v1",
42
- connectionId,
43
- requestId: identity.requestId,
44
- surfaceId: identity.surfaceId,
45
- generation,
46
- validity
47
- });
48
- }
49
- get state() {
50
- return this.currentState;
51
- }
52
- subscribe(listener) {
53
- this.listeners.add(listener);
54
- return this.removeListener.bind(this, listener);
55
- }
56
- removeListener(listener) {
57
- this.listeners.delete(listener);
58
- }
59
- transition(state) {
60
- this.currentState = state;
61
- for (const listener of this.listeners) listener();
62
- }
63
- beginDispatch() {
64
- if (this.currentState.kind !== "reviewing") throw new TransactionReviewError("review_owner_disposed", "This review is no longer available");
65
- this.assertCurrent();
66
- assertTransactionReviewValid(this.metadata.validity);
67
- this.transition({
68
- kind: "preparing",
69
- prepared: false
70
- });
71
- }
72
- prepared() {
73
- if (this.currentState.kind === "preparing") this.transition({
74
- kind: "preparing",
75
- prepared: true
76
- });
77
- }
78
- activate() {
79
- if (this.currentState.kind !== "preparing" || !this.currentState.prepared) return false;
80
- this.transition({ kind: "activating" });
81
- return true;
82
- }
83
- activated() {
84
- if (this.currentState.kind === "activating") this.transition({ kind: "wallet_approval" });
85
- }
86
- returnToReview() {
87
- if (this.currentState.kind !== "wallet_approval") return false;
88
- this.transition({ kind: "reviewing_again" });
89
- return true;
90
- }
91
- resume() {
92
- if (this.currentState.kind !== "reviewing_again") return;
93
- this.assertCurrent();
94
- assertTransactionReviewValid(this.metadata.validity);
95
- this.transition({
96
- kind: "preparing",
97
- prepared: true
98
- });
99
- this.resumeRequest();
100
- }
101
- signing() {
102
- if (this.currentState.kind === "wallet_approval") this.transition({ kind: "signing" });
103
- }
104
- cancel(error) {
105
- if (this.currentState.kind === "settled" || this.currentState.kind === "signing") return;
106
- this.cancelRequest(error);
107
- }
108
- finish() {
109
- if (this.currentState.kind === "settled") return;
110
- this.transition({ kind: "settled" });
111
- this.finishRequest();
112
- this.lease.release();
113
- this.listeners.clear();
114
- }
115
- };
116
- //#endregion
117
- //#region src/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.ts
118
- /**
119
- * OnEventsProgressBus - Client-Side Communication Layer
120
- *
121
- * Routes progress events for the wallet iframe.
122
- *
123
- * Key Responsibilities:
124
- * - Progress Routing: Dispatches typed progress payloads to per-request subscribers
125
- * - Sticky Subscriptions: Supports long-running subscriptions that persist after completion
126
- * - Event Statistics: Tracks counts/timestamps for debugging
127
- */
128
- var OnEventsProgressBus = class {
129
- constructor(logger) {
130
- this.subs = /* @__PURE__ */ new Map();
131
- this.logger = logger;
132
- }
133
- /**
134
- * Register a subscriber for a requestId.
135
- */
136
- register({ requestId, onProgress, sticky = false }) {
137
- this.subs.set(requestId, {
138
- onProgress,
139
- sticky,
140
- stats: {
141
- count: 0,
142
- flow: null,
143
- phase: null,
144
- status: null,
145
- lastAt: null
146
- }
147
- });
148
- this.log("register", {
149
- requestId,
150
- sticky
151
- });
152
- }
153
- /**
154
- * Unregister a subscriber.
155
- */
156
- unregister(requestId) {
157
- if (this.subs.delete(requestId)) this.log("unregister", { requestId });
158
- }
159
- /**
160
- * Remove all subscribers.
161
- */
162
- clearAll() {
163
- this.subs.clear();
164
- this.log("clearAll");
165
- }
166
- isSticky(requestId) {
167
- return !!this.subs.get(requestId)?.sticky;
168
- }
169
- /**
170
- * Dispatch a progress payload to a request's subscriber.
171
- */
172
- dispatch({ requestId, payload }) {
173
- const sub = this.subs.get(requestId);
174
- if (sub) {
175
- this.bumpStats(sub, payload);
176
- try {
177
- sub.onProgress?.(payload);
178
- } catch {}
179
- this.log("dispatch", {
180
- requestId,
181
- flow: sub.stats.flow || void 0,
182
- phase: sub.stats.phase || void 0,
183
- status: sub.stats.status || void 0,
184
- sticky: sub.sticky
185
- });
186
- return true;
187
- }
188
- const sticky = this.findSticky(requestId);
189
- if (sticky) {
190
- this.bumpStats(sticky, payload);
191
- try {
192
- sticky.onProgress?.(payload);
193
- } catch {}
194
- this.log("dispatch-sticky", {
195
- requestId,
196
- flow: sticky.stats.flow || void 0,
197
- phase: sticky.stats.phase || void 0,
198
- status: sticky.stats.status || void 0
199
- });
200
- return true;
201
- }
202
- this.log("dispatch-miss", isWalletFlowEvent(payload) ? {
203
- requestId,
204
- flow: payload.flow,
205
- phase: payload.phase,
206
- status: payload.status
207
- } : isDeviceLinkTargetFactorActivationProgressV1(payload) ? {
208
- requestId,
209
- event: payload.event,
210
- activationKind: payload.activation.kind
211
- } : isDeviceLinkEmailOtpBaseFactorSelectionProgressV1(payload) ? {
212
- requestId,
213
- event: payload.event,
214
- choiceCount: payload.choices.length
215
- } : {
216
- requestId,
217
- span: payload.span
218
- });
219
- return false;
220
- }
221
- findSticky(requestId) {
222
- const sub = this.subs.get(requestId);
223
- if (sub && sub.sticky) return sub;
224
- return null;
225
- }
226
- bumpStats(sub, payload) {
227
- sub.stats.count += 1;
228
- if (isWalletFlowEvent(payload)) {
229
- sub.stats.flow = payload.flow ? String(payload.flow) : null;
230
- sub.stats.phase = payload.phase ? String(payload.phase) : null;
231
- sub.stats.status = payload.status ? String(payload.status) : null;
232
- } else {
233
- sub.stats.flow = null;
234
- sub.stats.phase = null;
235
- sub.stats.status = null;
236
- }
237
- sub.stats.lastAt = Date.now();
238
- }
239
- log(msg, data) {
240
- try {
241
- this.logger?.(msg, data);
242
- } catch {}
243
- }
244
- };
245
- //#endregion
246
- //#region src/core/rpcClients/relayer/registrationSignerSetRequest.ts
247
- function registrationSignerSetRequestSelection(selection) {
248
- return selection;
249
- }
250
- //#endregion
251
- //#region src/SeamsWeb/walletIframe/shared/is-dev-host.ts
252
- function isDevHost(opts = {}) {
253
- const env = opts.nodeEnv ?? globalThis?.process?.env?.NODE_ENV;
254
- if (env && env !== "production") return true;
255
- const hostname = opts.hostname ?? (typeof window !== "undefined" ? window.location.hostname || "" : "");
256
- return /localhost|127\.(?:0|[1-9]\d?)\.(?:0|[1-9]\d?)\.(?:0|[1-9]\d?)|\.local(?:host)?$/i.test(hostname);
257
- }
258
- //#endregion
259
- //#region src/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.ts
260
- const loadedIframes = /* @__PURE__ */ new WeakSet();
261
- function markIframeLoaded(iframe) {
262
- loadedIframes.add(iframe);
263
- }
264
- function isIframeLoaded(iframe) {
265
- return loadedIframes.has(iframe);
266
- }
267
- function trackIframeLoad(iframe) {
268
- if (isIframeLoaded(iframe)) return;
269
- iframe.addEventListener("load", () => markIframeLoaded(iframe), { once: true });
270
- }
271
- function buildAllowAttr(walletOrigin) {
272
- return `publickey-credentials-get 'self' ${walletOrigin}; publickey-credentials-create 'self' ${walletOrigin}; clipboard-read; clipboard-write`;
273
- }
274
- function isOverlayForOrigin(el, walletOrigin) {
275
- const dsOrigin = el.dataset?.seamsOrigin;
276
- if (dsOrigin) return dsOrigin === walletOrigin;
277
- try {
278
- return new URL(el.src).origin === walletOrigin;
279
- } catch {
280
- return false;
281
- }
282
- }
283
- function removeExistingOverlaysForOrigin(walletOrigin) {
284
- if (typeof document === "undefined") return;
285
- const matches = Array.from(document.querySelectorAll("iframe.seams-wallet-overlay")).filter((el) => isOverlayForOrigin(el, walletOrigin));
286
- if (!matches.length) return;
287
- if (isDevHost()) {
288
- const routerIds = matches.map((el) => el.dataset?.seamsRouterId).filter((v) => typeof v === "string" && v.length > 0);
289
- console.warn(`[IframeTransport] Found existing wallet overlay iframe(s) for ${walletOrigin}. This usually indicates multiple SDK instances. Removing old iframe(s) to avoid duplicates.`, {
290
- count: matches.length,
291
- routerIds
292
- });
293
- }
294
- for (const el of matches) try {
295
- (el.closest("dialog.seams-wallet-overlay-dialog") ?? el).remove();
296
- } catch {}
297
- }
298
- function createWalletIframe(opts) {
299
- const iframe = document.createElement("iframe");
300
- iframe.classList.add("seams-wallet-overlay", "is-hidden");
301
- try {
302
- ensureOverlayBase(iframe);
303
- } catch {}
304
- iframe.setAttribute("width", "0");
305
- iframe.setAttribute("height", "0");
306
- iframe.setAttribute("aria-hidden", "true");
307
- iframe.setAttribute("tabindex", "-1");
308
- iframe.setAttribute("loading", "eager");
309
- iframe.setAttribute("fetchpriority", "high");
310
- iframe.dataset.seamsRouterId = opts.testOptions?.routerId || "";
311
- if (opts.testOptions?.ownerTag) iframe.dataset.seamsOwner = opts.testOptions.ownerTag;
312
- iframe.dataset.seamsOrigin = opts.walletOrigin;
313
- try {
314
- iframe.setAttribute("allow", buildAllowAttr(opts.walletOrigin));
315
- } catch {
316
- iframe.setAttribute("allow", "publickey-credentials-get 'self'; publickey-credentials-create 'self'; clipboard-read; clipboard-write");
317
- }
318
- trackIframeLoad(iframe);
319
- if (opts.onLoad) iframe.addEventListener("load", opts.onLoad);
320
- iframe.src = opts.walletServiceUrl.toString();
321
- opts.mountParent.appendChild(iframe);
322
- return iframe;
323
- }
324
- //#endregion
325
- //#region src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.ts
326
- const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
327
- function createAbortError() {
328
- return /* @__PURE__ */ new Error("Wallet iframe connect aborted");
329
- }
330
- const WALLET_IFRAME_READY_TIMEOUT_CODE = "WALLET_IFRAME_READY_TIMEOUT";
331
- var WalletIframeReadyTimeoutError = class extends Error {
332
- constructor(args) {
333
- super(`[IframeTransport] Wallet iframe READY timed out after ${args.elapsedMs}ms`);
334
- this.code = WALLET_IFRAME_READY_TIMEOUT_CODE;
335
- this.name = "WalletIframeReadyTimeoutError";
336
- this.elapsedMs = args.elapsedMs;
337
- this.timeoutMs = args.timeoutMs;
338
- }
339
- };
340
- var WalletIframeProtocolVersionMismatchError = class extends Error {
341
- constructor(args) {
342
- super(`[IframeTransport] Wallet iframe protocol version mismatch: expected ${args.expectedProtocolVersion}, received ${args.receivedProtocolVersion ?? "missing"}`);
343
- this.code = WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH;
344
- this.name = "WalletIframeProtocolVersionMismatchError";
345
- this.expectedProtocolVersion = args.expectedProtocolVersion;
346
- this.receivedProtocolVersion = args.receivedProtocolVersion;
347
- }
348
- };
349
- function protocolVersionFromReady(data) {
350
- if (data.type !== "READY") return null;
351
- const payload = data.payload;
352
- if (!isObject(payload)) return null;
353
- const protocolVersion = payload.protocolVersion;
354
- return typeof protocolVersion === "string" ? protocolVersion : null;
355
- }
356
- function createProtocolVersionMismatchError(args) {
357
- if (args.data.type === "ERROR") {
358
- const payload = args.data.payload;
359
- if (payload?.code !== "WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH") return null;
360
- const details = payload.details;
361
- return new WalletIframeProtocolVersionMismatchError({
362
- expectedProtocolVersion: isObject(details) && typeof details.expectedProtocolVersion === "string" ? details.expectedProtocolVersion : args.expectedProtocolVersion,
363
- receivedProtocolVersion: isObject(details) && typeof details.receivedProtocolVersion === "string" ? details.receivedProtocolVersion : null
364
- });
365
- }
366
- if (args.data.type !== "READY") return null;
367
- const receivedProtocolVersion = protocolVersionFromReady(args.data);
368
- if (receivedProtocolVersion === args.expectedProtocolVersion) return null;
369
- return new WalletIframeProtocolVersionMismatchError({
370
- expectedProtocolVersion: args.expectedProtocolVersion,
371
- receivedProtocolVersion
372
- });
373
- }
374
- function throwIfAborted(signal) {
375
- if (signal?.aborted) throw createAbortError();
376
- }
377
- function createAbortPromise(signal) {
378
- if (!signal) return null;
379
- if (signal.aborted) return Promise.reject(createAbortError());
380
- return new Promise((_, reject) => {
381
- signal.addEventListener("abort", () => reject(createAbortError()), { once: true });
382
- });
383
- }
384
- async function waitForLoad(iframe, debug, signal) {
385
- if (isIframeLoaded(iframe)) return;
386
- trackIframeLoad(iframe);
387
- await new Promise((resolve, reject) => {
388
- let done = false;
389
- let abortListener = null;
390
- const finish = () => {
391
- if (done) return;
392
- done = true;
393
- if (abortListener && signal) signal.removeEventListener("abort", abortListener);
394
- resolve();
395
- };
396
- const abort = () => {
397
- if (done) return;
398
- done = true;
399
- if (abortListener && signal) signal.removeEventListener("abort", abortListener);
400
- reject(createAbortError());
401
- };
402
- const timeout = window.setTimeout(() => {
403
- if (!done && debug) console.debug("[IframeTransport] waitForLoad did not observe load event within 150ms; continuing");
404
- finish();
405
- }, 150);
406
- iframe.addEventListener("load", () => {
407
- clearTimeout(timeout);
408
- finish();
409
- }, { once: true });
410
- if (signal) {
411
- abortListener = () => {
412
- clearTimeout(timeout);
413
- abort();
414
- };
415
- if (signal.aborted) abortListener();
416
- else signal.addEventListener("abort", abortListener, { once: true });
417
- }
418
- });
419
- }
420
- async function waitForBootHint(isBooted, timeoutMs, signal, scheduler) {
421
- if (isBooted() || timeoutMs <= 0) return;
422
- const now = scheduler?.now ?? Date.now;
423
- const sleep = scheduler?.sleep ?? defaultSleep;
424
- const start = now();
425
- while (!isBooted() && now() - start < timeoutMs) {
426
- throwIfAborted(signal);
427
- await sleep(50);
428
- }
429
- }
430
- async function performHandshake(opts) {
431
- const now = opts.scheduler?.now ?? Date.now;
432
- const sleep = opts.scheduler?.sleep ?? defaultSleep;
433
- const start = now();
434
- const abortPromise = createAbortPromise(opts.signal);
435
- let resolved = false;
436
- let attempt = 0;
437
- let warnedNullOrigin = false;
438
- let resolveReady;
439
- let rejectReady;
440
- const readyPromise = new Promise((resolve, reject) => {
441
- resolveReady = resolve;
442
- rejectReady = reject;
443
- });
444
- const resolveOnce = (port) => {
445
- if (resolved) return;
446
- resolved = true;
447
- resolveReady(port);
448
- };
449
- const rejectOnce = (err) => {
450
- if (resolved) return;
451
- resolved = true;
452
- rejectReady(err);
453
- };
454
- while (!resolved) {
455
- throwIfAborted(opts.signal);
456
- const elapsed = now() - start;
457
- if (elapsed >= opts.connectTimeoutMs) {
458
- console.debug("[IframeTransport] handshake timeout after %d ms", elapsed);
459
- rejectOnce(new WalletIframeReadyTimeoutError({
460
- elapsedMs: elapsed,
461
- timeoutMs: opts.connectTimeoutMs
462
- }));
463
- break;
464
- }
465
- attempt += 1;
466
- opts.onAttempt?.(attempt, elapsed);
467
- const channel = new MessageChannel();
468
- const port1 = channel.port1;
469
- const port2 = channel.port2;
470
- port1.onmessage = (e) => {
471
- const data = e.data;
472
- if (data.type === "READY" || data.type === "ERROR") {
473
- const mismatch = createProtocolVersionMismatchError({
474
- expectedProtocolVersion: opts.expectedProtocolVersion,
475
- data
476
- });
477
- if (mismatch) {
478
- rejectOnce(mismatch);
479
- return;
480
- }
481
- resolveOnce(port1);
482
- }
483
- };
484
- try {
485
- port1.start?.();
486
- } catch {}
487
- const cw = opts.iframe.contentWindow;
488
- if (!cw) {
489
- rejectOnce(/* @__PURE__ */ new Error("Wallet iframe window missing"));
490
- break;
491
- }
492
- const targetOrigin = opts.getTargetOrigin(attempt);
493
- warnedNullOrigin = postConnectMessage(cw, {
494
- type: "CONNECT",
495
- payload: { protocolVersion: opts.expectedProtocolVersion }
496
- }, port2, targetOrigin, warnedNullOrigin, elapsed, attempt, opts.walletServiceUrl);
497
- const interval = attempt < 10 ? 200 : attempt < 20 ? 400 : 800;
498
- try {
499
- if (abortPromise) await Promise.race([
500
- readyPromise,
501
- sleep(interval),
502
- abortPromise
503
- ]);
504
- else await Promise.race([readyPromise, sleep(interval)]);
505
- } catch (err) {
506
- rejectOnce(err instanceof Error ? err : new Error(String(err)));
507
- break;
508
- }
509
- }
510
- return await readyPromise;
511
- }
512
- function postConnectMessage(cw, data, port2, targetOrigin, warnedNullOrigin, elapsed, attempt, walletServiceUrl) {
513
- try {
514
- cw.postMessage(data, targetOrigin, [port2]);
515
- return warnedNullOrigin;
516
- } catch (e) {
517
- const message = e instanceof Error ? e.message ?? String(e) : String(e);
518
- if (!warnedNullOrigin && message.includes("'null'")) {
519
- warnedNullOrigin = true;
520
- console.warn("[IframeTransport] CONNECT blocked; iframe origin appears to be null. Check that %s is reachable and responds with Cross-Origin-Resource-Policy: cross-origin.", walletServiceUrl.toString());
521
- }
522
- try {
523
- cw.postMessage(data, "*", [port2]);
524
- } catch {}
525
- console.debug("[IframeTransport] CONNECT attempt %d threw after %d ms; retrying.", attempt, elapsed);
526
- return warnedNullOrigin;
527
- }
528
- }
529
- //#endregion
530
- //#region src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.ts
531
- let bridgeOperationQueue = Promise.resolve();
532
- function postBridgeResult(source, type, requestId, ok, payload) {
533
- source?.postMessage({
534
- type,
535
- requestId,
536
- ok,
537
- ...payload
538
- }, "*");
539
- }
540
- function handleWebAuthnBridgeMessage(kind, raw, e) {
541
- if (kind === WebAuthnBridgeMessage.Create) {
542
- enqueueBridgeOperation(() => handleWebAuthnCreate(raw, e));
543
- return;
544
- }
545
- enqueueBridgeOperation(() => handleWebAuthnGet(raw, e));
546
- }
547
- function formatBridgeError(err) {
548
- return err instanceof Error ? err.message : String(err);
549
- }
550
- function enqueueBridgeOperation(operation) {
551
- bridgeOperationQueue = bridgeOperationQueue.then(operation, operation).catch(() => void 0);
552
- }
553
- async function handleWebAuthnCreate(req, e) {
554
- const requestId = req?.requestId || "";
555
- if (!isObject(req?.publicKey)) {
556
- postBridgeResult(e.source, WebAuthnBridgeMessage.CreateResult, requestId, false, { error: "publicKey options required" });
557
- return;
558
- }
559
- if (!navigator.credentials?.create) {
560
- postBridgeResult(e.source, WebAuthnBridgeMessage.CreateResult, requestId, false, { error: "WebAuthn create not available" });
561
- return;
562
- }
563
- try {
564
- const src = req.publicKey;
565
- const rpName = src.rp?.name || "WebAuthn";
566
- const rpId = src.rp?.id || window.location.hostname;
567
- const pub = {
568
- ...src,
569
- rp: {
570
- name: rpName,
571
- id: rpId
572
- }
573
- };
574
- const serialized = serializeRegistrationCredentialWithPRF({
575
- credential: await navigator.credentials.create({ publicKey: pub }),
576
- firstPrfOutput: true,
577
- secondPrfOutput: true
578
- });
579
- postBridgeResult(e.source, WebAuthnBridgeMessage.CreateResult, requestId, true, { credential: serialized });
580
- } catch (err) {
581
- const message = formatBridgeError(err);
582
- console.warn("[IframeTransport][bridge] CREATE failed", {
583
- requestId,
584
- err: message
585
- });
586
- postBridgeResult(e.source, WebAuthnBridgeMessage.CreateResult, requestId, false, { error: message });
587
- }
588
- }
589
- async function handleWebAuthnGet(req, e) {
590
- const requestId = req?.requestId || "";
591
- if (!isObject(req?.publicKey)) {
592
- postBridgeResult(e.source, WebAuthnBridgeMessage.GetResult, requestId, false, { error: "publicKey options required" });
593
- return;
594
- }
595
- if (!navigator.credentials?.get) {
596
- postBridgeResult(e.source, WebAuthnBridgeMessage.GetResult, requestId, false, { error: "WebAuthn get not available" });
597
- return;
598
- }
599
- try {
600
- console.info("[WebAuthnPrompt] parent executing authentication", { requestId });
601
- const src = req.publicKey;
602
- const rpId = src.rpId || window.location.hostname;
603
- const pub = {
604
- ...src,
605
- rpId
606
- };
607
- const serialized = serializeAuthenticationCredentialWithPRF({
608
- credential: await navigator.credentials.get({ publicKey: pub }),
609
- firstPrfOutput: true,
610
- secondPrfOutput: true
611
- });
612
- postBridgeResult(e.source, WebAuthnBridgeMessage.GetResult, requestId, true, { credential: serialized });
613
- } catch (err) {
614
- const message = formatBridgeError(err);
615
- console.warn("[IframeTransport][bridge] GET failed", {
616
- requestId,
617
- err: message
618
- });
619
- postBridgeResult(e.source, WebAuthnBridgeMessage.GetResult, requestId, false, { error: message });
620
- }
621
- }
622
- //#endregion
623
- //#region src/SeamsWeb/walletIframe/client/transport/IframeTransport.ts
624
- /**
625
- * IframeTransport - Client-Side Communication Layer
626
- *
627
- * This module handles the low-level iframe management and connection establishment.
628
- * It encapsulates all the complex browser-specific logic for safely creating and
629
- * connecting to the wallet service iframe.
630
- *
631
- * Key Responsibilities:
632
- * - Iframe Creation: Creates and mounts the iframe element with proper security attributes
633
- * - Security Hardening: Sets appropriate allow/sandbox attributes for WebAuthn and clipboard access
634
- * - Load Event Handling: Waits for iframe load to avoid postMessage races
635
- * - Connection Handshake: Performs robust CONNECT → READY handshake using MessageChannel
636
- * - Boot Latency Handling: Manages cross-origin boot delays with SERVICE_HOST_BOOTED hints
637
- * - Connection Deduplication: Prevents multiple concurrent connection attempts
638
- * - Error Handling: Provides clear error messages for connection failures
639
- *
640
- * Security Model:
641
- * - Uses explicit allow attributes for WebAuthn and clipboard permissions
642
- * - Avoids sandboxing for cross-origin deployments (prevents MessagePort transfer issues)
643
- * - Validates wallet origin URLs to prevent security issues
644
- * - Uses MessageChannel for secure, bidirectional communication
645
- *
646
- * Browser Compatibility:
647
- * - Handles various browser quirks around iframe loading and MessagePort transfer
648
- * - Provides fallback behavior for different browser implementations
649
- * - Manages timing issues with cross-origin iframe boot sequences
650
- */
651
- const WILDCARD_CONNECT_ATTEMPTS = 6;
652
- const IframeMessage = {
653
- HostBooted: "SERVICE_HOST_BOOTED",
654
- HostDebugOrigin: "SERVICE_HOST_DEBUG_ORIGIN",
655
- HostLog: "SERVICE_HOST_LOG"
656
- };
657
- function createZeroWalletIframeTransportDiagnostics() {
658
- return {
659
- kind: "wallet_iframe_transport_diagnostics_v1",
660
- iframeMountMs: 0,
661
- iframeLoadWaitMs: 0,
662
- bootHintWaitMs: 0,
663
- handshakeMs: 0,
664
- connectTotalMs: 0,
665
- handshakeAttempts: 0
666
- };
667
- }
668
- function roundTransportDurationMs(startedAt) {
669
- return Math.max(0, Math.round(performance.now() - startedAt));
670
- }
671
- var IframeTransport = class {
672
- constructor(options) {
673
- this.iframeEl = null;
674
- this.connectionClosed = false;
675
- this.connectionClosedListeners = /* @__PURE__ */ new Set();
676
- this.serviceBooted = false;
677
- this.connectInFlight = null;
678
- this.connectedPort = null;
679
- this.iframeInitialLoadSeen = false;
680
- this.handshakeComplete = false;
681
- this.debug = false;
682
- this.lastDiagnostics = createZeroWalletIframeTransportDiagnostics();
683
- this.onIframeLoad = () => {
684
- if (!this.iframeInitialLoadSeen) {
685
- this.iframeInitialLoadSeen = true;
686
- return;
687
- }
688
- if (!this.handshakeComplete || this.connectionClosed) return;
689
- this.handshakeComplete = false;
690
- const port = this.connectedPort;
691
- this.connectedPort = null;
692
- try {
693
- port?.close();
694
- } catch {}
695
- const iframe = this.iframeEl;
696
- this.iframeEl = null;
697
- iframe?.remove();
698
- this.emitConnectionClosed();
699
- };
700
- this.onWindowMessage = (e) => {
701
- const data = e.data;
702
- if (!isObject(data)) return;
703
- const type = data.type;
704
- if (type === IframeMessage.HostDebugOrigin) {
705
- if (this.debug) console.debug("[IframeTransport][host-origin]", {
706
- origin: data.origin,
707
- href: data.href,
708
- eventOrigin: e.origin
709
- });
710
- return;
711
- }
712
- if (e.origin !== this.walletOrigin) return;
713
- if (type === IframeMessage.HostBooted) {
714
- this.serviceBooted = true;
715
- return;
716
- }
717
- if (type === IframeMessage.HostLog) {
718
- if (this.debug) console.debug("[IframeTransport][wallet-log]", data.payload);
719
- return;
720
- }
721
- if (type === WebAuthnBridgeMessage.Create || type === WebAuthnBridgeMessage.Get) handleWebAuthnBridgeMessage(type, data, e);
722
- };
723
- this.opts = {
724
- servicePath: "/wallet-service",
725
- connectTimeoutMs: 8e3,
726
- debug: false,
727
- ...options
728
- };
729
- try {
730
- this.walletServiceUrl = new URL(this.opts.servicePath, this.opts.walletOrigin);
731
- } catch (err) {
732
- throw new Error(`[IframeTransport] Invalid wallet origin (${options.walletOrigin}) or servicePath (${options.servicePath || "/wallet-service"})`);
733
- }
734
- this.walletOrigin = this.walletServiceUrl.origin;
735
- this.testOptions = {
736
- routerId: options.testOptions?.routerId,
737
- ownerTag: options.testOptions?.ownerTag
738
- };
739
- this.debug = !!this.opts.debug;
740
- if (typeof window !== "undefined") window.addEventListener("message", this.onWindowMessage);
741
- }
742
- /** Returns the underlying iframe element if it exists. */
743
- getIframeEl() {
744
- return this.iframeEl;
745
- }
746
- getDiagnosticsSnapshot() {
747
- return { ...this.lastDiagnostics };
748
- }
749
- onConnectionClosed(listener) {
750
- if (this.connectionClosed) {
751
- listener();
752
- return () => {};
753
- }
754
- this.connectionClosedListeners.add(listener);
755
- return () => {
756
- this.connectionClosedListeners.delete(listener);
757
- };
758
- }
759
- /** Remove global listeners created by this transport instance. */
760
- dispose() {
761
- if (typeof window !== "undefined") window.removeEventListener("message", this.onWindowMessage);
762
- const iframe = this.iframeEl;
763
- this.iframeEl = null;
764
- if (iframe) {
765
- iframe.removeEventListener("load", this.onIframeLoad);
766
- (iframe.closest("dialog.seams-wallet-overlay-dialog") ?? iframe).remove();
767
- }
768
- this.handshakeComplete = false;
769
- const port = this.connectedPort;
770
- this.connectedPort = null;
771
- try {
772
- port?.close();
773
- } catch {}
774
- this.emitConnectionClosed();
775
- }
776
- /** Ensure the iframe element exists and is appended to the DOM. Idempotent. */
777
- ensureIframeMounted(mountParent = document.body) {
778
- if (this.iframeEl) return this.iframeEl;
779
- removeExistingOverlaysForOrigin(this.walletOrigin);
780
- const iframe = createWalletIframe({
781
- walletOrigin: this.walletOrigin,
782
- walletServiceUrl: this.walletServiceUrl,
783
- mountParent,
784
- testOptions: this.testOptions,
785
- onLoad: this.onIframeLoad
786
- });
787
- this.iframeEl = iframe;
788
- return iframe;
789
- }
790
- /**
791
- * Connect to the wallet iframe using a MessageChannel handshake.
792
- * - Repeatedly posts CONNECT with the protocol version and a fresh port until READY arrives
793
- * - Times out after connectTimeoutMs
794
- * - Deduplicates concurrent calls and returns the same MessagePort promise
795
- */
796
- async connect() {
797
- if (this.connectInFlight) return this.connectInFlight;
798
- this.connectInFlight = (async () => {
799
- const connectStartedAt = performance.now();
800
- let iframeMountMs = 0;
801
- let iframeLoadWaitMs = 0;
802
- let bootHintWaitMs = 0;
803
- let handshakeMs = 0;
804
- let handshakeAttempts = 0;
805
- if (this.opts.signal?.aborted) throw new Error("Wallet iframe connect aborted");
806
- const mountStartedAt = performance.now();
807
- const iframe = this.ensureIframeMounted();
808
- iframeMountMs = roundTransportDurationMs(mountStartedAt);
809
- const loadStartedAt = performance.now();
810
- await waitForLoad(iframe, this.debug, this.opts.signal);
811
- iframeLoadWaitMs = roundTransportDurationMs(loadStartedAt);
812
- const bootWaitMs = Math.min(this.opts.connectTimeoutMs / 12, 300);
813
- const bootStartedAt = performance.now();
814
- await waitForBootHint(() => this.serviceBooted, bootWaitMs, this.opts.signal);
815
- bootHintWaitMs = roundTransportDurationMs(bootStartedAt);
816
- const handshakeStartedAt = performance.now();
817
- const port = await performHandshake({
818
- iframe,
819
- connectTimeoutMs: this.opts.connectTimeoutMs,
820
- walletOrigin: this.walletOrigin,
821
- walletServiceUrl: this.walletServiceUrl,
822
- expectedProtocolVersion: WALLET_PROTOCOL_VERSION,
823
- getTargetOrigin: (attempt) => this.getConnectTargetOrigin(attempt),
824
- onAttempt: (attempt) => {
825
- handshakeAttempts = attempt;
826
- },
827
- signal: this.opts.signal
828
- });
829
- this.connectedPort?.close();
830
- this.connectedPort = port;
831
- this.handshakeComplete = true;
832
- handshakeMs = roundTransportDurationMs(handshakeStartedAt);
833
- this.lastDiagnostics = {
834
- kind: "wallet_iframe_transport_diagnostics_v1",
835
- iframeMountMs,
836
- iframeLoadWaitMs,
837
- bootHintWaitMs,
838
- handshakeMs,
839
- connectTotalMs: roundTransportDurationMs(connectStartedAt),
840
- handshakeAttempts
841
- };
842
- return port;
843
- })();
844
- try {
845
- return await this.connectInFlight;
846
- } finally {
847
- this.connectInFlight = null;
848
- }
849
- }
850
- getConnectTargetOrigin(attempt) {
851
- if (this.serviceBooted) return this.walletOrigin;
852
- if (attempt <= WILDCARD_CONNECT_ATTEMPTS) return "*";
853
- return this.walletOrigin;
854
- }
855
- emitConnectionClosed() {
856
- if (this.connectionClosed) return;
857
- this.connectionClosed = true;
858
- const listeners = Array.from(this.connectionClosedListeners);
859
- this.connectionClosedListeners.clear();
860
- for (const listener of listeners) try {
861
- listener();
862
- } catch {}
863
- }
864
- };
865
- //#endregion
866
- //#region src/SeamsWeb/walletIframe/client/surface/domain.ts
867
- function requiredPresentationTitle(title) {
868
- const normalized = title.trim();
869
- if (!normalized) throw new Error("Wallet iframe surface presentation title is required");
870
- return normalized;
871
- }
872
- function modalWalletIframeSurfacePresentation(title) {
873
- return {
874
- kind: "modal",
875
- title: requiredPresentationTitle(title)
876
- };
877
- }
878
- function drawerWalletIframeSurfacePresentation(title) {
879
- return {
880
- kind: "drawer",
881
- title: requiredPresentationTitle(title),
882
- edge: "bottom"
883
- };
884
- }
885
- function authMenuWalletIframeSurfacePresentation(title) {
886
- return {
887
- kind: "auth_menu_modal",
888
- title: requiredPresentationTitle(title)
889
- };
890
- }
891
- function parseNonEmptyBoundaryString(value, field) {
892
- if (typeof value !== "string" || !value.trim()) throw new Error(`${field} must be a non-empty string`);
893
- return value.trim();
894
- }
895
- function walletIframeConnectionIdFromBoundary(value) {
896
- return parseNonEmptyBoundaryString(value, "connectionId");
897
- }
898
- function requestSurfaceIdentity(args) {
899
- return Object.freeze({
900
- kind: "request_surface_identity_v1",
901
- ...args
902
- });
903
- }
904
- function trustedWalletIframeSurfaceMeasurementFromWire(args) {
905
- if (args.measurement.requestId !== args.identity.requestId) return null;
906
- switch (args.measurement.kind) {
907
- case "measured_v1": return {
908
- kind: "measured_v1",
909
- connectionId: args.connectionId,
910
- identity: args.identity,
911
- sequence: args.measurement.sequence,
912
- widthCssPx: args.measurement.widthCssPx,
913
- heightCssPx: args.measurement.heightCssPx
914
- };
915
- case "measured_auth_menu_v1": return {
916
- kind: "measured_auth_menu_v1",
917
- connectionId: args.connectionId,
918
- identity: args.identity,
919
- authMenuSessionId: args.measurement.authMenuSessionId,
920
- sequence: args.measurement.sequence,
921
- widthCssPx: args.measurement.widthCssPx,
922
- heightCssPx: args.measurement.heightCssPx
923
- };
924
- default: return assertNever(args.measurement);
925
- }
926
- }
927
- function passkeyRegistrationPreparationReceipt(expiresAtMs) {
928
- if (!Number.isSafeInteger(expiresAtMs) || expiresAtMs <= 0) throw new Error("Registration preparation expiry must be a positive safe integer");
929
- return Object.freeze({
930
- kind: "passkey_registration_preparation_receipt_v1",
931
- expiresAtMs
932
- });
933
- }
934
- function hiddenWalletIframeSurface() {
935
- return { kind: "hidden" };
936
- }
937
- function modalRegistrationConfirmSurface(args) {
938
- return {
939
- kind: "modal_registration_confirm",
940
- ...args,
941
- userActivation: "wallet_confirm_button_required"
942
- };
943
- }
944
- function modalTransactionConfirmSurface(args) {
945
- return {
946
- kind: "modal_transaction_confirm",
947
- ...args,
948
- userActivation: "wallet_confirm_button_required"
949
- };
950
- }
951
- function modalKeyExportConfirmSurface(args) {
952
- return {
953
- kind: "modal_key_export_confirm",
954
- ...args,
955
- userActivation: "wallet_confirm_button_required"
956
- };
957
- }
958
- function modalUnlockConfirmSurface(args) {
959
- return {
960
- kind: "modal_unlock_confirm",
961
- ...args,
962
- userActivation: "wallet_confirm_button_required"
963
- };
964
- }
965
- function modalRecoveryCodesSurface(args) {
966
- return {
967
- kind: "modal_recovery_codes",
968
- ...args,
969
- userActivation: "wallet_confirm_button_required"
970
- };
971
- }
972
- function modalDeviceLinkQrSurface(args) {
973
- return {
974
- kind: "modal_device_link_qr",
975
- ...args
976
- };
977
- }
978
- function modalAuthMenuSurface(args) {
979
- return {
980
- kind: "modal_auth_menu",
981
- connectionId: args.connectionId,
982
- identity: args.identity,
983
- presentation: args.presentation,
984
- authMenuSessionId: args.authMenuSessionId
985
- };
986
- }
987
- function requestIdentitiesEqual(left, right) {
988
- return left.surfaceId === right.surfaceId && left.requestId === right.requestId;
989
- }
990
- function foregroundSurfaceIdentitiesEqual(left, right) {
991
- if (left.kind !== right.kind || left.connectionId !== right.connectionId) return false;
992
- if (left.kind === "modal_auth_menu" && right.kind === "modal_auth_menu" && left.authMenuSessionId !== right.authMenuSessionId) return false;
993
- return requestIdentitiesEqual(left.identity, right.identity);
994
- }
995
- function beginForegroundWalletIframeSurface(current, attempted) {
996
- if (current.kind === "hidden") return {
997
- kind: "started",
998
- surface: attempted
999
- };
1000
- if (foregroundSurfaceIdentitiesEqual(current, attempted)) return {
1001
- kind: "idempotent",
1002
- surface: current
1003
- };
1004
- return {
1005
- kind: "rejected",
1006
- error: {
1007
- kind: "wallet_iframe_surface_busy",
1008
- activeSurfaceKind: current.kind,
1009
- attemptedSurfaceKind: attempted.kind,
1010
- retry: "after_active_surface_finishes"
1011
- }
1012
- };
1013
- }
1014
- function requestEventOwnsSurface(surface, event) {
1015
- return surface.kind !== "hidden" && surface.connectionId === event.connectionId && requestIdentitiesEqual(surface.identity, event.identity);
1016
- }
1017
- function authMenuEventOwnsSurface(surface, event) {
1018
- return surface.kind === "modal_auth_menu" && surface.connectionId === event.connectionId && requestIdentitiesEqual(surface.identity, event.identity) && surface.authMenuSessionId === event.authMenuSessionId;
1019
- }
1020
- function reduceStartResult(current, result) {
1021
- switch (result.kind) {
1022
- case "started": return {
1023
- kind: "applied",
1024
- surface: result.surface
1025
- };
1026
- case "idempotent": return {
1027
- kind: "ignored",
1028
- surface: result.surface
1029
- };
1030
- case "rejected": return {
1031
- kind: "rejected",
1032
- surface: current,
1033
- error: result.error
1034
- };
1035
- default: return assertNever(result);
1036
- }
1037
- }
1038
- function reduceWalletIframeSurface(current, event) {
1039
- switch (event.kind) {
1040
- case "transaction_review_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, {
1041
- kind: "modal_transaction_review",
1042
- connectionId: event.connectionId,
1043
- identity: event.identity,
1044
- presentation: event.presentation
1045
- }));
1046
- case "transaction_review_handoff":
1047
- if (current.kind !== "modal_transaction_review" || !requestEventOwnsSurface(current, event)) return {
1048
- kind: "ignored",
1049
- surface: current
1050
- };
1051
- return {
1052
- kind: "applied",
1053
- surface: modalTransactionConfirmSurface({
1054
- connectionId: event.connectionId,
1055
- identity: event.identity,
1056
- presentation: event.presentation
1057
- })
1058
- };
1059
- case "transaction_review_returned":
1060
- if (current.kind !== "modal_transaction_confirm" || !requestEventOwnsSurface(current, event)) return {
1061
- kind: "ignored",
1062
- surface: current
1063
- };
1064
- return {
1065
- kind: "applied",
1066
- surface: {
1067
- kind: "modal_transaction_review",
1068
- connectionId: event.connectionId,
1069
- identity: event.identity,
1070
- presentation: event.presentation
1071
- }
1072
- };
1073
- case "registration_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalRegistrationConfirmSurface({
1074
- connectionId: event.connectionId,
1075
- identity: event.identity,
1076
- presentation: event.presentation,
1077
- preparation: event.preparation
1078
- })));
1079
- case "transaction_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalTransactionConfirmSurface({
1080
- connectionId: event.connectionId,
1081
- identity: event.identity,
1082
- presentation: event.presentation
1083
- })));
1084
- case "key_export_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalKeyExportConfirmSurface({
1085
- connectionId: event.connectionId,
1086
- identity: event.identity,
1087
- presentation: event.presentation,
1088
- exportKind: event.exportKind
1089
- })));
1090
- case "unlock_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalUnlockConfirmSurface({
1091
- connectionId: event.connectionId,
1092
- identity: event.identity,
1093
- presentation: event.presentation,
1094
- unlockKind: event.unlockKind
1095
- })));
1096
- case "recovery_codes_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalRecoveryCodesSurface({
1097
- connectionId: event.connectionId,
1098
- identity: event.identity,
1099
- presentation: event.presentation,
1100
- operation: event.operation
1101
- })));
1102
- case "device_link_qr_modal_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalDeviceLinkQrSurface({
1103
- connectionId: event.connectionId,
1104
- identity: event.identity,
1105
- presentation: event.presentation
1106
- })));
1107
- case "auth_menu_request_started": return reduceStartResult(current, beginForegroundWalletIframeSurface(current, modalAuthMenuSurface({
1108
- connectionId: event.connectionId,
1109
- identity: event.identity,
1110
- presentation: event.presentation,
1111
- authMenuSessionId: event.authMenuSessionId
1112
- })));
1113
- case "auth_menu_request_completed":
1114
- case "auth_menu_request_closed":
1115
- case "auth_menu_request_cancelled": return authMenuEventOwnsSurface(current, event) ? {
1116
- kind: "applied",
1117
- surface: hiddenWalletIframeSurface()
1118
- } : {
1119
- kind: "ignored",
1120
- surface: current
1121
- };
1122
- case "request_surface_hidden": return requestEventOwnsSurface(current, event) ? {
1123
- kind: "applied",
1124
- surface: hiddenWalletIframeSurface()
1125
- } : {
1126
- kind: "ignored",
1127
- surface: current
1128
- };
1129
- case "request_finished":
1130
- case "request_cancelled": return requestEventOwnsSurface(current, event) ? {
1131
- kind: "applied",
1132
- surface: hiddenWalletIframeSurface()
1133
- } : {
1134
- kind: "ignored",
1135
- surface: current
1136
- };
1137
- case "connection_closed": return current.kind !== "hidden" && current.connectionId === event.connectionId ? {
1138
- kind: "applied",
1139
- surface: hiddenWalletIframeSurface()
1140
- } : {
1141
- kind: "ignored",
1142
- surface: current
1143
- };
1144
- default: return assertNever(event);
1145
- }
1146
- }
1147
- function assertNever(value) {
1148
- throw new Error(`Unhandled wallet iframe surface variant: ${JSON.stringify(value)}`);
1149
- }
1150
- //#endregion
1151
- //#region src/SeamsWeb/walletIframe/client/surface/renderer.ts
1152
- const DEFAULT_PROVISIONAL_VIEWPORT = {
1153
- widthCssPx: 1024,
1154
- heightCssPx: 768,
1155
- offsetLeftCssPx: 0,
1156
- offsetTopCssPx: 0
1157
- };
1158
- function isModalGeometry(geometry) {
1159
- return geometry.kind === "provisional_centered_modal" || geometry.kind === "centered_modal" || geometry.kind === "viewport_fallback";
1160
- }
1161
- function isDrawerGeometry(geometry) {
1162
- return geometry.kind === "provisional_bottom_drawer" || geometry.kind === "bottom_drawer" || geometry.kind === "viewport_fallback";
1163
- }
1164
- function geometryForSurface(presentation, geometry) {
1165
- return geometry ?? provisionalWalletIframeSurfaceGeometry(presentation, DEFAULT_PROVISIONAL_VIEWPORT);
1166
- }
1167
- function requestModalRenderMode(args) {
1168
- if (!isModalGeometry(args.geometry)) throw new Error("Modal request surface received drawer geometry");
1169
- return {
1170
- kind: "compact_request_modal",
1171
- presentation: args.presentation,
1172
- geometry: args.geometry,
1173
- focusTrap: true,
1174
- identity: args.identity
1175
- };
1176
- }
1177
- function requestDrawerRenderMode(args) {
1178
- if (!isDrawerGeometry(args.geometry)) throw new Error("Drawer request surface received modal geometry");
1179
- return {
1180
- kind: "compact_request_drawer",
1181
- presentation: args.presentation,
1182
- geometry: args.geometry,
1183
- focusTrap: true,
1184
- identity: args.identity
1185
- };
1186
- }
1187
- function authMenuRenderMode(args) {
1188
- if (!isModalGeometry(args.geometry)) throw new Error("Auth-menu surface received drawer geometry");
1189
- return {
1190
- kind: "compact_auth_menu",
1191
- presentation: args.presentation,
1192
- geometry: args.geometry,
1193
- focusTrap: true,
1194
- identity: args.identity,
1195
- authMenuSessionId: args.authMenuSessionId
1196
- };
1197
- }
1198
- function renderWalletIframeSurface(surface, geometry) {
1199
- if (surface.kind === "hidden") return { kind: "hidden" };
1200
- const resolvedGeometry = geometryForSurface(surface.presentation, geometry);
1201
- switch (surface.kind) {
1202
- case "modal_transaction_review": {
1203
- if (!isModalGeometry(resolvedGeometry)) throw new Error("Review requires modal geometry");
1204
- const geometry = resolvedGeometry.kind === "provisional_centered_modal" ? {
1205
- ...resolvedGeometry,
1206
- kind: "centered_modal"
1207
- } : resolvedGeometry;
1208
- return {
1209
- kind: "compact_transaction_review",
1210
- presentation: surface.presentation,
1211
- geometry,
1212
- focusTrap: true,
1213
- identity: surface.identity
1214
- };
1215
- }
1216
- case "modal_registration_confirm":
1217
- case "modal_transaction_confirm":
1218
- case "modal_key_export_confirm":
1219
- case "modal_unlock_confirm":
1220
- case "modal_recovery_codes":
1221
- case "modal_device_link_qr": switch (surface.presentation.kind) {
1222
- case "modal": return requestModalRenderMode({
1223
- presentation: surface.presentation,
1224
- geometry: resolvedGeometry,
1225
- identity: surface.identity
1226
- });
1227
- case "drawer": return requestDrawerRenderMode({
1228
- presentation: surface.presentation,
1229
- geometry: resolvedGeometry,
1230
- identity: surface.identity
1231
- });
1232
- default: return assertNever(surface.presentation);
1233
- }
1234
- case "modal_auth_menu": return authMenuRenderMode({
1235
- presentation: surface.presentation,
1236
- geometry: resolvedGeometry,
1237
- identity: surface.identity,
1238
- authMenuSessionId: surface.authMenuSessionId
1239
- });
1240
- default: return assertNever(surface);
1241
- }
1242
- }
1243
- var WalletIframeSurfaceRenderer = class {
1244
- constructor(controller) {
1245
- this.controller = controller;
1246
- }
1247
- render(surface, geometry, receiptView = null) {
1248
- if (receiptView && surface.kind === "modal_transaction_confirm" && geometry && isModalGeometry(geometry)) {
1249
- this.controller.apply({
1250
- kind: "compact_request_modal",
1251
- geometry,
1252
- focusTrap: receiptView === "expanded",
1253
- identity: surface.identity,
1254
- presentation: {
1255
- kind: "modal",
1256
- title: "Transaction receipt"
1257
- }
1258
- });
1259
- return;
1260
- }
1261
- this.controller.apply(renderWalletIframeSurface(surface, geometry));
1262
- }
1263
- };
1264
- //#endregion
1265
- //#region src/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.ts
1266
- const MAX_DEADLINE_TIMER_DELAY_MS = 2147483647;
1267
- var TransactionSurfaceLeaseDeferred = class {
1268
- constructor() {
1269
- this.promise = new Promise(this.capturePromise.bind(this));
1270
- }
1271
- resolve(lease) {
1272
- this.resolvePromise(lease);
1273
- }
1274
- reject(error) {
1275
- this.rejectPromise(error);
1276
- }
1277
- capturePromise(resolve, reject) {
1278
- this.resolvePromise = resolve;
1279
- this.rejectPromise = reject;
1280
- }
1281
- };
1282
- var TransactionSurfaceLease = class {
1283
- constructor(args) {
1284
- this.kind = "wallet_iframe_transaction_surface_lease_v1";
1285
- this.released = false;
1286
- this.queue = args.queue;
1287
- this.leaseId = args.leaseId;
1288
- this.requestId = args.requestId;
1289
- }
1290
- release() {
1291
- if (this.released) return;
1292
- this.released = true;
1293
- this.queue.release(this.leaseId);
1294
- }
1295
- };
1296
- var WalletIframeTransactionSurfaceQueue = class {
1297
- constructor() {
1298
- this.state = { kind: "idle" };
1299
- this.waiters = [];
1300
- this.nextLeaseId = 0;
1301
- }
1302
- acquire(args) {
1303
- if (args.deadline.kind === "deadline" && Date.now() >= args.deadline.atMs) return Promise.reject(this.timeoutError(args.requestId));
1304
- if (this.state.kind === "idle" && this.waiters.length === 0) return Promise.resolve(this.startLease(args.requestId));
1305
- const deferred = new TransactionSurfaceLeaseDeferred();
1306
- const waiter = {
1307
- requestId: args.requestId,
1308
- deadline: args.deadline,
1309
- deferred,
1310
- timer: null
1311
- };
1312
- if (args.deadline.kind === "deadline") this.scheduleWaiterDeadline(waiter);
1313
- this.waiters.push(waiter);
1314
- return deferred.promise;
1315
- }
1316
- cancel(requestId) {
1317
- const index = this.waiters.findIndex((waiter) => waiter.requestId === requestId);
1318
- if (index < 0) return;
1319
- const [waiter] = this.waiters.splice(index, 1);
1320
- this.clearWaiterTimer(waiter);
1321
- waiter.deferred.reject(/* @__PURE__ */ new Error(`Wallet request ${requestId} was cancelled`));
1322
- }
1323
- cancelAll(error) {
1324
- while (this.waiters.length > 0) {
1325
- const waiter = this.waiters.shift();
1326
- if (!waiter) continue;
1327
- this.clearWaiterTimer(waiter);
1328
- waiter.deferred.reject(error);
1329
- }
1330
- }
1331
- release(leaseId) {
1332
- if (this.state.kind !== "active" || this.state.leaseId !== leaseId) return;
1333
- this.state = { kind: "idle" };
1334
- this.grantNext();
1335
- }
1336
- startLease(requestId) {
1337
- const leaseId = ++this.nextLeaseId;
1338
- this.state = {
1339
- kind: "active",
1340
- leaseId,
1341
- requestId
1342
- };
1343
- return new TransactionSurfaceLease({
1344
- queue: this,
1345
- leaseId,
1346
- requestId
1347
- });
1348
- }
1349
- grantNext() {
1350
- while (this.state.kind === "idle") {
1351
- const waiter = this.waiters.shift();
1352
- if (!waiter) return;
1353
- this.clearWaiterTimer(waiter);
1354
- if (waiter.deadline.kind === "deadline" && Date.now() >= waiter.deadline.atMs) {
1355
- waiter.deferred.reject(this.timeoutError(waiter.requestId));
1356
- continue;
1357
- }
1358
- waiter.deferred.resolve(this.startLease(waiter.requestId));
1359
- }
1360
- }
1361
- expireWaiter(waiter) {
1362
- const index = this.waiters.indexOf(waiter);
1363
- if (index < 0) return;
1364
- if (waiter.deadline.kind === "deadline" && Date.now() < waiter.deadline.atMs) {
1365
- this.scheduleWaiterDeadline(waiter);
1366
- return;
1367
- }
1368
- this.waiters.splice(index, 1);
1369
- this.clearWaiterTimer(waiter);
1370
- waiter.deferred.reject(this.timeoutError(waiter.requestId));
1371
- }
1372
- scheduleWaiterDeadline(waiter) {
1373
- if (waiter.deadline.kind !== "deadline") return;
1374
- const remainingMs = waiter.deadline.atMs - Date.now();
1375
- waiter.timer = setTimeout(this.expireWaiter.bind(this, waiter), Math.max(1, Math.min(remainingMs, MAX_DEADLINE_TIMER_DELAY_MS)));
1376
- }
1377
- clearWaiterTimer(waiter) {
1378
- if (waiter.timer === null) return;
1379
- clearTimeout(waiter.timer);
1380
- waiter.timer = null;
1381
- }
1382
- timeoutError(requestId) {
1383
- return /* @__PURE__ */ new Error(`Wallet request ${requestId} timed out before acquiring the transaction surface`);
1384
- }
1385
- };
1386
- //#endregion
1387
- //#region src/SeamsWeb/walletIframe/client/router.ts
1388
- /**
1389
- * Strips out functions as they cannot be sent over postMessage to iframe
1390
- */
1391
- function requestSurfaceKindForMessage(type, payload) {
1392
- if (isTransactionSurfaceMessage(type) && confirmationUiModeForRequest(type, payload) === "none" && !needsExplicitActivation()) return null;
1393
- switch (type) {
1394
- case "PM_OPEN_AUTH_MENU": return "auth_menu";
1395
- case "PM_REGISTER_WALLET":
1396
- case "PM_ADD_WALLET_SIGNER":
1397
- case "PM_ADD_PASSKEY":
1398
- case "PM_ROTATE_WALLET_RECOVERY_CODES": return "registration";
1399
- case "PM_ADD_EMAIL_OTP": return "email_otp_enrollment";
1400
- case "PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP": return "recovery_codes";
1401
- case "PM_SIGN_TX_WITH_ACTIONS":
1402
- case "PM_SIGN_AND_SEND_TX":
1403
- case "PM_EXECUTE_ACTION":
1404
- case "PM_SIGN_DELEGATE_ACTION":
1405
- case "PM_SIGN_NEP413":
1406
- case "PM_SIGN_TEMPO": return "transaction";
1407
- case "PM_EXPORT_KEYPAIR_UI": return isObject(payload) && payload.kind === "ecdsa" ? "key_export_threshold" : "key_export_near";
1408
- case "PM_UNLOCK": return "unlock";
1409
- case "PM_SCAN_AND_LINK_DEVICE": return "device_link";
1410
- case "PM_START_DEVICE2_LINKING_FLOW": return "device_link_qr";
1411
- default: return null;
1412
- }
1413
- }
1414
- function isTransactionSurfaceMessage(type) {
1415
- switch (type) {
1416
- case "PM_SIGN_TX_WITH_ACTIONS":
1417
- case "PM_SIGN_AND_SEND_TX":
1418
- case "PM_EXECUTE_ACTION":
1419
- case "PM_SIGN_DELEGATE_ACTION":
1420
- case "PM_SIGN_NEP413":
1421
- case "PM_SIGN_TEMPO": return true;
1422
- default: return false;
1423
- }
1424
- }
1425
- function confirmationUiModeForRequest(type, payload, fallbackUiMode) {
1426
- if (type === "PM_EXPORT_KEYPAIR_UI" && isObject(payload)) {
1427
- const exportOptions = isObject(payload.options) ? payload.options : null;
1428
- if (exportOptions?.variant === "drawer") return "drawer";
1429
- if (exportOptions?.variant === "modal") return "modal";
1430
- }
1431
- if (!isObject(payload)) return "modal";
1432
- const rootConfig = isObject(payload.confirmationConfig) ? payload.confirmationConfig : null;
1433
- const options = isObject(payload.options) ? payload.options : null;
1434
- const configuredUiMode = (options && isObject(options.confirmationConfig) ? options.confirmationConfig : null)?.uiMode ?? rootConfig?.uiMode ?? fallbackUiMode;
1435
- if (configuredUiMode === "none" || configuredUiMode === "drawer" || configuredUiMode === "modal") return configuredUiMode;
1436
- return "modal";
1437
- }
1438
- function effectiveTransactionSurfaceUiMode(payload, fallbackUiMode) {
1439
- const requested = confirmationUiModeForRequest("PM_SIGN_TX_WITH_ACTIONS", payload, fallbackUiMode);
1440
- if (requested === "none") return needsExplicitActivation() ? "drawer" : "modal";
1441
- return requested;
1442
- }
1443
- function requestSurfacePresentationFor(kind, payload, fallbackUiMode) {
1444
- switch (kind) {
1445
- case "auth_menu": return authMenuWalletIframeSurfacePresentation("Sign in or create an account");
1446
- case "registration": return modalWalletIframeSurfacePresentation("Confirm passkey registration");
1447
- case "email_otp_enrollment": return confirmationUiModeForRequest("PM_ADD_EMAIL_OTP", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Enter email code") : modalWalletIframeSurfacePresentation("Enter email code");
1448
- case "transaction": return effectiveTransactionSurfaceUiMode(payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm transaction") : modalWalletIframeSurfacePresentation("Confirm transaction");
1449
- case "key_export_near":
1450
- case "key_export_threshold": return confirmationUiModeForRequest("PM_EXPORT_KEYPAIR_UI", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm key export") : modalWalletIframeSurfacePresentation("Confirm key export");
1451
- case "unlock": return confirmationUiModeForRequest("PM_UNLOCK", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Unlock wallet") : modalWalletIframeSurfacePresentation("Unlock wallet");
1452
- case "recovery_codes": return modalWalletIframeSurfacePresentation("Wallet recovery codes");
1453
- case "device_link":
1454
- case "device_link_qr": return modalWalletIframeSurfacePresentation("Link a device");
1455
- default: return assertNeverWalletIframeRequestSurfaceKind(kind);
1456
- }
1457
- }
1458
- function authMenuSessionIdForMessage(type, payload) {
1459
- if (type !== "PM_OPEN_AUTH_MENU") return null;
1460
- return parseHostedAuthMenuOpenRequest(payload)?.authMenuSessionId ?? null;
1461
- }
1462
- function assertNeverWalletIframeRequestSurfaceKind(value) {
1463
- throw new Error(`Unhandled wallet iframe request surface kind: ${String(value)}`);
1464
- }
1465
- function isTerminalStickyWalletFlowProgress(payload) {
1466
- if (!isWalletFlowEvent(payload)) return false;
1467
- if (payload.flow === "link_device") {
1468
- const outcome = classifyLinkDeviceFlowEvent(payload);
1469
- switch (outcome.kind) {
1470
- case "pending": return false;
1471
- case "active":
1472
- case "invalid_active":
1473
- case "failed":
1474
- case "cancelled": return true;
1475
- default: return assertNeverLinkDeviceFlowOutcome(outcome);
1476
- }
1477
- }
1478
- return payload.status === "cancelled" || payload.status === "failed" || payload.phase === KeyExportEventPhase.STEP_05_VIEWER_CLOSED || payload.phase === KeyExportEventPhase.STEP_06_COMPLETED;
1479
- }
1480
- function assertNeverLinkDeviceFlowOutcome(value) {
1481
- throw new Error(`Unhandled link-device flow outcome: ${String(value)}`);
1482
- }
1483
- function shouldHideWalletIframeSurface(payload) {
1484
- if (!isWalletFlowEvent(payload)) return false;
1485
- if (payload.interaction?.overlay !== "hide") return false;
1486
- if (payload.flow !== "key_export") return true;
1487
- return isTerminalStickyWalletFlowProgress(payload);
1488
- }
1489
- function dispatchHostedAuthMenuError(anchorElement, error) {
1490
- anchorElement.dispatchEvent(new CustomEvent(HOSTED_AUTH_MENU_ERROR_EVENT, {
1491
- bubbles: true,
1492
- composed: true,
1493
- detail: error
1494
- }));
1495
- }
1496
- const WALLET_IFRAME_PROGRESS_TIMEOUT_EXTENSION_FACTOR = 4;
1497
- /**
1498
- * Grace period before an unmeasured surface falls back to filling the viewport.
1499
- *
1500
- * Every in-iframe mounter binds a measurement reporter, and the reporter posts
1501
- * as soon as its element exists, so "no measurement" means "nothing is mounted
1502
- * yet" — not "mounted but unmeasurable". Plenty of surfaces mount behind a
1503
- * network round-trip (the email OTP export prompt waits for its challenge to be
1504
- * issued and mailed), so a short deadline declared them broken mid-flight and
1505
- * swapped a hidden provisional box for a full-viewport, unshadowed one that
1506
- * then snapped back once the card finally reported. The deadline is a backstop
1507
- * for a child that never reports at all, so it is sized to outlast a slow
1508
- * request rather than to race one, and progress on the request restarts it.
1509
- */
1510
- const WALLET_IFRAME_SURFACE_MEASUREMENT_FALLBACK_TIMEOUT_MS = 4e3;
1511
- const WALLET_IFRAME_REGISTRATION_TIMEOUT_MS = 18e4;
1512
- const WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS = 3e4;
1513
- function hostedAuthMenuAnchorMetrics(anchor) {
1514
- if (!anchor?.isConnected) return null;
1515
- const rect = anchor.getBoundingClientRect();
1516
- const layoutWidthCssPx = anchor.offsetWidth;
1517
- if (!Number.isFinite(rect.top) || !Number.isFinite(rect.left) || !Number.isFinite(rect.width) || !Number.isFinite(rect.height) || rect.width <= 0 || rect.height <= 0 || !Number.isFinite(layoutWidthCssPx) || layoutWidthCssPx <= 0) return null;
1518
- return {
1519
- topCssPx: rect.top,
1520
- leftCssPx: rect.left,
1521
- layoutWidthCssPx,
1522
- heightCssPx: rect.height,
1523
- visualScale: rect.width / layoutWidthCssPx
1524
- };
1525
- }
1526
- const HOSTED_AUTH_MENU_ANCHOR_HEIGHT_CSS_VAR = "--seams-auth-menu-height";
1527
- function pageScrollOffsetCssPx(axis) {
1528
- if (typeof window === "undefined") return 0;
1529
- const value = axis === "x" ? window.scrollX : window.scrollY;
1530
- return Number.isFinite(value) ? value : 0;
1531
- }
1532
- function documentCoordinateAuthMenuGeometry(geometry) {
1533
- return {
1534
- ...geometry,
1535
- topCssPx: Math.round(geometry.topCssPx + pageScrollOffsetCssPx("y")),
1536
- leftCssPx: Math.round(geometry.leftCssPx + pageScrollOffsetCssPx("x"))
1537
- };
1538
- }
1539
- function publishHostedAuthMenuAnchorHeight(anchor, heightCssPx) {
1540
- if (!anchor?.isConnected || !Number.isFinite(heightCssPx) || heightCssPx <= 0) return;
1541
- const next = `${Math.round(heightCssPx)}px`;
1542
- if (anchor.style.getPropertyValue(HOSTED_AUTH_MENU_ANCHOR_HEIGHT_CSS_VAR) === next) return;
1543
- anchor.style.setProperty(HOSTED_AUTH_MENU_ANCHOR_HEIGHT_CSS_VAR, next);
1544
- }
1545
- function buildSignTempoIframePayload(payload) {
1546
- if (payload.request.chain === "tempo") {
1547
- if (payload.chainTarget.kind !== "tempo") throw new Error("[wallet-iframe] Tempo request requires a Tempo target");
1548
- return {
1549
- ...payload,
1550
- operationKind: "tempo_transaction",
1551
- request: payload.request,
1552
- chainTarget: payload.chainTarget
1553
- };
1554
- }
1555
- if (payload.chainTarget.kind === "evm") return {
1556
- ...payload,
1557
- operationKind: "evm_transaction",
1558
- request: payload.request,
1559
- chainTarget: payload.chainTarget
1560
- };
1561
- return {
1562
- ...payload,
1563
- operationKind: "tempo_fee_token_preference",
1564
- request: requireTempoFeeTokenPreferenceSigningRequest({
1565
- request: payload.request,
1566
- chainTarget: payload.chainTarget
1567
- }),
1568
- chainTarget: payload.chainTarget
1569
- };
1570
- }
1571
- const WALLET_IFRAME_EMAIL_OTP_ENROLLMENT_TIMEOUT_MS = 300 * 1e3;
1572
- function walletIframeLoginStatusFromExactSession(state) {
1573
- switch (state.kind) {
1574
- case "active_session":
1575
- case "expired_session":
1576
- case "wallet_authenticated_identity_unresolvable":
1577
- case "wallet_unlocked_without_signing_session": return {
1578
- isLoggedIn: true,
1579
- walletId: state.walletId
1580
- };
1581
- case "wallet_locked": return {
1582
- isLoggedIn: false,
1583
- walletId: null
1584
- };
1585
- default: throw new Error("Wallet iframe exact session state is invalid");
1586
- }
1587
- }
1588
- function parseResolveExactKeyExportLaneResult(result) {
1589
- switch (result.kind) {
1590
- case "relink_required": return {
1591
- kind: "relink_required",
1592
- reason: result.reason
1593
- };
1594
- case "ecdsa": return {
1595
- kind: "ecdsa",
1596
- laneIdentity: parseExactEcdsaSigningLaneIdentity(result.laneIdentity)
1597
- };
1598
- case "ed25519": {
1599
- const materialActivation = parseMpcMaterialActivationRef(result.materialActivation);
1600
- if (!materialActivation.ok) throw new Error(materialActivation.error.message);
1601
- return {
1602
- kind: "ed25519",
1603
- laneIdentity: parseExactEd25519ExportMaterialIdentity(result.laneIdentity),
1604
- materialActivation: materialActivation.value
1605
- };
1606
- }
1607
- }
1608
- }
1609
- function walletIframeExportPayload(input, options) {
1610
- switch (input.kind) {
1611
- case "ecdsa": {
1612
- const laneIdentity = parseExactEcdsaSigningLaneIdentity(input.laneIdentity);
1613
- if (String(laneIdentity.signer.walletId) !== String(input.walletSession.walletId)) throw new Error("[WalletIframeRouter] key export lane wallet does not match wallet session");
1614
- if (!thresholdEcdsaChainTargetsEqual(laneIdentity.signer.chainTarget, input.chainTarget)) throw new Error("[WalletIframeRouter] key export lane chain target does not match request target");
1615
- return {
1616
- kind: "ecdsa",
1617
- chainTarget: input.chainTarget,
1618
- walletSession: input.walletSession,
1619
- laneIdentity,
1620
- options
1621
- };
1622
- }
1623
- case "ed25519": {
1624
- const laneIdentity = parseExactEd25519ExportMaterialIdentity(input.laneIdentity);
1625
- if (String(laneIdentity.signer.account.wallet.walletId) !== String(input.walletSession.walletId)) throw new Error("[WalletIframeRouter] Ed25519 export lane wallet does not match wallet session");
1626
- if (String(laneIdentity.signer.account.nearAccountId) !== String(input.nearAccount.accountId)) throw new Error("[WalletIframeRouter] Ed25519 export lane does not match the NEAR account");
1627
- return {
1628
- kind: "ed25519",
1629
- nearAccount: input.nearAccount,
1630
- walletSession: input.walletSession,
1631
- laneIdentity,
1632
- materialActivation: input.materialActivation,
1633
- options
1634
- };
1635
- }
1636
- }
1637
- }
1638
- const EMAIL_OTP_APP_ORIGIN_FORBIDDEN_RESULT_KEYS = new Set([
1639
- "S",
1640
- "secretS",
1641
- "recoveredS",
1642
- "recoveredSB64u",
1643
- "recoveryKeys",
1644
- "clientSecret32",
1645
- "clientRootShare32",
1646
- "clientRootShare32B64u",
1647
- "clientAdditiveShare32",
1648
- "clientAdditiveShare32B64u",
1649
- "clientSigningShare32",
1650
- "clientSigningShare32B64u",
1651
- "kShareB64u",
1652
- "sigmaShareB64u"
1653
- ]);
1654
- function requireNonEmptyBoundaryString(value, label) {
1655
- if (typeof value !== "string" || value.trim() !== value || value.length === 0) throw new Error(`${label} must be a non-empty canonical string`);
1656
- return value;
1657
- }
1658
- function requireCompactExchangeValue(value, label) {
1659
- const parsed = requireNonEmptyBoundaryString(value, label);
1660
- if (parsed.length > 512 || /[\s\u0000-\u001f\u007f]/.test(parsed)) throw new Error(`${label} must be a compact opaque identifier`);
1661
- return parsed;
1662
- }
1663
- function assertExactBoundaryFields(value, fields, label) {
1664
- if (!isObject(value) || Object.keys(value).length !== fields.size) throw new Error(`${label} must be an exact object`);
1665
- for (const field of fields) if (!Object.hasOwn(value, field)) throw new Error(`Missing ${label} field: ${field}`);
1666
- return value;
1667
- }
1668
- function parseHostedWalletExchangeFailure(value, status) {
1669
- const record = assertExactBoundaryFields(value, new Set([
1670
- "ok",
1671
- "code",
1672
- "message"
1673
- ]), "session exchange failure");
1674
- if (record.ok !== false) throw new Error("session exchange failure is invalid");
1675
- const code = requireNonEmptyBoundaryString(record.code, "session exchange error code");
1676
- const message = requireNonEmptyBoundaryString(record.message, "session exchange error message");
1677
- const error = new Error(message);
1678
- error.code = code;
1679
- error.status = status;
1680
- return error;
1681
- }
1682
- function parseHostedWalletExchangeDelivery(value, expected) {
1683
- const response = assertExactBoundaryFields(value, new Set(["ok", "delivery"]), "session exchange response");
1684
- if (response.ok !== true) throw new Error("session exchange response must contain one delivery");
1685
- const deliveryFields = new Set([
1686
- "exchangeCode",
1687
- "nonce",
1688
- "appOrigin",
1689
- "walletOrigin",
1690
- "expiresAtMs"
1691
- ]);
1692
- const delivery = assertExactBoundaryFields(response.delivery, deliveryFields, "session exchange delivery");
1693
- const appOrigin = requireNonEmptyBoundaryString(delivery.appOrigin, "delivery.appOrigin");
1694
- const walletOrigin = requireNonEmptyBoundaryString(delivery.walletOrigin, "delivery.walletOrigin");
1695
- if (appOrigin !== expected.appOrigin || walletOrigin !== expected.walletOrigin) throw new Error("session exchange delivery origin binding does not match the iframe");
1696
- const expiresAtMs = Number(delivery.expiresAtMs);
1697
- if (!Number.isSafeInteger(expiresAtMs) || expiresAtMs <= Date.now()) throw new Error("session exchange delivery is expired");
1698
- return {
1699
- exchangeCode: requireCompactExchangeValue(delivery.exchangeCode, "delivery.exchangeCode"),
1700
- nonce: requireCompactExchangeValue(delivery.nonce, "delivery.nonce"),
1701
- appOrigin,
1702
- walletOrigin,
1703
- expiresAtMs
1704
- };
1705
- }
1706
- function parseHostedWalletSeamsSessionRedemption(value) {
1707
- const result = assertExactBoundaryFields(value, new Set(["kind", "expiresAtMs"]), "hosted-wallet session redemption result");
1708
- if (result.kind !== "redeemed_hosted_wallet_seams_session") throw new Error("wallet iframe returned an invalid hosted-wallet session redemption");
1709
- const expiresAtMs = Number(result.expiresAtMs);
1710
- if (!Number.isSafeInteger(expiresAtMs) || expiresAtMs <= Date.now()) throw new Error("wallet iframe returned an expired hosted-wallet session redemption");
1711
- return {
1712
- kind: result.kind,
1713
- expiresAtMs
1714
- };
1715
- }
1716
- async function readSessionExchangeJson(response) {
1717
- try {
1718
- return await response.json();
1719
- } catch {
1720
- return null;
1721
- }
1722
- }
1723
- function canonicalHostedWalletRelayUrl(value) {
1724
- return stripTrailingSlashes(requireNonEmptyBoundaryString(value, "hosted-wallet relayUrl"));
1725
- }
1726
- function hostedWalletSessionSourcesMatch(left, right) {
1727
- return left !== null && canonicalHostedWalletRelayUrl(left.relayUrl) === canonicalHostedWalletRelayUrl(right.relayUrl) && left.operationCredential.walletSessionId === right.operationCredential.walletSessionId && left.operationCredential.token === right.operationCredential.token;
1728
- }
1729
- function hostedWalletSeamsSessionSource(input) {
1730
- if (input.operationCredential === void 0) return null;
1731
- return {
1732
- relayUrl: canonicalHostedWalletRelayUrl(input.relayUrl),
1733
- operationCredential: parseWalletSessionOperationCredentialV1(input.operationCredential)
1734
- };
1735
- }
1736
- function hostedWalletSeamsSessionSourceFromUnlock(request, defaultRelayUrl) {
1737
- if (request.kind !== "custom_options") return null;
1738
- const inventory = request.options.ecdsaKeyFactsInventory;
1739
- if (!inventory || inventory.mode !== "wallet_session_operation_credential_v1" || inventory.operationCredential.kind !== "opaque_wallet_session_operation_credential_v1") return null;
1740
- return hostedWalletSeamsSessionSource({
1741
- relayUrl: defaultRelayUrl,
1742
- operationCredential: inventory.operationCredential
1743
- });
1744
- }
1745
- function assertNeverRegistrationAuthMethod(value) {
1746
- throw new Error(`Unsupported registration auth method: ${String(value)}`);
1747
- }
1748
- function hostedWalletRegistrationTransport(authMethod) {
1749
- switch (authMethod.kind) {
1750
- case "passkey": return {
1751
- authMethod: {
1752
- kind: "passkey",
1753
- rpId: authMethod.rpId,
1754
- ...authMethod.authenticatorOptions === void 0 ? {} : { authenticatorOptions: authMethod.authenticatorOptions }
1755
- },
1756
- sessionSource: null
1757
- };
1758
- case "email_otp": switch (authMethod.proofKind) {
1759
- case "otp_challenge": return {
1760
- authMethod: {
1761
- kind: "email_otp",
1762
- proofKind: "otp_challenge",
1763
- email: authMethod.email,
1764
- providerSubject: authMethod.providerSubject,
1765
- otpCode: authMethod.otpCode,
1766
- ...authMethod.challengeId === void 0 ? {} : { challengeId: authMethod.challengeId }
1767
- },
1768
- sessionSource: null
1769
- };
1770
- case "google_sso_registration": return {
1771
- authMethod: {
1772
- kind: "email_otp",
1773
- proofKind: "google_sso_registration",
1774
- email: authMethod.email,
1775
- providerSubject: authMethod.providerSubject,
1776
- googleEmailOtpRegistrationAttemptId: authMethod.googleEmailOtpRegistrationAttemptId,
1777
- googleEmailOtpRegistrationOfferId: authMethod.googleEmailOtpRegistrationOfferId,
1778
- googleEmailOtpRegistrationCandidateId: authMethod.googleEmailOtpRegistrationCandidateId
1779
- },
1780
- sessionSource: null
1781
- };
1782
- default: return assertNeverRegistrationAuthMethod(authMethod);
1783
- }
1784
- default: return assertNeverRegistrationAuthMethod(authMethod);
1785
- }
1786
- }
1787
- function walletIframeSurfaceBusyError(detail) {
1788
- const error = /* @__PURE__ */ new Error("The wallet iframe is reserved by an active foreground surface");
1789
- error.code = "wallet_iframe_surface_busy";
1790
- if (detail) error.detail = detail;
1791
- return error;
1792
- }
1793
- var WalletIframeConnectionClosedRequestError = class extends Error {
1794
- constructor(requestId, connectionId, requestType) {
1795
- super(`Wallet iframe connection closed while handling ${requestType}`);
1796
- this.requestId = requestId;
1797
- this.connectionId = connectionId;
1798
- this.code = "connection_closed";
1799
- this.name = "WalletIframeConnectionClosedRequestError";
1800
- }
1801
- };
1802
- function createTerminalProgressForRequest(args) {
1803
- const { requestType, requestId, status, message, errorCode } = args;
1804
- const common = {
1805
- flowId: `wallet-iframe:${requestType}:${requestId}`,
1806
- requestId,
1807
- status,
1808
- message,
1809
- error: {
1810
- ...errorCode ? { code: errorCode } : {},
1811
- message
1812
- }
1813
- };
1814
- const registrationRequests = new Set([
1815
- "PM_REGISTER_WALLET",
1816
- "PM_ADD_PASSKEY",
1817
- "PM_REQUEST_EMAIL_OTP_ENROLLMENT_CHALLENGE",
1818
- "PM_ENROLL_EMAIL_OTP"
1819
- ]);
1820
- const unlockRequests = new Set([
1821
- "PM_UNLOCK",
1822
- "PM_BOOTSTRAP_THRESHOLD_ECDSA_SESSION",
1823
- "PM_REQUEST_EMAIL_OTP_CHALLENGE",
1824
- "PM_LOGIN_EMAIL_OTP_ECDSA_CAPABILITY"
1825
- ]);
1826
- const signingRequests = new Set([
1827
- "PM_SIGN_TX_WITH_ACTIONS",
1828
- "PM_SIGN_AND_SEND_TX",
1829
- "PM_SEND_TRANSACTION",
1830
- "PM_EXECUTE_ACTION",
1831
- "PM_SIGN_DELEGATE_ACTION",
1832
- "PM_SIGN_NEP413",
1833
- "PM_SIGN_TEMPO",
1834
- "PM_REPORT_TEMPO_BROADCAST_ACCEPTED",
1835
- "PM_REPORT_TEMPO_BROADCAST_REJECTED",
1836
- "PM_REPORT_TEMPO_FINALIZED",
1837
- "PM_REPORT_TEMPO_DROPPED_OR_REPLACED",
1838
- "PM_RECONCILE_TEMPO_NONCE_LANE"
1839
- ]);
1840
- const linkDeviceRequests = new Set([
1841
- "PM_SCAN_AND_LINK_DEVICE",
1842
- "PM_START_DEVICE2_LINKING_FLOW",
1843
- "PM_CANCEL_DEVICE_LINKING"
1844
- ]);
1845
- if (registrationRequests.has(requestType)) return createRegistrationFlowEvent({
1846
- ...common,
1847
- phase: status === "cancelled" ? RegistrationEventPhase.CANCELLED : RegistrationEventPhase.FAILED
1848
- });
1849
- if (unlockRequests.has(requestType)) return createUnlockFlowEvent({
1850
- ...common,
1851
- phase: status === "cancelled" ? UnlockEventPhase.CANCELLED : UnlockEventPhase.FAILED
1852
- });
1853
- if (signingRequests.has(requestType)) return createSigningFlowEvent({
1854
- ...common,
1855
- phase: status === "cancelled" ? SigningEventPhase.CANCELLED : SigningEventPhase.FAILED
1856
- });
1857
- if (linkDeviceRequests.has(requestType)) return createLinkDeviceFlowEvent({
1858
- ...common,
1859
- phase: status === "cancelled" ? LinkDeviceEventPhase.CANCELLED : LinkDeviceEventPhase.FAILED
1860
- });
1861
- if (requestType === "PM_SYNC_ACCOUNT_FLOW") return createAccountSyncFlowEvent({
1862
- ...common,
1863
- phase: status === "cancelled" ? AccountSyncEventPhase.CANCELLED : AccountSyncEventPhase.FAILED
1864
- });
1865
- if (requestType === "PM_EXPORT_KEYPAIR_UI") return createKeyExportFlowEvent({
1866
- ...common,
1867
- phase: status === "cancelled" ? KeyExportEventPhase.CANCELLED : KeyExportEventPhase.FAILED
1868
- });
1869
- return null;
1870
- }
1871
- function sanitizeEmailOtpIframeResult(value) {
1872
- if (Array.isArray(value)) return value.map((entry) => sanitizeEmailOtpIframeResult(entry));
1873
- if (!isObject(value)) return value;
1874
- const out = {};
1875
- for (const [key, entry] of Object.entries(value)) {
1876
- if (EMAIL_OTP_APP_ORIGIN_FORBIDDEN_RESULT_KEYS.has(key)) continue;
1877
- out[key] = sanitizeEmailOtpIframeResult(entry);
1878
- }
1879
- return out;
1880
- }
1881
- const CANONICAL_SIGNER_BOUNDARY_MESSAGES = {
1882
- commit_queue_overflow: "Threshold signing commit queue is full. Wait for pending requests and retry.",
1883
- commit_queue_timeout: "Threshold signing commit request timed out in queue. Retry the request.",
1884
- threshold_ed25519_session_not_ready: "Threshold Ed25519 signing session is not ready. Refresh the signing session and retry.",
1885
- threshold_ecdsa_session_not_ready: "Threshold ECDSA signing session is not ready. Refresh the signing session and retry.",
1886
- threshold_session_kind_mismatch: "Threshold signing session kind mismatch. Refresh the signing session and retry.",
1887
- session_not_ready: "Threshold signing session is not ready. Refresh the signing session and retry.",
1888
- nonce_conflict_retryable: "Nonce conflict detected. Refresh nonce state and retry the request.",
1889
- rpc_request_failed: "RPC request failed. Retry the request or use another RPC endpoint.",
1890
- wallet_signing_material_invalid: "Wallet signing material is invalid. Log in again or recover the wallet.",
1891
- wallet_full_login_required: "A full wallet login is required before signing.",
1892
- wallet_signing_material_temporarily_unavailable: "Wallet signing material storage is temporarily unavailable. Retry the operation.",
1893
- wallet_operation_step_up_cancelled: "Request cancelled.",
1894
- cancelled: "Request cancelled."
1895
- };
1896
- function isTerminalWalletStateErrorCode(code) {
1897
- return code === "wallet_signing_material_invalid" || code === "wallet_full_login_required" || code === "wallet_operation_step_up_cancelled";
1898
- }
1899
- function isWalletOperationCancellationCode(code) {
1900
- return code === "cancelled" || code === "wallet_operation_step_up_cancelled";
1901
- }
1902
- function resolveCanonicalSignerBoundaryMessage(rawCode, fallbackMessage) {
1903
- const code = String(rawCode || "").trim().toLowerCase();
1904
- if (code && CANONICAL_SIGNER_BOUNDARY_MESSAGES[code]) return CANONICAL_SIGNER_BOUNDARY_MESSAGES[code];
1905
- return String(fallbackMessage || "").trim() || "Wallet error";
1906
- }
1907
- function walletIframeRequestCancelledError() {
1908
- const error = new Error(CANONICAL_SIGNER_BOUNDARY_MESSAGES.cancelled);
1909
- error.code = "cancelled";
1910
- return error;
1911
- }
1912
- function emitDemoEmailOtpCodeFromWire(args) {
1913
- if (args.wire.mode !== "login") return;
1914
- switch (args.wire.delivery.kind) {
1915
- case "provider": return;
1916
- case "demo_code_response":
1917
- case "provider_and_demo_code":
1918
- args.onDemoOtp?.(args.wire.delivery);
1919
- return;
1920
- }
1921
- }
1922
- function rawClientMessageObject(value) {
1923
- return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
1924
- }
1925
- function hasOnlyClientMessageFields(value, allowedFields) {
1926
- const allowed = new Set(allowedFields);
1927
- return Object.keys(value).every((field) => allowed.has(field));
1928
- }
1929
- function clientChildRequestId(value) {
1930
- if (!Object.hasOwn(value, "requestId")) return void 0;
1931
- const requestId = Reflect.get(value, "requestId");
1932
- if (requestId === void 0) return void 0;
1933
- return typeof requestId === "string" ? requestId : null;
1934
- }
1935
- function clientChildRequestIdFields(requestId) {
1936
- return requestId === void 0 ? {} : { requestId };
1937
- }
1938
- function parseClientPreferencesChangedPayload(value) {
1939
- const record = rawClientMessageObject(value);
1940
- if (!record || !hasOnlyClientMessageFields(record, [
1941
- "walletId",
1942
- "confirmationConfig",
1943
- "updatedAt"
1944
- ])) return null;
1945
- const walletId = Reflect.get(record, "walletId");
1946
- if (walletId !== null && typeof walletId !== "string") return null;
1947
- const confirmationConfig = rawClientMessageObject(Reflect.get(record, "confirmationConfig"));
1948
- if (!confirmationConfig || !hasOnlyClientMessageFields(confirmationConfig, [
1949
- "uiMode",
1950
- "behavior",
1951
- "autoProceedDelay"
1952
- ])) return null;
1953
- const uiMode = Reflect.get(confirmationConfig, "uiMode");
1954
- const behavior = Reflect.get(confirmationConfig, "behavior");
1955
- if (uiMode !== "none" && uiMode !== "modal" && uiMode !== "drawer") return null;
1956
- if (behavior !== "requireClick" && behavior !== "skipClick") return null;
1957
- const autoProceedDelay = Reflect.get(confirmationConfig, "autoProceedDelay");
1958
- if (autoProceedDelay !== void 0 && (typeof autoProceedDelay !== "number" || !Number.isFinite(autoProceedDelay))) return null;
1959
- const updatedAt = Reflect.get(record, "updatedAt");
1960
- if (typeof updatedAt !== "number" || !Number.isFinite(updatedAt)) return null;
1961
- return {
1962
- walletId,
1963
- confirmationConfig: autoProceedDelay === void 0 ? {
1964
- uiMode,
1965
- behavior
1966
- } : {
1967
- uiMode,
1968
- behavior,
1969
- autoProceedDelay
1970
- },
1971
- updatedAt
1972
- };
1973
- }
1974
- function isClientDeviceLinkProgressCandidate(value) {
1975
- const record = rawClientMessageObject(value);
1976
- if (!record) return false;
1977
- const event = Reflect.get(record, "event");
1978
- return event === "wallet_device_link_email_otp_base_factor_selection_required_v1" || event === "wallet_device_link_target_factor_activation_v1";
1979
- }
1980
- function parseClientProgressPayload(value) {
1981
- if (isWalletFlowEvent(value)) return value;
1982
- if (isRegistrationTimingSpanV1(value)) return value;
1983
- if (!isClientDeviceLinkProgressCandidate(value)) return null;
1984
- if (isDeviceLinkEmailOtpBaseFactorSelectionProgressV1(value)) return value;
1985
- return isDeviceLinkTargetFactorActivationProgressV1(value) ? value : null;
1986
- }
1987
- function parseClientPmResultPayload(value) {
1988
- const record = rawClientMessageObject(value);
1989
- if (!record || !hasOnlyClientMessageFields(record, [
1990
- "ok",
1991
- "result",
1992
- "error"
1993
- ])) return null;
1994
- const ok = Reflect.get(record, "ok");
1995
- if (typeof ok !== "boolean") return null;
1996
- const error = Reflect.get(record, "error");
1997
- if (error !== void 0 && typeof error !== "string") return null;
1998
- return {
1999
- ok,
2000
- ...Object.hasOwn(record, "result") ? { result: Reflect.get(record, "result") } : {},
2001
- ...error !== void 0 ? { error } : {}
2002
- };
2003
- }
2004
- function parseClientErrorPayload(value) {
2005
- const record = rawClientMessageObject(value);
2006
- if (!record || !hasOnlyClientMessageFields(record, [
2007
- "code",
2008
- "message",
2009
- "details"
2010
- ])) return null;
2011
- const code = Reflect.get(record, "code");
2012
- const message = Reflect.get(record, "message");
2013
- if (typeof code !== "string" || typeof message !== "string") return null;
2014
- return {
2015
- code,
2016
- message,
2017
- ...Object.hasOwn(record, "details") ? { details: Reflect.get(record, "details") } : {}
2018
- };
2019
- }
2020
- function parseClientChildToParentEnvelope(value) {
2021
- const record = rawClientMessageObject(value);
2022
- if (!record || !hasOnlyClientMessageFields(record, [
2023
- "type",
2024
- "requestId",
2025
- "payload"
2026
- ])) return null;
2027
- const requestId = clientChildRequestId(record);
2028
- if (requestId === null) return null;
2029
- const requestIdFields = clientChildRequestIdFields(requestId);
2030
- const type = Reflect.get(record, "type");
2031
- switch (type) {
2032
- case "PONG": return Object.hasOwn(record, "payload") ? null : {
2033
- ...requestIdFields,
2034
- type
2035
- };
2036
- case "PREFERENCES_CHANGED": {
2037
- const payload = parseClientPreferencesChangedPayload(Reflect.get(record, "payload"));
2038
- return payload ? {
2039
- ...requestIdFields,
2040
- type,
2041
- payload
2042
- } : null;
2043
- }
2044
- case "AUTH_MENU_EXTERNAL_AUTH_REQUEST": {
2045
- const payload = parseHostedAuthMenuExternalAuthRequest(Reflect.get(record, "payload"));
2046
- return payload ? {
2047
- ...requestIdFields,
2048
- type,
2049
- payload
2050
- } : null;
2051
- }
2052
- case "AUTH_MENU_ERROR": {
2053
- const payload = parseHostedAuthMenuErrorEvent(Reflect.get(record, "payload"));
2054
- return payload ? {
2055
- ...requestIdFields,
2056
- type,
2057
- payload
2058
- } : null;
2059
- }
2060
- case "AUTH_MENU_DEMO_EMAIL_OTP_DELIVERY": {
2061
- const payload = parseHostedAuthMenuDemoEmailOtpDelivery(Reflect.get(record, "payload"));
2062
- return payload ? {
2063
- ...requestIdFields,
2064
- type,
2065
- payload
2066
- } : null;
2067
- }
2068
- case "TRANSACTION_REVIEW_STATE": {
2069
- const payload = parseTransactionReviewState(Reflect.get(record, "payload"));
2070
- return payload ? {
2071
- ...requestIdFields,
2072
- type,
2073
- payload
2074
- } : null;
2075
- }
2076
- case "SURFACE_MEASUREMENT": {
2077
- const payload = parseWalletIframeSurfaceMeasurement(Reflect.get(record, "payload"));
2078
- return payload ? {
2079
- ...requestIdFields,
2080
- type,
2081
- payload
2082
- } : null;
2083
- }
2084
- case "TRANSACTION_ACTIVITY": {
2085
- const payload = Reflect.get(record, "payload");
2086
- return typeof requestId === "string" && (payload === "expanded" || payload === "toast" || payload === "closed") ? {
2087
- type,
2088
- requestId,
2089
- payload
2090
- } : null;
2091
- }
2092
- case "PROGRESS": {
2093
- const payload = parseClientProgressPayload(Reflect.get(record, "payload"));
2094
- return payload ? {
2095
- ...requestIdFields,
2096
- type,
2097
- payload
2098
- } : null;
2099
- }
2100
- case "PM_RESULT": {
2101
- const payload = parseClientPmResultPayload(Reflect.get(record, "payload"));
2102
- return payload ? {
2103
- ...requestIdFields,
2104
- type,
2105
- payload
2106
- } : null;
2107
- }
2108
- case "ERROR": {
2109
- const payload = parseClientErrorPayload(Reflect.get(record, "payload"));
2110
- return payload ? {
2111
- ...requestIdFields,
2112
- type,
2113
- payload
2114
- } : null;
2115
- }
2116
- default: return null;
2117
- }
2118
- }
2119
- function parseSdkLifecycleEnvelope(value) {
2120
- if (!isObject(value) || value.type !== "SDK_LIFECYCLE_EVENT") return { kind: "not_lifecycle_event" };
2121
- const event = parseSdkLifecycleEvent(value.payload);
2122
- if (!event) return { kind: "invalid_lifecycle_event" };
2123
- return {
2124
- kind: "lifecycle_event",
2125
- event
2126
- };
2127
- }
2128
- function assertNeverSdkLifecycleEventName(value) {
2129
- throw new Error(`Unsupported SDK lifecycle event: ${String(value)}`);
2130
- }
2131
- var WalletIframeRouter = class {
2132
- constructor(options) {
2133
- this.state = {
2134
- port: null,
2135
- connectionId: null,
2136
- ready: false,
2137
- configured: false,
2138
- configurationInFlight: null,
2139
- initInFlight: null,
2140
- hostedWalletSessionInFlight: null,
2141
- hostedWalletSessionExpiresAtMs: 0,
2142
- hostedWalletSessionSource: null,
2143
- pending: /* @__PURE__ */ new Map(),
2144
- reqCounter: 0
2145
- };
2146
- this.listeners = {
2147
- ready: /* @__PURE__ */ new Set(),
2148
- loginStatus: /* @__PURE__ */ new Set(),
2149
- preferencesChanged: /* @__PURE__ */ new Set(),
2150
- hostedAuthMenuExternalAuthRequest: /* @__PURE__ */ new Set(),
2151
- hostedAuthMenuDemoEmailOtpDelivery: /* @__PURE__ */ new Set(),
2152
- sdkLifecycleEvent: /* @__PURE__ */ new Set()
2153
- };
2154
- this.expiredSigningSessionsByWallet = /* @__PURE__ */ new Map();
2155
- this.exactSessionState = null;
2156
- this.lastPreferencesChangedPayload = null;
2157
- this.mirroredConfirmationUiMode = null;
2158
- this.debug = false;
2159
- this.walletIframeSurface = hiddenWalletIframeSurface();
2160
- this.transactionReceipt = null;
2161
- this.activeSurfaceMeasurement = null;
2162
- this.activeSurfaceMeasurementUnavailable = false;
2163
- this.surfaceGeneration = 0;
2164
- this.activeSurfaceMeasurementGeneration = 0;
2165
- this.surfaceViewportListenersAttached = false;
2166
- this.surfaceLayoutObserver = null;
2167
- this.measurementFallbackTimer = null;
2168
- this.measurementFallbackGeneration = 0;
2169
- this.disposed = false;
2170
- this.reviews = /* @__PURE__ */ new Map();
2171
- this.reviewCancellationTimers = /* @__PURE__ */ new Map();
2172
- this.reviewIdentityGeneration = 0;
2173
- this.reviewWaiters = /* @__PURE__ */ new Map();
2174
- this.reviewSessionDeadline = null;
2175
- this.reviewGeneration = 0;
2176
- this.reviewResizeObserver = null;
2177
- this.reviewMutationObserver = null;
2178
- this.transactionSurfaceQueue = new WalletIframeTransactionSurfaceQueue();
2179
- this.hostedAuthMenuRequestIds = /* @__PURE__ */ new Map();
2180
- this.hostedAuthMenuConnectionIds = /* @__PURE__ */ new Map();
2181
- this.hostedAuthMenuAnchors = /* @__PURE__ */ new Map();
2182
- this.hostedAuthMenuAnchorTrackingFrame = null;
2183
- this.hostedAuthMenuAnchorTrackingSession = null;
2184
- this.hostedAuthMenuAnchorTrackingDeadlineMs = 0;
2185
- this.cancelledHostedAuthMenuSessions = /* @__PURE__ */ new Set();
2186
- this.refreshReviewGeometry = () => {
2187
- const surface = this.walletIframeSurface;
2188
- if (surface.kind !== "modal_transaction_review") return;
2189
- const slot = this.reviews.get(surface.identity.requestId)?.reservation.slot;
2190
- if (slot?.firstElementChild) this.reviewResizeObserver?.observe(slot.firstElementChild);
2191
- this.renderActiveWalletIframeSurface();
2192
- };
2193
- this.handleSurfaceViewportChange = () => {
2194
- if (this.walletIframeSurface.kind === "hidden") return;
2195
- this.renderActiveWalletIframeSurface();
2196
- };
2197
- this.handleMeasurementFallbackTimeout = () => {
2198
- this.measurementFallbackTimer = null;
2199
- this.markMeasurementUnavailable(this.measurementFallbackGeneration);
2200
- };
2201
- this.handleOverlayDismiss = (event) => {
2202
- const surface = this.walletIframeSurface;
2203
- if (surface.kind === "hidden") return;
2204
- if (surface.identity.surfaceId !== event.identity.surfaceId || surface.identity.requestId !== event.identity.requestId) return;
2205
- if (surface.kind === "modal_auth_menu") {
2206
- if (surface.authMenuSessionId !== event.authMenuSessionId) return;
2207
- this.cancelHostedAuthMenuWithReason(surface.authMenuSessionId, "close_button");
2208
- return;
2209
- }
2210
- if (event.authMenuSessionId !== void 0) return;
2211
- if (this.transactionReceipt?.requestId === surface.identity.requestId) {
2212
- this.state.port?.postMessage({
2213
- type: "PM_SET_TRANSACTION_VIEW",
2214
- payload: {
2215
- requestId: surface.identity.requestId,
2216
- view: "toast"
2217
- }
2218
- });
2219
- return;
2220
- }
2221
- this.cancelRequest(surface.identity.requestId);
2222
- };
2223
- this.handleTransportConnectionClosed = () => {
2224
- const connectionId = this.state.connectionId;
2225
- if (connectionId) this.handleConnectionClosed(connectionId);
2226
- };
2227
- this.updateHostedAuthMenuAnchorPosition = (timestampMs) => {
2228
- this.hostedAuthMenuAnchorTrackingFrame = null;
2229
- const authMenuSessionId = this.hostedAuthMenuAnchorTrackingSession;
2230
- if (!authMenuSessionId) return;
2231
- const surface = this.walletIframeSurface;
2232
- if (surface.kind === "modal_auth_menu" && surface.authMenuSessionId === authMenuSessionId) this.renderActiveWalletIframeSurface();
2233
- if (timestampMs >= this.hostedAuthMenuAnchorTrackingDeadlineMs) return;
2234
- this.hostedAuthMenuAnchorTrackingFrame = requestAnimationFrame(this.updateHostedAuthMenuAnchorPosition);
2235
- };
2236
- if (!options?.walletOrigin) throw new Error("[WalletIframeRouter] walletOrigin is required when using the wallet iframe");
2237
- let parsedOrigin;
2238
- try {
2239
- parsedOrigin = new URL(options.walletOrigin);
2240
- } catch (err) {
2241
- throw new Error(`[WalletIframeRouter] Invalid walletOrigin: ${options.walletOrigin}`);
2242
- }
2243
- if (typeof window !== "undefined") {
2244
- const parentOrigin = window.location.origin;
2245
- if (parsedOrigin.origin === parentOrigin) console.warn("[WalletIframeRouter] walletOrigin matches the host origin. Isolation safeguards rely on the parent; consider moving the wallet to a dedicated origin.");
2246
- }
2247
- const testOptions = {
2248
- routerId: `seams-${Date.now()}-${secureRandomBase36(6, "wallet iframe router IDs")}`,
2249
- ownerTag: void 0,
2250
- autoMount: true,
2251
- ...options?.testOptions || {}
2252
- };
2253
- const normalizedServicePath = (() => {
2254
- const p = toBasePath(options?.servicePath, "/wallet-service");
2255
- return p === "/" ? "/wallet-service" : p;
2256
- })();
2257
- const normalizedSdkBasePath = (() => {
2258
- const p = toBasePath(options?.sdkBasePath, "/sdk");
2259
- return p === "/" ? "/sdk" : p;
2260
- })();
2261
- this.opts = {
2262
- connectTimeoutMs: 8e3,
2263
- requestTimeoutMs: 2e4,
2264
- getAppearance: () => options.appearance,
2265
- ...options,
2266
- servicePath: normalizedServicePath,
2267
- sdkBasePath: normalizedSdkBasePath,
2268
- testOptions,
2269
- chains: (options.chains ?? PASSKEY_MANAGER_DEFAULT_CONFIGS.network.chains).map(cloneResolvedChainConfig)
2270
- };
2271
- this.walletOriginUrl = parsedOrigin;
2272
- this.walletOriginOrigin = parsedOrigin.origin;
2273
- this.debug = !!this.opts.debug;
2274
- this.transport = new IframeTransport({
2275
- walletOrigin: this.opts.walletOrigin,
2276
- servicePath: this.opts.servicePath,
2277
- connectTimeoutMs: this.opts.connectTimeoutMs,
2278
- debug: this.debug,
2279
- testOptions: {
2280
- routerId: this.opts.testOptions.routerId,
2281
- ownerTag: this.opts.testOptions.ownerTag
2282
- }
2283
- });
2284
- this.transport.onConnectionClosed(this.handleTransportConnectionClosed);
2285
- this.overlayState = (this.opts.createOverlayState || ((args) => ({ controller: new OverlayController(args) })))({ ensureIframe: (mountParent) => this.transport.ensureIframeMounted(mountParent) });
2286
- this.overlayState.controller.setDismissHandler(this.handleOverlayDismiss);
2287
- this.surfaceRenderer = new WalletIframeSurfaceRenderer(this.overlayState.controller);
2288
- this.progressBus = new OnEventsProgressBus(this.debug ? (msg, data) => {
2289
- console.debug("[WalletIframeRouter][OnEventsProgressBus]", msg, data || {});
2290
- } : void 0);
2291
- }
2292
- async reserveTransactionReview(args) {
2293
- if (args.signal.aborted) throw args.signal.reason;
2294
- const initialGeneration = this.reviewIdentityGeneration;
2295
- await this.init();
2296
- const session = await this.getExactSessionState();
2297
- const confirmationConfig = reviewedConfirmationConfig(await this.getConfirmationConfig(), args.confirmationConfig);
2298
- if (args.signal.aborted) throw args.signal.reason;
2299
- if (initialGeneration !== this.reviewIdentityGeneration || session.kind === "wallet_locked" || session.walletId !== args.walletId) throw new TransactionReviewError("review_identity_changed", "The selected wallet or signing session changed");
2300
- const connectionId = this.state.connectionId;
2301
- if (!connectionId) throw new Error("Wallet iframe connection is unavailable");
2302
- const surface = this.walletIframeSurface;
2303
- if (surface.kind !== "hidden" && surface.kind !== "modal_transaction_confirm" && surface.kind !== "modal_transaction_review") throw walletIframeSurfaceBusyError();
2304
- const requestId = this.allocateRequestId();
2305
- const cancelWaiter = this.transactionSurfaceQueue.cancel.bind(this.transactionSurfaceQueue, requestId);
2306
- this.reviewWaiters.set(requestId, args.onCancel);
2307
- args.signal.addEventListener("abort", cancelWaiter, { once: true });
2308
- let lease;
2309
- try {
2310
- lease = await this.transactionSurfaceQueue.acquire({
2311
- requestId,
2312
- deadline: { kind: "interactive" }
2313
- });
2314
- } finally {
2315
- this.reviewWaiters.delete(requestId);
2316
- args.signal.removeEventListener("abort", cancelWaiter);
2317
- }
2318
- try {
2319
- if (args.signal.aborted) throw args.signal.reason;
2320
- this.assertReviewIdentity(connectionId, initialGeneration);
2321
- assertTransactionReviewValid(args.validity);
2322
- const identity = this.requestSurfaceIdentity(requestId);
2323
- const previousReceipt = this.transactionReceipt;
2324
- if (previousReceipt) {
2325
- this.state.port?.postMessage({
2326
- type: "PM_SET_TRANSACTION_VIEW",
2327
- payload: {
2328
- requestId: previousReceipt.requestId,
2329
- view: "closed"
2330
- }
2331
- });
2332
- this.transactionReceipt = null;
2333
- if (this.walletIframeSurface.kind !== "hidden" && this.walletIframeSurface.identity.requestId === previousReceipt.requestId) this.walletIframeSurface = hiddenWalletIframeSurface();
2334
- }
2335
- const slot = this.overlayState.controller.getTransactionReviewSlot();
2336
- this.overlayState.controller.setReviewAppearance(this.getCurrentAppearance());
2337
- const reservation = new TransactionReviewReservation(connectionId, identity, slot, args.title, args.validity, confirmationConfig, ++this.reviewGeneration, lease, this.assertReviewIdentity.bind(this, connectionId, initialGeneration), this.cancelReviewReservation.bind(this, requestId), this.finishReviewReservation.bind(this, requestId), this.resumeReviewReservation.bind(this, requestId));
2338
- this.reviews.set(requestId, {
2339
- reservation,
2340
- onCancel: args.onCancel
2341
- });
2342
- const result = this.transitionWalletIframeSurface({
2343
- kind: "transaction_review_started",
2344
- connectionId,
2345
- identity,
2346
- presentation: {
2347
- kind: "modal",
2348
- title: args.title
2349
- }
2350
- });
2351
- if (result.kind === "rejected") throw walletIframeSurfaceBusyError(result.error);
2352
- this.cancelMeasurementFallback();
2353
- this.reviewResizeObserver = new ResizeObserver(this.refreshReviewGeometry);
2354
- this.reviewMutationObserver = new MutationObserver(this.refreshReviewGeometry);
2355
- this.reviewMutationObserver.observe(slot, {
2356
- childList: true,
2357
- subtree: true,
2358
- characterData: true
2359
- });
2360
- return reservation;
2361
- } catch (error) {
2362
- this.reviews.delete(requestId);
2363
- lease.release();
2364
- throw error;
2365
- }
2366
- }
2367
- invalidateReviews() {
2368
- this.reviewIdentityGeneration += 1;
2369
- const error = new TransactionReviewError("review_identity_changed", "The wallet or signing session changed");
2370
- for (const [requestId, cancel] of this.reviewWaiters) {
2371
- this.transactionSurfaceQueue.cancel(requestId);
2372
- cancel(error);
2373
- }
2374
- for (const entry of this.reviews.values()) entry.reservation.cancel(error);
2375
- }
2376
- updateReviewSession(state) {
2377
- const previous = this.exactSessionState;
2378
- if (previous && !sameReviewSession(previous, state)) this.invalidateReviews();
2379
- if (this.reviewSessionDeadline) clearTimeout(this.reviewSessionDeadline);
2380
- this.reviewSessionDeadline = null;
2381
- if (state.kind === "active_session") this.reviewSessionDeadline = setTimeout(this.expireReviewSession.bind(this, state), Math.min(Math.max(0, state.expiresAtMs - Date.now()), 2147483647));
2382
- }
2383
- expireReviewSession(state) {
2384
- if (this.exactSessionState !== state) return;
2385
- if (Date.now() < state.expiresAtMs) {
2386
- this.updateReviewSession(state);
2387
- return;
2388
- }
2389
- this.invalidateReviews();
2390
- }
2391
- assertReviewIdentity(connectionId, generation) {
2392
- if (this.state.connectionId !== connectionId || generation !== this.reviewIdentityGeneration || this.disposed) throw new TransactionReviewError("review_identity_changed", "The wallet connection or signing session changed");
2393
- }
2394
- finishReviewReservation(requestId) {
2395
- this.reviews.delete(requestId);
2396
- this.clearReviewCancellationTimer(requestId);
2397
- this.reviewResizeObserver?.disconnect();
2398
- this.reviewMutationObserver?.disconnect();
2399
- this.reviewResizeObserver = null;
2400
- this.reviewSurfaceMeasurement = void 0;
2401
- this.reviewMutationObserver = null;
2402
- this.finishRequestSurface(requestId, false);
2403
- }
2404
- cancelReviewReservation(requestId, error) {
2405
- const entry = this.reviews.get(requestId);
2406
- if (!entry) return;
2407
- if (entry.reservation.state.kind === "reviewing") {
2408
- entry.onCancel(error);
2409
- entry.reservation.finish();
2410
- return;
2411
- }
2412
- if (entry.reservation.state.kind === "signing" || entry.reservation.state.kind === "settled") return;
2413
- if (this.reviewCancellationTimers.has(requestId)) return;
2414
- this.sendBestEffortCancel(requestId, error);
2415
- this.reviewCancellationTimers.set(requestId, window.setTimeout(this.reviewCancellationTimedOut.bind(this, requestId), 3e4));
2416
- }
2417
- clearReviewCancellationTimer(requestId) {
2418
- const timer = this.reviewCancellationTimers.get(requestId);
2419
- if (timer !== void 0) window.clearTimeout(timer);
2420
- this.reviewCancellationTimers.delete(requestId);
2421
- }
2422
- reviewCancellationTimedOut(requestId) {
2423
- const pending = this.state.pending.get(requestId);
2424
- if (!pending) return;
2425
- pending.reject(pending.onTimeout());
2426
- }
2427
- handleReviewState(value) {
2428
- const message = parseTransactionReviewState(value);
2429
- if (!message) return;
2430
- const entry = this.reviews.get(message.requestId);
2431
- if (!entry || !sameTransactionReviewIdentity(entry.reservation.metadata, message)) return;
2432
- switch (message.phase) {
2433
- case "prepared":
2434
- entry.reservation.prepared();
2435
- this.maybeActivateReview(entry.reservation);
2436
- return;
2437
- case "activated":
2438
- entry.reservation.activated();
2439
- return;
2440
- case "reviewing":
2441
- if (!entry.reservation.returnToReview()) return;
2442
- this.transitionWalletIframeSurface({
2443
- kind: "transaction_review_returned",
2444
- connectionId: entry.reservation.connectionId,
2445
- identity: entry.reservation.identity,
2446
- presentation: {
2447
- kind: "modal",
2448
- title: entry.reservation.title
2449
- }
2450
- });
2451
- return;
2452
- case "signing":
2453
- this.clearReviewCancellationTimer(message.requestId);
2454
- entry.reservation.signing();
2455
- return;
2456
- case "cancelled": return;
2457
- }
2458
- }
2459
- resumeReviewReservation(requestId) {
2460
- const entry = this.reviews.get(requestId);
2461
- if (entry) this.maybeActivateReview(entry.reservation);
2462
- }
2463
- maybeActivateReview(reservation) {
2464
- if (!this.activeSurfaceMeasurement || this.activeSurfaceMeasurement.identity.requestId !== reservation.identity.requestId) return;
2465
- if (!reservation.activate()) return;
2466
- this.transitionWalletIframeSurface({
2467
- kind: "transaction_review_handoff",
2468
- connectionId: reservation.connectionId,
2469
- identity: reservation.identity,
2470
- presentation: {
2471
- kind: "modal",
2472
- title: "Confirm transaction"
2473
- }
2474
- });
2475
- this.overlayState.controller.activateAfterReviewHandoff(this.activateReview.bind(this, reservation));
2476
- }
2477
- activateReview(reservation) {
2478
- if (reservation.state.kind !== "activating" || this.state.connectionId !== reservation.connectionId || this.reviewCancellationTimers.has(reservation.identity.requestId)) return;
2479
- this.state.port?.postMessage({
2480
- type: "PM_ACTIVATE_TRANSACTION_REVIEW",
2481
- payload: {
2482
- connectionId: reservation.connectionId,
2483
- requestId: reservation.identity.requestId,
2484
- surfaceId: reservation.identity.surfaceId,
2485
- generation: reservation.metadata.generation,
2486
- phase: "activated"
2487
- }
2488
- });
2489
- }
2490
- getCurrentAppearance() {
2491
- return this.opts.getAppearance() ?? this.opts.appearance;
2492
- }
2493
- transitionWalletIframeSurface(event) {
2494
- const result = reduceWalletIframeSurface(this.walletIframeSurface, event);
2495
- if (result.kind === "applied") {
2496
- const previousSurface = this.walletIframeSurface;
2497
- this.walletIframeSurface = result.surface;
2498
- if (!this.surfaceIdentityEqual(previousSurface, result.surface)) {
2499
- this.surfaceGeneration += 1;
2500
- this.activeSurfaceMeasurement = null;
2501
- this.activeSurfaceMeasurementUnavailable = false;
2502
- this.activeSurfaceMeasurementGeneration = this.surfaceGeneration;
2503
- }
2504
- this.updateSurfaceViewportListeners();
2505
- this.renderActiveWalletIframeSurface();
2506
- if (result.surface.kind === "modal_auth_menu" && this.hostedAuthMenuAnchors.has(result.surface.authMenuSessionId)) this.startHostedAuthMenuAnchorTracking(result.surface.authMenuSessionId);
2507
- if (result.surface.kind !== "hidden" && !this.activeSurfaceMeasurement) this.scheduleMeasurementFallback(this.surfaceGeneration);
2508
- }
2509
- return result;
2510
- }
2511
- updateSurfaceViewportListeners() {
2512
- const shouldAttach = this.walletIframeSurface.kind !== "hidden";
2513
- if (shouldAttach === this.surfaceViewportListenersAttached) return;
2514
- const visualViewport = window.visualViewport;
2515
- if (shouldAttach) {
2516
- window.addEventListener("resize", this.handleSurfaceViewportChange);
2517
- window.addEventListener("scroll", this.handleSurfaceViewportChange, true);
2518
- visualViewport?.addEventListener("resize", this.handleSurfaceViewportChange);
2519
- visualViewport?.addEventListener("scroll", this.handleSurfaceViewportChange);
2520
- if (typeof ResizeObserver === "function" && document.body) {
2521
- this.surfaceLayoutObserver = new ResizeObserver(this.handleSurfaceViewportChange);
2522
- this.surfaceLayoutObserver.observe(document.body);
2523
- }
2524
- this.surfaceViewportListenersAttached = true;
2525
- return;
2526
- }
2527
- window.removeEventListener("resize", this.handleSurfaceViewportChange);
2528
- window.removeEventListener("scroll", this.handleSurfaceViewportChange, true);
2529
- visualViewport?.removeEventListener("resize", this.handleSurfaceViewportChange);
2530
- visualViewport?.removeEventListener("scroll", this.handleSurfaceViewportChange);
2531
- this.surfaceLayoutObserver?.disconnect();
2532
- this.surfaceLayoutObserver = null;
2533
- this.surfaceViewportListenersAttached = false;
2534
- this.cancelMeasurementFallback();
2535
- }
2536
- scheduleMeasurementFallback(generation) {
2537
- this.cancelMeasurementFallback();
2538
- if (this.walletIframeSurface.kind === "hidden") return;
2539
- this.measurementFallbackGeneration = generation;
2540
- this.measurementFallbackTimer = window.setTimeout(this.handleMeasurementFallbackTimeout, WALLET_IFRAME_SURFACE_MEASUREMENT_FALLBACK_TIMEOUT_MS);
2541
- }
2542
- /**
2543
- * A request that is still reporting progress has not stalled, so its surface
2544
- * must not be declared unmeasurable while it works toward mounting.
2545
- */
2546
- extendMeasurementFallbackOnProgress(requestId) {
2547
- if (this.measurementFallbackTimer === null) return;
2548
- const surface = this.walletIframeSurface;
2549
- if (surface.kind === "hidden" || surface.identity.requestId !== requestId) return;
2550
- this.scheduleMeasurementFallback(this.measurementFallbackGeneration);
2551
- }
2552
- markMeasurementUnavailable(generation) {
2553
- if (generation !== this.surfaceGeneration || this.walletIframeSurface.kind === "hidden") return;
2554
- if (this.activeSurfaceMeasurement) return;
2555
- this.activeSurfaceMeasurementUnavailable = true;
2556
- this.cancelMeasurementFallback();
2557
- this.renderActiveWalletIframeSurface();
2558
- }
2559
- cancelMeasurementFallback() {
2560
- if (this.measurementFallbackTimer !== null) {
2561
- window.clearTimeout(this.measurementFallbackTimer);
2562
- this.measurementFallbackTimer = null;
2563
- }
2564
- }
2565
- surfaceIdentityEqual(left, right) {
2566
- if (left.kind === "hidden" || right.kind === "hidden") return left.kind === right.kind;
2567
- if (left.connectionId !== right.connectionId || left.identity.surfaceId !== right.identity.surfaceId || left.identity.requestId !== right.identity.requestId) return false;
2568
- if (left.kind === "modal_auth_menu" || right.kind === "modal_auth_menu") return left.kind === "modal_auth_menu" && right.kind === "modal_auth_menu" && left.authMenuSessionId === right.authMenuSessionId;
2569
- return true;
2570
- }
2571
- currentSurfaceViewport() {
2572
- const visualViewport = window.visualViewport;
2573
- const widthCandidate = visualViewport?.width ?? window.innerWidth;
2574
- const heightCandidate = visualViewport?.height ?? window.innerHeight;
2575
- const widthCssPx = Number.isFinite(widthCandidate) && widthCandidate > 0 ? widthCandidate : 1;
2576
- const heightCssPx = Number.isFinite(heightCandidate) && heightCandidate > 0 ? heightCandidate : 1;
2577
- const offsetLeftCandidate = visualViewport?.offsetLeft ?? 0;
2578
- const offsetTopCandidate = visualViewport?.offsetTop ?? 0;
2579
- return {
2580
- widthCssPx,
2581
- heightCssPx,
2582
- offsetLeftCssPx: Number.isFinite(offsetLeftCandidate) ? offsetLeftCandidate : 0,
2583
- offsetTopCssPx: Number.isFinite(offsetTopCandidate) ? offsetTopCandidate : 0
2584
- };
2585
- }
2586
- renderActiveWalletIframeSurface() {
2587
- const surface = this.walletIframeSurface;
2588
- if (surface.kind === "hidden") {
2589
- this.surfaceRenderer.render(surface);
2590
- return;
2591
- }
2592
- let measurement = this.activeSurfaceMeasurement ? {
2593
- kind: "measured",
2594
- widthCssPx: this.activeSurfaceMeasurement.widthCssPx,
2595
- heightCssPx: this.activeSurfaceMeasurement.heightCssPx
2596
- } : this.activeSurfaceMeasurementUnavailable ? { kind: "unavailable" } : void 0;
2597
- if (surface.kind === "modal_transaction_review") {
2598
- const slot = this.reviews.get(surface.identity.requestId)?.reservation.slot;
2599
- const content = slot?.firstElementChild;
2600
- if (content && !slot.hidden) this.reviewSurfaceMeasurement = {
2601
- kind: "measured",
2602
- widthCssPx: content.getBoundingClientRect().width,
2603
- heightCssPx: content.scrollHeight
2604
- };
2605
- measurement = this.reviewSurfaceMeasurement;
2606
- }
2607
- const viewport = this.currentSurfaceViewport();
2608
- const receiptView = this.transactionReceipt?.requestId === surface.identity.requestId ? this.transactionReceipt.view : null;
2609
- const resolvedGeometry = resolveWalletIframeSurfaceGeometry({
2610
- presentation: receiptView ? {
2611
- kind: "modal",
2612
- title: "Transaction receipt"
2613
- } : surface.presentation,
2614
- viewport,
2615
- measurement,
2616
- maxModalWidthCssPx: surface.kind === "modal_recovery_codes" ? 688 : void 0
2617
- });
2618
- const anchor = surface.kind === "modal_auth_menu" ? this.hostedAuthMenuAnchors.get(surface.authMenuSessionId) : void 0;
2619
- let anchorMetrics = hostedAuthMenuAnchorMetrics(anchor);
2620
- let geometry = resolvedGeometry;
2621
- let authMenuVisualScale = 1;
2622
- if (surface.kind === "modal_auth_menu" && anchorMetrics && isWalletIframeModalGeometry(resolvedGeometry) && !(resolvedGeometry.kind === "viewport_fallback" && resolvedGeometry.reason === "measurement_unavailable")) {
2623
- const measuredHeightCssPx = this.activeSurfaceMeasurement?.heightCssPx;
2624
- const anchoredBase = resolvedGeometry.kind === "viewport_fallback" ? {
2625
- kind: measuredHeightCssPx != null ? "centered_modal" : "provisional_centered_modal",
2626
- widthCssPx: resolvedGeometry.widthCssPx,
2627
- heightCssPx: measuredHeightCssPx ?? 320,
2628
- topCssPx: resolvedGeometry.topCssPx,
2629
- leftCssPx: resolvedGeometry.leftCssPx
2630
- } : measuredHeightCssPx != null ? {
2631
- ...resolvedGeometry,
2632
- heightCssPx: measuredHeightCssPx
2633
- } : resolvedGeometry;
2634
- publishHostedAuthMenuAnchorHeight(anchor, anchoredBase.heightCssPx);
2635
- anchorMetrics = hostedAuthMenuAnchorMetrics(anchor) ?? anchorMetrics;
2636
- authMenuVisualScale = anchorMetrics.visualScale;
2637
- geometry = anchorWalletIframeModalGeometry(anchoredBase, {
2638
- topCssPx: anchorMetrics.topCssPx,
2639
- leftCssPx: anchorMetrics.leftCssPx,
2640
- widthCssPx: anchorMetrics.layoutWidthCssPx,
2641
- heightCssPx: anchorMetrics.heightCssPx
2642
- });
2643
- }
2644
- if (surface.kind === "modal_auth_menu" && isWalletIframeModalGeometry(geometry)) geometry = documentCoordinateAuthMenuGeometry(geometry);
2645
- this.overlayState.controller.setAuthMenuVisualScale(authMenuVisualScale);
2646
- if (receiptView === "toast") {
2647
- const width = Math.min(360, Math.max(1, viewport.widthCssPx - 32));
2648
- const height = Math.min(this.activeSurfaceMeasurement?.heightCssPx ?? 88, Math.max(1, viewport.heightCssPx - 32));
2649
- geometry = {
2650
- kind: "centered_modal",
2651
- widthCssPx: width,
2652
- heightCssPx: height,
2653
- leftCssPx: viewport.offsetLeftCssPx + viewport.widthCssPx - width - 16,
2654
- topCssPx: viewport.offsetTopCssPx + viewport.heightCssPx - height - 16
2655
- };
2656
- }
2657
- this.surfaceRenderer.render(surface, geometry, receiptView);
2658
- if (surface.kind === "modal_auth_menu" && geometry.kind !== "provisional_centered_modal") this.hostedAuthMenuAnchors.get(surface.authMenuSessionId)?.style.setProperty("--seams-auth-menu-placeholder-opacity", "0");
2659
- }
2660
- startHostedAuthMenuAnchorTracking(authMenuSessionId) {
2661
- if (this.hostedAuthMenuAnchorTrackingFrame !== null) cancelAnimationFrame(this.hostedAuthMenuAnchorTrackingFrame);
2662
- this.hostedAuthMenuAnchorTrackingSession = authMenuSessionId;
2663
- this.hostedAuthMenuAnchorTrackingDeadlineMs = performance.now() + 750;
2664
- this.hostedAuthMenuAnchorTrackingFrame = requestAnimationFrame(this.updateHostedAuthMenuAnchorPosition);
2665
- }
2666
- stopHostedAuthMenuAnchorTracking(authMenuSessionId) {
2667
- if (this.hostedAuthMenuAnchorTrackingSession !== authMenuSessionId) return;
2668
- this.hostedAuthMenuAnchorTrackingSession = null;
2669
- if (this.hostedAuthMenuAnchorTrackingFrame !== null) {
2670
- cancelAnimationFrame(this.hostedAuthMenuAnchorTrackingFrame);
2671
- this.hostedAuthMenuAnchorTrackingFrame = null;
2672
- }
2673
- }
2674
- handleSurfaceMeasurement(value) {
2675
- const measurement = parseWalletIframeSurfaceMeasurement(value);
2676
- if (!measurement) return;
2677
- const surface = this.walletIframeSurface;
2678
- const connectionId = this.state.connectionId;
2679
- if (!connectionId || surface.kind === "hidden") return;
2680
- if (measurement.requestId !== surface.identity.requestId) return;
2681
- if (measurement.kind === "measured_auth_menu_v1") {
2682
- if (surface.kind !== "modal_auth_menu" || measurement.authMenuSessionId !== surface.authMenuSessionId) return;
2683
- } else if (surface.kind === "modal_auth_menu") return;
2684
- const trusted = trustedWalletIframeSurfaceMeasurementFromWire({
2685
- connectionId,
2686
- identity: surface.identity,
2687
- measurement
2688
- });
2689
- if (!trusted) return;
2690
- if (this.activeSurfaceMeasurement && this.activeSurfaceMeasurementGeneration === this.surfaceGeneration && trusted.sequence <= this.activeSurfaceMeasurement.sequence) return;
2691
- this.activeSurfaceMeasurement = trusted;
2692
- this.activeSurfaceMeasurementUnavailable = false;
2693
- this.activeSurfaceMeasurementGeneration = this.surfaceGeneration;
2694
- this.cancelMeasurementFallback();
2695
- const review = this.reviews.get(measurement.requestId);
2696
- if (review) this.maybeActivateReview(review.reservation);
2697
- this.renderActiveWalletIframeSurface();
2698
- }
2699
- requestSurfaceIdentity(requestId) {
2700
- return requestSurfaceIdentity({
2701
- surfaceId: walletIframeSurfaceIdFromBoundary(`request-surface-${requestId}`),
2702
- requestId
2703
- });
2704
- }
2705
- beginRequestSurface(args) {
2706
- const connectionId = this.state.connectionId;
2707
- if (!connectionId) throw new Error("Wallet iframe connection is unavailable for a foreground surface");
2708
- const identity = this.requestSurfaceIdentity(args.requestId);
2709
- if (this.transactionReceipt) {
2710
- const receiptId = this.transactionReceipt.requestId;
2711
- this.transactionReceipt = null;
2712
- this.state.port?.postMessage({
2713
- type: "PM_SET_TRANSACTION_VIEW",
2714
- payload: {
2715
- requestId: receiptId,
2716
- view: "closed"
2717
- }
2718
- });
2719
- const previous = this.walletIframeSurface;
2720
- if (previous.kind !== "hidden" && previous.identity.requestId === receiptId) this.finishRequestSurface(previous.identity.requestId, false);
2721
- }
2722
- let result;
2723
- switch (args.kind) {
2724
- case "auth_menu":
2725
- if (!args.authMenuSessionId) throw new Error("Hosted auth-menu request is missing its session identity");
2726
- result = this.transitionWalletIframeSurface({
2727
- kind: "auth_menu_request_started",
2728
- connectionId,
2729
- identity,
2730
- presentation: requestSurfacePresentationFor("auth_menu", args.payload),
2731
- authMenuSessionId: args.authMenuSessionId
2732
- });
2733
- break;
2734
- case "registration":
2735
- if (args.deadlineAtMs === null) throw new Error("Registration surface requires a finite request deadline");
2736
- result = this.transitionWalletIframeSurface({
2737
- kind: "registration_modal_request_started",
2738
- connectionId,
2739
- identity,
2740
- presentation: requestSurfacePresentationFor("registration", args.payload, this.mirroredConfirmationUiMode ?? void 0),
2741
- preparation: passkeyRegistrationPreparationReceipt(args.deadlineAtMs)
2742
- });
2743
- break;
2744
- case "email_otp_enrollment":
2745
- result = this.transitionWalletIframeSurface({
2746
- kind: "transaction_modal_request_started",
2747
- connectionId,
2748
- identity,
2749
- presentation: requestSurfacePresentationFor("email_otp_enrollment", args.payload, this.mirroredConfirmationUiMode ?? void 0)
2750
- });
2751
- break;
2752
- case "transaction":
2753
- result = this.transitionWalletIframeSurface({
2754
- kind: "transaction_modal_request_started",
2755
- connectionId,
2756
- identity,
2757
- presentation: requestSurfacePresentationFor("transaction", args.payload, this.mirroredConfirmationUiMode ?? void 0)
2758
- });
2759
- break;
2760
- case "key_export_near":
2761
- result = this.transitionWalletIframeSurface({
2762
- kind: "key_export_modal_request_started",
2763
- connectionId,
2764
- identity,
2765
- presentation: requestSurfacePresentationFor("key_export_near", args.payload, this.mirroredConfirmationUiMode ?? void 0),
2766
- exportKind: "near_keypair"
2767
- });
2768
- break;
2769
- case "key_export_threshold":
2770
- result = this.transitionWalletIframeSurface({
2771
- kind: "key_export_modal_request_started",
2772
- connectionId,
2773
- identity,
2774
- presentation: requestSurfacePresentationFor("key_export_threshold", args.payload, this.mirroredConfirmationUiMode ?? void 0),
2775
- exportKind: "threshold_ed25519_seed_from_yao"
2776
- });
2777
- break;
2778
- case "unlock":
2779
- result = this.transitionWalletIframeSurface({
2780
- kind: "unlock_modal_request_started",
2781
- connectionId,
2782
- identity,
2783
- presentation: requestSurfacePresentationFor("unlock", args.payload, this.mirroredConfirmationUiMode ?? void 0),
2784
- unlockKind: "passkey"
2785
- });
2786
- break;
2787
- case "recovery_codes":
2788
- result = this.transitionWalletIframeSurface({
2789
- kind: "recovery_codes_modal_request_started",
2790
- connectionId,
2791
- identity,
2792
- presentation: requestSurfacePresentationFor("recovery_codes", args.payload),
2793
- operation: "show"
2794
- });
2795
- break;
2796
- case "device_link":
2797
- result = this.transitionWalletIframeSurface({
2798
- kind: "unlock_modal_request_started",
2799
- connectionId,
2800
- identity,
2801
- presentation: requestSurfacePresentationFor("unlock", args.payload, this.mirroredConfirmationUiMode ?? void 0),
2802
- unlockKind: "device_link"
2803
- });
2804
- break;
2805
- case "device_link_qr":
2806
- result = this.transitionWalletIframeSurface({
2807
- kind: "device_link_qr_modal_request_started",
2808
- connectionId,
2809
- identity,
2810
- presentation: requestSurfacePresentationFor("device_link_qr", args.payload, this.mirroredConfirmationUiMode ?? void 0)
2811
- });
2812
- break;
2813
- default: return assertNeverWalletIframeRequestSurfaceKind(args.kind);
2814
- }
2815
- if (result.kind === "rejected") throw walletIframeSurfaceBusyError(result.error);
2816
- if (args.kind === "auth_menu" && args.authMenuSessionId) this.hostedAuthMenuConnectionIds.set(args.authMenuSessionId, connectionId);
2817
- }
2818
- finishRequestSurface(requestId, cancelled) {
2819
- if (this.transactionReceipt?.requestId === requestId) {
2820
- if (!cancelled) return;
2821
- this.transactionReceipt = null;
2822
- }
2823
- const connectionId = this.state.connectionId;
2824
- if (!connectionId) return;
2825
- this.transitionWalletIframeSurface({
2826
- kind: cancelled ? "request_cancelled" : "request_finished",
2827
- connectionId,
2828
- identity: this.requestSurfaceIdentity(requestId)
2829
- });
2830
- }
2831
- hostedAuthMenuSessionIdForRequestId(requestId) {
2832
- for (const [sessionId, activeRequestId] of this.hostedAuthMenuRequestIds) if (activeRequestId === requestId) return sessionId;
2833
- return null;
2834
- }
2835
- settleHostedAuthMenuCancellation(authMenuSessionId, reason) {
2836
- const requestId = this.hostedAuthMenuRequestIds.get(authMenuSessionId);
2837
- this.cancelledHostedAuthMenuSessions.add(authMenuSessionId);
2838
- this.hostedAuthMenuConnectionIds.delete(authMenuSessionId);
2839
- if (!requestId) return;
2840
- this.hostedAuthMenuRequestIds.delete(authMenuSessionId);
2841
- const pending = this.state.pending.get(requestId);
2842
- if (pending) {
2843
- if (pending.timer !== void 0) window.clearTimeout(pending.timer);
2844
- this.state.pending.delete(requestId);
2845
- this.progressBus.unregister(requestId);
2846
- if (reason === "connection_closed" || reason === "close_button") pending.resolve({
2847
- ok: true,
2848
- result: {
2849
- kind: "cancelled",
2850
- authMenuSessionId,
2851
- reason
2852
- }
2853
- });
2854
- else pending.reject(/* @__PURE__ */ new Error(`Hosted auth-menu cancelled: ${reason}`));
2855
- }
2856
- const surface = this.walletIframeSurface;
2857
- if (surface.kind === "modal_auth_menu" && surface.authMenuSessionId === authMenuSessionId) this.transitionWalletIframeSurface({
2858
- kind: "auth_menu_request_cancelled",
2859
- connectionId: surface.connectionId,
2860
- identity: surface.identity,
2861
- authMenuSessionId
2862
- });
2863
- }
2864
- settlePendingRequestsForConnectionClosed(connectionId) {
2865
- for (const [requestId, pending] of this.state.pending) {
2866
- if (pending.connectionId !== connectionId) continue;
2867
- if (this.hostedAuthMenuSessionIdForRequestId(pending.requestId)) continue;
2868
- this.state.pending.delete(requestId);
2869
- if (pending.timer !== void 0) window.clearTimeout(pending.timer);
2870
- const error = new WalletIframeConnectionClosedRequestError(pending.requestId, pending.connectionId, pending.requestType);
2871
- const fallbackProgress = createTerminalProgressForRequest({
2872
- requestType: pending.requestType,
2873
- requestId: pending.requestId,
2874
- status: "failed",
2875
- message: error.message,
2876
- errorCode: error.code
2877
- });
2878
- if (fallbackProgress) this.progressBus.dispatch({
2879
- requestId: pending.requestId,
2880
- payload: fallbackProgress
2881
- });
2882
- this.progressBus.unregister(pending.requestId);
2883
- this.finishRequestSurface(pending.requestId, false);
2884
- this.sendBestEffortCancel(pending.requestId);
2885
- pending.reject(error);
2886
- }
2887
- }
2888
- settlePendingRequestCancellation(requestId, emitTerminalProgress) {
2889
- const pending = this.state.pending.get(requestId);
2890
- if (pending) {
2891
- this.state.pending.delete(requestId);
2892
- if (pending.timer !== void 0) window.clearTimeout(pending.timer);
2893
- if (emitTerminalProgress) {
2894
- const message = CANONICAL_SIGNER_BOUNDARY_MESSAGES.cancelled;
2895
- const progress = createTerminalProgressForRequest({
2896
- requestType: pending.requestType,
2897
- requestId,
2898
- status: "cancelled",
2899
- message,
2900
- errorCode: "cancelled"
2901
- });
2902
- if (progress) this.progressBus.dispatch({
2903
- requestId,
2904
- payload: progress
2905
- });
2906
- }
2907
- pending.reject(walletIframeRequestCancelledError());
2908
- }
2909
- this.progressBus.unregister(requestId);
2910
- this.finishRequestSurface(requestId, true);
2911
- }
2912
- handleConnectionClosed(connectionId) {
2913
- this.reviewIdentityGeneration += 1;
2914
- if (this.reviewSessionDeadline) clearTimeout(this.reviewSessionDeadline);
2915
- this.reviewSessionDeadline = null;
2916
- for (const entry of this.reviews.values()) if (entry.reservation.connectionId === connectionId && entry.reservation.state.kind === "reviewing") entry.reservation.cancel(/* @__PURE__ */ new Error("Wallet iframe connection closed"));
2917
- this.transactionReceipt = null;
2918
- this.transactionSurfaceQueue.cancelAll(/* @__PURE__ */ new Error("Wallet iframe connection closed while waiting for transaction surface"));
2919
- for (const [authMenuSessionId, activeConnectionId] of this.hostedAuthMenuConnectionIds) {
2920
- if (activeConnectionId !== connectionId) continue;
2921
- this.settleHostedAuthMenuCancellation(authMenuSessionId, "connection_closed");
2922
- }
2923
- this.settlePendingRequestsForConnectionClosed(connectionId);
2924
- if (this.walletIframeSurface.kind !== "hidden" && this.walletIframeSurface.connectionId === connectionId) this.transitionWalletIframeSurface({
2925
- kind: "connection_closed",
2926
- connectionId
2927
- });
2928
- this.overlayState.controller.dispose();
2929
- this.updateSurfaceViewportListeners();
2930
- if (this.state.connectionId === connectionId) {
2931
- this.state.connectionId = null;
2932
- this.state.port = null;
2933
- this.state.ready = false;
2934
- this.state.configured = false;
2935
- }
2936
- }
2937
- hideRequestSurface(requestId) {
2938
- if (this.walletIframeSurface.kind === "modal_transaction_confirm" && this.walletIframeSurface.identity.requestId === requestId) return;
2939
- if (this.transactionReceipt?.requestId === requestId) return;
2940
- const connectionId = this.state.connectionId;
2941
- if (!connectionId) return;
2942
- this.transitionWalletIframeSurface({
2943
- kind: "request_surface_hidden",
2944
- connectionId,
2945
- identity: this.requestSurfaceIdentity(requestId)
2946
- });
2947
- }
2948
- finishDeviceLinkQrSurface() {
2949
- const surface = this.walletIframeSurface;
2950
- if (surface.kind !== "modal_device_link_qr") return;
2951
- this.finishRequestSurface(surface.identity.requestId, true);
2952
- }
2953
- /**
2954
- * Subscribe to service-ready event. Returns an unsubscribe function.
2955
- * If already ready, the listener is invoked on next microtask.
2956
- */
2957
- onReady(listener) {
2958
- if (this.state.ready) {
2959
- Promise.resolve().then(() => {
2960
- listener();
2961
- });
2962
- return () => {};
2963
- }
2964
- this.listeners.ready.add(listener);
2965
- return () => {
2966
- this.listeners.ready.delete(listener);
2967
- };
2968
- }
2969
- onHostedAuthMenuExternalAuthRequest(listener) {
2970
- this.listeners.hostedAuthMenuExternalAuthRequest.add(listener);
2971
- return () => this.listeners.hostedAuthMenuExternalAuthRequest.delete(listener);
2972
- }
2973
- onHostedAuthMenuDemoEmailOtpDelivery(listener) {
2974
- this.listeners.hostedAuthMenuDemoEmailOtpDelivery.add(listener);
2975
- return () => this.listeners.hostedAuthMenuDemoEmailOtpDelivery.delete(listener);
2976
- }
2977
- async resolveHostedAuthMenuExternalAuth(resolution) {
2978
- const sessionId = hostedAuthMenuSessionIdFromBoundary(resolution.authMenuSessionId);
2979
- if (!sessionId) throw new Error("authMenuSessionId must be a non-empty string");
2980
- const activeRequestId = this.hostedAuthMenuRequestIds.get(sessionId);
2981
- if (!activeRequestId) return;
2982
- const normalized = parseHostedAuthMenuExternalAuthResolution({
2983
- ...resolution,
2984
- requestId: activeRequestId
2985
- });
2986
- if (!normalized) throw new Error("Hosted auth-menu external-auth resolution is invalid");
2987
- await this.post({
2988
- type: "PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH",
2989
- payload: normalized
2990
- }).then(() => void 0);
2991
- }
2992
- emitReady() {
2993
- if (!this.listeners.ready.size) return;
2994
- for (const cb of Array.from(this.listeners.ready)) cb();
2995
- }
2996
- /**
2997
- * Initialize the transport and configure the wallet host.
2998
- * Safe to call multiple times; concurrent calls deduplicate via initInFlight.
2999
- */
3000
- async init(hostedWalletSession) {
3001
- if (this.state.initInFlight) return this.state.initInFlight;
3002
- if (this.state.ready && this.exactSessionState !== null) return;
3003
- this.state.initInFlight = (async () => {
3004
- await this.ensureConfigured();
3005
- if (hostedWalletSession) await this.ensureHostedWalletSeamsSession(hostedWalletSession);
3006
- await this.refreshExactSessionAndEmitLoginStatus("restore", { kind: "current" });
3007
- await this.getConfirmationConfig().catch(() => void 0);
3008
- this.emitReady();
3009
- })();
3010
- try {
3011
- await this.state.initInFlight;
3012
- } finally {
3013
- this.state.initInFlight = null;
3014
- }
3015
- }
3016
- async ensureConfigured() {
3017
- if (this.state.configurationInFlight) {
3018
- await this.state.configurationInFlight;
3019
- return;
3020
- }
3021
- if (this.state.configured) return;
3022
- this.state.configurationInFlight = this.connectAndConfigure();
3023
- try {
3024
- await this.state.configurationInFlight;
3025
- } finally {
3026
- this.state.configurationInFlight = null;
3027
- }
3028
- }
3029
- async connectAndConfigure() {
3030
- if (this.opts.testOptions.autoMount !== false && (!this.state.ready || !this.state.port)) {
3031
- this.overlayState.controller.prepare();
3032
- this.state.port = await this.transport.connect();
3033
- const connectionId = walletIframeConnectionIdFromBoundary(`wallet-iframe-connection-${secureRandomBase36(16, "wallet iframe connection IDs")}`);
3034
- this.state.connectionId = connectionId;
3035
- this.state.port.onmessage = (event) => this.onPortMessage(event, connectionId);
3036
- this.state.port.start?.();
3037
- this.state.ready = true;
3038
- }
3039
- await this.post({
3040
- type: "PM_SET_CONFIG",
3041
- payload: {
3042
- chains: this.opts.chains,
3043
- relayerAccount: this.opts.relayerAccount,
3044
- relayer: this.opts.relayer,
3045
- registration: this.opts.registration,
3046
- signingSessionDefaults: this.opts.signingSessionDefaults,
3047
- signingSessionPersistenceMode: this.opts.signingSessionPersistenceMode,
3048
- routerAb: this.opts.routerAb,
3049
- routerAbEcdsaDerivationPresignaturePool: this.opts.routerAbEcdsaDerivationPresignaturePool,
3050
- provisioningDefaults: this.opts.provisioningDefaults,
3051
- iframeWallet: this.opts.rpIdOverride ? { rpIdOverride: this.opts.rpIdOverride } : void 0,
3052
- authenticatorOptions: this.opts.authenticatorOptions,
3053
- appearance: this.getCurrentAppearance(),
3054
- assetsBaseUrl: this.walletAssetBaseUrl()
3055
- }
3056
- });
3057
- this.state.configured = true;
3058
- }
3059
- walletAssetBaseUrl() {
3060
- try {
3061
- const base = new URL(this.opts.sdkBasePath, this.walletOriginUrl).toString();
3062
- return base.endsWith("/") ? base : `${base}/`;
3063
- } catch {
3064
- const fallback = new URL("/sdk/", this.walletOriginUrl).toString();
3065
- return fallback.endsWith("/") ? fallback : `${fallback}/`;
3066
- }
3067
- }
3068
- isReady() {
3069
- return this.state.ready;
3070
- }
3071
- async initializeHostedWalletSeamsSession(source) {
3072
- await this.init(source);
3073
- await this.ensureHostedWalletSeamsSession(source);
3074
- }
3075
- async ensureHostedWalletSeamsSession(source) {
3076
- if (!source) return;
3077
- const normalizedSource = {
3078
- relayUrl: canonicalHostedWalletRelayUrl(source.relayUrl),
3079
- operationCredential: parseWalletSessionOperationCredentialV1(source.operationCredential)
3080
- };
3081
- if (this.state.hostedWalletSessionExpiresAtMs > Date.now() + 3e4 && hostedWalletSessionSourcesMatch(this.state.hostedWalletSessionSource, normalizedSource)) return;
3082
- const inFlight = this.state.hostedWalletSessionInFlight;
3083
- if (inFlight) {
3084
- await inFlight;
3085
- if (this.state.hostedWalletSessionExpiresAtMs > Date.now() + 3e4 && hostedWalletSessionSourcesMatch(this.state.hostedWalletSessionSource, normalizedSource)) return;
3086
- }
3087
- this.state.hostedWalletSessionInFlight = this.exchangeHostedWalletSeamsSession(normalizedSource);
3088
- try {
3089
- await this.state.hostedWalletSessionInFlight;
3090
- } finally {
3091
- this.state.hostedWalletSessionInFlight = null;
3092
- }
3093
- }
3094
- async exchangeHostedWalletSeamsSession(source) {
3095
- const relayUrl = canonicalHostedWalletRelayUrl(source.relayUrl);
3096
- const operationCredential = parseWalletSessionOperationCredentialV1(source.operationCredential);
3097
- const appOrigin = window.location.origin;
3098
- const walletOrigin = this.walletOriginOrigin;
3099
- const response = await fetch(joinNormalizedUrl(relayUrl, "/wallet/session/exchange/issue"), {
3100
- method: "POST",
3101
- headers: {
3102
- "Content-Type": "application/json",
3103
- Authorization: `Bearer ${operationCredential.token}`
3104
- },
3105
- body: JSON.stringify({
3106
- appOrigin,
3107
- walletOrigin
3108
- })
3109
- });
3110
- const raw = await readSessionExchangeJson(response);
3111
- if (!response.ok) throw parseHostedWalletExchangeFailure(raw, response.status);
3112
- const delivery = parseHostedWalletExchangeDelivery(raw, {
3113
- appOrigin: window.location.origin,
3114
- walletOrigin: this.walletOriginOrigin
3115
- });
3116
- const redemption = parseHostedWalletSeamsSessionRedemption((await this.post({
3117
- type: "PM_REDEEM_HOSTED_WALLET_SEAMS_SESSION",
3118
- payload: buildPMRedeemHostedWalletSeamsSessionPayload({
3119
- exchangeCode: delivery.exchangeCode,
3120
- nonce: delivery.nonce,
3121
- appOrigin: delivery.appOrigin,
3122
- walletOrigin: delivery.walletOrigin,
3123
- relayUrl
3124
- })
3125
- })).result);
3126
- this.state.hostedWalletSessionExpiresAtMs = redemption.expiresAtMs;
3127
- this.state.hostedWalletSessionSource = {
3128
- relayUrl,
3129
- operationCredential
3130
- };
3131
- }
3132
- getTransportDiagnosticsSnapshot() {
3133
- return this.transport.getDiagnosticsSnapshot();
3134
- }
3135
- dispose() {
3136
- if (this.disposed) return;
3137
- this.disposed = true;
3138
- const connectionId = this.state.connectionId;
3139
- if (connectionId) this.handleConnectionClosed(connectionId);
3140
- this.cancelMeasurementFallback();
3141
- this.updateSurfaceViewportListeners();
3142
- this.overlayState.controller.dispose();
3143
- this.transport.dispose();
3144
- }
3145
- onLoginStatusChanged(listener) {
3146
- this.listeners.loginStatus.add(listener);
3147
- return () => {
3148
- this.listeners.loginStatus.delete(listener);
3149
- };
3150
- }
3151
- onPreferencesChanged(listener) {
3152
- this.listeners.preferencesChanged.add(listener);
3153
- if (this.lastPreferencesChangedPayload) this.notifyPreferencesChangedListener(listener, this.lastPreferencesChangedPayload);
3154
- return () => {
3155
- this.listeners.preferencesChanged.delete(listener);
3156
- };
3157
- }
3158
- onSdkLifecycleEvent(listener) {
3159
- this.listeners.sdkLifecycleEvent.add(listener);
3160
- return () => {
3161
- this.listeners.sdkLifecycleEvent.delete(listener);
3162
- };
3163
- }
3164
- getMirroredExactSessionState() {
3165
- if (this.exactSessionState === null) throw new Error("Wallet iframe exact session state has not been initialized");
3166
- return this.exactSessionState;
3167
- }
3168
- async getExactSessionState() {
3169
- return await this.refreshExactSessionState("current", { kind: "current" });
3170
- }
3171
- async refreshExactSessionState(authenticationRead, wallet) {
3172
- const state = parseWalletIframeExactSessionState((await this.post({
3173
- type: "PM_GET_EXACT_WALLET_SESSION_STATE",
3174
- payload: {
3175
- authenticationRead,
3176
- wallet
3177
- }
3178
- })).result);
3179
- this.updateReviewSession(state);
3180
- this.exactSessionState = state;
3181
- return state;
3182
- }
3183
- emitLoginStatusChanged(status) {
3184
- for (const cb of Array.from(this.listeners.loginStatus)) try {
3185
- cb(status);
3186
- } catch {}
3187
- }
3188
- mirrorExactSessionAndEmitLoginStatus(state) {
3189
- this.updateReviewSession(state);
3190
- this.exactSessionState = state;
3191
- this.emitLoginStatusChanged(walletIframeLoginStatusFromExactSession(state));
3192
- }
3193
- async refreshExactSessionAndEmitLoginStatus(authenticationRead, wallet) {
3194
- const state = await this.refreshExactSessionState(authenticationRead, wallet);
3195
- this.mirrorExactSessionAndEmitLoginStatus(state);
3196
- return state;
3197
- }
3198
- emitPreferencesChanged(payload) {
3199
- this.lastPreferencesChangedPayload = payload;
3200
- this.mirroredConfirmationUiMode = payload.confirmationConfig.uiMode;
3201
- for (const cb of Array.from(this.listeners.preferencesChanged)) this.notifyPreferencesChangedListener(cb, payload);
3202
- }
3203
- notifyPreferencesChangedListener(listener, payload) {
3204
- try {
3205
- listener(payload);
3206
- } catch {}
3207
- }
3208
- handlePreferencesChanged(payload) {
3209
- const previousWalletId = this.lastPreferencesChangedPayload?.walletId;
3210
- this.emitPreferencesChanged(payload);
3211
- const walletId = String(payload.walletId || "").trim();
3212
- if (walletId === previousWalletId) return;
3213
- if (previousWalletId !== void 0) this.invalidateReviews();
3214
- if (!walletId) return;
3215
- this.refreshExactSessionAndEmitLoginStatus("current", {
3216
- kind: "exact",
3217
- walletId: parseRequestedWalletId(walletId)
3218
- }).catch((error) => {
3219
- console.warn("[WalletIframeRouter] Exact session refresh after wallet change failed:", error);
3220
- });
3221
- }
3222
- emitSdkLifecycleEvent(event) {
3223
- const eventName = event.event;
3224
- switch (eventName) {
3225
- case "signing_session.expired":
3226
- this.failPendingRequestsForExpiredSession(event);
3227
- this.mirrorExpiredSession(event);
3228
- if (!this.markSigningSessionExpiryAsNew(event)) return;
3229
- for (const listener of Array.from(this.listeners.sdkLifecycleEvent)) listener(event);
3230
- return;
3231
- case "registration.near_provisioning_changed":
3232
- for (const listener of Array.from(this.listeners.sdkLifecycleEvent)) listener(event);
3233
- return;
3234
- default: assertNeverSdkLifecycleEventName(eventName);
3235
- }
3236
- }
3237
- mirrorExpiredSession(event) {
3238
- const state = this.exactSessionState;
3239
- if (state === null || state.kind !== "active_session") return;
3240
- if (state.walletId !== event.walletId || state.walletSessionId !== event.walletSessionId) return;
3241
- const expiredState = {
3242
- kind: "expired_session",
3243
- walletId: event.walletId,
3244
- authorizationId: state.authorizationId,
3245
- walletSessionId: event.walletSessionId,
3246
- authMethod: event.authMethod,
3247
- expiresAtMs: event.expiresAtMs
3248
- };
3249
- this.updateReviewSession(expiredState);
3250
- this.exactSessionState = expiredState;
3251
- this.emitLoginStatusChanged(walletIframeLoginStatusFromExactSession(expiredState));
3252
- }
3253
- failPendingRequestsForExpiredSession(event) {
3254
- for (const [requestId, pending] of this.state.pending) {
3255
- const reviewed = this.reviews.get(requestId);
3256
- if (reviewed) {
3257
- reviewed.reservation.cancel(new TransactionReviewError("review_identity_changed", "Wallet session expired"));
3258
- continue;
3259
- }
3260
- const binding = pending.sessionBinding;
3261
- if (binding.kind !== "exact_session") continue;
3262
- if (binding.walletId !== event.walletId || binding.walletSessionId !== event.walletSessionId) continue;
3263
- this.state.pending.delete(requestId);
3264
- if (pending.timer !== void 0) window.clearTimeout(pending.timer);
3265
- this.progressBus.unregister(requestId);
3266
- this.finishRequestSurface(requestId, true);
3267
- this.sendBestEffortCancel(requestId);
3268
- pending.reject(new WalletIframeSessionExpiredRequestError({
3269
- kind: "wallet_iframe_request_failure",
3270
- code: "wallet_session_expired",
3271
- walletId: event.walletId,
3272
- walletSessionId: event.walletSessionId
3273
- }));
3274
- }
3275
- }
3276
- markSigningSessionExpiryAsNew(event) {
3277
- const expiredSessionIds = this.expiredSigningSessionsByWallet.get(event.walletId);
3278
- if (expiredSessionIds?.has(event.walletSessionId)) return false;
3279
- if (expiredSessionIds) {
3280
- expiredSessionIds.add(event.walletSessionId);
3281
- return true;
3282
- }
3283
- this.expiredSigningSessionsByWallet.set(event.walletId, new Set([event.walletSessionId]));
3284
- return true;
3285
- }
3286
- async signTransactionWithActions(payload) {
3287
- const safeOptions = {
3288
- ...typeof payload.options.signerSlot === "number" ? { signerSlot: payload.options.signerSlot } : {},
3289
- ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {},
3290
- ...payload.options.confirmerText ? { confirmerText: payload.options.confirmerText } : {}
3291
- };
3292
- return normalizeSignedTransactionResult((await this.post({
3293
- type: "PM_SIGN_TX_WITH_ACTIONS",
3294
- payload: {
3295
- walletId: payload.walletId,
3296
- nearAccountId: payload.nearAccountId,
3297
- transaction: payload.transaction,
3298
- options: safeOptions
3299
- },
3300
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3301
- })).result);
3302
- }
3303
- async signDelegateAction(payload) {
3304
- const safeOptions = {
3305
- ...typeof payload.options.signerSlot === "number" ? { signerSlot: payload.options.signerSlot } : {},
3306
- ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {},
3307
- ...payload.options.confirmerText ? { confirmerText: payload.options.confirmerText } : {}
3308
- };
3309
- return (await this.post({
3310
- type: "PM_SIGN_DELEGATE_ACTION",
3311
- payload: {
3312
- walletId: payload.walletId,
3313
- nearAccountId: payload.nearAccountId,
3314
- delegate: payload.delegate,
3315
- options: safeOptions
3316
- },
3317
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3318
- })).result;
3319
- }
3320
- async registerWallet(payload) {
3321
- const transport = hostedWalletRegistrationTransport(payload.authMethod);
3322
- await this.ensureHostedWalletSeamsSession(transport.sessionSource);
3323
- const confirmationConfig = payload.options?.confirmationConfig;
3324
- if (confirmationConfig) {
3325
- const base = await this.getConfirmationConfig();
3326
- await this.setConfirmationConfig({
3327
- ...base,
3328
- ...confirmationConfig
3329
- });
3330
- }
3331
- const safeOptions = removeFunctionsFromOptions(payload.options);
3332
- const res = await this.post({
3333
- type: "PM_REGISTER_WALLET",
3334
- payload: {
3335
- authMethod: transport.authMethod,
3336
- wallet: payload.wallet,
3337
- signerSelection: registrationSignerSetRequestSelection(payload.signerSelection),
3338
- options: safeOptions,
3339
- ...confirmationConfig ? { confirmationConfig } : {}
3340
- },
3341
- options: { onProgress: bridgeRegistrationProgress(payload.options?.onEvent, payload.options?.onTimingSpan) }
3342
- }, { timeoutMs: WALLET_IFRAME_REGISTRATION_TIMEOUT_MS });
3343
- const walletId = res.result?.success ? String(res.result.walletId || "") : "";
3344
- if (walletId) await this.refreshExactSessionAndEmitLoginStatus("current", {
3345
- kind: "exact",
3346
- walletId
3347
- });
3348
- return res.result;
3349
- }
3350
- async getNearProvisioningState(args) {
3351
- const walletId = toWalletId(args.walletId);
3352
- const response = await this.post({
3353
- type: "PM_GET_NEAR_PROVISIONING_STATE",
3354
- payload: { walletId: String(walletId) }
3355
- });
3356
- if (response.result === null) return null;
3357
- const state = parseNearProvisioningState(response.result);
3358
- if (!state) throw new Error("[WalletIframeRouter] Invalid NEAR provisioning state response");
3359
- return state;
3360
- }
3361
- async resumePendingEcdsaRegistration(args) {
3362
- return (await this.post({
3363
- type: "PM_RESUME_PENDING_ECDSA_REGISTRATION",
3364
- payload: args
3365
- })).result;
3366
- }
3367
- async addWalletSigner(payload) {
3368
- const confirmationConfig = payload.options?.confirmationConfig;
3369
- if (confirmationConfig) {
3370
- const base = await this.getConfirmationConfig();
3371
- await this.setConfirmationConfig({
3372
- ...base,
3373
- ...confirmationConfig
3374
- });
3375
- }
3376
- const safeOptions = removeFunctionsFromOptions(payload.options);
3377
- return (await this.post({
3378
- type: "PM_ADD_WALLET_SIGNER",
3379
- payload: {
3380
- walletId: payload.walletId,
3381
- rpId: payload.rpId,
3382
- signerSelection: payload.signerSelection,
3383
- options: safeOptions,
3384
- ...confirmationConfig ? { confirmationConfig } : {}
3385
- },
3386
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isRegistrationFlowEvent) }
3387
- })).result;
3388
- }
3389
- async addPasskey(payload) {
3390
- const confirmationConfig = payload.options?.confirmationConfig;
3391
- if (confirmationConfig) {
3392
- const base = await this.getConfirmationConfig();
3393
- await this.setConfirmationConfig({
3394
- ...base,
3395
- ...confirmationConfig
3396
- });
3397
- }
3398
- const safeOptions = removeFunctionsFromOptions(payload.options);
3399
- return (await this.post({
3400
- type: "PM_ADD_PASSKEY",
3401
- payload: {
3402
- walletId: payload.walletId,
3403
- rpId: payload.rpId,
3404
- options: safeOptions,
3405
- ...confirmationConfig ? { confirmationConfig } : {}
3406
- },
3407
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isRegistrationFlowEvent) }
3408
- })).result;
3409
- }
3410
- async addEmailOtp(payload) {
3411
- const safeOptions = removeFunctionsFromOptions(payload.options);
3412
- return (await this.post({
3413
- type: "PM_ADD_EMAIL_OTP",
3414
- payload: {
3415
- walletId: payload.walletId,
3416
- emailAddress: payload.emailAddress,
3417
- options: safeOptions
3418
- },
3419
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isRegistrationFlowEvent) }
3420
- }, { timeout: "interactive" })).result;
3421
- }
3422
- async revokeAuthMethod(payload) {
3423
- return (await this.post({
3424
- type: "PM_REVOKE_AUTH_METHOD",
3425
- payload: {
3426
- walletId: payload.walletId,
3427
- walletAuthMethodId: payload.walletAuthMethodId
3428
- }
3429
- })).result;
3430
- }
3431
- async bootstrapEcdsaSession(payload) {
3432
- const safePayload = removeFunctionsFromOptions(payload);
3433
- return (await this.post({
3434
- type: "PM_BOOTSTRAP_THRESHOLD_ECDSA_SESSION",
3435
- payload: safePayload
3436
- }, {
3437
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3438
- progressTimeoutExtensionFactor: 1
3439
- })).result;
3440
- }
3441
- async unlock(payload) {
3442
- await this.ensureHostedWalletSeamsSession(hostedWalletSeamsSessionSourceFromUnlock(payload, this.opts.relayer?.url));
3443
- const unlockPayload = buildPMUnlockPayload(payload);
3444
- const onEvent = unlockOnEventFromRequest(payload);
3445
- const result = (await this.post({
3446
- type: "PM_UNLOCK",
3447
- payload: unlockPayload,
3448
- options: { onProgress: this.wrapOnEvent(onEvent, isUnlockFlowEvent) }
3449
- })).result;
3450
- if (result.success) await this.refreshExactSessionAndEmitLoginStatus("current", { kind: "current" });
3451
- return result;
3452
- }
3453
- async getWalletSession(walletId) {
3454
- const expectedWalletId = walletId === void 0 ? void 0 : parseRequestedWalletId(walletId);
3455
- return parseWalletSessionFromBoundary((await this.post({
3456
- type: "PM_GET_WALLET_SESSION",
3457
- payload: expectedWalletId ? { walletId: expectedWalletId } : void 0
3458
- })).result, expectedWalletId);
3459
- }
3460
- async requestEmailOtpChallenge(payload) {
3461
- const { onEvent, ...wirePayload } = payload;
3462
- return (await this.post({
3463
- type: "PM_REQUEST_EMAIL_OTP_CHALLENGE",
3464
- payload: wirePayload,
3465
- options: { onProgress: this.wrapOnEvent(onEvent, isUnlockFlowEvent) }
3466
- })).result;
3467
- }
3468
- async requestEmailOtpEnrollmentChallenge(payload) {
3469
- const { onEvent, ...wirePayload } = payload;
3470
- return (await this.post({
3471
- type: "PM_REQUEST_EMAIL_OTP_ENROLLMENT_CHALLENGE",
3472
- payload: wirePayload,
3473
- options: { onProgress: this.wrapOnEvent(onEvent, isRegistrationFlowEvent) }
3474
- })).result;
3475
- }
3476
- async requestEmailOtpSigningSessionChallenge(payload) {
3477
- const { onEvent, ...wirePayload } = payload;
3478
- return (await this.post({
3479
- type: "PM_REQUEST_EMAIL_OTP_SIGNING_SESSION_CHALLENGE",
3480
- payload: wirePayload,
3481
- options: { onProgress: this.wrapOnEvent(onEvent, isUnlockFlowEvent) }
3482
- })).result;
3483
- }
3484
- googleEmailOtpWalletAuthFlowFromWire(wire, onDemoOtp) {
3485
- emitDemoEmailOtpCodeFromWire({
3486
- wire,
3487
- onDemoOtp
3488
- });
3489
- const cancel = async () => {
3490
- await this.post({
3491
- type: "PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_CANCEL",
3492
- payload: {
3493
- flowHandleId: wire.flowHandleId,
3494
- flowId: wire.flowId,
3495
- walletId: wire.walletId,
3496
- mode: wire.mode
3497
- }
3498
- });
3499
- };
3500
- if (wire.mode === "register") return {
3501
- kind: "google_email_otp_wallet_auth_flow_v1",
3502
- state: "registration_ready",
3503
- flowId: wire.flowId,
3504
- requestedMode: wire.requestedMode,
3505
- mode: "register",
3506
- walletId: walletIdFromString(wire.walletId),
3507
- emailHint: wire.emailHint,
3508
- prompt: wire.prompt,
3509
- expiresAtMs: wire.expiresAtMs,
3510
- completeRegistration: async () => {
3511
- const res = await this.post({
3512
- type: "PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_COMPLETE_REGISTRATION",
3513
- payload: {
3514
- flowHandleId: wire.flowHandleId,
3515
- flowId: wire.flowId,
3516
- walletId: wire.walletId,
3517
- mode: wire.mode
3518
- }
3519
- }, {
3520
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3521
- progressTimeoutExtensionFactor: 1
3522
- });
3523
- if (res.result.ok) await this.refreshExactSessionAndEmitLoginStatus("current", {
3524
- kind: "exact",
3525
- walletId: String(res.result.value.walletId)
3526
- });
3527
- return res.result;
3528
- },
3529
- rerollWalletId: async () => {
3530
- const res = await this.post({
3531
- type: "PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_REROLL_WALLET_ID",
3532
- payload: {
3533
- flowHandleId: wire.flowHandleId,
3534
- flowId: wire.flowId,
3535
- walletId: wire.walletId,
3536
- mode: wire.mode
3537
- }
3538
- });
3539
- if (!res.result.ok) return res.result;
3540
- const flow = this.googleEmailOtpWalletAuthFlowFromWire(res.result.value, onDemoOtp);
3541
- if (flow.mode !== "register") throw new Error("Google Email OTP registration reroll returned a login flow");
3542
- return {
3543
- ok: true,
3544
- value: flow
3545
- };
3546
- },
3547
- cancel
3548
- };
3549
- return {
3550
- kind: "google_email_otp_wallet_auth_flow_v1",
3551
- state: "challenge_sent",
3552
- flowId: wire.flowId,
3553
- requestedMode: wire.requestedMode,
3554
- mode: "login",
3555
- walletId: walletIdFromString(wire.walletId),
3556
- emailHint: wire.emailHint,
3557
- prompt: wire.prompt,
3558
- delivery: wire.delivery,
3559
- expiresAtMs: wire.expiresAtMs,
3560
- resend: async () => {
3561
- const res = await this.post({
3562
- type: "PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_RESEND",
3563
- payload: {
3564
- flowHandleId: wire.flowHandleId,
3565
- flowId: wire.flowId,
3566
- walletId: wire.walletId,
3567
- mode: wire.mode
3568
- }
3569
- });
3570
- return res.result.ok ? {
3571
- ok: true,
3572
- value: this.googleEmailOtpWalletAuthFlowFromWire(res.result.value, onDemoOtp)
3573
- } : res.result;
3574
- },
3575
- submit: async (input) => {
3576
- const res = await this.post({
3577
- type: "PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_SUBMIT",
3578
- payload: {
3579
- flowHandleId: wire.flowHandleId,
3580
- flowId: wire.flowId,
3581
- walletId: wire.walletId,
3582
- mode: wire.mode,
3583
- otpCode: input.otpCode
3584
- }
3585
- }, {
3586
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3587
- progressTimeoutExtensionFactor: 1
3588
- });
3589
- if (res.result.ok) await this.refreshExactSessionAndEmitLoginStatus("current", { kind: "current" });
3590
- return res.result;
3591
- },
3592
- cancel
3593
- };
3594
- }
3595
- async beginGoogleEmailOtpWalletAuth(payload) {
3596
- const { onDemoOtp, onEvent, ...wirePayload } = payload;
3597
- const diagnosticsEnabled = Reflect.get(globalThis, "__SEAMS_EMAIL_OTP_UNLOCK_DIAGNOSTICS") === true;
3598
- const registrationBenchmarkTimings = Reflect.get(globalThis, "__SEAMS_REGISTRATION_BENCHMARK_DIAGNOSTICS") === true;
3599
- const requestPayload = {
3600
- ...wirePayload,
3601
- diagnostics: {
3602
- emailOtpUnlockTimings: diagnosticsEnabled,
3603
- registrationBenchmarkTimings
3604
- }
3605
- };
3606
- const res = await this.post({
3607
- type: "PM_BEGIN_GOOGLE_EMAIL_OTP_WALLET_AUTH",
3608
- payload: requestPayload,
3609
- options: {
3610
- sticky: true,
3611
- onProgress: payload.mode === "register" ? this.wrapOnEvent(onEvent, isRegistrationFlowEvent) : this.wrapOnEvent(onEvent, isUnlockFlowEvent)
3612
- }
3613
- }, {
3614
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3615
- progressTimeoutExtensionFactor: 1
3616
- });
3617
- return res.result.ok ? {
3618
- ok: true,
3619
- value: this.googleEmailOtpWalletAuthFlowFromWire(res.result.value, onDemoOtp)
3620
- } : res.result;
3621
- }
3622
- async enrollEmailOtp(payload) {
3623
- const { onEvent, ...wirePayload } = payload;
3624
- return sanitizeEmailOtpIframeResult((await this.post({
3625
- type: "PM_ENROLL_EMAIL_OTP",
3626
- payload: wirePayload,
3627
- options: { onProgress: this.wrapOnEvent(onEvent, isRegistrationFlowEvent) }
3628
- }, {
3629
- timeoutMs: WALLET_IFRAME_EMAIL_OTP_ENROLLMENT_TIMEOUT_MS,
3630
- progressTimeoutExtensionFactor: 1
3631
- })).result);
3632
- }
3633
- async unlockAddedEmailOtpWallet(payload) {
3634
- await this.post({
3635
- type: "PM_UNLOCK_ADDED_EMAIL_OTP_WALLET",
3636
- payload
3637
- });
3638
- await this.refreshExactSessionAndEmitLoginStatus("current", { kind: "current" });
3639
- }
3640
- async loginWithEmailOtpEcdsaCapability(payload) {
3641
- const { onEvent, ...wirePayload } = payload;
3642
- const res = await this.post({
3643
- type: "PM_LOGIN_EMAIL_OTP_ECDSA_CAPABILITY",
3644
- payload: wirePayload,
3645
- options: { onProgress: this.wrapOnEvent(onEvent, isUnlockFlowEvent) }
3646
- }, {
3647
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3648
- progressTimeoutExtensionFactor: 1
3649
- });
3650
- await this.refreshExactSessionAndEmitLoginStatus("current", { kind: "current" });
3651
- return sanitizeEmailOtpIframeResult(res.result);
3652
- }
3653
- async refreshEmailOtpSigningSession(payload) {
3654
- const { onEvent, ...wirePayload } = payload;
3655
- const res = await this.post({
3656
- type: "PM_REFRESH_EMAIL_OTP_SIGNING_SESSION",
3657
- payload: wirePayload,
3658
- options: { onProgress: this.wrapOnEvent(onEvent, isUnlockFlowEvent) }
3659
- }, {
3660
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3661
- progressTimeoutExtensionFactor: 1
3662
- });
3663
- await this.refreshExactSessionAndEmitLoginStatus("current", { kind: "current" });
3664
- return sanitizeEmailOtpIframeResult(res.result);
3665
- }
3666
- async getWalletRecoveryCodeStatus(payload) {
3667
- return (await this.post({
3668
- type: "PM_GET_WALLET_RECOVERY_CODE_STATUS",
3669
- payload
3670
- })).result;
3671
- }
3672
- async acknowledgeWalletRecoveryCodeBackup(payload) {
3673
- await this.ensureConfigured();
3674
- return (await this.post({
3675
- type: "PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP",
3676
- payload
3677
- }, { timeout: "interactive" })).result;
3678
- }
3679
- async requestWalletCustodyEmailOtpChallenge(payload) {
3680
- return (await this.post({
3681
- type: "PM_REQUEST_WALLET_CUSTODY_EMAIL_OTP_CHALLENGE",
3682
- payload
3683
- })).result;
3684
- }
3685
- async rotateWalletRecoveryCodes(payload) {
3686
- return (await this.post({
3687
- type: "PM_ROTATE_WALLET_RECOVERY_CODES",
3688
- payload
3689
- })).result;
3690
- }
3691
- async checkLoginStatus() {
3692
- return {
3693
- ok: true,
3694
- result: walletIframeLoginStatusFromExactSession(await this.getExactSessionState())
3695
- };
3696
- }
3697
- async lock() {
3698
- this.invalidateReviews();
3699
- await this.post({ type: "PM_LOCK" });
3700
- this.exactSessionState = { kind: "wallet_locked" };
3701
- this.emitLoginStatusChanged({
3702
- isLoggedIn: false,
3703
- walletId: null
3704
- });
3705
- return {
3706
- ok: true,
3707
- result: void 0
3708
- };
3709
- }
3710
- async logout() {
3711
- this.invalidateReviews();
3712
- await this.post({ type: "PM_LOGOUT" });
3713
- this.exactSessionState = { kind: "wallet_locked" };
3714
- this.emitLoginStatusChanged({
3715
- isLoggedIn: false,
3716
- walletId: null
3717
- });
3718
- return {
3719
- ok: true,
3720
- result: void 0
3721
- };
3722
- }
3723
- async lockExactSession(expected) {
3724
- this.invalidateReviews();
3725
- const result = parseWalletIframeExactSessionLockResult((await this.post({
3726
- type: "PM_LOCK_EXACT_WALLET_SESSION",
3727
- payload: expected
3728
- })).result);
3729
- if (result.kind === "locked") {
3730
- this.exactSessionState = { kind: "wallet_locked" };
3731
- this.emitLoginStatusChanged({
3732
- isLoggedIn: false,
3733
- walletId: null
3734
- });
3735
- } else {
3736
- this.exactSessionState = result.current;
3737
- this.emitLoginStatusChanged(walletIframeLoginStatusFromExactSession(result.current));
3738
- }
3739
- return result;
3740
- }
3741
- async signNep413Message(payload) {
3742
- const safeOptions = {
3743
- ...typeof payload.options.signerSlot === "number" ? { signerSlot: payload.options.signerSlot } : {},
3744
- ...payload.options.confirmerText ? { confirmerText: payload.options.confirmerText } : {},
3745
- ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {}
3746
- };
3747
- return (await this.post({
3748
- type: "PM_SIGN_NEP413",
3749
- payload: {
3750
- walletId: payload.walletId,
3751
- nearAccountId: payload.nearAccountId,
3752
- params: {
3753
- message: payload.message,
3754
- recipient: payload.recipient,
3755
- state: payload.state
3756
- },
3757
- options: safeOptions
3758
- },
3759
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3760
- })).result;
3761
- }
3762
- async signTempo(payload, transactionDispatch = { kind: "ordinary" }) {
3763
- if (transactionDispatch.kind === "reviewed") payload = {
3764
- ...payload,
3765
- options: {
3766
- ...payload.options,
3767
- confirmationConfig: transactionDispatch.reservation.confirmationConfig
3768
- }
3769
- };
3770
- return (await this.post({
3771
- type: "PM_SIGN_TEMPO",
3772
- payload: buildSignTempoIframePayload({
3773
- walletSession: payload.walletSession,
3774
- request: payload.request,
3775
- chainTarget: payload.chainTarget,
3776
- options: payload.options ? { ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {} } : void 0
3777
- }),
3778
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3779
- }, {
3780
- timeout: "interactive",
3781
- transactionDispatch
3782
- })).result;
3783
- }
3784
- async reportTempoBroadcastAccepted(payload) {
3785
- await this.post({
3786
- type: "PM_REPORT_TEMPO_BROADCAST_ACCEPTED",
3787
- payload: {
3788
- walletSession: payload.walletSession,
3789
- signedResult: payload.signedResult,
3790
- txHash: payload.txHash
3791
- },
3792
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3793
- });
3794
- }
3795
- notifyTransactionBroadcastStarted(signedResult) {
3796
- this.state.port?.postMessage({
3797
- type: "PM_TRANSACTION_BROADCAST_STARTED",
3798
- payload: { signedTransaction: signedResult.rawTxHex }
3799
- });
3800
- }
3801
- async reportTempoBroadcastRejected(payload) {
3802
- await this.post({
3803
- type: "PM_REPORT_TEMPO_BROADCAST_REJECTED",
3804
- payload: {
3805
- walletSession: payload.walletSession,
3806
- signedResult: payload.signedResult,
3807
- ...payload.error ? { error: payload.error } : {}
3808
- },
3809
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3810
- });
3811
- }
3812
- async reportTempoFinalized(payload) {
3813
- await this.post({
3814
- type: "PM_REPORT_TEMPO_FINALIZED",
3815
- payload: {
3816
- walletSession: payload.walletSession,
3817
- signedResult: payload.signedResult,
3818
- ...payload.txHash ? { txHash: payload.txHash } : {},
3819
- ...payload.receiptStatus ? { receiptStatus: payload.receiptStatus } : {}
3820
- },
3821
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3822
- });
3823
- }
3824
- async reportTempoDroppedOrReplaced(payload) {
3825
- await this.post({
3826
- type: "PM_REPORT_TEMPO_DROPPED_OR_REPLACED",
3827
- payload: {
3828
- walletSession: payload.walletSession,
3829
- signedResult: payload.signedResult,
3830
- reason: payload.reason,
3831
- ...payload.txHash ? { txHash: payload.txHash } : {}
3832
- },
3833
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3834
- });
3835
- }
3836
- async reconcileTempoNonceLane(payload) {
3837
- return (await this.post({
3838
- type: "PM_RECONCILE_TEMPO_NONCE_LANE",
3839
- payload: {
3840
- walletSession: payload.walletSession,
3841
- signedResult: payload.signedResult
3842
- },
3843
- options: { onProgress: this.wrapOnEvent(payload.options?.onEvent, isSigningFlowEvent) }
3844
- })).result;
3845
- }
3846
- async executeAction(payload, transactionDispatch = { kind: "ordinary" }) {
3847
- if (transactionDispatch.kind === "reviewed") payload = {
3848
- ...payload,
3849
- options: {
3850
- ...payload.options,
3851
- confirmationConfig: transactionDispatch.reservation.confirmationConfig
3852
- }
3853
- };
3854
- const { options } = payload;
3855
- const safeOptions = {
3856
- waitUntil: options.waitUntil,
3857
- confirmationConfig: options.confirmationConfig,
3858
- ...typeof options.signerSlot === "number" ? { signerSlot: options.signerSlot } : {},
3859
- ...options.confirmerText ? { confirmerText: options.confirmerText } : {}
3860
- };
3861
- return (await this.post({
3862
- type: "PM_EXECUTE_ACTION",
3863
- payload: {
3864
- walletId: payload.walletId,
3865
- nearAccountId: payload.nearAccountId,
3866
- receiverId: payload.receiverId,
3867
- actionArgs: payload.actionArgs,
3868
- options: safeOptions
3869
- },
3870
- options: { onProgress: this.wrapOnEvent(options?.onEvent, isSigningFlowEvent) }
3871
- }, { transactionDispatch })).result;
3872
- }
3873
- async setConfirmBehavior(behavior, walletId) {
3874
- await this.post({
3875
- type: "PM_SET_CONFIRM_BEHAVIOR",
3876
- payload: {
3877
- behavior,
3878
- ...walletId ? { walletId } : {}
3879
- }
3880
- });
3881
- }
3882
- async setConfirmationConfig(config, walletId) {
3883
- await this.post({
3884
- type: "PM_SET_CONFIRMATION_CONFIG",
3885
- payload: {
3886
- config,
3887
- ...walletId ? { walletId } : {}
3888
- }
3889
- });
3890
- if (config.uiMode === "none" || config.uiMode === "modal" || config.uiMode === "drawer") this.mirroredConfirmationUiMode = config.uiMode;
3891
- }
3892
- async getConfirmationConfig() {
3893
- const res = await this.post({ type: "PM_GET_CONFIRMATION_CONFIG" });
3894
- this.mirroredConfirmationUiMode = res.result.uiMode;
3895
- return res.result;
3896
- }
3897
- /**
3898
- * Push appearance (theme name and/or color token overrides) to the wallet
3899
- * host at runtime. The host merges this with prior config and re-applies the
3900
- * document-owned wallet UI token stylesheet, so embedded components (tx confirmer, etc.)
3901
- * re-theme without a re-init. Appearance is excluded from the runtime-reset
3902
- * fingerprint, so this never drops warm signing-session state.
3903
- */
3904
- async setAppearance(appearance) {
3905
- await this.post({
3906
- type: "PM_SET_CONFIG",
3907
- payload: { appearance }
3908
- });
3909
- }
3910
- async prefetchBlockheight() {
3911
- await this.post({ type: "PM_PREFETCH_BLOCKHEIGHT" });
3912
- }
3913
- async prefillRouterAbEcdsaDerivationPresignaturePool(payload) {
3914
- return (await this.post({
3915
- type: "PM_PREFILL_ROUTER_AB_ECDSA_DERIVATION_PRESIGNATURE_POOL",
3916
- payload: {
3917
- walletSession: payload.walletSession,
3918
- ...payload.options ? { options: payload.options } : {}
3919
- }
3920
- }, {
3921
- timeoutMs: WALLET_IFRAME_THRESHOLD_SIGNING_TIMEOUT_MS,
3922
- progressTimeoutExtensionFactor: 1
3923
- })).result;
3924
- }
3925
- async getRecentUnlocks() {
3926
- return (await this.post({ type: "PM_GET_RECENT_UNLOCKS" })).result;
3927
- }
3928
- async syncAccount(payload) {
3929
- return (await this.post({
3930
- type: "PM_SYNC_ACCOUNT_FLOW",
3931
- payload: { ...payload?.walletId ? { walletId: payload.walletId } : {} },
3932
- options: { onProgress: this.wrapOnEvent(payload?.onEvent, isAccountSyncFlowEvent) }
3933
- })).result;
3934
- }
3935
- async scanAndLinkDevice(payload) {
3936
- const requestId = this.allocateRequestId();
3937
- return (await this.post({
3938
- type: "PM_SCAN_AND_LINK_DEVICE",
3939
- payload: {
3940
- qrData: payload.qrData,
3941
- ...payload.options ? { options: {
3942
- ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {},
3943
- ...payload.options.confirmerText ? { confirmerText: payload.options.confirmerText } : {}
3944
- } } : {}
3945
- },
3946
- options: { onProgress: (progress) => {
3947
- if (isDeviceLinkEmailOtpBaseFactorSelectionProgressV1(progress)) {
3948
- this.handleEmailOtpBaseFactorSelectionProgressV1(requestId, payload.options?.onEmailOtpBaseFactorRequired, progress);
3949
- return;
3950
- }
3951
- if (isLinkDeviceFlowEvent(progress)) payload.options?.onEvent?.(progress);
3952
- } }
3953
- }, {
3954
- requestId,
3955
- timeout: "interactive"
3956
- })).result;
3957
- }
3958
- async handleEmailOtpBaseFactorSelectionProgressV1(scanRequestId, selector, progress) {
3959
- try {
3960
- if (!selector) throw new Error("Choose the Email OTP method to use for the linked device");
3961
- const baseWalletAuthMethodId = await selector(progress.choices);
3962
- await this.post({
3963
- type: "PM_DEVICE_LINK_EMAIL_OTP_BASE_FACTOR_ACTION",
3964
- payload: {
3965
- scanRequestId,
3966
- action: {
3967
- kind: "select",
3968
- baseWalletAuthMethodId
3969
- }
3970
- }
3971
- });
3972
- } catch {
3973
- await this.post({
3974
- type: "PM_DEVICE_LINK_EMAIL_OTP_BASE_FACTOR_ACTION",
3975
- payload: {
3976
- scanRequestId,
3977
- action: { kind: "cancel" }
3978
- }
3979
- }).catch(() => void 0);
3980
- }
3981
- }
3982
- async startDevice2LinkingFlow(payload) {
3983
- return (await this.post({
3984
- type: "PM_START_DEVICE2_LINKING_FLOW",
3985
- payload: {
3986
- targetFactor: payload.targetFactor,
3987
- ...payload.targetFactor.kind === "email_otp" ? { targetEmail: payload.targetEmail } : {},
3988
- ...payload.ui ? { ui: payload.ui } : {},
3989
- ...payload.cameraId ? { cameraId: payload.cameraId } : {},
3990
- ...payload.options ? { options: {
3991
- ...payload.options.confirmationConfig ? { confirmationConfig: payload.options.confirmationConfig } : {},
3992
- ...payload.options.confirmerText ? { confirmerText: payload.options.confirmerText } : {}
3993
- } } : {}
3994
- },
3995
- options: {
3996
- sticky: true,
3997
- onProgress: this.handleDeviceLinkProgressV1.bind(this, payload.options)
3998
- }
3999
- })).result;
4000
- }
4001
- handleDeviceLinkProgressV1(options, progress) {
4002
- if (isDeviceLinkTargetFactorActivationProgressV1(progress)) {
4003
- options?.onTargetFactorRequired?.(this.deviceLinkTargetFactorActivationV1(progress));
4004
- return;
4005
- }
4006
- if (!isLinkDeviceFlowEvent(progress)) return;
4007
- options?.onEvent?.(progress);
4008
- const outcome = classifyLinkDeviceFlowEvent(progress);
4009
- if (outcome.kind !== "active") return;
4010
- this.refreshExactSessionAndEmitLoginStatus("current", {
4011
- kind: "exact",
4012
- walletId: outcome.walletId
4013
- }).catch((error) => {
4014
- console.warn("[WalletIframeRouter] Exact session refresh after device linking failed:", error);
4015
- });
4016
- }
4017
- deviceLinkTargetFactorActivationV1(progress) {
4018
- switch (progress.activation.kind) {
4019
- case "linked_device_target_passkey_activation_v1": return {
4020
- kind: progress.activation.kind,
4021
- createPasskey: this.createLinkedDeviceTargetPasskeyV1.bind(this, progress.activationId)
4022
- };
4023
- case "linked_device_target_email_otp_activation_v1": return {
4024
- kind: progress.activation.kind,
4025
- state: progress.activation.state,
4026
- sendCode: this.sendLinkedDeviceTargetEmailOtpV1.bind(this, progress.activationId),
4027
- submitCode: this.submitLinkedDeviceTargetEmailOtpV1.bind(this, progress.activationId),
4028
- resendCode: this.resendLinkedDeviceTargetEmailOtpV1.bind(this, progress.activationId)
4029
- };
4030
- default:
4031
- progress.activation;
4032
- throw new Error("Unsupported linked-device target-factor activation");
4033
- }
4034
- }
4035
- async createLinkedDeviceTargetPasskeyV1(activationId) {
4036
- await this.post({
4037
- type: "PM_DEVICE_LINK_TARGET_FACTOR_ACTION",
4038
- payload: {
4039
- activationId,
4040
- action: { kind: "create_passkey" }
4041
- }
4042
- });
4043
- }
4044
- async sendLinkedDeviceTargetEmailOtpV1(activationId) {
4045
- await this.post({
4046
- type: "PM_DEVICE_LINK_TARGET_FACTOR_ACTION",
4047
- payload: {
4048
- activationId,
4049
- action: { kind: "send_email_otp" }
4050
- }
4051
- });
4052
- }
4053
- async resendLinkedDeviceTargetEmailOtpV1(activationId) {
4054
- await this.post({
4055
- type: "PM_DEVICE_LINK_TARGET_FACTOR_ACTION",
4056
- payload: {
4057
- activationId,
4058
- action: { kind: "resend_email_otp" }
4059
- }
4060
- });
4061
- }
4062
- async submitLinkedDeviceTargetEmailOtpV1(activationId, otpCode) {
4063
- await this.post({
4064
- type: "PM_DEVICE_LINK_TARGET_FACTOR_ACTION",
4065
- payload: {
4066
- activationId,
4067
- action: {
4068
- kind: "submit_email_otp",
4069
- otpCode
4070
- }
4071
- }
4072
- });
4073
- }
4074
- async cancelDeviceLinking() {
4075
- await this.post({ type: "PM_CANCEL_DEVICE_LINKING" });
4076
- this.finishDeviceLinkQrSurface();
4077
- }
4078
- wrapOnEvent(onEvent, isExpectedEvent) {
4079
- if (!onEvent) return void 0;
4080
- return (progress) => {
4081
- try {
4082
- if (isExpectedEvent(progress)) onEvent(progress);
4083
- } catch {}
4084
- };
4085
- }
4086
- async signAndSendTransaction(payload, transactionDispatch = { kind: "ordinary" }) {
4087
- if (transactionDispatch.kind === "reviewed") payload = {
4088
- ...payload,
4089
- options: {
4090
- ...payload.options,
4091
- confirmationConfig: transactionDispatch.reservation.confirmationConfig
4092
- }
4093
- };
4094
- const { options } = payload;
4095
- const safeOptions = {
4096
- waitUntil: options.waitUntil,
4097
- confirmationConfig: options.confirmationConfig,
4098
- ...typeof options.signerSlot === "number" ? { signerSlot: options.signerSlot } : {},
4099
- ...options.confirmerText ? { confirmerText: options.confirmerText } : {}
4100
- };
4101
- return (await this.post({
4102
- type: "PM_SIGN_AND_SEND_TX",
4103
- payload: {
4104
- walletId: payload.walletId,
4105
- nearAccountId: payload.nearAccountId,
4106
- transaction: payload.transaction,
4107
- options: safeOptions
4108
- },
4109
- options: { onProgress: this.wrapOnEvent(options?.onEvent, isSigningFlowEvent) }
4110
- }, { transactionDispatch })).result;
4111
- }
4112
- async fundImplicitNearAccountForTesting(payload) {
4113
- return (await this.post({
4114
- type: "PM_FUND_IMPLICIT_NEAR_ACCOUNT_FOR_TESTING",
4115
- payload
4116
- })).result;
4117
- }
4118
- async hasPasskeyCredential(walletId) {
4119
- return !!(await this.post({
4120
- type: "PM_HAS_PASSKEY",
4121
- payload: { walletId }
4122
- }))?.result;
4123
- }
4124
- async listLinkedDevices(payload) {
4125
- const request = parseLinkedDeviceListRequestV1({
4126
- kind: "linked_device_list_request_v1",
4127
- walletId: payload.walletId,
4128
- limit: payload.limit,
4129
- cursor: payload.cursor
4130
- });
4131
- return parseLinkedDeviceListResultV1((await this.post({
4132
- type: "PM_LIST_LINKED_DEVICES",
4133
- payload: {
4134
- walletId: String(request.walletId),
4135
- limit: request.limit,
4136
- cursor: request.cursor
4137
- }
4138
- })).result);
4139
- }
4140
- async revokeLinkedDevice(payload) {
4141
- const request = parseLinkedDeviceRevokeRequestV1({
4142
- kind: "linked_device_revoke_request_v1",
4143
- walletId: payload.walletId,
4144
- walletAuthMethodId: payload.walletAuthMethodId,
4145
- requestedAtMs: payload.requestedAtMs
4146
- });
4147
- return parseLinkedDeviceRevokeResultV1((await this.post({
4148
- type: "PM_REVOKE_LINKED_DEVICE",
4149
- payload: {
4150
- walletId: String(request.walletId),
4151
- walletAuthMethodId: String(request.walletAuthMethodId),
4152
- requestedAtMs: request.requestedAtMs,
4153
- sourceProof: payload.sourceProof
4154
- }
4155
- })).result);
4156
- }
4157
- async sendTransaction(args) {
4158
- const { options } = args;
4159
- const safeOptions = options ? { waitUntil: options.waitUntil } : void 0;
4160
- return (await this.post({
4161
- type: "PM_SEND_TRANSACTION",
4162
- payload: {
4163
- walletId: args.walletId,
4164
- nearAccountId: args.nearAccountId,
4165
- signedTransaction: args.signedTransaction,
4166
- options: safeOptions
4167
- },
4168
- options: { onProgress: this.wrapOnEvent(options?.onEvent, isSigningFlowEvent) }
4169
- })).result;
4170
- }
4171
- async resolveExactKeyExportLane(input) {
4172
- return parseResolveExactKeyExportLaneResult((await this.post({
4173
- type: "PM_RESOLVE_EXACT_KEY_EXPORT_LANE",
4174
- payload: input
4175
- })).result);
4176
- }
4177
- async exportKeypairWithUI(input) {
4178
- const { onEvent, ...messageOptions } = input.options;
4179
- if (!messageOptions.variant && this.mirroredConfirmationUiMode === null) await this.getConfirmationConfig();
4180
- const payload = walletIframeExportPayload(input, {
4181
- ...messageOptions,
4182
- variant: messageOptions.variant ?? (this.mirroredConfirmationUiMode === "drawer" ? "drawer" : "modal")
4183
- });
4184
- await this.post({
4185
- type: "PM_EXPORT_KEYPAIR_UI",
4186
- payload,
4187
- options: {
4188
- sticky: true,
4189
- onProgress: this.wrapOnEvent(onEvent, isKeyExportFlowEvent)
4190
- }
4191
- });
4192
- }
4193
- async openHostedAuthMenu(request, anchorElement) {
4194
- await this.ensureConfigured();
4195
- const normalized = parseHostedAuthMenuOpenRequest(request);
4196
- if (!normalized) throw new Error("Hosted auth-menu open request is invalid");
4197
- if (this.hostedAuthMenuRequestIds.has(normalized.authMenuSessionId)) throw new Error("Hosted auth-menu session is already active");
4198
- const requestId = this.allocateRequestId();
4199
- this.hostedAuthMenuRequestIds.set(normalized.authMenuSessionId, requestId);
4200
- if (anchorElement) this.hostedAuthMenuAnchors.set(normalized.authMenuSessionId, anchorElement);
4201
- try {
4202
- const outcome = parseHostedAuthMenuOutcome((await this.post({
4203
- type: "PM_OPEN_AUTH_MENU",
4204
- payload: normalized
4205
- }, {
4206
- requestId,
4207
- timeout: "interactive",
4208
- shouldContinue: () => !this.cancelledHostedAuthMenuSessions.has(normalized.authMenuSessionId)
4209
- })).result);
4210
- if (!outcome || outcome.authMenuSessionId !== normalized.authMenuSessionId) throw new Error("Hosted auth-menu returned an invalid terminal outcome");
4211
- return outcome;
4212
- } finally {
4213
- this.stopHostedAuthMenuAnchorTracking(normalized.authMenuSessionId);
4214
- this.hostedAuthMenuRequestIds.delete(normalized.authMenuSessionId);
4215
- this.hostedAuthMenuConnectionIds.delete(normalized.authMenuSessionId);
4216
- this.hostedAuthMenuAnchors.delete(normalized.authMenuSessionId);
4217
- this.cancelledHostedAuthMenuSessions.delete(normalized.authMenuSessionId);
4218
- }
4219
- }
4220
- async cancelHostedAuthMenu(args) {
4221
- await this.cancelHostedAuthMenuWithReason(args.authMenuSessionId, "component_unmounted");
4222
- }
4223
- async cancelHostedAuthMenuWithReason(rawAuthMenuSessionId, reason) {
4224
- const authMenuSessionId = hostedAuthMenuSessionIdFromBoundary(rawAuthMenuSessionId);
4225
- if (!authMenuSessionId) throw new Error("authMenuSessionId must be a non-empty string");
4226
- const activeRequestId = this.hostedAuthMenuRequestIds.get(authMenuSessionId);
4227
- if (!activeRequestId) return;
4228
- const payload = buildHostedAuthMenuCancelPayload({
4229
- authMenuSessionId,
4230
- requestId: activeRequestId,
4231
- reason
4232
- });
4233
- this.settleHostedAuthMenuCancellation(authMenuSessionId, reason);
4234
- this.sendBestEffortHostedAuthMenuCancel(payload);
4235
- }
4236
- async cancelRequest(requestId) {
4237
- const review = this.reviews.get(requestId);
4238
- if (review) {
4239
- review.reservation.cancel(new TransactionReviewError("cancelled", "Review cancelled"));
4240
- return;
4241
- }
4242
- this.transactionSurfaceQueue.cancel(requestId);
4243
- const authMenuSessionId = this.hostedAuthMenuSessionIdForRequestId(requestId);
4244
- if (authMenuSessionId) this.settleHostedAuthMenuCancellation(authMenuSessionId, "component_unmounted");
4245
- else if (!this.reviews.has(requestId)) this.settlePendingRequestCancellation(requestId, true);
4246
- this.sendBestEffortCancel(requestId);
4247
- }
4248
- async cancelAll() {
4249
- this.transactionSurfaceQueue.cancelAll(/* @__PURE__ */ new Error("Wallet requests cancelled"));
4250
- for (const entry of this.reviews.values()) entry.reservation.cancel(new TransactionReviewError("cancelled", "Wallet requests cancelled"));
4251
- for (const authMenuSessionId of Array.from(this.hostedAuthMenuRequestIds.keys())) this.settleHostedAuthMenuCancellation(authMenuSessionId, "component_unmounted");
4252
- for (const requestId of Array.from(this.state.pending.keys())) {
4253
- if (this.reviews.has(requestId)) continue;
4254
- this.settlePendingRequestCancellation(requestId, true);
4255
- this.sendBestEffortCancel(requestId);
4256
- }
4257
- if (this.walletIframeSurface.kind !== "hidden" && !this.reviews.has(this.walletIframeSurface.identity.requestId)) this.transitionWalletIframeSurface({
4258
- kind: "request_cancelled",
4259
- connectionId: this.walletIframeSurface.connectionId,
4260
- identity: this.walletIframeSurface.identity
4261
- });
4262
- if (this.reviews.size === 0) {
4263
- this.sendBestEffortCancel();
4264
- this.progressBus.clearAll();
4265
- }
4266
- }
4267
- onPortMessage(e, connectionId) {
4268
- if (this.state.connectionId !== connectionId) return;
4269
- const lifecycleEnvelope = parseSdkLifecycleEnvelope(e.data);
4270
- switch (lifecycleEnvelope.kind) {
4271
- case "lifecycle_event":
4272
- this.emitSdkLifecycleEvent(lifecycleEnvelope.event);
4273
- return;
4274
- case "invalid_lifecycle_event":
4275
- if (this.debug) console.warn("[WalletIframeRouter] Ignored invalid SDK lifecycle event");
4276
- return;
4277
- case "not_lifecycle_event": break;
4278
- }
4279
- const msg = parseClientChildToParentEnvelope(e.data);
4280
- if (!msg) return;
4281
- if (msg.type === "PREFERENCES_CHANGED") {
4282
- const payload = msg.payload;
4283
- this.handlePreferencesChanged(payload);
4284
- return;
4285
- }
4286
- if (msg.type === "AUTH_MENU_EXTERNAL_AUTH_REQUEST") {
4287
- const payload = parseHostedAuthMenuExternalAuthRequest(msg.payload);
4288
- if (!payload) return;
4289
- const activeRequestId = this.hostedAuthMenuRequestIds.get(payload.authMenuSessionId);
4290
- if (!activeRequestId || typeof msg.requestId !== "string" || msg.requestId !== activeRequestId) return;
4291
- for (const listener of Array.from(this.listeners.hostedAuthMenuExternalAuthRequest)) try {
4292
- listener(payload);
4293
- } catch {}
4294
- return;
4295
- }
4296
- if (msg.type === "AUTH_MENU_DEMO_EMAIL_OTP_DELIVERY") {
4297
- const payload = parseHostedAuthMenuDemoEmailOtpDelivery(msg.payload);
4298
- if (!payload) return;
4299
- const activeRequestId = this.hostedAuthMenuRequestIds.get(payload.authMenuSessionId);
4300
- if (!activeRequestId || typeof msg.requestId !== "string" || msg.requestId !== activeRequestId) return;
4301
- for (const listener of Array.from(this.listeners.hostedAuthMenuDemoEmailOtpDelivery)) try {
4302
- listener(payload);
4303
- } catch {}
4304
- return;
4305
- }
4306
- if (msg.type === "AUTH_MENU_ERROR") {
4307
- const payload = parseHostedAuthMenuErrorEvent(msg.payload);
4308
- if (!payload) return;
4309
- const activeRequestId = this.hostedAuthMenuRequestIds.get(payload.authMenuSessionId);
4310
- const anchorElement = this.hostedAuthMenuAnchors.get(payload.authMenuSessionId);
4311
- if (!activeRequestId || !anchorElement || typeof msg.requestId !== "string" || msg.requestId !== activeRequestId) return;
4312
- dispatchHostedAuthMenuError(anchorElement, payload);
4313
- return;
4314
- }
4315
- if (msg.type === "TRANSACTION_REVIEW_STATE") {
4316
- this.handleReviewState(msg.payload);
4317
- return;
4318
- }
4319
- if (msg.type === "SURFACE_MEASUREMENT") {
4320
- this.handleSurfaceMeasurement(msg.payload);
4321
- return;
4322
- }
4323
- if (msg.type === "TRANSACTION_ACTIVITY") {
4324
- const surface = this.walletIframeSurface;
4325
- if (surface.kind !== "modal_transaction_confirm" || surface.identity.requestId !== msg.requestId) return;
4326
- if (msg.payload === "closed") {
4327
- this.transactionReceipt = null;
4328
- this.finishRequestSurface(surface.identity.requestId, false);
4329
- } else {
4330
- this.transactionReceipt = {
4331
- requestId: msg.requestId,
4332
- view: msg.payload
4333
- };
4334
- this.renderActiveWalletIframeSurface();
4335
- }
4336
- return;
4337
- }
4338
- const requestId = msg.requestId;
4339
- if (!requestId) return;
4340
- if (msg.type === "PROGRESS") {
4341
- const payload = msg.payload;
4342
- this.progressBus.dispatch({
4343
- requestId,
4344
- payload
4345
- });
4346
- if (!this.reviews.has(requestId) && isWalletFlowEvent(payload) && payload.status === "cancelled") {
4347
- this.settlePendingRequestCancellation(requestId, false);
4348
- this.sendBestEffortCancel(requestId);
4349
- return;
4350
- }
4351
- this.extendMeasurementFallbackOnProgress(requestId);
4352
- if (!this.reviews.has(requestId) && shouldHideWalletIframeSurface(payload)) this.hideRequestSurface(requestId);
4353
- if (this.progressBus.isSticky(requestId) && isTerminalStickyWalletFlowProgress(payload)) {
4354
- this.progressBus.unregister(requestId);
4355
- this.finishRequestSurface(requestId, isWalletFlowEvent(payload) && payload.status === "cancelled");
4356
- }
4357
- const pend = this.state.pending.get(requestId);
4358
- if (pend?.timeout.kind === "deadline") {
4359
- if (pend.timer) window.clearTimeout(pend.timer);
4360
- const remainingLifetimeMs = Math.max(0, pend.timeout.deadlineAtMs - Date.now());
4361
- if (remainingLifetimeMs === 0) {
4362
- const err = pend.onTimeout();
4363
- pend.reject(err);
4364
- return;
4365
- }
4366
- const nextTimeoutMs = Math.max(1, Math.min(pend.timeout.timeoutMs, remainingLifetimeMs));
4367
- pend.timer = window.setTimeout(() => {
4368
- const err = pend.onTimeout();
4369
- pend.reject(err);
4370
- }, nextTimeoutMs);
4371
- }
4372
- return;
4373
- }
4374
- const pending = this.state.pending.get(requestId);
4375
- if (!pending) {
4376
- if (this.debug) console.debug("[WalletIframeRouter] Non-PROGRESS without pending", {
4377
- requestId,
4378
- type: msg.type
4379
- });
4380
- this.progressBus.unregister(requestId);
4381
- this.finishRequestSurface(requestId, msg.type === "ERROR");
4382
- return;
4383
- }
4384
- this.state.pending.delete(requestId);
4385
- if (pending.timer) window.clearTimeout(pending.timer);
4386
- if (msg.type === "ERROR") {
4387
- const message = resolveCanonicalSignerBoundaryMessage(msg.payload?.code, msg.payload?.message);
4388
- const err = new Error(message);
4389
- err.code = msg.payload?.code;
4390
- err.details = msg.payload?.details;
4391
- if (isTerminalWalletStateErrorCode(msg.payload?.code)) {
4392
- this.exactSessionState = { kind: "wallet_locked" };
4393
- this.emitLoginStatusChanged({
4394
- isLoggedIn: false,
4395
- walletId: null
4396
- });
4397
- }
4398
- pending.reject(err);
4399
- const terminalStatus = isWalletOperationCancellationCode(msg.payload?.code) ? "cancelled" : "failed";
4400
- const fallbackProgress = createTerminalProgressForRequest({
4401
- requestType: pending.requestType,
4402
- requestId,
4403
- status: terminalStatus,
4404
- message,
4405
- errorCode: msg.payload?.code
4406
- });
4407
- if (fallbackProgress) this.progressBus.dispatch({
4408
- requestId,
4409
- payload: fallbackProgress
4410
- });
4411
- this.progressBus.unregister(requestId);
4412
- this.finishRequestSurface(requestId, terminalStatus === "cancelled");
4413
- return;
4414
- }
4415
- pending.resolve(msg.type === "PONG" ? void 0 : msg.payload);
4416
- if (this.progressBus.isSticky(requestId)) return;
4417
- this.progressBus.unregister(requestId);
4418
- this.finishRequestSurface(requestId, false);
4419
- }
4420
- /**
4421
- * Post a typed envelope over the MessagePort with robust readiness handling.
4422
- * This is the core method that handles all communication with the iframe.
4423
- *
4424
- * Flow:
4425
- * 1. Ensure iframe is ready (lazy initialization)
4426
- * 2. Generate unique request ID for correlation
4427
- * 3. Set up timeout and progress handling
4428
- * 4. Send message to iframe via MessagePort
4429
- * 5. Wait for response (PM_RESULT or ERROR)
4430
- * 6. Clean up on completion or timeout
4431
- */
4432
- async post(envelope, postOpts) {
4433
- if (!this.state.ready || !this.state.port) await this.init();
4434
- const connectionId = this.state.connectionId;
4435
- if (!connectionId || !this.state.port) throw new Error("Wallet iframe connection is unavailable");
4436
- if (postOpts?.shouldContinue && !postOpts.shouldContinue()) throw new Error("Wallet iframe request was cancelled before dispatch");
4437
- const reservation = postOpts?.transactionDispatch?.kind === "reviewed" ? postOpts.transactionDispatch.reservation : null;
4438
- if (reservation) {
4439
- if (this.reviews.get(reservation.identity.requestId)?.reservation !== reservation || reservation.connectionId !== connectionId) throw new TransactionReviewError("review_identity_changed", "The review reservation is no longer valid");
4440
- await this.refreshExactSessionState("current", { kind: "current" });
4441
- reservation.beginDispatch();
4442
- }
4443
- const requestId = reservation?.identity.requestId ?? postOpts?.requestId ?? this.allocateRequestId();
4444
- const full = reservation ? {
4445
- ...envelope,
4446
- requestId,
4447
- transactionReview: reservation.metadata
4448
- } : {
4449
- ...envelope,
4450
- requestId
4451
- };
4452
- const sessionBinding = this.sessionBindingForRequest(full);
4453
- const { options } = full;
4454
- const requestStartMs = Date.now();
4455
- const timeoutPolicy = postOpts?.timeout === "interactive" ? { kind: "interactive" } : (() => {
4456
- const timeoutMs = postOpts?.timeoutMs ?? this.opts.requestTimeoutMs;
4457
- const parsedProgressTimeoutExtensionFactor = Number(postOpts?.progressTimeoutExtensionFactor);
4458
- const progressTimeoutExtensionFactor = Number.isFinite(parsedProgressTimeoutExtensionFactor) && parsedProgressTimeoutExtensionFactor >= 1 ? parsedProgressTimeoutExtensionFactor : WALLET_IFRAME_PROGRESS_TIMEOUT_EXTENSION_FACTOR;
4459
- return {
4460
- kind: "deadline",
4461
- timeoutMs,
4462
- deadlineAtMs: requestStartMs + Math.max(timeoutMs, timeoutMs * progressTimeoutExtensionFactor)
4463
- };
4464
- })();
4465
- const deadlineAtMs = timeoutPolicy.kind === "deadline" ? timeoutPolicy.deadlineAtMs : null;
4466
- const surfaceKind = requestSurfaceKindForMessage(envelope.type, full.payload);
4467
- let transactionSurfaceLease = null;
4468
- if (!reservation && (surfaceKind === "transaction" || surfaceKind === "email_otp_enrollment")) {
4469
- const queueDeadline = timeoutPolicy.kind === "deadline" ? {
4470
- kind: "deadline",
4471
- atMs: timeoutPolicy.deadlineAtMs
4472
- } : { kind: "interactive" };
4473
- transactionSurfaceLease = await this.transactionSurfaceQueue.acquire({
4474
- requestId,
4475
- deadline: queueDeadline
4476
- });
4477
- }
4478
- try {
4479
- if (this.state.connectionId !== connectionId || !this.state.port) throw new WalletIframeConnectionClosedRequestError(requestId, connectionId, envelope.type);
4480
- const admission = this.requestAdmission(sessionBinding);
4481
- if (admission.kind === "expired") throw new WalletIframeSessionExpiredRequestError({
4482
- kind: "wallet_iframe_request_failure",
4483
- code: "wallet_session_expired",
4484
- walletId: admission.identity.walletId,
4485
- walletSessionId: admission.identity.walletSessionId
4486
- });
4487
- if (surfaceKind && !reservation) this.beginRequestSurface({
4488
- kind: surfaceKind,
4489
- requestId,
4490
- deadlineAtMs,
4491
- payload: full.payload,
4492
- authMenuSessionId: authMenuSessionIdForMessage(envelope.type, full.payload) ?? void 0
4493
- });
4494
- return await new Promise((resolve, reject) => {
4495
- const onTimeout = () => {
4496
- const pending = this.state.pending.get(requestId);
4497
- if (pending?.timer !== void 0) window.clearTimeout(pending.timer);
4498
- this.state.pending.delete(requestId);
4499
- this.progressBus.unregister(requestId);
4500
- this.finishRequestSurface(requestId, true);
4501
- this.sendBestEffortCancel(requestId);
4502
- const elapsedMs = Math.max(0, Date.now() - requestStartMs);
4503
- return /* @__PURE__ */ new Error(`Wallet request timeout for ${envelope.type} after ${elapsedMs}ms`);
4504
- };
4505
- const timer = timeoutPolicy.kind === "deadline" ? window.setTimeout(() => {
4506
- reject(onTimeout());
4507
- }, Math.max(1, Math.min(timeoutPolicy.timeoutMs, timeoutPolicy.deadlineAtMs - Date.now()))) : void 0;
4508
- this.state.pending.set(requestId, {
4509
- requestId,
4510
- connectionId,
4511
- resolve: (v) => resolve(v),
4512
- reject,
4513
- timer,
4514
- timeout: timeoutPolicy,
4515
- onProgress: options?.onProgress,
4516
- requestType: envelope.type,
4517
- onTimeout,
4518
- sessionBinding: admission.binding
4519
- });
4520
- this.progressBus.register({
4521
- requestId,
4522
- sticky: !!options?.sticky,
4523
- onProgress: (payload) => {
4524
- try {
4525
- options?.onProgress?.(payload);
4526
- } catch {}
4527
- }
4528
- });
4529
- try {
4530
- const stickyVal = isObject(options) ? options.sticky : void 0;
4531
- const wireOptions = isBoolean(stickyVal) ? { sticky: stickyVal } : void 0;
4532
- const serializableFull = wireOptions ? {
4533
- ...full,
4534
- options: wireOptions
4535
- } : {
4536
- ...full,
4537
- options: void 0
4538
- };
4539
- this.state.port.postMessage(serializableFull);
4540
- } catch (err) {
4541
- this.state.pending.delete(requestId);
4542
- window.clearTimeout(timer);
4543
- this.progressBus.unregister(requestId);
4544
- this.finishRequestSurface(requestId, true);
4545
- reject(toError(err));
4546
- }
4547
- });
4548
- } finally {
4549
- transactionSurfaceLease?.release();
4550
- }
4551
- }
4552
- sessionBindingForRequest(envelope) {
4553
- const requestWalletId = exactSessionRequestWalletId(envelope);
4554
- if (requestWalletId === null) return { kind: "unbound" };
4555
- const state = this.exactSessionState;
4556
- if (state === null || state.kind !== "active_session" || state.walletId !== requestWalletId) return { kind: "unbound" };
4557
- return {
4558
- kind: "exact_session",
4559
- walletId: state.walletId,
4560
- authorizationId: state.authorizationId,
4561
- walletSessionId: state.walletSessionId,
4562
- authMethod: state.authMethod,
4563
- expiresAtMs: state.expiresAtMs
4564
- };
4565
- }
4566
- requestAdmission(binding) {
4567
- if (binding.kind === "unbound") return {
4568
- kind: "admitted",
4569
- binding
4570
- };
4571
- if (!this.expiredSigningSessionsByWallet.get(binding.walletId)?.has(binding.walletSessionId)) return {
4572
- kind: "admitted",
4573
- binding
4574
- };
4575
- const { kind: _kind, ...identity } = binding;
4576
- return {
4577
- kind: "expired",
4578
- identity
4579
- };
4580
- }
4581
- allocateRequestId() {
4582
- return `${Date.now()}-${++this.state.reqCounter}`;
4583
- }
4584
- sendBestEffortCancel(targetRequestId, reviewError) {
4585
- const port = this.state.port;
4586
- if (!port) return;
4587
- const cancelEnvelope = {
4588
- type: "PM_CANCEL",
4589
- requestId: `cancel-${Date.now()}-${secureRandomBase36(12, "wallet iframe cancel request IDs")}`,
4590
- payload: targetRequestId ? {
4591
- requestId: targetRequestId,
4592
- ...this.reviews.get(targetRequestId) ? {
4593
- transactionReview: this.reviews.get(targetRequestId).reservation.metadata,
4594
- reviewErrorCode: transactionReviewCancellationCode(reviewError && "code" in reviewError ? reviewError.code : void 0)
4595
- } : {}
4596
- } : {}
4597
- };
4598
- try {
4599
- port.postMessage(cancelEnvelope);
4600
- } catch {}
4601
- }
4602
- sendBestEffortHostedAuthMenuCancel(payload) {
4603
- const port = this.state.port;
4604
- if (!port) return;
4605
- try {
4606
- port.postMessage({
4607
- type: "PM_CANCEL_AUTH_MENU",
4608
- requestId: `cancel-auth-menu-${Date.now()}-${secureRandomBase36(12, "wallet iframe auth menu cancel request IDs")}`,
4609
- payload
4610
- });
4611
- } catch {}
4612
- }
4613
- /** Public helper for tests/tools: get the underlying iframe element. */
4614
- getIframeEl() {
4615
- return this.transport.getIframeEl();
4616
- }
4617
- /** Public helper for tests/tools: inspect current overlay state. */
4618
- getOverlayState() {
4619
- return this.overlayState.controller.getState();
4620
- }
4621
- };
4622
- function requestPayloadWalletId(payload) {
4623
- if (payload === null || typeof payload !== "object" || Array.isArray(payload)) return null;
4624
- const walletId = Reflect.get(payload, "walletId");
4625
- return typeof walletId === "string" ? walletId : null;
4626
- }
4627
- function requestPayloadSessionWalletId(payload) {
4628
- if (payload === null || typeof payload !== "object" || Array.isArray(payload)) return null;
4629
- const walletSession = Reflect.get(payload, "walletSession");
4630
- if (walletSession === null || typeof walletSession !== "object" || Array.isArray(walletSession)) return null;
4631
- const walletId = Reflect.get(walletSession, "walletId");
4632
- return typeof walletId === "string" ? walletId : null;
4633
- }
4634
- function exactSessionRequestWalletId(envelope) {
4635
- const payload = envelope.payload;
4636
- switch (envelope.type) {
4637
- case "PM_SIGN_TX_WITH_ACTIONS":
4638
- case "PM_SIGN_AND_SEND_TX":
4639
- case "PM_EXECUTE_ACTION":
4640
- case "PM_SIGN_DELEGATE_ACTION":
4641
- case "PM_SIGN_NEP413": return requestPayloadWalletId(payload);
4642
- case "PM_SIGN_TEMPO": return requestPayloadSessionWalletId(payload);
4643
- case "PM_REVOKE_LINKED_DEVICE":
4644
- case "PM_ROTATE_WALLET_RECOVERY_CODES": return requestPayloadWalletId(payload);
4645
- default: return null;
4646
- }
4647
- }
4648
- function parseRequestedWalletId(value) {
4649
- const normalized = value.trim();
4650
- if (!normalized) throw new Error("Wallet Session request walletId is required");
4651
- return walletIdFromString(normalized);
4652
- }
4653
- function isRegistrationFlowEvent(progress) {
4654
- return isWalletFlowEvent(progress) && progress.flow === "registration";
4655
- }
4656
- function bridgeRegistrationProgress(onEvent, onTimingSpan) {
4657
- if (!onEvent && !onTimingSpan) return void 0;
4658
- return (progress) => {
4659
- try {
4660
- if (isRegistrationFlowEvent(progress)) onEvent?.(progress);
4661
- else if (isRegistrationTimingSpanV1(progress)) onTimingSpan?.(progress);
4662
- } catch {}
4663
- };
4664
- }
4665
- function isUnlockFlowEvent(p) {
4666
- return isWalletFlowEvent(p) && p.flow === "unlock";
4667
- }
4668
- function isSigningFlowEvent(p) {
4669
- return isWalletFlowEvent(p) && p.flow === "signing";
4670
- }
4671
- function isLinkDeviceFlowEvent(p) {
4672
- return isWalletFlowEvent(p) && p.flow === "link_device";
4673
- }
4674
- function isAccountSyncFlowEvent(p) {
4675
- return isWalletFlowEvent(p) && p.flow === "account_sync";
4676
- }
4677
- function isKeyExportFlowEvent(p) {
4678
- return isWalletFlowEvent(p) && p.flow === "key_export";
4679
- }
4680
- /**
4681
- * Strips out class functions as they cannot be sent over postMessage to iframe
4682
- */
4683
- function normalizeSignedTransactionResult(result) {
4684
- const signedTransaction = result.signedTransaction;
4685
- if (!isPlainSignedTransactionLike(signedTransaction)) return result;
4686
- const nonceLease = signedTransaction.nonceLease || result.nonceLease;
4687
- const serverDispatch = signedTransaction.serverDispatch;
4688
- return {
4689
- ...result,
4690
- signedTransaction: SignedTransaction.fromPlain({
4691
- transaction: signedTransaction.transaction,
4692
- signature: signedTransaction.signature,
4693
- borsh_bytes: extractBorshBytesFromPlainSignedTx(signedTransaction),
4694
- ...nonceLease ? { nonceLease } : {},
4695
- ...serverDispatch ? { serverDispatch } : {}
4696
- })
4697
- };
4698
- }
4699
- function unlockOnEventFromRequest(request) {
4700
- switch (request.kind) {
4701
- case "default_options": return;
4702
- case "custom_options": return request.options.onEvent;
4703
- }
4704
- return assertNeverLoginUnlockRequest(request);
4705
- }
4706
- function removeFunctionsFromOptions(options) {
4707
- if (!options || !isObject(options)) return void 0;
4708
- return stripFunctionsShallow(options);
4709
- }
4710
- function assertNeverLoginUnlockRequest(value) {
4711
- throw new Error(`Unhandled wallet iframe unlock request: ${String(value)}`);
4712
- }
4713
- function sameReviewSession(left, right) {
4714
- if (left.kind !== right.kind) return false;
4715
- if (left.kind === "wallet_locked" || right.kind === "wallet_locked") return true;
4716
- if (left.walletId !== right.walletId) return false;
4717
- if ("walletSessionId" in left || "walletSessionId" in right) return "walletSessionId" in left && "walletSessionId" in right && left.walletSessionId === right.walletSessionId && left.authorizationId === right.authorizationId;
4718
- return true;
4719
- }
4720
- //#endregion
4721
- export { WalletIframeRouter };