@seams/wallet 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1693) hide show
  1. package/README.md +4 -5
  2. package/THIRD_PARTY_NOTICES.md +1 -9
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +2 -2
  5. package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
  6. package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
  7. package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
  8. package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
  9. package/dist/esm/SeamsWeb/operations/auth/login.js +18 -43
  10. package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
  11. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
  12. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
  13. package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
  14. package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
  15. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +1 -4
  16. package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
  17. package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
  18. package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
  19. package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
  20. package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
  21. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
  22. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +1 -2
  23. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
  24. package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +3 -12
  25. package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
  26. package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
  27. package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
  28. package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
  29. package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
  30. package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
  31. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +4 -4
  32. package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
  33. package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
  34. package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
  35. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
  36. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
  37. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +165 -222
  38. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
  39. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
  40. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
  41. package/dist/esm/advanced.js +0 -1
  42. package/dist/esm/base-styles.js +2 -2
  43. package/dist/esm/core/accountData/near/accountProjection.js +0 -1
  44. package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
  45. package/dist/esm/core/browser/walletIframe/events.js +1 -5
  46. package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
  47. package/dist/esm/core/config/chains.js +1 -2
  48. package/dist/esm/core/config/configBuilder.js +0 -1
  49. package/dist/esm/core/config/configHelpers.js +0 -1
  50. package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
  51. package/dist/esm/core/indexedDB/index.js +3 -4
  52. package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +1 -4
  53. package/dist/esm/core/indexedDB/schemaNames.js +0 -22
  54. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
  55. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
  56. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
  57. package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
  58. package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
  59. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
  60. package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
  61. package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
  62. package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
  63. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
  64. package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
  65. package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
  66. package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
  67. package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
  68. package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
  69. package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +3 -4
  70. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
  71. package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
  72. package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
  73. package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
  74. package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
  75. package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
  76. package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
  77. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -1
  78. package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +1 -1
  79. package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
  80. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
  81. package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
  82. package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
  83. package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
  84. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +1 -1
  85. package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +1 -2
  86. package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
  87. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
  88. package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
  89. package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
  90. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
  91. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
  92. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
  93. package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
  94. package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
  95. package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
  96. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
  97. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1
  98. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
  99. package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
  100. package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
  101. package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -1
  102. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
  103. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
  104. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +1 -7
  105. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +10 -14
  106. package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
  107. package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
  108. package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
  109. package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
  110. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
  111. package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
  112. package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +1 -2
  113. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +1 -1
  114. package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
  115. package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
  116. package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
  117. package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
  118. package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
  119. package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
  120. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
  121. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +12 -45
  122. package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
  123. package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -2
  124. package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
  125. package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
  126. package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
  127. package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
  128. package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
  129. package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
  130. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
  131. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
  132. package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
  133. package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
  134. package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
  135. package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
  136. package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
  137. package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
  138. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
  139. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +1 -1
  140. package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
  141. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
  142. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
  143. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +7 -0
  144. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
  145. package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
  146. package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
  147. package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
  148. package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
  149. package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
  150. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
  151. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
  152. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
  153. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
  154. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
  155. package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
  156. package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
  157. package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
  158. package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
  159. package/dist/esm/core/signingEngine/workerManager/workerTransport.js +3 -42
  160. package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
  161. package/dist/esm/core/types/accountIds.js +0 -1
  162. package/dist/esm/core/types/sdkSentEvents.js +1 -2
  163. package/dist/esm/core/types/signer-worker.js +1 -36
  164. package/dist/esm/core/walletRuntimePaths/base.js +11 -1
  165. package/dist/esm/plugins/headers.js +0 -1
  166. package/dist/esm/plugins/next.js +0 -1
  167. package/dist/esm/plugins/plugin-utils.js +0 -1
  168. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
  169. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
  170. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +1 -1
  171. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +1 -1
  172. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +4 -4
  173. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +1 -1
  174. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
  175. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
  176. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +14 -6
  177. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
  178. package/dist/esm/react/components/AccountMenuButton/index.js +5 -5
  179. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
  180. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
  181. package/dist/esm/react/components/QRCodeScanner.js +2 -2
  182. package/dist/esm/react/components/ShowQRCode.js +4 -4
  183. package/dist/esm/react/components/theme/design-tokens.js +1 -2
  184. package/dist/esm/react/context/index.js +1 -1
  185. package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
  186. package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
  187. package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
  188. package/dist/esm/react/context/useSeamsContextValue.js +1 -1
  189. package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
  190. package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -1
  191. package/dist/esm/react/hooks/useAccountInput.js +4 -4
  192. package/dist/esm/react/hooks/useNearClient.js +3 -3
  193. package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
  194. package/dist/esm/react/hooks/useQRCamera.js +2 -2
  195. package/dist/esm/react/hooks/useWallet.js +1 -1
  196. package/dist/esm/react/index.js +10 -10
  197. package/dist/esm/react/styles/styles.css +8 -0
  198. package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
  199. package/dist/esm/react/transactionReview/boundCalls.js +2 -2
  200. package/dist/esm/react/transactionReview/contract.js +1 -1
  201. package/dist/esm/react/transactionReview/controller.js +2 -2
  202. package/dist/esm/react/transactionReview/snapshot.js +2 -2
  203. package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  204. package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
  205. package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
  206. package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  207. package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
  208. package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  209. package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
  210. package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
  211. package/dist/esm/sdk/base-Xtd32asf.js +1 -0
  212. package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
  213. package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
  214. package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
  215. package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  216. package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  217. package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  218. package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
  219. package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  220. package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
  221. package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
  222. package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  223. package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
  224. package/dist/esm/sdk/display-jK7_hYho.js +1 -0
  225. package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
  226. package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  227. package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  228. package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  229. package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  230. package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  231. package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  232. package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  233. package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
  234. package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
  235. package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  236. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  237. package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
  238. package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  239. package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  240. package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  241. package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
  242. package/dist/esm/sdk/host-BAqOYnju.js +1 -0
  243. package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
  244. package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
  245. package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  246. package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
  247. package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  248. package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
  249. package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
  250. package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  251. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  252. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  253. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  254. package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
  255. package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  256. package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
  257. package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  258. package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  259. package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
  260. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  261. package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
  262. package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  263. package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
  264. package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  265. package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
  266. package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
  267. package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  268. package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
  269. package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  270. package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  271. package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  272. package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
  273. package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
  274. package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
  275. package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  276. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  277. package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
  278. package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  279. package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  280. package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  281. package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
  282. package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
  283. package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
  284. package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  285. package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  286. package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
  287. package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  288. package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  289. package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
  290. package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  291. package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  292. package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
  293. package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  294. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  295. package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  296. package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
  297. package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
  298. package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
  299. package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
  300. package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
  301. package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
  302. package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  303. package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  304. package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
  305. package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
  306. package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
  307. package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  308. package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
  309. package/dist/esm/sdk/tx-confirm-ui.js +12 -158
  310. package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
  311. package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
  312. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
  313. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
  314. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
  315. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
  316. package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  317. package/dist/esm/sdk/wallet-ui.css +1 -5874
  318. package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  319. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  320. package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  321. package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  322. package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  323. package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  324. package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
  325. package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  326. package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
  327. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +1 -1
  328. package/dist/esm/shared-ts/src/near/actions.js +10 -1
  329. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  330. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  331. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
  332. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +0 -1
  333. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
  334. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
  335. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +1 -1
  336. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  337. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  338. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +0 -1
  339. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
  340. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -1
  341. package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
  342. package/dist/esm/shared-ts/src/utils/errors.js +0 -1
  343. package/dist/esm/shared-ts/src/utils/index.js +4 -5
  344. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  345. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  346. package/dist/esm/shared-ts/src/utils/registrationIntent.js +0 -1
  347. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
  348. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +1 -1
  349. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -2
  350. package/dist/esm/shared-ts/src/utils/validation.js +0 -1
  351. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  352. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
  353. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  354. package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
  355. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  356. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
  357. package/dist/esm/theme/base-styles.js +11 -11
  358. package/dist/esm/utils/deviceDetection.js +16 -1
  359. package/dist/esm/utils/qrScanner.js +288 -0
  360. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
  361. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
  362. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  363. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.d.ts +0 -42
  364. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
  365. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  366. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
  367. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
  368. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  369. package/dist/public/headers.manifest.json +1 -1
  370. package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  371. package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
  372. package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
  373. package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  374. package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
  375. package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  376. package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
  377. package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
  378. package/dist/public/sdk/base-Xtd32asf.js +1 -0
  379. package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
  380. package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
  381. package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
  382. package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  383. package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  384. package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  385. package/dist/public/sdk/chains-yAls2d9X.js +1 -0
  386. package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  387. package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
  388. package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
  389. package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  390. package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
  391. package/dist/public/sdk/display-jK7_hYho.js +1 -0
  392. package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
  393. package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  394. package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  395. package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  396. package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  397. package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  398. package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  399. package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  400. package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
  401. package/dist/public/sdk/events-BJyVcnsn.js +1 -0
  402. package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  403. package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  404. package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
  405. package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  406. package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  407. package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  408. package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
  409. package/dist/public/sdk/host-BAqOYnju.js +1 -0
  410. package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
  411. package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
  412. package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  413. package/dist/public/sdk/keccak-zexutGfG.js +1 -0
  414. package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  415. package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
  416. package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
  417. package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  418. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  419. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  420. package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  421. package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
  422. package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  423. package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
  424. package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  425. package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  426. package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
  427. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  428. package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
  429. package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  430. package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
  431. package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  432. package/dist/public/sdk/registration-Btozh7uh.js +1 -0
  433. package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
  434. package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  435. package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
  436. package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  437. package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  438. package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  439. package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
  440. package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
  441. package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
  442. package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  443. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  444. package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
  445. package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  446. package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  447. package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  448. package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
  449. package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
  450. package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
  451. package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  452. package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  453. package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
  454. package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  455. package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  456. package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
  457. package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  458. package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  459. package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
  460. package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  461. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  462. package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  463. package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
  464. package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
  465. package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
  466. package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
  467. package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
  468. package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
  469. package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  470. package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  471. package/dist/public/sdk/trace-M34pNGuF.js +1 -0
  472. package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
  473. package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
  474. package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  475. package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
  476. package/dist/public/sdk/tx-confirm-ui.js +12 -158
  477. package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
  478. package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
  479. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
  480. package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
  481. package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
  482. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
  483. package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  484. package/dist/public/sdk/wallet-ui.css +1 -5874
  485. package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  486. package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  487. package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  488. package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  489. package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  490. package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  491. package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
  492. package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  493. package/dist/public/sdk/workers/device-linking-key.worker.js +387 -1952
  494. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1523 -2668
  495. package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
  496. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +1 -273
  497. package/dist/public/sdk/workers/email-otp.worker.js +228 -2103
  498. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  499. package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
  500. package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
  501. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  502. package/dist/public/sdk/workers/near-signer.worker.js +16 -718
  503. package/dist/public/sdk/workers/near_signer.wasm +0 -0
  504. package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
  505. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
  506. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
  507. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  508. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  509. package/dist/public/sdk/workers/shamir3pass.worker.js +0 -134
  510. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  511. package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
  512. package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
  513. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  514. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +135 -1635
  515. package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
  516. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  517. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  518. package/dist/public/wallet-assets.manifest.json +234 -258
  519. package/dist/public/wallet-service/index.html +4 -4
  520. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  521. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -0
  522. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  523. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +0 -11
  524. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +2 -7
  525. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  526. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  527. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  528. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  529. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -843
  530. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  531. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  532. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  533. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  534. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  535. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  536. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  537. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  538. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  539. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  540. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  541. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  542. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  543. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  544. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  545. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  546. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  547. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
  548. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +0 -3
  549. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
  550. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
  551. package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
  552. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
  553. package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
  554. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
  555. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
  556. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
  557. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
  558. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  559. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
  560. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
  561. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +11 -3
  562. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
  563. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
  564. package/dist/types/wallet/src/advanced.d.ts +1 -1
  565. package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
  566. package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
  567. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +0 -30
  568. package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
  569. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
  570. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
  571. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
  572. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
  573. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
  574. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
  575. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +5 -1
  576. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  577. package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
  578. package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +0 -15
  579. package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
  580. package/dist/types/wallet/src/core/platform/ports.d.ts +1 -51
  581. package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
  582. package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
  583. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
  584. package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
  585. package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +0 -1
  586. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
  587. package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
  588. package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
  589. package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
  590. package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
  591. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
  592. package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +1 -11
  593. package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
  594. package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
  595. package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
  596. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +2 -10
  597. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +1 -4
  598. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
  599. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
  600. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
  601. package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
  602. package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
  603. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +0 -9
  604. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
  605. package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
  606. package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
  607. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
  608. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
  609. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +0 -1
  610. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
  611. package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
  612. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
  613. package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +0 -3
  614. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
  615. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +0 -3
  616. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +0 -6
  617. package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
  618. package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
  619. package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +1 -1
  620. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
  621. package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +1 -1
  622. package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
  623. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
  624. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
  625. package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
  626. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
  627. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
  628. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
  629. package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
  630. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
  631. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
  632. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
  633. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
  634. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
  635. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
  636. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +1 -2
  637. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +0 -1
  638. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
  639. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +0 -10
  640. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
  641. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
  642. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +0 -4
  643. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
  644. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
  645. package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
  646. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
  647. package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
  648. package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
  649. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
  650. package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
  651. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
  652. package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
  653. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
  654. package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
  655. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +6 -109
  656. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
  657. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +0 -1
  658. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -8
  659. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
  660. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
  661. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
  662. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
  663. package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
  664. package/dist/types/wallet/src/core/types/index.d.ts +0 -18
  665. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -2
  666. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
  667. package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
  668. package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
  669. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
  670. package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
  671. package/dist/workers/device-linking-key.worker.js +387 -1952
  672. package/dist/workers/ecdsa-derivation-client.worker.js +1523 -2668
  673. package/dist/workers/ecdsa-online-client.worker.js +1 -273
  674. package/dist/workers/ecdsa-presign-client.worker.js +1 -273
  675. package/dist/workers/email-otp.worker.js +228 -2103
  676. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  677. package/dist/workers/evm-crypto.worker.js +0 -188
  678. package/dist/workers/evm_crypto.wasm +0 -0
  679. package/dist/workers/evm_crypto_bg.wasm +0 -0
  680. package/dist/workers/near-signer.worker.js +16 -718
  681. package/dist/workers/near_signer.wasm +0 -0
  682. package/dist/workers/passkey-confirm.worker.js +0 -134
  683. package/dist/workers/passkey-mpc-export.worker.js +149 -506
  684. package/dist/workers/passkey-mpc-session.worker.js +0 -134
  685. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  686. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  687. package/dist/workers/shamir3pass.worker.js +0 -134
  688. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  689. package/dist/workers/tempo-signer.worker.js +0 -134
  690. package/dist/workers/tempo_signer.wasm +0 -0
  691. package/dist/workers/tempo_signer_bg.wasm +0 -0
  692. package/dist/workers/wallet-custody-ceremony.worker.js +135 -1635
  693. package/dist/workers/wallet_custody_ceremony.js +0 -14
  694. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  695. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  696. package/package.json +1 -14
  697. package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  698. package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
  699. package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
  700. package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
  701. package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -198
  702. package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
  703. package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
  704. package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -177
  705. package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
  706. package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -23
  707. package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
  708. package/dist/esm/components/QRCodeScanner.css +0 -487
  709. package/dist/esm/components/ShowQRCode.css +0 -331
  710. package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -236
  711. package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  712. package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  713. package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
  714. package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
  715. package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
  716. package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1918
  717. package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
  718. package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
  719. package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
  720. package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
  721. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
  722. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
  723. package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
  724. package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
  725. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
  726. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
  727. package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
  728. package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
  729. package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4408
  730. package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
  731. package/dist/esm/react/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +0 -64
  732. package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -142
  733. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -33
  734. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
  735. package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
  736. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
  737. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
  738. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
  739. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
  740. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
  741. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
  742. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
  743. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
  744. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
  745. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
  746. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
  747. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
  748. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
  749. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
  750. package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
  751. package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
  752. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
  753. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
  754. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
  755. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -524
  756. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
  757. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -215
  758. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
  759. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
  760. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
  761. package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
  762. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
  763. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
  764. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
  765. package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
  766. package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
  767. package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
  768. package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
  769. package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
  770. package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
  771. package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
  772. package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
  773. package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
  774. package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
  775. package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
  776. package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
  777. package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
  778. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
  779. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
  780. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -383
  781. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
  782. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
  783. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
  784. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
  785. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
  786. package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -363
  787. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
  788. package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
  789. package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
  790. package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
  791. package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
  792. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
  793. package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
  794. package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
  795. package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -568
  796. package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
  797. package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
  798. package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -24
  799. package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
  800. package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
  801. package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
  802. package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
  803. package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
  804. package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
  805. package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
  806. package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
  807. package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
  808. package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
  809. package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
  810. package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -244
  811. package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
  812. package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
  813. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3917
  814. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
  815. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
  816. package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
  817. package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
  818. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
  819. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
  820. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
  821. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
  822. package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
  823. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
  824. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
  825. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
  826. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  827. package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
  828. package/dist/esm/react/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +0 -29
  829. package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
  830. package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -605
  831. package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
  832. package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
  833. package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
  834. package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
  835. package/dist/esm/react/base-styles.js +0 -13
  836. package/dist/esm/react/build-paths.js +0 -109
  837. package/dist/esm/react/config.js +0 -37
  838. package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
  839. package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
  840. package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
  841. package/dist/esm/react/core/accountData/near/profileId.js +0 -24
  842. package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
  843. package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
  844. package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
  845. package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
  846. package/dist/esm/react/core/config/chains.js +0 -90
  847. package/dist/esm/react/core/config/configBuilder.js +0 -231
  848. package/dist/esm/react/core/config/configHelpers.js +0 -183
  849. package/dist/esm/react/core/config/defaultConfigs.js +0 -120
  850. package/dist/esm/react/core/config/defineConfig.js +0 -48
  851. package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
  852. package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
  853. package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
  854. package/dist/esm/react/core/indexedDB/index.js +0 -60
  855. package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
  856. package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
  857. package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
  858. package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
  859. package/dist/esm/react/core/indexedDB/normalization.js +0 -24
  860. package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -477
  861. package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -745
  862. package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
  863. package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
  864. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
  865. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
  866. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
  867. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
  868. package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
  869. package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
  870. package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
  871. package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
  872. package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
  873. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
  874. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
  875. package/dist/esm/react/core/indexedDB/singletons.js +0 -7
  876. package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
  877. package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
  878. package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
  879. package/dist/esm/react/core/platform/secretSources.js +0 -111
  880. package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
  881. package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
  882. package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
  883. package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
  884. package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
  885. package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
  886. package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
  887. package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
  888. package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
  889. package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
  890. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
  891. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
  892. package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
  893. package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
  894. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
  895. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
  896. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
  897. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
  898. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
  899. package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
  900. package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
  901. package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
  902. package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
  903. package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
  904. package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
  905. package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
  906. package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
  907. package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
  908. package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
  909. package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
  910. package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
  911. package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
  912. package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
  913. package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
  914. package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
  915. package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
  916. package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
  917. package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -72
  918. package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
  919. package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
  920. package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
  921. package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
  922. package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
  923. package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
  924. package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
  925. package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
  926. package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
  927. package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
  928. package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
  929. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
  930. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
  931. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -250
  932. package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
  933. package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -213
  934. package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
  935. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
  936. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
  937. package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -192
  938. package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
  939. package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
  940. package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
  941. package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
  942. package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
  943. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
  944. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
  945. package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
  946. package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
  947. package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
  948. package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
  949. package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
  950. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
  951. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
  952. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
  953. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
  954. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
  955. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
  956. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
  957. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
  958. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
  959. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
  960. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
  961. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
  962. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
  963. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
  964. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
  965. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
  966. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -376
  967. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
  968. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
  969. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -510
  970. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
  971. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
  972. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
  973. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
  974. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -82
  975. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
  976. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
  977. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -633
  978. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -392
  979. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
  980. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
  981. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
  982. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -140
  983. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
  984. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
  985. package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
  986. package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
  987. package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
  988. package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
  989. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
  990. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
  991. package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
  992. package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
  993. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
  994. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
  995. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
  996. package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
  997. package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
  998. package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
  999. package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
  1000. package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
  1001. package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
  1002. package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
  1003. package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
  1004. package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
  1005. package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
  1006. package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
  1007. package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
  1008. package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
  1009. package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
  1010. package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
  1011. package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
  1012. package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
  1013. package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
  1014. package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
  1015. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
  1016. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
  1017. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1218
  1018. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
  1019. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
  1020. package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
  1021. package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
  1022. package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1064
  1023. package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
  1024. package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
  1025. package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -214
  1026. package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
  1027. package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -131
  1028. package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
  1029. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
  1030. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
  1031. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -936
  1032. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
  1033. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
  1034. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
  1035. package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
  1036. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
  1037. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
  1038. package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
  1039. package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
  1040. package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
  1041. package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
  1042. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
  1043. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
  1044. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
  1045. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
  1046. package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
  1047. package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
  1048. package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
  1049. package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
  1050. package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
  1051. package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
  1052. package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
  1053. package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
  1054. package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
  1055. package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
  1056. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
  1057. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
  1058. package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
  1059. package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
  1060. package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -335
  1061. package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
  1062. package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
  1063. package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
  1064. package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
  1065. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
  1066. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
  1067. package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
  1068. package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -318
  1069. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
  1070. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -498
  1071. package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
  1072. package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
  1073. package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
  1074. package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
  1075. package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
  1076. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
  1077. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
  1078. package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
  1079. package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
  1080. package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
  1081. package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
  1082. package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
  1083. package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
  1084. package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
  1085. package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
  1086. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
  1087. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
  1088. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
  1089. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
  1090. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
  1091. package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
  1092. package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
  1093. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
  1094. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
  1095. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
  1096. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -314
  1097. package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
  1098. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
  1099. package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
  1100. package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
  1101. package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
  1102. package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
  1103. package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
  1104. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
  1105. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
  1106. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -761
  1107. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
  1108. package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
  1109. package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
  1110. package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
  1111. package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
  1112. package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
  1113. package/dist/esm/react/core/signingEngine/session/public.js +0 -44
  1114. package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
  1115. package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
  1116. package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
  1117. package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
  1118. package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
  1119. package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
  1120. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
  1121. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
  1122. package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
  1123. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
  1124. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
  1125. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
  1126. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
  1127. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
  1128. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
  1129. package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
  1130. package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
  1131. package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
  1132. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
  1133. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
  1134. package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
  1135. package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
  1136. package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
  1137. package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
  1138. package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
  1139. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
  1140. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
  1141. package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
  1142. package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
  1143. package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
  1144. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
  1145. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
  1146. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
  1147. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
  1148. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
  1149. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
  1150. package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
  1151. package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
  1152. package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
  1153. package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -139
  1154. package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -619
  1155. package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
  1156. package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
  1157. package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
  1158. package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
  1159. package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
  1160. package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -16
  1161. package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -16
  1162. package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
  1163. package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
  1164. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
  1165. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
  1166. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
  1167. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
  1168. package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
  1169. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
  1170. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
  1171. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -746
  1172. package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
  1173. package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
  1174. package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
  1175. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
  1176. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
  1177. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
  1178. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
  1179. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
  1180. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
  1181. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
  1182. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
  1183. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
  1184. package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
  1185. package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
  1186. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
  1187. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
  1188. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
  1189. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
  1190. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
  1191. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
  1192. package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
  1193. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
  1194. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
  1195. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
  1196. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
  1197. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
  1198. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
  1199. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
  1200. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
  1201. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
  1202. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
  1203. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
  1204. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
  1205. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
  1206. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
  1207. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
  1208. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
  1209. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
  1210. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
  1211. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
  1212. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
  1213. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
  1214. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -289
  1215. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
  1216. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
  1217. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
  1218. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
  1219. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
  1220. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
  1221. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
  1222. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
  1223. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
  1224. package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
  1225. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
  1226. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
  1227. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
  1228. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
  1229. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
  1230. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
  1231. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
  1232. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
  1233. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
  1234. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -249
  1235. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
  1236. package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
  1237. package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
  1238. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
  1239. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
  1240. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
  1241. package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
  1242. package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
  1243. package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
  1244. package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
  1245. package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
  1246. package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
  1247. package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
  1248. package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
  1249. package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
  1250. package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
  1251. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
  1252. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
  1253. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
  1254. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
  1255. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
  1256. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
  1257. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
  1258. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
  1259. package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
  1260. package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  1261. package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
  1262. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -342
  1263. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
  1264. package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
  1265. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
  1266. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
  1267. package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
  1268. package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  1269. package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
  1270. package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -773
  1271. package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
  1272. package/dist/esm/react/core/types/accountIds.js +0 -26
  1273. package/dist/esm/react/core/types/actionBuilders.js +0 -73
  1274. package/dist/esm/react/core/types/confirmationConfig.js +0 -39
  1275. package/dist/esm/react/core/types/eventLogging.js +0 -28
  1276. package/dist/esm/react/core/types/linkDevice.js +0 -49
  1277. package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
  1278. package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
  1279. package/dist/esm/react/core/types/signer-worker.js +0 -50
  1280. package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
  1281. package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
  1282. package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
  1283. package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
  1284. package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
  1285. package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
  1286. package/dist/esm/react/externalEvm/boundary.js +0 -309
  1287. package/dist/esm/react/externalEvm/controller.js +0 -440
  1288. package/dist/esm/react/externalEvm/types.js +0 -31
  1289. package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
  1290. package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
  1291. package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
  1292. package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
  1293. package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
  1294. package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
  1295. package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
  1296. package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
  1297. package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
  1298. package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
  1299. package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
  1300. package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
  1301. package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
  1302. package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
  1303. package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
  1304. package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
  1305. package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
  1306. package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
  1307. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
  1308. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
  1309. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
  1310. package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
  1311. package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
  1312. package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
  1313. package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
  1314. package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
  1315. package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
  1316. package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
  1317. package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
  1318. package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
  1319. package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
  1320. package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
  1321. package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
  1322. package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -115
  1323. package/dist/esm/react/shared-ts/src/authorization/walletSignerActivationEquality.js +0 -12
  1324. package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
  1325. package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
  1326. package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -270
  1327. package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
  1328. package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -130
  1329. package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
  1330. package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
  1331. package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -167
  1332. package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
  1333. package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
  1334. package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
  1335. package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -542
  1336. package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
  1337. package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
  1338. package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
  1339. package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
  1340. package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
  1341. package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
  1342. package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
  1343. package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
  1344. package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -62
  1345. package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
  1346. package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
  1347. package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -62
  1348. package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
  1349. package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
  1350. package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -479
  1351. package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1352. package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1353. package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1354. package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1355. package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
  1356. package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
  1357. package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
  1358. package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
  1359. package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
  1360. package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
  1361. package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -43
  1362. package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
  1363. package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1364. package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
  1365. package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
  1366. package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
  1367. package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
  1368. package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
  1369. package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
  1370. package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
  1371. package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
  1372. package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -44
  1373. package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -38
  1374. package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
  1375. package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
  1376. package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
  1377. package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
  1378. package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
  1379. package/dist/esm/react/shared-ts/src/utils/exactKeys.js +0 -17
  1380. package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
  1381. package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
  1382. package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
  1383. package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
  1384. package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
  1385. package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
  1386. package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
  1387. package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
  1388. package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
  1389. package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
  1390. package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -390
  1391. package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -439
  1392. package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
  1393. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
  1394. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
  1395. package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
  1396. package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
  1397. package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
  1398. package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
  1399. package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
  1400. package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
  1401. package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
  1402. package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
  1403. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaChainTarget.js +0 -9
  1404. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
  1405. package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
  1406. package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
  1407. package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
  1408. package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
  1409. package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
  1410. package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
  1411. package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
  1412. package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
  1413. package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
  1414. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
  1415. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
  1416. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
  1417. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
  1418. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
  1419. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -251
  1420. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
  1421. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
  1422. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
  1423. package/dist/esm/react/theme/base-styles.js +0 -117
  1424. package/dist/esm/react/theme/palette.js +0 -170
  1425. package/dist/esm/react/utils/deviceDetection.js +0 -95
  1426. package/dist/esm/react/utils/intentDigest.js +0 -77
  1427. package/dist/esm/react/utils/menuItemBlink.js +0 -24
  1428. package/dist/esm/react/utils/qrScanner.js +0 -297
  1429. package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1430. package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
  1431. package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
  1432. package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1433. package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
  1434. package/dist/esm/sdk/accountLifecycle-zthG08aC.js +0 -1341
  1435. package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
  1436. package/dist/esm/sdk/adapters-Dli9XAZp.js +0 -4836
  1437. package/dist/esm/sdk/base-D1B5mGin.js +0 -64
  1438. package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
  1439. package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
  1440. package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
  1441. package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1442. package/dist/esm/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
  1443. package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1444. package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
  1445. package/dist/esm/sdk/challengeDelivery-DZtopOAG.js +0 -74
  1446. package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
  1447. package/dist/esm/sdk/configHelpers-D1EqxVxg.js +0 -179
  1448. package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1449. package/dist/esm/sdk/defaultConfigs-D_33pPT9.js +0 -355
  1450. package/dist/esm/sdk/display-P4nQF-yc.js +0 -126
  1451. package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
  1452. package/dist/esm/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
  1453. package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1454. package/dist/esm/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
  1455. package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1456. package/dist/esm/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
  1457. package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
  1458. package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1459. package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1460. package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
  1461. package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
  1462. package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1463. package/dist/esm/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
  1464. package/dist/esm/sdk/exactSessionState-LWDUXydN.js +0 -2592
  1465. package/dist/esm/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
  1466. package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1467. package/dist/esm/sdk/export-viewer-host-rWMSQQMP.js +0 -204
  1468. package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
  1469. package/dist/esm/sdk/host-CnV8nAUe.js +0 -533
  1470. package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
  1471. package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1472. package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1473. package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
  1474. package/dist/esm/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
  1475. package/dist/esm/sdk/localOnly-DTpa2jD5.js +0 -146
  1476. package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
  1477. package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1478. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1479. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
  1480. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
  1481. package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1482. package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1483. package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
  1484. package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1485. package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1486. package/dist/esm/sdk/passkey-custody-UUHbC0pk.js +0 -487
  1487. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
  1488. package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
  1489. package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1490. package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
  1491. package/dist/esm/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
  1492. package/dist/esm/sdk/registration-Ct_7LdGf.js +0 -14402
  1493. package/dist/esm/sdk/registration-DHERU8R_.js +0 -233
  1494. package/dist/esm/sdk/registrationAccounts-DmWPzf3T.js +0 -33
  1495. package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
  1496. package/dist/esm/sdk/registrationIntent-4zwk16zQ.js +0 -387
  1497. package/dist/esm/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
  1498. package/dist/esm/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
  1499. package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
  1500. package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
  1501. package/dist/esm/sdk/router-B4ZWFy9E.js +0 -4721
  1502. package/dist/esm/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
  1503. package/dist/esm/sdk/runtime-auth-DdfynDKt.js +0 -5393
  1504. package/dist/esm/sdk/runtime-device-link-HJ2ptFux.js +0 -259
  1505. package/dist/esm/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
  1506. package/dist/esm/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
  1507. package/dist/esm/sdk/runtime-export-DIVY473L.js +0 -112
  1508. package/dist/esm/sdk/runtime-near-CxtQi4b2.js +0 -278
  1509. package/dist/esm/sdk/runtime-preferences-vnJc5Svg.js +0 -67
  1510. package/dist/esm/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
  1511. package/dist/esm/sdk/runtime-recovery-i08vCJST.js +0 -45
  1512. package/dist/esm/sdk/runtimeContext-D3TBExQ6.js +0 -44484
  1513. package/dist/esm/sdk/runtimeLoader-DQVEFVaW.js +0 -44
  1514. package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1515. package/dist/esm/sdk/secp256k1-D-I6Gh4D.js +0 -2515
  1516. package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
  1517. package/dist/esm/sdk/sessionPolicy-DO-MkL65.js +0 -460
  1518. package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
  1519. package/dist/esm/sdk/signEvmFamily-C3C97Th-.js +0 -4607
  1520. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
  1521. package/dist/esm/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
  1522. package/dist/esm/sdk/signNear-Bmb2fj_a.js +0 -5893
  1523. package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
  1524. package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
  1525. package/dist/esm/sdk/signerLoader-B7orgq5Z.js +0 -23
  1526. package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
  1527. package/dist/esm/sdk/signingFlow-SZ8t_lxv.js +0 -1319
  1528. package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1529. package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1530. package/dist/esm/sdk/trace-DKLQZvec.js +0 -126
  1531. package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
  1532. package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
  1533. package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1534. package/dist/esm/sdk/transactionState-CJ4U8pcl.js +0 -1894
  1535. package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
  1536. package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
  1537. package/dist/esm/sdk/wallet-recovery-BX61-79p.js +0 -1902
  1538. package/dist/esm/sdk/walletAuthority-DD9T25F6.js +0 -1247
  1539. package/dist/esm/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
  1540. package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1541. package/dist/esm/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
  1542. package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1543. package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1544. package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1545. package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1546. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1547. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1548. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1549. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1550. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1551. package/dist/esm/styles.css +0 -43
  1552. package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1553. package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
  1554. package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
  1555. package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1556. package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
  1557. package/dist/public/sdk/accountLifecycle-zthG08aC.js +0 -1341
  1558. package/dist/public/sdk/actions-CCvThiKe.js +0 -225
  1559. package/dist/public/sdk/adapters-Dli9XAZp.js +0 -4836
  1560. package/dist/public/sdk/base-D1B5mGin.js +0 -64
  1561. package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
  1562. package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
  1563. package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
  1564. package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1565. package/dist/public/sdk/canonicalSignerErrorCode-BBIk365e.js +0 -139
  1566. package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1567. package/dist/public/sdk/chains-BMh3btVo.js +0 -124
  1568. package/dist/public/sdk/challengeDelivery-DZtopOAG.js +0 -74
  1569. package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
  1570. package/dist/public/sdk/configHelpers-D1EqxVxg.js +0 -179
  1571. package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1572. package/dist/public/sdk/defaultConfigs-D_33pPT9.js +0 -355
  1573. package/dist/public/sdk/display-P4nQF-yc.js +0 -126
  1574. package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
  1575. package/dist/public/sdk/ecdsaCapabilityManifest-DuMs0VtU.js +0 -805
  1576. package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1577. package/dist/public/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js +0 -1983
  1578. package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1579. package/dist/public/sdk/ecdsaWalletRecords-D42rtA9z.js +0 -18
  1580. package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
  1581. package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1582. package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1583. package/dist/public/sdk/errors-93h9uAW9.js +0 -92
  1584. package/dist/public/sdk/events-DYoBL2HO.js +0 -8
  1585. package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1586. package/dist/public/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js +0 -4274
  1587. package/dist/public/sdk/exactSessionState-LWDUXydN.js +0 -2592
  1588. package/dist/public/sdk/exactSigningLaneIdentity-m6uTXV_A.js +0 -335
  1589. package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1590. package/dist/public/sdk/export-viewer-host-rWMSQQMP.js +0 -204
  1591. package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
  1592. package/dist/public/sdk/host-CnV8nAUe.js +0 -533
  1593. package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
  1594. package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1595. package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1596. package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
  1597. package/dist/public/sdk/keyMaterialBrands-CogGAAZn.js +0 -94
  1598. package/dist/public/sdk/localOnly-DTpa2jD5.js +0 -146
  1599. package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
  1600. package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1601. package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1602. package/dist/public/sdk/nearEd25519YaoMaterialActivation-B5GecIvq.js +0 -4018
  1603. package/dist/public/sdk/nearEd25519YaoSigningPreparation-CdOT5RuC.js +0 -405
  1604. package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1605. package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1606. package/dist/public/sdk/normalization-CBt413-z.js +0 -22
  1607. package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1608. package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1609. package/dist/public/sdk/passkey-custody-UUHbC0pk.js +0 -487
  1610. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BWluQMbt.js +0 -237
  1611. package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
  1612. package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1613. package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
  1614. package/dist/public/sdk/recovery-entrypoint-C3fydnRC.js +0 -779
  1615. package/dist/public/sdk/registration-Ct_7LdGf.js +0 -14402
  1616. package/dist/public/sdk/registration-DHERU8R_.js +0 -233
  1617. package/dist/public/sdk/registrationAccounts-DmWPzf3T.js +0 -33
  1618. package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
  1619. package/dist/public/sdk/registrationIntent-4zwk16zQ.js +0 -387
  1620. package/dist/public/sdk/registrationPreparationPreload-D6zpWp4O.js +0 -13
  1621. package/dist/public/sdk/registrationSignerPlan-DhV8VAob.js +0 -437
  1622. package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
  1623. package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
  1624. package/dist/public/sdk/router-B4ZWFy9E.js +0 -4721
  1625. package/dist/public/sdk/routerAbNormalSigning-CVFEOZ2m.js +0 -992
  1626. package/dist/public/sdk/runtime-auth-DdfynDKt.js +0 -5393
  1627. package/dist/public/sdk/runtime-device-link-HJ2ptFux.js +0 -259
  1628. package/dist/public/sdk/runtime-ecdsa-tempo-BGLsTAWR.js +0 -177
  1629. package/dist/public/sdk/runtime-email-otp-CpX88VZJ.js +0 -320
  1630. package/dist/public/sdk/runtime-export-DIVY473L.js +0 -112
  1631. package/dist/public/sdk/runtime-near-CxtQi4b2.js +0 -278
  1632. package/dist/public/sdk/runtime-preferences-vnJc5Svg.js +0 -67
  1633. package/dist/public/sdk/runtime-recovery-codes-BSCLVHQj.js +0 -95
  1634. package/dist/public/sdk/runtime-recovery-i08vCJST.js +0 -45
  1635. package/dist/public/sdk/runtimeContext-D3TBExQ6.js +0 -44484
  1636. package/dist/public/sdk/runtimeLoader-DQVEFVaW.js +0 -44
  1637. package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1638. package/dist/public/sdk/secp256k1-D-I6Gh4D.js +0 -2515
  1639. package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
  1640. package/dist/public/sdk/sessionPolicy-DO-MkL65.js +0 -460
  1641. package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
  1642. package/dist/public/sdk/signEvmFamily-C3C97Th-.js +0 -4607
  1643. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js +0 -226
  1644. package/dist/public/sdk/signEvmWithUiConfirm-Bmcim5-g.js +0 -27
  1645. package/dist/public/sdk/signNear-Bmb2fj_a.js +0 -5893
  1646. package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
  1647. package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
  1648. package/dist/public/sdk/signerLoader-B7orgq5Z.js +0 -23
  1649. package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
  1650. package/dist/public/sdk/signingFlow-SZ8t_lxv.js +0 -1319
  1651. package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1652. package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1653. package/dist/public/sdk/trace-DKLQZvec.js +0 -126
  1654. package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
  1655. package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
  1656. package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1657. package/dist/public/sdk/transactionState-CJ4U8pcl.js +0 -1894
  1658. package/dist/public/sdk/types-Dx9fczU7.js +0 -111
  1659. package/dist/public/sdk/validation-gat4LEKm.js +0 -409
  1660. package/dist/public/sdk/wallet-recovery-BX61-79p.js +0 -1902
  1661. package/dist/public/sdk/walletAuthority-DD9T25F6.js +0 -1247
  1662. package/dist/public/sdk/walletCustodyEcdsaContinuity-CF4bv9OI.js +0 -11000
  1663. package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1664. package/dist/public/sdk/walletRecoveryCommit-AI1AtIRP.js +0 -2101
  1665. package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1666. package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1667. package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1668. package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1669. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  1670. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  1671. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  1672. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  1673. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  1674. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  1675. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  1676. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  1677. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
  1678. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
  1679. package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
  1680. package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
  1681. package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
  1682. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
  1683. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
  1684. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
  1685. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
  1686. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
  1687. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
  1688. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
  1689. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
  1690. package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
  1691. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
  1692. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
  1693. /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
@@ -1,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-DO-MkL65.js";
9
- import { jt as parseWalletSessionOperationCredentialV1 } from "./ecdsaPresignLifecycle-Bfx2AQKb.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-CqGafQsI.js";
15
- import "./walletAuthority-DD9T25F6.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-LWDUXydN.js";
22
- import { h as parseExactEd25519ExportMaterialIdentity, m as parseExactEcdsaSigningLaneIdentity } from "./exactSigningLaneIdentity-m6uTXV_A.js";
23
- import { n as SignedTransaction } from "./NearClient-DY4NfHeD.js";
24
- import { n as PASSKEY_MANAGER_DEFAULT_CONFIGS } from "./defaultConfigs-D_33pPT9.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 };