@seams/wallet 0.24.0 → 0.27.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 (543) hide show
  1. package/dist/.build-inputs.sha256 +1 -1
  2. package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +1 -0
  3. package/dist/esm/SeamsWeb/publicApi/near.js +22 -11
  4. package/dist/esm/SeamsWeb/walletIframe/client/evmFamilyCommands.js +1 -0
  5. package/dist/esm/SeamsWeb/walletIframe/client/nearCommands.js +9 -10
  6. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +73 -39
  7. package/dist/esm/SeamsWeb/walletIframe/client/router.js +61 -38
  8. package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +1 -0
  9. package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +1 -0
  10. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +1 -1
  11. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +28 -0
  12. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -0
  13. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +8 -1
  14. package/dist/esm/core/rpcClients/near/NearClient.js +7 -0
  15. package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +7 -0
  16. package/dist/esm/core/signingEngine/flows/signNear/signTransactions.js +3 -0
  17. package/dist/esm/core/signingEngine/nearTransactionSubmission.js +89 -0
  18. package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +2 -2
  19. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +7 -1
  20. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +123 -14
  21. package/dist/esm/core/ui/messages.js +12 -0
  22. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +5 -7
  23. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +21 -5
  24. package/dist/esm/react/components/AccountMenuButton/AccountMenuModal.js +66 -0
  25. package/dist/esm/react/components/AccountMenuButton/AccountsSection.css +18 -11
  26. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +5 -11
  27. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.css +17 -15
  28. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +156 -106
  29. package/dist/esm/react/components/AccountMenuButton/MenuItem.css +37 -29
  30. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.css +53 -21
  31. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +124 -82
  32. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +45 -27
  33. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +115 -93
  34. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +179 -92
  35. package/dist/esm/react/components/AccountMenuButton/hooks/useProfileState.js +62 -49
  36. package/dist/esm/react/components/AccountMenuButton/icons/HoverArrowIcon.css +36 -12
  37. package/dist/esm/react/components/AccountMenuButton/icons/HoverArrowIcon.js +10 -2
  38. package/dist/esm/react/components/AccountMenuButton/icons/Icon.css +10 -0
  39. package/dist/esm/react/components/AccountMenuButton/icons/LogOutIcon2.js +15 -16
  40. package/dist/esm/react/components/AccountMenuButton/icons/SpinnerIcon.js +12 -18
  41. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.css +3 -3
  42. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +11 -5
  43. package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +20 -6
  44. package/dist/esm/react/components/AccountMenuButton/index.js +18 -42
  45. package/dist/esm/react/components/ExternalNearWalletIcon.js +32 -0
  46. package/dist/esm/react/components/FingerprintIcon.js +13 -19
  47. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +13 -2
  48. package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.css +182 -0
  49. package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.js +315 -0
  50. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +20 -5
  51. package/dist/esm/react/components/QRCodeIcon.js +37 -43
  52. package/dist/esm/react/components/QRCodeScanner.css +65 -60
  53. package/dist/esm/react/components/ShowQRCode.css +145 -40
  54. package/dist/esm/react/components/ShowQRCode.js +27 -37
  55. package/dist/esm/react/components/externalWalletBrandImages.js +7 -0
  56. package/dist/esm/react/components/theme/Theme.css +67 -0
  57. package/dist/esm/react/components/theme/ThemeProvider.js +6 -6
  58. package/dist/esm/react/externalEvm.js +11 -4
  59. package/dist/esm/react/externalNear.js +15 -10
  60. package/dist/esm/react/externalWalletPicker.css +117 -0
  61. package/dist/esm/react/index.js +3 -2
  62. package/dist/esm/react/styles/styles.css +2148 -550
  63. package/dist/esm/react/styles.css +7 -1
  64. package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -0
  65. package/dist/esm/react/transactionReview/boundCalls.js +31 -26
  66. package/dist/esm/sdk/{ConfirmationDrawer-CTaGM1AE.js → ConfirmationDrawer-AZruQmhP.js} +1 -1
  67. package/dist/esm/sdk/NonceCoordinator-3YhmDTS5.js +1 -0
  68. package/dist/{public/sdk/SeamsWordmark-CFpsGoLw.js → esm/sdk/SeamsWordmark-DwvPx2UA.js} +1 -1
  69. package/dist/esm/sdk/accountLifecycle-6DHYWf0v.js +1 -0
  70. package/dist/esm/sdk/actions-DrtSTGus.js +1 -0
  71. package/dist/esm/sdk/activeWalletSession-BJ4B-nJo.js +1 -0
  72. package/dist/esm/sdk/adapters-d9yh1bdC.js +1 -0
  73. package/dist/esm/sdk/appearance-DL7c6bML.js +1 -0
  74. package/dist/esm/sdk/appearance-token-vars-BJydfWT_.js +1 -0
  75. package/dist/esm/sdk/canonicalPrimitives-Jd3i_Ngz.js +1 -0
  76. package/dist/esm/sdk/chains-B72I4PDH.js +1 -0
  77. package/dist/esm/sdk/challengeDelivery-Dj9HrjW9.js +1 -0
  78. package/dist/esm/sdk/clientSessionPersistenceState-BCkJAYSz.js +1 -0
  79. package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js → collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js} +1 -1
  80. package/dist/esm/sdk/{commitQueue-Bs23Rs57.js → commitQueue-CYruPlkm.js} +1 -1
  81. package/dist/esm/sdk/configBuilder-CSwJrmcR.js +1 -0
  82. package/dist/esm/sdk/configuration-DBEc3bsj.js +1 -0
  83. package/dist/esm/sdk/confirm-ui-nU6ymgiv.js +2 -0
  84. package/dist/esm/sdk/confirmTypes-BvVtQs-M.js +1 -0
  85. package/dist/esm/sdk/device-linking-DiCNt3iA.js +1 -0
  86. package/dist/esm/sdk/deviceLinkApproval-CfEiotVt.js +2 -0
  87. package/dist/esm/sdk/digestEncoding-CqNXPZY9.js +1 -0
  88. package/dist/esm/sdk/{chains-gV2K9gA4.js → digests-BIaE0DMd.js} +1 -1
  89. package/dist/esm/sdk/{display-BXjW58UF.js → display-D0EPmU4w.js} +1 -1
  90. package/dist/esm/sdk/ecdsaCapabilityManifest-DAJEVjlP.js +1 -0
  91. package/dist/esm/sdk/{ecdsaChainTarget-DbLthshF.js → ecdsaChainTarget-Bm5X4k-V.js} +1 -1
  92. package/dist/esm/sdk/ecdsaDerivationClientWasm-AYOJgTJm.js +1 -0
  93. package/dist/esm/sdk/ecdsaDerivationExport-DJKOzDbS.js +1 -0
  94. package/dist/esm/sdk/{ecdsaWalletRecords-BgcXXCZy.js → ecdsaWalletRecords-WLyq414E.js} +1 -1
  95. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js +1 -0
  96. package/dist/esm/sdk/{enrichDisplayModelWithAbi-CudPUW0T.js → enrichDisplayModelWithAbi-O6Mw4i2E.js} +1 -1
  97. package/dist/esm/sdk/errors-BJBDbwHk.js +1 -0
  98. package/dist/esm/sdk/{evmCryptoWasm-DacbCVNM.js → evmCryptoWasm-BUPb4hBH.js} +1 -1
  99. package/dist/esm/sdk/{export-viewer-host-DsWOvc0t.js → export-viewer-host-BtrKVXxu.js} +1 -1
  100. package/dist/esm/sdk/exportKeypairOperation-CGE9ZU1m.js +1 -0
  101. package/dist/esm/sdk/helpers-Dubwo5uK.js +1 -0
  102. package/dist/esm/sdk/host-DayrOrgm.js +1 -0
  103. package/dist/esm/sdk/icons-BlMXolHv.js +1 -0
  104. package/dist/esm/sdk/indexedDB-C4SDsyOG.js +1 -0
  105. package/dist/esm/sdk/intentDigest-HvRsBQ1z.js +1 -0
  106. package/dist/esm/sdk/keyMaterialEnvelope-Dm2ZEilb.js +1 -0
  107. package/dist/esm/sdk/{lanes-C7OvAK_L.js → lanes-BU-fGqY4.js} +1 -1
  108. package/dist/esm/sdk/localOnly-BATWJj78.js +1 -0
  109. package/dist/{public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js → esm/sdk/mountExportPrivateKeySurface-CyHU8bVc.js} +1 -1
  110. package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-CVXU1zzl.js → mountRecoveryCodeBackupSurface-C7aglQxf.js} +1 -1
  111. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +1 -0
  112. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +1 -0
  113. package/dist/esm/sdk/nearRpcResults-CeHdqaS4.js +1 -0
  114. package/dist/esm/sdk/{nonceLaneKeys-BS4fek17.js → nonceLaneKeys-BF_UpvIy.js} +1 -1
  115. package/dist/esm/sdk/{normalization-BN-2VWZf.js → normalization-Df9fZWJC.js} +1 -1
  116. package/dist/esm/sdk/operationFingerprint-Bas59T7L.js +1 -0
  117. package/dist/esm/sdk/participants-BXdREC5k.js +1 -0
  118. package/dist/{public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js → esm/sdk/pendingWalletRecoveryCodeBackup-Cjx-X-pP.js} +1 -1
  119. package/dist/esm/sdk/presignaturePool-BbvqRWYw.js +1 -0
  120. package/dist/{public/sdk/presignatures-B9GrGx0L.js → esm/sdk/presignatures-BCeq56DG.js} +1 -1
  121. package/dist/esm/sdk/recovery-entrypoint-DJbMDC_m.js +1 -0
  122. package/dist/esm/sdk/recoveryAuthorization-CQsjb8Tm.js +1 -0
  123. package/dist/esm/sdk/registration-CNLUYN-p.js +1 -0
  124. package/dist/esm/sdk/registration-HSwOHZOo.js +1 -0
  125. package/dist/esm/sdk/{registrationAccounts-BHikxS5q.js → registrationAccounts-4r74gX1l.js} +1 -1
  126. package/dist/esm/sdk/registrationIntent-Do1tD1V7.js +1 -0
  127. package/dist/esm/sdk/registrationSignerPlan-DK2b3N_p.js +1 -0
  128. package/dist/esm/sdk/requireStepUpAuth-COqCGb1i.js +1 -0
  129. package/dist/esm/sdk/resealedEnvelopeResult-B1p5UkYg.js +1 -0
  130. package/dist/esm/sdk/routerAbNormalSigning-D-UZmCBS.js +1 -0
  131. package/dist/esm/sdk/runtime-auth-BCoj7_-G.js +1 -0
  132. package/dist/esm/sdk/runtime-device-link-DAsq5tGT.js +1 -0
  133. package/dist/esm/sdk/runtime-ecdsa-tempo-CVh_Vwl6.js +1 -0
  134. package/dist/esm/sdk/runtime-email-otp-BxSKK9AG.js +1 -0
  135. package/dist/esm/sdk/runtime-export-BWnQXMzT.js +1 -0
  136. package/dist/esm/sdk/runtime-near-CuzPZrDS.js +1 -0
  137. package/dist/esm/sdk/runtime-preferences-B-nDWlm3.js +1 -0
  138. package/dist/esm/sdk/runtime-recovery-DpOdEJ8N.js +1 -0
  139. package/dist/esm/sdk/runtime-recovery-codes-DeUjQsxZ.js +1 -0
  140. package/dist/esm/sdk/runtimeContext-5JcewRo3.js +6 -0
  141. package/dist/esm/sdk/secp256k1-CE7-q9Sn.js +1 -0
  142. package/dist/esm/sdk/sessionObservationRevision-JOvVF4Hf.js +1 -0
  143. package/dist/esm/sdk/signEvmFamily-BY5jlZEG.js +1 -0
  144. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js → signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js} +1 -1
  145. package/dist/esm/sdk/{signEvmWithUiConfirm-BNkupz3z.js → signEvmWithUiConfirm-CGrLtMV6.js} +1 -1
  146. package/dist/esm/sdk/signNear-DMpJFkwF.js +1 -0
  147. package/dist/esm/sdk/{signatureUses-DrqCoN12.js → signatureUses-kSrUHSSH.js} +1 -1
  148. package/dist/esm/sdk/signerSlot-D2RZnb27.js +1 -0
  149. package/dist/esm/sdk/{signingFlow-BVvteILM.js → signingFlow-BcetvUeS.js} +2 -2
  150. package/dist/esm/sdk/signingQueue-dMFOFOP5.js +1 -0
  151. package/dist/esm/sdk/surface-measurement-reporter-DXsvq401.js +1 -0
  152. package/dist/esm/sdk/thresholdEcdsa-CqR1fFA-.js +1 -0
  153. package/dist/esm/sdk/{trace-CGNqO1FV.js → trace--mRP2OQc.js} +1 -1
  154. package/dist/esm/sdk/{transaction-activity-DPq9RTh5.js → transaction-activity-DCzHGg3b.js} +1 -1
  155. package/dist/esm/sdk/transactionReview-CGIlI835.js +1 -0
  156. package/dist/esm/sdk/{transactionReviewAdmission--8tDis7M.js → transactionReviewAdmission-Cf_qUZJt.js} +1 -1
  157. package/dist/{public/sdk/transactionState-BS1VLT7B.js → esm/sdk/transactionState-29T9xfvL.js} +1 -1
  158. package/dist/esm/sdk/tx-confirm-ui.js +173 -18
  159. package/dist/esm/sdk/{types-DdzuHlAQ.js → types-f7dyj5N6.js} +1 -1
  160. package/dist/esm/sdk/unlockedEd25519ExportRootCapability-yzxQjIFd.js +1 -0
  161. package/dist/esm/sdk/voiceid-host.js +1 -1
  162. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  163. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  164. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  165. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  166. package/dist/esm/sdk/wallet-recovery-BZB2Vu3X.js +1 -0
  167. package/dist/esm/sdk/wallet-ui.css +1 -1
  168. package/dist/esm/sdk/walletAuthMethodRecord-DLBB5fez.js +1 -0
  169. package/dist/esm/sdk/walletAuthority-BTGAuOi8.js +1 -0
  170. package/dist/esm/sdk/walletCapabilityBindings-D5YYB7nN.js +1 -0
  171. package/dist/esm/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js +1 -0
  172. package/dist/esm/sdk/walletCustodyOperation-DimzAbCB.js +1 -0
  173. package/dist/esm/sdk/walletDbName-Ca0rCq5r.js +1 -0
  174. package/dist/esm/sdk/walletOwnershipGeneration-CgjCtPrV.js +1 -0
  175. package/dist/esm/sdk/walletRecoveryAdminProof-CvSYbyg5.js +1 -0
  176. package/dist/esm/sdk/walletRecoveryCommit-Cc2LAkCS.js +1 -0
  177. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEvGKQSg.js +1 -0
  178. package/dist/esm/sdk/{walletSessionAuthorizationProjection-BJgnZaBc.js → walletSessionAuthorizationProjection-BzUH6gHV.js} +1 -1
  179. package/dist/esm/sdk/walletSessionAuthorizationStatus-DG7DPcgR.js +1 -0
  180. package/dist/esm/sdk/{walletSessionAuthorizationStore-zkxcMdSp.js → walletSessionAuthorizationStore-B9Vwkshr.js} +1 -1
  181. package/dist/esm/sdk/warmSessionHydration-B-A5Tdx7.js +1 -0
  182. package/dist/{public/sdk/webauthnP256-BvTL8nq4.js → esm/sdk/webauthnP256-BsQQPurm.js} +1 -1
  183. package/dist/esm/shared-ts/src/near/nearClient.js +1 -1
  184. package/dist/esm/shared-ts/src/utils/errors.js +56 -3
  185. package/dist/esm/shared-ts/src/utils/index.js +1 -1
  186. package/dist/esm/voiceid-host.js +1 -1
  187. package/dist/public/headers.manifest.json +1 -1
  188. package/dist/public/sdk/{ConfirmationDrawer-CTaGM1AE.js → ConfirmationDrawer-AZruQmhP.js} +1 -1
  189. package/dist/public/sdk/NonceCoordinator-3YhmDTS5.js +1 -0
  190. package/dist/{esm/sdk/SeamsWordmark-CFpsGoLw.js → public/sdk/SeamsWordmark-DwvPx2UA.js} +1 -1
  191. package/dist/public/sdk/accountLifecycle-6DHYWf0v.js +1 -0
  192. package/dist/public/sdk/actions-DrtSTGus.js +1 -0
  193. package/dist/public/sdk/activeWalletSession-BJ4B-nJo.js +1 -0
  194. package/dist/public/sdk/adapters-d9yh1bdC.js +1 -0
  195. package/dist/public/sdk/appearance-DL7c6bML.js +1 -0
  196. package/dist/public/sdk/appearance-token-vars-BJydfWT_.js +1 -0
  197. package/dist/public/sdk/canonicalPrimitives-Jd3i_Ngz.js +1 -0
  198. package/dist/public/sdk/chains-B72I4PDH.js +1 -0
  199. package/dist/public/sdk/challengeDelivery-Dj9HrjW9.js +1 -0
  200. package/dist/public/sdk/clientSessionPersistenceState-BCkJAYSz.js +1 -0
  201. package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js → collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js} +1 -1
  202. package/dist/public/sdk/{commitQueue-Bs23Rs57.js → commitQueue-CYruPlkm.js} +1 -1
  203. package/dist/public/sdk/configBuilder-CSwJrmcR.js +1 -0
  204. package/dist/public/sdk/configuration-DBEc3bsj.js +1 -0
  205. package/dist/public/sdk/confirm-ui-nU6ymgiv.js +2 -0
  206. package/dist/public/sdk/confirmTypes-BvVtQs-M.js +1 -0
  207. package/dist/public/sdk/device-linking-DiCNt3iA.js +1 -0
  208. package/dist/public/sdk/deviceLinkApproval-CfEiotVt.js +2 -0
  209. package/dist/public/sdk/digestEncoding-CqNXPZY9.js +1 -0
  210. package/dist/public/sdk/{chains-gV2K9gA4.js → digests-BIaE0DMd.js} +1 -1
  211. package/dist/public/sdk/{display-BXjW58UF.js → display-D0EPmU4w.js} +1 -1
  212. package/dist/public/sdk/ecdsaCapabilityManifest-DAJEVjlP.js +1 -0
  213. package/dist/public/sdk/{ecdsaChainTarget-DbLthshF.js → ecdsaChainTarget-Bm5X4k-V.js} +1 -1
  214. package/dist/public/sdk/ecdsaDerivationClientWasm-AYOJgTJm.js +1 -0
  215. package/dist/public/sdk/ecdsaDerivationExport-DJKOzDbS.js +1 -0
  216. package/dist/public/sdk/{ecdsaWalletRecords-BgcXXCZy.js → ecdsaWalletRecords-WLyq414E.js} +1 -1
  217. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js +1 -0
  218. package/dist/public/sdk/{enrichDisplayModelWithAbi-CudPUW0T.js → enrichDisplayModelWithAbi-O6Mw4i2E.js} +1 -1
  219. package/dist/public/sdk/errors-BJBDbwHk.js +1 -0
  220. package/dist/public/sdk/{evmCryptoWasm-DacbCVNM.js → evmCryptoWasm-BUPb4hBH.js} +1 -1
  221. package/dist/public/sdk/{export-viewer-host-DsWOvc0t.js → export-viewer-host-BtrKVXxu.js} +1 -1
  222. package/dist/public/sdk/exportKeypairOperation-CGE9ZU1m.js +1 -0
  223. package/dist/public/sdk/helpers-Dubwo5uK.js +1 -0
  224. package/dist/public/sdk/host-DayrOrgm.js +1 -0
  225. package/dist/public/sdk/icons-BlMXolHv.js +1 -0
  226. package/dist/public/sdk/indexedDB-C4SDsyOG.js +1 -0
  227. package/dist/public/sdk/intentDigest-HvRsBQ1z.js +1 -0
  228. package/dist/public/sdk/keyMaterialEnvelope-Dm2ZEilb.js +1 -0
  229. package/dist/public/sdk/{lanes-C7OvAK_L.js → lanes-BU-fGqY4.js} +1 -1
  230. package/dist/public/sdk/localOnly-BATWJj78.js +1 -0
  231. package/dist/{esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js → public/sdk/mountExportPrivateKeySurface-CyHU8bVc.js} +1 -1
  232. package/dist/public/sdk/{mountRecoveryCodeBackupSurface-CVXU1zzl.js → mountRecoveryCodeBackupSurface-C7aglQxf.js} +1 -1
  233. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +1 -0
  234. package/dist/public/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +1 -0
  235. package/dist/public/sdk/nearRpcResults-CeHdqaS4.js +1 -0
  236. package/dist/public/sdk/{nonceLaneKeys-BS4fek17.js → nonceLaneKeys-BF_UpvIy.js} +1 -1
  237. package/dist/public/sdk/{normalization-BN-2VWZf.js → normalization-Df9fZWJC.js} +1 -1
  238. package/dist/public/sdk/operationFingerprint-Bas59T7L.js +1 -0
  239. package/dist/public/sdk/participants-BXdREC5k.js +1 -0
  240. package/dist/{esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js → public/sdk/pendingWalletRecoveryCodeBackup-Cjx-X-pP.js} +1 -1
  241. package/dist/public/sdk/presignaturePool-BbvqRWYw.js +1 -0
  242. package/dist/{esm/sdk/presignatures-B9GrGx0L.js → public/sdk/presignatures-BCeq56DG.js} +1 -1
  243. package/dist/public/sdk/recovery-entrypoint-DJbMDC_m.js +1 -0
  244. package/dist/public/sdk/recoveryAuthorization-CQsjb8Tm.js +1 -0
  245. package/dist/public/sdk/registration-CNLUYN-p.js +1 -0
  246. package/dist/public/sdk/registration-HSwOHZOo.js +1 -0
  247. package/dist/public/sdk/{registrationAccounts-BHikxS5q.js → registrationAccounts-4r74gX1l.js} +1 -1
  248. package/dist/public/sdk/registrationIntent-Do1tD1V7.js +1 -0
  249. package/dist/public/sdk/registrationSignerPlan-DK2b3N_p.js +1 -0
  250. package/dist/public/sdk/requireStepUpAuth-COqCGb1i.js +1 -0
  251. package/dist/public/sdk/resealedEnvelopeResult-B1p5UkYg.js +1 -0
  252. package/dist/public/sdk/routerAbNormalSigning-D-UZmCBS.js +1 -0
  253. package/dist/public/sdk/runtime-auth-BCoj7_-G.js +1 -0
  254. package/dist/public/sdk/runtime-device-link-DAsq5tGT.js +1 -0
  255. package/dist/public/sdk/runtime-ecdsa-tempo-CVh_Vwl6.js +1 -0
  256. package/dist/public/sdk/runtime-email-otp-BxSKK9AG.js +1 -0
  257. package/dist/public/sdk/runtime-export-BWnQXMzT.js +1 -0
  258. package/dist/public/sdk/runtime-near-CuzPZrDS.js +1 -0
  259. package/dist/public/sdk/runtime-preferences-B-nDWlm3.js +1 -0
  260. package/dist/public/sdk/runtime-recovery-DpOdEJ8N.js +1 -0
  261. package/dist/public/sdk/runtime-recovery-codes-DeUjQsxZ.js +1 -0
  262. package/dist/public/sdk/runtimeContext-5JcewRo3.js +6 -0
  263. package/dist/public/sdk/secp256k1-CE7-q9Sn.js +1 -0
  264. package/dist/public/sdk/sessionObservationRevision-JOvVF4Hf.js +1 -0
  265. package/dist/public/sdk/signEvmFamily-BY5jlZEG.js +1 -0
  266. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js → signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js} +1 -1
  267. package/dist/public/sdk/{signEvmWithUiConfirm-BNkupz3z.js → signEvmWithUiConfirm-CGrLtMV6.js} +1 -1
  268. package/dist/public/sdk/signNear-DMpJFkwF.js +1 -0
  269. package/dist/public/sdk/{signatureUses-DrqCoN12.js → signatureUses-kSrUHSSH.js} +1 -1
  270. package/dist/public/sdk/signerSlot-D2RZnb27.js +1 -0
  271. package/dist/public/sdk/{signingFlow-BVvteILM.js → signingFlow-BcetvUeS.js} +2 -2
  272. package/dist/public/sdk/signingQueue-dMFOFOP5.js +1 -0
  273. package/dist/public/sdk/surface-measurement-reporter-DXsvq401.js +1 -0
  274. package/dist/public/sdk/thresholdEcdsa-CqR1fFA-.js +1 -0
  275. package/dist/public/sdk/{trace-CGNqO1FV.js → trace--mRP2OQc.js} +1 -1
  276. package/dist/public/sdk/{transaction-activity-DPq9RTh5.js → transaction-activity-DCzHGg3b.js} +1 -1
  277. package/dist/public/sdk/transactionReview-CGIlI835.js +1 -0
  278. package/dist/public/sdk/{transactionReviewAdmission--8tDis7M.js → transactionReviewAdmission-Cf_qUZJt.js} +1 -1
  279. package/dist/{esm/sdk/transactionState-BS1VLT7B.js → public/sdk/transactionState-29T9xfvL.js} +1 -1
  280. package/dist/public/sdk/tx-confirm-ui.js +173 -18
  281. package/dist/public/sdk/{types-DdzuHlAQ.js → types-f7dyj5N6.js} +1 -1
  282. package/dist/public/sdk/unlockedEd25519ExportRootCapability-yzxQjIFd.js +1 -0
  283. package/dist/public/sdk/voiceid-host.js +1 -1
  284. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  285. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  286. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  287. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  288. package/dist/public/sdk/wallet-recovery-BZB2Vu3X.js +1 -0
  289. package/dist/public/sdk/wallet-ui.css +1 -1
  290. package/dist/public/sdk/walletAuthMethodRecord-DLBB5fez.js +1 -0
  291. package/dist/public/sdk/walletAuthority-BTGAuOi8.js +1 -0
  292. package/dist/public/sdk/walletCapabilityBindings-D5YYB7nN.js +1 -0
  293. package/dist/public/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js +1 -0
  294. package/dist/public/sdk/walletCustodyOperation-DimzAbCB.js +1 -0
  295. package/dist/public/sdk/walletDbName-Ca0rCq5r.js +1 -0
  296. package/dist/public/sdk/walletOwnershipGeneration-CgjCtPrV.js +1 -0
  297. package/dist/public/sdk/walletRecoveryAdminProof-CvSYbyg5.js +1 -0
  298. package/dist/public/sdk/walletRecoveryCommit-Cc2LAkCS.js +1 -0
  299. package/dist/public/sdk/walletRegistrationSetupPrewarm-CEvGKQSg.js +1 -0
  300. package/dist/public/sdk/{walletSessionAuthorizationProjection-BJgnZaBc.js → walletSessionAuthorizationProjection-BzUH6gHV.js} +1 -1
  301. package/dist/public/sdk/walletSessionAuthorizationStatus-DG7DPcgR.js +1 -0
  302. package/dist/public/sdk/{walletSessionAuthorizationStore-zkxcMdSp.js → walletSessionAuthorizationStore-B9Vwkshr.js} +1 -1
  303. package/dist/public/sdk/warmSessionHydration-B-A5Tdx7.js +1 -0
  304. package/dist/{esm/sdk/webauthnP256-BvTL8nq4.js → public/sdk/webauthnP256-BsQQPurm.js} +1 -1
  305. package/dist/public/wallet-assets.manifest.json +476 -260
  306. package/dist/public/wallet-service/index.html +4 -4
  307. package/dist/types/shared-ts/src/utils/errors.d.ts +1 -0
  308. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.d.ts +24 -0
  309. package/dist/types/wallet/src/SeamsWeb/operations/devices/walletHostOwnerAuthority.d.ts +2 -0
  310. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +3 -0
  311. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -0
  312. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +1 -0
  313. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createDeviceDomain.d.ts +2 -1
  314. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/deviceLinkApproval.d.ts +27 -0
  315. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.d.ts +1 -0
  316. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +4 -1
  317. package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +1 -0
  318. package/dist/types/wallet/src/core/authMethods/plugins.d.ts +4 -0
  319. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/recoveredEd25519Authority.d.ts +8 -0
  320. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +1 -0
  321. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +13 -0
  322. package/dist/types/wallet/src/core/rpcClients/relayer/walletSessionAuthorizationStatus.d.ts +2 -0
  323. package/dist/types/wallet/src/core/signingEngine/nearTransactionSubmission.d.ts +24 -0
  324. package/dist/types/wallet/src/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.d.ts +1 -0
  325. package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +2 -0
  326. package/dist/types/wallet/src/core/types/linkDevice.d.ts +4 -5
  327. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +2 -0
  328. package/dist/types/wallet/src/core/types/seams.d.ts +15 -3
  329. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  330. package/dist/types/wallet/src/index.d.ts +1 -1
  331. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +11 -2
  332. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +2 -1
  333. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuModal.d.ts +9 -0
  334. package/dist/types/wallet/src/react/components/AccountMenuButton/hooks/useProfileState.d.ts +13 -5
  335. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/HoverArrowIcon.d.ts +2 -1
  336. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +1 -1
  337. package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +19 -3
  338. package/dist/types/wallet/src/react/components/ExternalNearWalletIcon.d.ts +5 -0
  339. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.d.ts +31 -0
  340. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/types.d.ts +4 -0
  341. package/dist/types/wallet/src/react/components/ShowQRCode.d.ts +1 -1
  342. package/dist/types/wallet/src/react/components/externalWalletBrandImages.d.ts +3 -0
  343. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +2 -0
  344. package/dist/types/wallet/src/react/externalNear.d.ts +3 -23
  345. package/dist/types/wallet/src/react/index.d.ts +3 -1
  346. package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +7 -0
  347. package/dist/types/wallet/src/voiceid-host.d.ts +1 -1
  348. package/package.json +1 -1
  349. package/dist/esm/react/externalNear.css +0 -90
  350. package/dist/esm/sdk/NonceCoordinator-Bti1HQPo.js +0 -1
  351. package/dist/esm/sdk/accountLifecycle-B98g9zN9.js +0 -1
  352. package/dist/esm/sdk/actions-GYsSR2Q2.js +0 -1
  353. package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +0 -1
  354. package/dist/esm/sdk/adapters-D5MZ5NG5.js +0 -2
  355. package/dist/esm/sdk/appearance-DVFno9Tv.js +0 -1
  356. package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +0 -1
  357. package/dist/esm/sdk/canonicalPrimitives-B6YMrI3W.js +0 -1
  358. package/dist/esm/sdk/challengeDelivery-FW9gYyr0.js +0 -1
  359. package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +0 -1
  360. package/dist/esm/sdk/configBuilder-DrxXNUpV.js +0 -1
  361. package/dist/esm/sdk/configuration-CAqANpTI.js +0 -1
  362. package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +0 -1
  363. package/dist/esm/sdk/ecdsaDerivationClientWasm-7Rp4TmYE.js +0 -1
  364. package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +0 -1
  365. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +0 -1
  366. package/dist/esm/sdk/errors-ADOZT8oV.js +0 -1
  367. package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +0 -1
  368. package/dist/esm/sdk/helpers-CXqXyyCU.js +0 -1
  369. package/dist/esm/sdk/host-C0Is56lU.js +0 -1
  370. package/dist/esm/sdk/icons-DyndJzSh.js +0 -1
  371. package/dist/esm/sdk/indexedDB-C1odKEC6.js +0 -1
  372. package/dist/esm/sdk/intentDigest-BMXki7yB.js +0 -1
  373. package/dist/esm/sdk/keyMaterialEnvelope-B-Q5KTJC.js +0 -1
  374. package/dist/esm/sdk/localOnly-BB3Rx3J6.js +0 -1
  375. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +0 -1
  376. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +0 -1
  377. package/dist/esm/sdk/operationFingerprint-Bn0lUYlm.js +0 -1
  378. package/dist/esm/sdk/presignaturePool-CultzkOG.js +0 -1
  379. package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +0 -1
  380. package/dist/esm/sdk/recoveryAuthorization-DB-zxeHq.js +0 -1
  381. package/dist/esm/sdk/registration-CM5a7WYO.js +0 -1
  382. package/dist/esm/sdk/registration-Hv0xi7-L.js +0 -1
  383. package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +0 -1
  384. package/dist/esm/sdk/registrationSignerPlan-CgbFVsAp.js +0 -1
  385. package/dist/esm/sdk/requireStepUpAuth-B7tC4MrA.js +0 -1
  386. package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +0 -1
  387. package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +0 -1
  388. package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +0 -1
  389. package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +0 -1
  390. package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +0 -1
  391. package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +0 -1
  392. package/dist/esm/sdk/runtime-export-upMPrZ4V.js +0 -1
  393. package/dist/esm/sdk/runtime-near-B64Hn3nc.js +0 -1
  394. package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +0 -1
  395. package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +0 -1
  396. package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +0 -1
  397. package/dist/esm/sdk/runtimeContext-CNFJjcns.js +0 -6
  398. package/dist/esm/sdk/secp256k1-BGVlx50C.js +0 -1
  399. package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +0 -1
  400. package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +0 -1
  401. package/dist/esm/sdk/signNear-r8VCOoTh.js +0 -1
  402. package/dist/esm/sdk/signerSlot-D4ZOuK7e.js +0 -1
  403. package/dist/esm/sdk/signingQueue-BJzOrwDq.js +0 -1
  404. package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +0 -1
  405. package/dist/esm/sdk/thresholdEcdsa-tnY83qyG.js +0 -1
  406. package/dist/esm/sdk/transactionReview-DSGnpreN.js +0 -1
  407. package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +0 -1
  408. package/dist/esm/sdk/wallet-recovery-BjIQdOha.js +0 -1
  409. package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +0 -1
  410. package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +0 -1
  411. package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +0 -1
  412. package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +0 -1
  413. package/dist/esm/sdk/walletDbName-DDJXrgA5.js +0 -1
  414. package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +0 -1
  415. package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +0 -1
  416. package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +0 -1
  417. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +0 -1
  418. package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +0 -1
  419. package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +0 -1
  420. package/dist/public/sdk/NonceCoordinator-Bti1HQPo.js +0 -1
  421. package/dist/public/sdk/accountLifecycle-B98g9zN9.js +0 -1
  422. package/dist/public/sdk/actions-GYsSR2Q2.js +0 -1
  423. package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +0 -1
  424. package/dist/public/sdk/adapters-D5MZ5NG5.js +0 -2
  425. package/dist/public/sdk/appearance-DVFno9Tv.js +0 -1
  426. package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +0 -1
  427. package/dist/public/sdk/canonicalPrimitives-B6YMrI3W.js +0 -1
  428. package/dist/public/sdk/challengeDelivery-FW9gYyr0.js +0 -1
  429. package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +0 -1
  430. package/dist/public/sdk/configBuilder-DrxXNUpV.js +0 -1
  431. package/dist/public/sdk/configuration-CAqANpTI.js +0 -1
  432. package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +0 -1
  433. package/dist/public/sdk/ecdsaDerivationClientWasm-7Rp4TmYE.js +0 -1
  434. package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +0 -1
  435. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +0 -1
  436. package/dist/public/sdk/errors-ADOZT8oV.js +0 -1
  437. package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +0 -1
  438. package/dist/public/sdk/helpers-CXqXyyCU.js +0 -1
  439. package/dist/public/sdk/host-C0Is56lU.js +0 -1
  440. package/dist/public/sdk/icons-DyndJzSh.js +0 -1
  441. package/dist/public/sdk/indexedDB-C1odKEC6.js +0 -1
  442. package/dist/public/sdk/intentDigest-BMXki7yB.js +0 -1
  443. package/dist/public/sdk/keyMaterialEnvelope-B-Q5KTJC.js +0 -1
  444. package/dist/public/sdk/localOnly-BB3Rx3J6.js +0 -1
  445. package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +0 -1
  446. package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +0 -1
  447. package/dist/public/sdk/operationFingerprint-Bn0lUYlm.js +0 -1
  448. package/dist/public/sdk/presignaturePool-CultzkOG.js +0 -1
  449. package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +0 -1
  450. package/dist/public/sdk/recoveryAuthorization-DB-zxeHq.js +0 -1
  451. package/dist/public/sdk/registration-CM5a7WYO.js +0 -1
  452. package/dist/public/sdk/registration-Hv0xi7-L.js +0 -1
  453. package/dist/public/sdk/registrationIntent-DTs2SR9E.js +0 -1
  454. package/dist/public/sdk/registrationSignerPlan-CgbFVsAp.js +0 -1
  455. package/dist/public/sdk/requireStepUpAuth-B7tC4MrA.js +0 -1
  456. package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +0 -1
  457. package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +0 -1
  458. package/dist/public/sdk/runtime-auth-CVw1KoVD.js +0 -1
  459. package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +0 -1
  460. package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +0 -1
  461. package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +0 -1
  462. package/dist/public/sdk/runtime-export-upMPrZ4V.js +0 -1
  463. package/dist/public/sdk/runtime-near-B64Hn3nc.js +0 -1
  464. package/dist/public/sdk/runtime-preferences-CULdHkbg.js +0 -1
  465. package/dist/public/sdk/runtime-recovery-D2saBaJy.js +0 -1
  466. package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +0 -1
  467. package/dist/public/sdk/runtimeContext-CNFJjcns.js +0 -6
  468. package/dist/public/sdk/secp256k1-BGVlx50C.js +0 -1
  469. package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +0 -1
  470. package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +0 -1
  471. package/dist/public/sdk/signNear-r8VCOoTh.js +0 -1
  472. package/dist/public/sdk/signerSlot-D4ZOuK7e.js +0 -1
  473. package/dist/public/sdk/signingQueue-BJzOrwDq.js +0 -1
  474. package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +0 -1
  475. package/dist/public/sdk/thresholdEcdsa-tnY83qyG.js +0 -1
  476. package/dist/public/sdk/transactionReview-DSGnpreN.js +0 -1
  477. package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +0 -1
  478. package/dist/public/sdk/wallet-recovery-BjIQdOha.js +0 -1
  479. package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +0 -1
  480. package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +0 -1
  481. package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +0 -1
  482. package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +0 -1
  483. package/dist/public/sdk/walletDbName-DDJXrgA5.js +0 -1
  484. package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +0 -1
  485. package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +0 -1
  486. package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +0 -1
  487. package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +0 -1
  488. package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +0 -1
  489. package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +0 -1
  490. /package/dist/esm/sdk/{accountIds-D5NI31F2.js → accountIds-CW2BP-d9.js} +0 -0
  491. /package/dist/esm/sdk/{authenticatorOptions-EF_Rps52.js → authenticatorOptions-WCDKYRux.js} +0 -0
  492. /package/dist/esm/sdk/{authorizationAdmission-DbhNiY3X.js → authorizationAdmission-28jo_IVJ.js} +0 -0
  493. /package/dist/esm/sdk/{browser-B2RI00tM.js → browser-CKS7Tq2r.js} +0 -0
  494. /package/dist/esm/sdk/{bytes-DVe42j_r.js → bytes-DXo6uALR.js} +0 -0
  495. /package/dist/esm/sdk/{canonicalSignerErrorCode-AwNMAn8S.js → canonicalSignerErrorCode-CX5PBpkt.js} +0 -0
  496. /package/dist/esm/sdk/{capabilityKinds-BzrNeEyO.js → capabilityKinds-DVlGMspk.js} +0 -0
  497. /package/dist/esm/sdk/{configHelpers-BNqoU2cv.js → configHelpers-CXDY3bKC.js} +0 -0
  498. /package/dist/esm/sdk/{csp-stylesheet-DeuiM0Mo.js → csp-stylesheet-DUSqfXvZ.js} +0 -0
  499. /package/dist/esm/sdk/{events-1dzC4Ocx.js → events-D6l0_ugy.js} +0 -0
  500. /package/dist/esm/sdk/{executeWorkerOperation-B-9JuL55.js → executeWorkerOperation-C9FOCCR7.js} +0 -0
  501. /package/dist/esm/sdk/{jsonRpc-CHutSlC9.js → jsonRpc-BVDv1wfm.js} +0 -0
  502. /package/dist/esm/sdk/{keccak-C9kCkZem.js → keccak-mS0Mejjx.js} +0 -0
  503. /package/dist/esm/sdk/{normalization-DtruiNPw.js → normalization-B3i1-rPQ.js} +0 -0
  504. /package/dist/esm/sdk/{prfCache-8Wm3etlV.js → prfCache-DEHaUPSW.js} +0 -0
  505. /package/dist/esm/sdk/{profileAccountProjection-D01e10UY.js → profileAccountProjection-C5sNt-s2.js} +0 -0
  506. /package/dist/esm/sdk/{promptText-Bz3YRl9D.js → promptText-bcKcsSka.js} +0 -0
  507. /package/dist/esm/sdk/{registrationAuthMethodInput-BvbWl0y_.js → registrationAuthMethodInput-BR1WVbK3.js} +0 -0
  508. /package/dist/esm/sdk/{sdkSentEvents-DUht3AOD.js → sdkSentEvents-DjOlKtdW.js} +0 -0
  509. /package/dist/esm/sdk/{shared-DcHtE-D-.js → shared-CkHhXgFB.js} +0 -0
  510. /package/dist/esm/sdk/{signer-worker-DlK58rEA.js → signer-worker-BNodGJKY.js} +0 -0
  511. /package/dist/esm/sdk/{signerDomain-D-EUTlLK.js → signerDomain-BAsLT3XN.js} +0 -0
  512. /package/dist/esm/sdk/{signingSessionSeal-DqbjG8c8.js → signingSessionSeal-BFOBKj-J.js} +0 -0
  513. /package/dist/esm/sdk/{types-fJKfUgTi.js → types-C4OErbBf.js} +0 -0
  514. /package/dist/esm/sdk/{walletIframeIdentity-Cz82I_Uh.js → walletIframeIdentity-CpgyEnKg.js} +0 -0
  515. /package/dist/esm/sdk/{walletSessionFailure-CLUIF3Eh.js → walletSessionFailure-CxsVtroW.js} +0 -0
  516. /package/dist/esm/sdk/{webauthnPromptCoordinator-CU9ag7vz.js → webauthnPromptCoordinator-npsSRD51.js} +0 -0
  517. /package/dist/public/sdk/{accountIds-D5NI31F2.js → accountIds-CW2BP-d9.js} +0 -0
  518. /package/dist/public/sdk/{authenticatorOptions-EF_Rps52.js → authenticatorOptions-WCDKYRux.js} +0 -0
  519. /package/dist/public/sdk/{authorizationAdmission-DbhNiY3X.js → authorizationAdmission-28jo_IVJ.js} +0 -0
  520. /package/dist/public/sdk/{browser-B2RI00tM.js → browser-CKS7Tq2r.js} +0 -0
  521. /package/dist/public/sdk/{bytes-DVe42j_r.js → bytes-DXo6uALR.js} +0 -0
  522. /package/dist/public/sdk/{canonicalSignerErrorCode-AwNMAn8S.js → canonicalSignerErrorCode-CX5PBpkt.js} +0 -0
  523. /package/dist/public/sdk/{capabilityKinds-BzrNeEyO.js → capabilityKinds-DVlGMspk.js} +0 -0
  524. /package/dist/public/sdk/{configHelpers-BNqoU2cv.js → configHelpers-CXDY3bKC.js} +0 -0
  525. /package/dist/public/sdk/{csp-stylesheet-DeuiM0Mo.js → csp-stylesheet-DUSqfXvZ.js} +0 -0
  526. /package/dist/public/sdk/{events-1dzC4Ocx.js → events-D6l0_ugy.js} +0 -0
  527. /package/dist/public/sdk/{executeWorkerOperation-B-9JuL55.js → executeWorkerOperation-C9FOCCR7.js} +0 -0
  528. /package/dist/public/sdk/{jsonRpc-CHutSlC9.js → jsonRpc-BVDv1wfm.js} +0 -0
  529. /package/dist/public/sdk/{keccak-C9kCkZem.js → keccak-mS0Mejjx.js} +0 -0
  530. /package/dist/public/sdk/{normalization-DtruiNPw.js → normalization-B3i1-rPQ.js} +0 -0
  531. /package/dist/public/sdk/{prfCache-8Wm3etlV.js → prfCache-DEHaUPSW.js} +0 -0
  532. /package/dist/public/sdk/{profileAccountProjection-D01e10UY.js → profileAccountProjection-C5sNt-s2.js} +0 -0
  533. /package/dist/public/sdk/{promptText-Bz3YRl9D.js → promptText-bcKcsSka.js} +0 -0
  534. /package/dist/public/sdk/{registrationAuthMethodInput-BvbWl0y_.js → registrationAuthMethodInput-BR1WVbK3.js} +0 -0
  535. /package/dist/public/sdk/{sdkSentEvents-DUht3AOD.js → sdkSentEvents-DjOlKtdW.js} +0 -0
  536. /package/dist/public/sdk/{shared-DcHtE-D-.js → shared-CkHhXgFB.js} +0 -0
  537. /package/dist/public/sdk/{signer-worker-DlK58rEA.js → signer-worker-BNodGJKY.js} +0 -0
  538. /package/dist/public/sdk/{signerDomain-D-EUTlLK.js → signerDomain-BAsLT3XN.js} +0 -0
  539. /package/dist/public/sdk/{signingSessionSeal-DqbjG8c8.js → signingSessionSeal-BFOBKj-J.js} +0 -0
  540. /package/dist/public/sdk/{types-fJKfUgTi.js → types-C4OErbBf.js} +0 -0
  541. /package/dist/public/sdk/{walletIframeIdentity-Cz82I_Uh.js → walletIframeIdentity-CpgyEnKg.js} +0 -0
  542. /package/dist/public/sdk/{walletSessionFailure-CLUIF3Eh.js → walletSessionFailure-CxsVtroW.js} +0 -0
  543. /package/dist/public/sdk/{webauthnPromptCoordinator-CU9ag7vz.js → webauthnPromptCoordinator-npsSRD51.js} +0 -0
@@ -0,0 +1 @@
1
+ import{n as e}from"./chunk-dVx5-UGu.js";import{s as t}from"./errors-BJBDbwHk.js";import{c as n,r}from"./helpers-Dubwo5uK.js";import{t as i}from"./webauthnPromptCoordinator-npsSRD51.js";import{a,f as o,n as s,p as c,r as l,t as u,v as d}from"./adapters-d9yh1bdC.js";import{a as f}from"./intentDigest-HvRsBQ1z.js";var p=e({handleRegistrationFlow:()=>_});function m(e){return Math.max(0,Math.round(performance.now()-e))}function h(e){return{kind:`passkey_registration_confirm_display_v1`,intendedUserName:e.walletId,accountId:e.walletId,rpId:e.rpId,signerSlot:e.signerSlot}}function g(e){let t={walletId:e.walletId,intendedUserName:e.walletId,prompt:e.prompt};return e.recoveryRegistration?{...t,kind:`wallet_recovery`,recoveryRegistration:e.recoveryRegistration}:e.addAuthMethodRegistration?{...t,kind:`wallet_add_auth_method`,registration:e.addAuthMethodRegistration}:{...t,kind:`wallet_registration`,challengeB64u:e.challengeB64u,signerSlot:e.signerSlot}}async function _(e,p,_,v){let{confirmationConfig:y,transactionSummary:b,theme:x,surface:S}=v,C=performance.now(),w=0,T=0,E=0,D=0,O=0,k=0,A=0,j=0,M=0,N=0,P=0,F=0,I=null,L=()=>({kind:`registration_confirmation_diagnostics_v1`,workerReadyMs:0,workerRequestRoundTripMs:0,workerResponseValidationMs:0,requestSetupMs:w,promptUserMs:T,promptElementDefineMs:E,promptMountMs:D,promptHostFirstUpdateMs:O,promptHostInteractiveMs:k,promptConfirmEventMs:A,promptDecisionWaitMs:j,credentialCreateStartMs:M,credentialCreateMs:N,credentialSerializeMs:P,duplicateRetryCount:F,mainThreadTotalMs:m(C)}),R=s(e),z=u({adapters:R,worker:_,request:p,confirmationConfig:y,transactionSummary:b,theme:x,surface:S}),B=d(p),V=c(p);try{let e=performance.now(),a=p.payload.walletRecoveryRegistration,s=p.payload.walletAddAuthMethodRegistration,c=p.payload.webauthnChallenge,l=a?a.challengeB64u:s?s.challengeB64u:c?.kind===`intent_digest`?String(c.challengeB64u||``).trim():``,u=async()=>{if(l)return l;let e=o(p);if(!e)throw Error(`Missing intentDigest for registration flow`);return f(e)},d=a?.rpId??s?.rpId??R.security.getRpId();if(!d)throw Error(`Missing rpId for registration challenge`);let _=p.payload?.signerSlot??1,v=await u(),y={rpId:d,passkeyRegistration:h({walletId:B,nearAccountId:V,rpId:d,signerSlot:_})};w=m(e);let b={kind:`registration_modal`,requestId:p.requestId};I=await i.reserveRegistrationPrompt({owner:b,expiresAtMs:Date.now()+300*1e3,cancellation:{kind:`none`}});let x=performance.now(),{confirmed:S,error:H,diagnostics:U}=await z.promptUser({securityContext:y});if(T=m(x),E=U.elementDefineMs,D=U.mountMs,O=U.hostFirstUpdateMs,k=U.hostInteractiveMs,A=U.confirmEventMs,j=U.decisionWaitMs,!S)return z.confirmAndCloseModal({requestId:p.requestId,intentDigest:o(p),confirmed:!1,registrationDiagnostics:L(),error:H});let W,G=p.payload?.signerSlot??1;M=m(C);let K=performance.now();try{try{let e={kind:`reserved`,reservation:I,owner:b,cancellation:{kind:`none`}};W=await R.webauthn.createRegistrationCredential(g(a?{walletId:B,recoveryRegistration:a,prompt:e}:s?{walletId:B,addAuthMethodRegistration:s,prompt:e}:{walletId:B,challengeB64u:v,signerSlot:G,prompt:e}))}catch(e){let n=t(e),r=String(n?.name||``),i=String(n?.message||``);if(r===`InvalidStateError`||/excluded|already\s*registered/i.test(i)){if(F+=1,l)throw Error(`Registration credential already exists for this wallet registration intent; create a fresh intent before retrying`);if(p.payload.walletRecoveryRegistration||s)throw Error(`Server-issued registration requires a fresh ceremony`);let e=G!==void 0&&Number.isFinite(G)?G+1:2;G=e,p.payload.signerSlot=e,p.intentDigest=p.type===`registerAccount`?`register:${B}:${e}`:`device2-register:${B}:${e}`,v=await u(),W=await R.webauthn.createRegistrationCredential(g({walletId:B,challengeB64u:v,signerSlot:e,prompt:{kind:`immediate`,requestId:p.requestId,cancellation:{kind:`none`}}}))}else throw console.error(`[RegistrationFlow] credentials.create failed (non-duplicate)`,{name:r,msg:i}),n}}finally{N=m(K)}let q=performance.now(),J=r(W)?W:n({credential:W,firstPrfOutput:!0,secondPrfOutput:!0});P=m(q),z.confirmAndCloseModal({requestId:p.requestId,intentDigest:o(p),confirmed:!0,credential:J,registrationDiagnostics:L()})}catch(e){let n=a(e),r=String(t(e)?.message||e||``);n&&window.parent?.postMessage({type:`WALLET_UI_CLOSED`},`*`);let i=/WebAuthn PRF output is missing from navigator\.credentials\.create\(\)/i.test(r)||/does not fully support the WebAuthn PRF extension during registration/i.test(r)||/roaming hardware authenticators .* not supported in this flow/i.test(r);return z.confirmAndCloseModal({requestId:p.requestId,intentDigest:o(p),confirmed:!1,registrationDiagnostics:L(),error:n?l.cancelled:i?r:r||l.collectCredentialsFailed})}finally{I&&i.releaseReservation(I)}}export{p as n,_ as t};
@@ -1 +1 @@
1
- import"./signerDomain-D-EUTlLK.js";import"./accountIds-D5NI31F2.js";import"./signerSlot-D4ZOuK7e.js";import"./registrationSignerPlan-CgbFVsAp.js";import{O as e,T as t,_ as n,a as r,b as i,c as a,g as o,i as s,k as c,l,o as u,r as d,s as f,t as p,v as m,w as h,x as g,y as _}from"./accountLifecycle-B98g9zN9.js";function v(v){return{storeUserData:async e=>{await g(v,e)},getAllUsers:()=>s(v),getUserBySignerSlot:(e,t)=>u(v,e,t),getLastUser:()=>r(v),nearAuthenticatorsByAccount:e=>l(v,e),setLastUser:(e,t)=>m(v,e,t),activateAuthenticatedWalletState:e=>p(v,e),setWalletNearProvisioningState:e=>_(v,e),getWalletNearProvisioningState:e=>f(v,e),storeAuthenticator:e=>i(v,e),rollbackUserRegistration:e=>o(v,e),hasPasskeyCredential:e=>a(v,e),storeWalletEd25519RegistrationData:e=>t(v,e),storeWalletEd25519RecoveryRegistrationData:e=>h(v,e),storeWalletEmailOtpEd25519RegistrationData:t=>e(v,t),storeWalletEmailOtpMixedRegistrationData:e=>c(v,e),finalizeWalletEd25519SignerRegistration:e=>d(v,e),rollbackWalletEd25519SignerRegistration:e=>n(v,e)}}export{v as createRegistrationAccountsService};
1
+ import"./signerDomain-BAsLT3XN.js";import"./accountIds-CW2BP-d9.js";import"./signerSlot-D2RZnb27.js";import"./registrationSignerPlan-DK2b3N_p.js";import{O as e,T as t,_ as n,a as r,b as i,c as a,g as o,i as s,k as c,l,o as u,r as d,s as f,t as p,v as m,w as h,x as g,y as _}from"./accountLifecycle-6DHYWf0v.js";function v(v){return{storeUserData:async e=>{await g(v,e)},getAllUsers:()=>s(v),getUserBySignerSlot:(e,t)=>u(v,e,t),getLastUser:()=>r(v),nearAuthenticatorsByAccount:e=>l(v,e),setLastUser:(e,t)=>m(v,e,t),activateAuthenticatedWalletState:e=>p(v,e),setWalletNearProvisioningState:e=>_(v,e),getWalletNearProvisioningState:e=>f(v,e),storeAuthenticator:e=>i(v,e),rollbackUserRegistration:e=>o(v,e),hasPasskeyCredential:e=>a(v,e),storeWalletEd25519RegistrationData:e=>t(v,e),storeWalletEd25519RecoveryRegistrationData:e=>h(v,e),storeWalletEmailOtpEd25519RegistrationData:t=>e(v,t),storeWalletEmailOtpMixedRegistrationData:e=>c(v,e),finalizeWalletEd25519SignerRegistration:e=>d(v,e),rollbackWalletEd25519SignerRegistration:e=>n(v,e)}}export{v as createRegistrationAccountsService};
@@ -0,0 +1 @@
1
+ import{A as e,E as t,M as n,N as r,O as i,S as a,d as o,f as s,k as c,l,u as ee,x as te,y as ne}from"./domainIds-t1lp25yU.js";import{S as u,b as d,g as re,i as ie,r as f,t as p}from"./digests-BIaE0DMd.js";import{i as ae}from"./base64-BmKR3UqU.js";import{n as oe}from"./secureRandomId-8LSc91aN.js";import{A as se,D as m,E as h,J as g,M as ce,N as _,O as le,k as ue}from"./activeWalletSession-BJ4B-nJo.js";import{a as v,n as de}from"./presignatures-BCeq56DG.js";import{kt as fe}from"./digestEncoding-CqNXPZY9.js";import{i as y,n as pe,t as b}from"./registrationAuthMethodInput-BR1WVbK3.js";import{a as me}from"./signerSlot-D2RZnb27.js";import{a as he}from"./registrationSignerPlan-DK2b3N_p.js";function ge(e){return typeof e==`string`&&/^wreg_[A-Za-z0-9_-]{43}$/u.test(e)?e:null}function _e(){return`wreg_${oe(32)}`}const x=`wallet_registration_setup:`;function S(e,t){return`${x}${e}:${t}`}function C(e){if(!re(e)||!re(e.value))throw Error(`Registration setup journal is invalid`);let t=e.value,n=d(t.scopeDigest,`Registration setup scope digest`),r=d(t.requestDigest,`Registration setup request digest`),i=ge(t.operationId);if(!i||!/^[a-f0-9]{64}$/u.test(n)||!/^[a-f0-9]{64}$/u.test(r)||e.key!==S(n,r))throw Error(`Registration setup journal scope is invalid`);if(t.state===`pending`&&!(`walletId`in t)&&!(`registrationCeremonyId`in t))return{state:`pending`,operationId:i,scopeDigest:n,requestDigest:r};if(t.state===`accepted`){let e=c(t.walletId);if(e.ok)return{state:`accepted`,operationId:i,scopeDigest:n,requestDigest:r,walletId:e.value,registrationCeremonyId:d(t.registrationCeremonyId,`Registration setup ceremony`)}}throw Error(`Registration setup journal state is invalid`)}async function ve(e){return ie(p({relayerUrl:e.relayerUrl.replace(/\/+$/u,``),publishableKey:e.publishableKey,environmentId:e.environmentId}))}function ye(){}var w=class{constructor(e){this.manager=e}async begin(e,t){let n=await ie(p(t)),r=S(e,n),i={state:`pending`,operationId:_e(),scopeDigest:e,requestDigest:n},a=(await this.manager.getDB()).transaction(v.appState,`readwrite`),o=await a.store.get(r),s=o===void 0?i:C(o);return o===void 0&&await a.store.put({key:r,value:s}),await a.done,s}async accept(e,t){let n=S(e.scopeDigest,e.requestDigest),r=(await this.manager.getDB()).transaction(v.appState,`readwrite`),i=C(await r.store.get(n));if(i.operationId!==e.operationId||i.state===`accepted`&&(i.walletId!==t.walletId||i.registrationCeremonyId!==t.registrationCeremonyId))throw r.abort(),await r.done.catch(ye),Error(`Registration setup response changed its operation, wallet or ceremony`);let a={state:`accepted`,operationId:i.operationId,scopeDigest:i.scopeDigest,requestDigest:i.requestDigest,walletId:t.walletId,registrationCeremonyId:t.registrationCeremonyId};await r.store.put({key:n,value:a}),await r.done}async complete(e){let t=(await this.manager.getDB()).transaction(v.appState,`readwrite`),n=(await t.store.getAll(IDBKeyRange.bound(x,`${x}\uffff`))).map(C);for(let r of n)r.state===`accepted`&&r.walletId===e.walletId&&r.registrationCeremonyId===e.registrationCeremonyId&&await t.store.delete(S(r.scopeDigest,r.requestDigest));await t.done}};const be=new w(de),T=`wallet_seed_parallel_hkdf_sha256_v1`;function xe(e){return e.kind===`wallet_custody_seed_v1`}function E(){return{kind:`wallet_custody_seed_v1`,derivationScheme:T}}function D(e){return{kind:`ed25519_yao_client_root_v1`,linkSessionId:e.linkSessionId,walletKeyId:e.walletKeyId,targetFactor:e.targetFactor,applicationBindingDigestB64u:e.applicationBindingDigestB64u,registeredPublicKeyB64u:e.registeredPublicKeyB64u,enrollmentId:e.enrollmentId,deviceId:e.deviceId,revocationEpoch:e.revocationEpoch}}function Se(e){return{kind:`ed25519_lane_holder_share_v1`,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,registeredPublicKeyB64u:e.registeredPublicKeyB64u,participantBindingDigestB64u:e.participantBindingDigestB64u}}function Ce(e){return{kind:`ecdsa_lane_holder_share_v1`,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,evmFamilySigningKeySlotId:e.evmFamilySigningKeySlotId,thresholdSessionId:e.thresholdSessionId,thresholdPublicKey33B64u:e.thresholdPublicKey33B64u}}const O=[`kind`,`walletKeyId`,`laneId`,`laneShareEpoch`],k={wallet_custody_seed_v1:[`kind`,`derivationScheme`],ed25519_yao_client_root_v1:[`kind`,`linkSessionId`,`walletKeyId`,`targetFactor`,`applicationBindingDigestB64u`,`registeredPublicKeyB64u`,`enrollmentId`,`deviceId`,`revocationEpoch`],ed25519_lane_holder_share_v1:[...O,`nearEd25519SigningKeyId`,`registeredPublicKeyB64u`,`participantBindingDigestB64u`],ecdsa_lane_holder_share_v1:[...O,`evmFamilySigningKeySlotId`,`thresholdSessionId`,`thresholdPublicKey33B64u`]},we=Array.from(new Set(Object.values(k).flat()));function Te(e,t){if(e===`wallet_custody_seed_v1`||e===`ed25519_yao_client_root_v1`||e===`ed25519_lane_holder_share_v1`||e===`ecdsa_lane_holder_share_v1`)return e;throw Error(`${t}.kind must be a known passkey custody secret kind`)}function Ee(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function De(e,t){let n=u(e,t);if(g(n,[`kind`],t),n.kind===`passkey_prf`||n.kind===`email_otp`)return{kind:n.kind};throw Error(`${t}.kind must be passkey_prf or email_otp`)}function A(t,n){let r=e(t.walletKeyId);if(!r.ok)throw Error(`${n}.walletKeyId ${r.error.message}`);let i=te(t.laneId);if(!i.ok)throw Error(`${n}.laneId ${i.error.message}`);let a=l(t.laneShareEpoch);if(!a.ok)throw Error(`${n}.laneShareEpoch ${a.error.message}`);return{walletKeyId:r.value,laneId:i.value,laneShareEpoch:a.value}}function Oe(e,t){let n=a(e);if(!n.ok)throw Error(`${t} ${n.error.message}`);return n.value}function ke(t,n=`passkeyCustodySecretBinding`){let r=u(t,n),i=Te(r.kind,n);switch(g(r,k[i],n,we),i){case`wallet_custody_seed_v1`:if(r.derivationScheme!==T)throw Error(`${n}.derivationScheme must be ${T}`);return E();case`ed25519_yao_client_root_v1`:{let t=ee(r.linkSessionId);if(!t.ok)throw Error(`${n}.linkSessionId ${t.error.message}`);let i=e(r.walletKeyId);if(!i.ok)throw Error(`${n}.walletKeyId ${i.error.message}`);let a=o(r.enrollmentId);if(!a.ok)throw Error(`${n}.enrollmentId ${a.error.message}`);let c=s(r.deviceId);if(!c.ok)throw Error(`${n}.deviceId ${c.error.message}`);return D({linkSessionId:t.value,walletKeyId:i.value,targetFactor:De(r.targetFactor,`${n}.targetFactor`),applicationBindingDigestB64u:h(r.applicationBindingDigestB64u,`${n}.applicationBindingDigestB64u`),registeredPublicKeyB64u:m(r.registeredPublicKeyB64u,`${n}.registeredPublicKeyB64u`),enrollmentId:a.value,deviceId:c.value,revocationEpoch:Ee(r.revocationEpoch,`${n}.revocationEpoch`)})}case`ed25519_lane_holder_share_v1`:{let e=A(r,n);return Se({walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,nearEd25519SigningKeyId:me(r.nearEd25519SigningKeyId),registeredPublicKeyB64u:m(r.registeredPublicKeyB64u,`${n}.registeredPublicKeyB64u`),participantBindingDigestB64u:h(r.participantBindingDigestB64u,`${n}.participantBindingDigestB64u`)})}case`ecdsa_lane_holder_share_v1`:{let e=A(r,n);return Ce({walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,evmFamilySigningKeySlotId:fe(r.evmFamilySigningKeySlotId,`${n}.evmFamilySigningKeySlotId`),thresholdSessionId:Oe(r.thresholdSessionId,`${n}.thresholdSessionId`),thresholdPublicKey33B64u:ce(r.thresholdPublicKey33B64u,`${n}.thresholdPublicKey33B64u`)})}}}const j=`wallet_custody_envelope_v2`,M=`passkey_prf_kek_hkdf_sha256_v1`,N=`email_otp_factor_kek_hkdf_sha256_v1`,P=`voiceid_device_factor_kek_hkdf_sha256_v1`;function Ae(e){return e.ownership.kind===`method_bound`&&e.binding.kind===`wallet_custody_seed_v1`&&e.lifecycle.state===`active`}function je(e){return Ae(e)&&e.factor.kind===`voiceid`}const Me=[`kind`,`walletAuthMethodId`];function Ne(e,n){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${n} must be an object`);let r=e;switch(g(r,Me,n),r.kind){case`unbound`:if(r.walletAuthMethodId!==void 0)throw Error(`${n}.walletAuthMethodId belongs to the method_bound branch`);return{kind:`unbound`};case`method_bound`:{let e=t(r.walletAuthMethodId);if(!e.ok)throw Error(`${n}.walletAuthMethodId ${e.error.message}`);return{kind:`method_bound`,walletAuthMethodId:e.value}}default:throw Error(`${n}.kind must be unbound or method_bound`)}}function Pe(e){return JSON.stringify({walletId:e.walletId,envelopeId:e.envelopeId,factor:e.factor,envelopeRevision:e.envelopeRevision,binding:e.binding,ownership:F(e.ownership)})}function Fe(e,n){if(e===`unbound`)return{kind:`unbound`};if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${n} must be "unbound" or a methodBound object`);let r=e;g(r,[`methodBound`],n);let i=r.methodBound;if(typeof i!=`object`||!i||Array.isArray(i))throw Error(`${n}.methodBound must be an object`);let a=i;g(a,[`walletAuthMethodId`],`${n}.methodBound`);let o=t(a.walletAuthMethodId);if(!o.ok)throw Error(`${n}.methodBound.walletAuthMethodId ${o.error.message}`);return{kind:`method_bound`,walletAuthMethodId:o.value}}function F(e){switch(e.kind){case`unbound`:return`unbound`;case`method_bound`:return{methodBound:{walletAuthMethodId:String(e.walletAuthMethodId)}};default:throw Error(`Unhandled custody envelope ownership: ${String(e)}`)}}function Ie(e){return{kind:`method_bound`,walletAuthMethodId:e}}function I(e){return{kind:`passkey`,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,kekVersion:M}}function L(e){return{kind:`email_otp`,enrollmentId:e.enrollmentId,enrollmentSealKeyVersion:e.enrollmentSealKeyVersion,kekVersion:N}}function R(e){return{kind:`voiceid`,deviceKeyId:e.deviceKeyId,kekVersion:P}}function z(e){return{state:`active`,activatedAtMs:e.activatedAtMs}}function Le(e){return{state:`retired`,activatedAtMs:e.activatedAtMs,retiredAtMs:e.retiredAtMs}}function Re(e){return{state:`revoked`,activatedAtMs:e.activatedAtMs,revokedAtMs:e.revokedAtMs}}function B(e){return{kind:`wallet_custody_envelope_v2`,envelopeId:e.envelopeId,walletId:e.walletId,ownership:e.ownership,binding:e.binding,factor:e.factor,envelopeVersion:j,envelopeRevision:e.envelopeRevision,nonceB64u:e.nonceB64u,sealedCustodySecretB64u:e.sealedCustodySecretB64u,ciphertextDigestB64u:e.ciphertextDigestB64u,aadHashB64u:e.aadHashB64u,lifecycle:e.lifecycle,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs}}const ze=[`state`,`activatedAtMs`,`retiredAtMs`,`revokedAtMs`];function Be(e,t=`lifecycle`){let n=u(e,t);g(n,ze,t);let r=_(n.activatedAtMs,`${t}.activatedAtMs`);switch(n.state){case`active`:if(n.retiredAtMs!==void 0||n.revokedAtMs!==void 0)throw Error(`${t} cannot be active and carry a retired or revoked timestamp`);return z({activatedAtMs:r});case`retired`:{if(n.revokedAtMs!==void 0)throw Error(`${t} cannot be retired and carry a revoked timestamp`);let e=_(n.retiredAtMs,`${t}.retiredAtMs`);if(e<r)throw Error(`${t}.retiredAtMs cannot precede activation`);return Le({activatedAtMs:r,retiredAtMs:e})}case`revoked`:{if(n.retiredAtMs!==void 0)throw Error(`${t} cannot be revoked and carry a retired timestamp`);let e=_(n.revokedAtMs,`${t}.revokedAtMs`);if(e<r)throw Error(`${t}.revokedAtMs cannot precede activation`);return Re({activatedAtMs:r,revokedAtMs:e})}default:throw Error(`${t}.state must be active, retired, or revoked`)}}const V=[`kind`,`rpId`,`credentialIdB64u`,`kekVersion`],H=[`kind`,`enrollmentId`,`enrollmentSealKeyVersion`,`kekVersion`],U=[`kind`,`deviceKeyId`,`kekVersion`],W=Array.from(new Set([...V,...H,...U]));function G(e,t){if(typeof e!=`string`||!e.trim())throw Error(`${t} is required`);return e}function Ve(e,t=`factor`){let i=u(e,t);switch(i.kind){case`passkey`:{if(g(i,V,t,W),i.kekVersion!==M)throw Error(`${t}.kekVersion must be ${M}`);let e=r(i.rpId);if(!e.ok)throw Error(`${t}.rpId ${e.error.message}`);let a=n(i.credentialIdB64u);if(!a.ok)throw Error(`${t}.credentialIdB64u ${a.error.message}`);return I({rpId:e.value,credentialIdB64u:a.value})}case`email_otp`:if(g(i,H,t,W),i.kekVersion!==N)throw Error(`${t}.kekVersion must be ${N}`);return L({enrollmentId:G(i.enrollmentId,`${t}.enrollmentId`),enrollmentSealKeyVersion:G(i.enrollmentSealKeyVersion,`${t}.enrollmentSealKeyVersion`)});case`voiceid`:if(g(i,U,t,W),i.kekVersion!==P)throw Error(`${t}.kekVersion must be ${P}`);return R({deviceKeyId:h(i.deviceKeyId,`${t}.deviceKeyId`)});default:throw Error(`${t}.kind must be passkey, email_otp, or voiceid`)}}const He=[`kind`,`envelopeId`,`walletId`,`ownership`,`binding`,`factor`,`envelopeVersion`,`envelopeRevision`,`nonceB64u`,`sealedCustodySecretB64u`,`ciphertextDigestB64u`,`aadHashB64u`,`lifecycle`,`createdAtMs`,`updatedAtMs`];function Ue(e,t=`walletCustodyEnvelope`){let n=u(e,t);if(n.kind!==`wallet_custody_envelope_v2`)throw Error(`${t}.kind must be ${j}`);if(g(n,He,t),n.envelopeVersion!==`wallet_custody_envelope_v2`)throw Error(`${t}.envelopeVersion must be ${j}`);let r=ne(n.envelopeId);if(!r.ok)throw Error(`${t}.envelopeId ${r.error.message}`);let i=c(n.walletId);if(!i.ok)throw Error(`${t}.walletId ${i.error.message}`);let a=Ne(n.ownership,`${t}.ownership`),o=_(n.createdAtMs,`${t}.createdAtMs`),s=_(n.updatedAtMs,`${t}.updatedAtMs`);if(s<o)throw Error(`${t}.updatedAtMs cannot precede createdAtMs`);return B({envelopeId:r.value,walletId:i.value,ownership:a,binding:ke(n.binding,`${t}.binding`),factor:Ve(n.factor,`${t}.factor`),envelopeRevision:se(n.envelopeRevision,`${t}.envelopeRevision`),nonceB64u:ue(n.nonceB64u,`${t}.nonceB64u`),sealedCustodySecretB64u:le(n.sealedCustodySecretB64u,`${t}.sealedCustodySecretB64u`),ciphertextDigestB64u:h(n.ciphertextDigestB64u,`${t}.ciphertextDigestB64u`),aadHashB64u:h(n.aadHashB64u,`${t}.aadHashB64u`),lifecycle:Be(n.lifecycle,`${t}.lifecycle`),createdAtMs:o,updatedAtMs:s})}function We(e,t){return e.kind===t.kind?e.kind===`unbound`?!0:t.kind===`method_bound`&&String(e.walletAuthMethodId)===String(t.walletAuthMethodId):!1}function Ge(e){if(!e.establishedCustody)throw Error(`only a custody-establishing commit issues recovery codes`);return{...e,recoveryBackupAcknowledged:!0}}function Ke(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t} walletCustody must be an object`);let n=e;switch(n.status){case`not_requested`:case`custody_already_established`:return{status:n.status};case`committed`:return{status:`committed`,issuedAtMs:_(n.issuedAtMs,`${t}.issuedAtMs`)};case`joined`:{let e=n.keyManifestDigestB64u;if(typeof e!=`string`||!e)throw Error(`${t} joined custody carries no key manifest digest`);return{status:`joined`,keyManifestDigestB64u:e}}case`rejected`:{let e=n.reason;if(typeof e!=`string`||!e)throw Error(`${t} rejected custody carries no reason`);return{status:`rejected`,reason:e}}default:throw Error(`${t} walletCustody status is unrecognised`)}}function qe(e){return String(e||``).trim()}function Je(e){return String(e||``).trim()}async function Ye(e){return ae(await f(p(e)))}async function Xe(e){return ae(await f(p(e)))}function Ze(e){let n=b(e);if(!n||!(`caller`in n))return null;let r=y(n.caller);if(r===`linked_device_ceremony`)return Object.prototype.hasOwnProperty.call(n,`source`)?null:{caller:`linked_device_ceremony`};if(r!==`same_device_addition`)return null;let a=b(`source`in n?n.source:void 0);if(!a)return null;let o=i(`walletAuthorityId`in a?a.walletAuthorityId:void 0),s=t(`walletAuthMethodId`in a?a.walletAuthMethodId:void 0),c=y(`authorityDigestB64u`in a?a.authorityDigestB64u:void 0),l=`revocationEpoch`in a?a.revocationEpoch:void 0;return!o.ok||!s.ok||!c||typeof l!=`number`||!Number.isSafeInteger(l)||l<0?null:{caller:`same_device_addition`,source:{walletAuthorityId:o.value,walletAuthMethodId:s.value,authorityDigestB64u:c,revocationEpoch:l}}}function Qe(e,t){return e.walletAuthorityId===t.walletAuthorityId&&e.walletAuthMethodId===t.walletAuthMethodId&&e.authorityDigestB64u===t.authorityDigestB64u&&e.revocationEpoch===t.revocationEpoch}function K(e,t,n,r=[]){let i=b(e);if(!i)throw Error(t+` must be an object`);let a=new Set([...n,...r]),o=Object.keys(i);if(o.length<n.length||o.length>a.size)throw Error(t+` has invalid fields`);for(let e of n)if(!Object.prototype.hasOwnProperty.call(i,e))throw Error(t+`.`+e+` is required`);for(let e of o)if(!a.has(e))throw Error(t+` has invalid fields`);return i}function q(e,t,n){if(!Object.prototype.hasOwnProperty.call(e,t))throw Error(n+`.`+t+` is required`);return Reflect.get(e,t)}function J(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Y(e,t,n){let r=q(e,t,n);if(typeof r!=`string`||r.length===0||r.trim()!==r)throw Error(n+`.`+t+` must be a non-empty canonical string`);return r}function X(e,t,n,r){let i=q(e,t,n);if(typeof i!=`number`||!Number.isSafeInteger(i)||i<r)throw Error(n+`.`+t+` must be a safe integer`);return i}function Z(e,t){if(!Array.isArray(e))throw Error(t+` must be an array`);return e}function Q(e,t,n){let r=Z(q(e,t,n),n+`.`+t);if(r.length===0)throw Error(n+`.`+t+` must not be empty`);let i=[];for(let e=0;e<r.length;e+=1){let a=r[e];if(typeof a!=`number`||!Number.isSafeInteger(a)||a<1)throw Error(n+`.`+t+`[`+e+`] must be a positive safe integer`);i.push(a)}return i}function $(e,t,n){return J(e,t)?Y(e,t,n):void 0}function $e(e,t=`addSignerIntent.signerSelection.ecdsa.chainTarget`){try{let n=K(e,t,[`kind`],[`namespace`,`chainId`,`networkSlug`]);switch(Y(n,`kind`,t)){case`evm`:{let e=K(n,t,[`kind`,`namespace`,`chainId`],[`networkSlug`]);if(Y(e,`namespace`,t)!==`eip155`)return null;let r=X(e,`chainId`,t,1),i=$(e,`networkSlug`,t);return i===void 0?{kind:`evm`,namespace:`eip155`,chainId:r}:{kind:`evm`,namespace:`eip155`,chainId:r,networkSlug:i}}case`tempo`:{let e=K(n,t,[`kind`,`chainId`],[`networkSlug`]),r=X(e,`chainId`,t,1),i=$(e,`networkSlug`,t);return i===void 0?{kind:`tempo`,chainId:r}:{kind:`tempo`,chainId:r,networkSlug:i}}default:return null}}catch{return null}}function et(e){let t=`addSignerIntent.signerSelection`,n=K(e,t,[`mode`],[`ed25519`,`ecdsa`]);switch(Y(n,`mode`,t)){case`ed25519`:{let e=K(q(K(n,t,[`mode`,`ed25519`]),`ed25519`,t),t+`.ed25519`,[`mode`,`signerSlot`,`participantIds`,`keyPurpose`,`keyVersion`,`derivationVersion`]);if(Y(e,`mode`,t+`.ed25519`)!==`create_implicit_near_account`)throw Error(t+`.ed25519.mode is unsupported`);X(e,`signerSlot`,t+`.ed25519`,1),Q(e,`participantIds`,t+`.ed25519`),Y(e,`keyPurpose`,t+`.ed25519`),Y(e,`keyVersion`,t+`.ed25519`),X(e,`derivationVersion`,t+`.ed25519`,1);break}case`ecdsa`:{let e=K(q(K(n,t,[`mode`,`ecdsa`]),`ecdsa`,t),t+`.ecdsa`,[`chainTargets`,`participantIds`]),r=Z(q(e,`chainTargets`,t+`.ecdsa`),t+`.ecdsa.chainTargets`);if(r.length===0)throw Error(t+`.ecdsa.chainTargets must not be empty`);for(let e of r)if(!$e(e))throw Error(t+`.ecdsa.chainTargets contains an invalid target`);Q(e,`participantIds`,t+`.ecdsa`);break}default:throw Error(t+`.mode is unsupported`)}let r=he(e,{normalizeEcdsaChainTarget:$e});if(!r.ok)throw Error(r.message);return r.value}function tt(e){let t=`addAuthMethodIntent.authMethod`,n=K(e,t,[`kind`],[`rpId`,`email`]);switch(Y(n,`kind`,t)){case`passkey`:{let e=r(Y(K(n,t,[`kind`,`rpId`]),`rpId`,t));if(!e.ok)throw Error(e.error.message);break}case`email_otp`:Y(K(n,t,[`kind`,`email`]),`email`,t);break;default:throw Error(t+`.kind is unsupported`)}let i=pe(e);if(!i)throw Error(t+` is invalid`);return i}function nt(e){let n=`addAuthMethodIntent.source`,r=K(e,n,[`walletAuthorityId`,`walletAuthMethodId`,`authorityDigestB64u`,`revocationEpoch`]),a=i(Y(r,`walletAuthorityId`,n)),o=t(Y(r,`walletAuthMethodId`,n));if(!a.ok||!o.ok)throw Error(n+` has invalid identity`);Y(r,`authorityDigestB64u`,n),X(r,`revocationEpoch`,n,0)}function rt(e,t){if(!J(e,`runtimePolicyScope`))return;let n=t+`.runtimePolicyScope`,r=K(q(e,`runtimePolicyScope`,t),n,[`orgId`,`projectId`,`envId`],[`signingRootVersion`]),i=Y(r,`orgId`,n),a=Y(r,`projectId`,n),o=Y(r,`envId`,n),s=$(r,`signingRootVersion`,n);return s===void 0?{orgId:i,projectId:a,envId:o}:{orgId:i,projectId:a,envId:o,signingRootVersion:s}}function it(e,t){let n=c(Y(e,`walletId`,t));if(!n.ok)throw Error(n.error.message);return n.value}function at(e,n,r){let i=t(Y(e,n,r));if(!i.ok)throw Error(i.error.message);return i.value}function ot(e){let t=`addSignerIntent`,n=K(e,t,[`version`,`walletId`,`signerSelection`,`nonceB64u`],[`runtimePolicyScope`]);if(Y(n,`version`,t)!==`add_signer_intent_v1`)throw Error(t+`.version is unsupported`);let r=it(n,t),i=rt(n,t),a=Y(n,`nonceB64u`,t),o=et(q(n,`signerSelection`,t));return i===void 0?{version:`add_signer_intent_v1`,walletId:r,signerSelection:o,nonceB64u:a}:{version:`add_signer_intent_v1`,walletId:r,signerSelection:o,runtimePolicyScope:i,nonceB64u:a}}function st(e){let t=`addAuthMethodIntent`,n=K(e,t,[`version`,`walletId`,`authMethod`,`targetWalletAuthMethodId`,`caller`,`nonceB64u`],[`runtimePolicyScope`,`source`]);if(Y(n,`version`,t)!==`add_auth_method_intent_v1`)throw Error(t+`.version is unsupported`);let r=it(n,t),i=at(n,`targetWalletAuthMethodId`,t),a=tt(q(n,`authMethod`,t)),o=rt(n,t),s=Y(n,`nonceB64u`,t);switch(Y(n,`caller`,t)){case`same_device_addition`:nt(q(n,`source`,t));break;case`linked_device_ceremony`:if(J(n,`source`))throw Error(t+`.source is not valid for linked_device_ceremony`);break;default:throw Error(t+`.caller is unsupported`)}let c=Ze(n);if(!c)throw Error(t+`.caller is invalid`);let l=o===void 0?{version:`add_auth_method_intent_v1`,walletId:r,authMethod:a,targetWalletAuthMethodId:i,nonceB64u:s}:{version:`add_auth_method_intent_v1`,walletId:r,authMethod:a,targetWalletAuthMethodId:i,runtimePolicyScope:o,nonceB64u:s};switch(c.caller){case`same_device_addition`:return{...l,caller:c.caller,source:c.source};case`linked_device_ceremony`:return{...l,caller:c.caller};default:return ct(c)}}function ct(e){throw Error(`Unsupported add-auth-method intent caller: ${String(e)}`)}function lt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Number.isSafeInteger(e[n])||e[n]!==t[n])return!1;return!0}function ut(e,t){switch(e.kind){case`evm`:return t.kind===`evm`&&e.namespace===t.namespace&&e.chainId===t.chainId&&e.networkSlug===t.networkSlug;case`tempo`:return t.kind===`tempo`&&e.chainId===t.chainId&&e.networkSlug===t.networkSlug;default:return dt(e)}}function dt(e){throw Error(`Unsupported add-signer chain target: ${String(e)}`)}function ft(e,t){if(e.mode!==t.mode)return!1;switch(e.mode){case`ed25519`:return t.mode===`ed25519`&&e.ed25519.mode===t.ed25519.mode&&e.ed25519.signerSlot===t.ed25519.signerSlot&&lt(e.ed25519.participantIds,t.ed25519.participantIds)&&e.ed25519.keyPurpose===t.ed25519.keyPurpose&&e.ed25519.keyVersion===t.ed25519.keyVersion&&e.ed25519.derivationVersion===t.ed25519.derivationVersion;case`ecdsa`:if(t.mode!==`ecdsa`||e.ecdsa.chainTargets.length!==t.ecdsa.chainTargets.length)return!1;for(let n=0;n<e.ecdsa.chainTargets.length;n+=1)if(!ut(e.ecdsa.chainTargets[n],t.ecdsa.chainTargets[n]))return!1;return lt(e.ecdsa.participantIds,t.ecdsa.participantIds);default:return pt(e)}}function pt(e){throw Error(`Unsupported add-signer selection: ${String(e)}`)}function mt(e,t){return e===void 0||t===void 0?e===t:e.orgId===t.orgId&&e.projectId===t.projectId&&e.envId===t.envId&&e.signingRootVersion===t.signingRootVersion}function ht(e,t){return e.version===t.version&&e.walletId===t.walletId&&ft(e.signerSelection,t.signerSelection)&&mt(e.runtimePolicyScope,t.runtimePolicyScope)&&e.nonceB64u===t.nonceB64u}function gt(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case`passkey`:return t.kind===`passkey`&&e.rpId===t.rpId;case`email_otp`:return t.kind===`email_otp`&&e.email===t.email;default:return _t(e)}}function _t(e){throw Error(`Unsupported add-auth-method input: ${String(e)}`)}function vt(e,t){if(e.version!==t.version||e.walletId!==t.walletId||!gt(e.authMethod,t.authMethod)||e.targetWalletAuthMethodId!==t.targetWalletAuthMethodId||!mt(e.runtimePolicyScope,t.runtimePolicyScope)||e.nonceB64u!==t.nonceB64u)return!1;switch(e.caller){case`same_device_addition`:return t.caller===`same_device_addition`&&Qe(e.source,t.source);case`linked_device_ceremony`:return t.caller===`linked_device_ceremony`;default:return yt(e)}}function yt(e){throw Error(`Unsupported add-auth-method intent: ${String(e)}`)}export{We as C,w as D,xe as E,be as O,Fe as S,E as T,R as _,st as a,je as b,ht as c,j as d,z as f,I as g,B as h,Ye as i,ve as k,Ke as l,Ie as m,Je as n,ot as o,L as p,Xe as r,vt as s,qe as t,Ge as u,Pe as v,D as w,Ue as x,F as y};
@@ -0,0 +1 @@
1
+ import{t as e}from"./digests-BIaE0DMd.js";import{c as t}from"./accountIds-CW2BP-d9.js";import{i as n,t as r}from"./registrationAuthMethodInput-BR1WVbK3.js";function i(){return{kind:`implicit_account`,accountIdSource:`ed25519_public_key`}}function a(e){return{kind:`sponsored_named_account`,requestedAccountId:e,sponsor:`relayer`}}function o(e,t){let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)&&n>=1?Math.floor(n):t}function s(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=Number(n);Number.isInteger(e)&&e>0&&t.push(e)}return t}function c(e){return Array.isArray(e)?e:[]}function l(e){let i=r(e);if(!i||!(`kind`in i))return null;switch(n(i.kind)){case`implicit_account`:return Object.prototype.hasOwnProperty.call(i,`requestedAccountId`)||Object.prototype.hasOwnProperty.call(i,`sponsor`)?null:{kind:`implicit_account`,accountIdSource:`ed25519_public_key`};case`sponsored_named_account`:{if(Object.prototype.hasOwnProperty.call(i,`accountIdSource`)||!(`requestedAccountId`in i))return null;let e=t(i.requestedAccountId);return e.ok?{kind:`sponsored_named_account`,requestedAccountId:e.value,sponsor:`relayer`}:null}default:return null}}function u(e){if(!e||!(`participantIds`in e)||!(`chainTargets`in e))return null;let t=s(e.participantIds),n=c(e.chainTargets);return t.length===0||n.length===0?null:{participantIds:t,chainTargets:n}}const d=`router-ab-ed25519-yao-v1`;function f(e){let t=n(e);if(!t)throw Error(`registration signer branch key is required`);return t}function p(e){return f(`near_ed25519:slot:${e}`)}function m(t){return f(`evm_family_ecdsa:${t.map(e).join(`|`)}`)}function h(e){return g(e.map(_))}function g(e){if(e.length===0)return{ok:!1,code:`invalid_body`,message:`signer set must include at least one signer`};let t=new Set,n=new Set,r=new Set;for(let i of e){let e=v({branch:i,nearSlots:t,ecdsaTargetKeys:n,branchKeys:r});if(e)return e}return{ok:!0,value:{kind:`signer_set`,branches:e}}}function _(e){switch(e.kind){case`near_ed25519`:return{kind:`near_ed25519`,branchKey:p(e.signerSlot),accountProvisioning:e.accountProvisioning,signerSlot:e.signerSlot,participantIds:e.participantIds,keyPurpose:`near_tx`,keyVersion:d,derivationVersion:e.derivationVersion};case`evm_family_ecdsa`:return{kind:`evm_family_ecdsa`,branchKey:m(e.chainTargets),participantIds:e.participantIds,chainTargets:e.chainTargets};default:return P(e)}}function v(e){switch(e.branch.kind){case`near_ed25519`:if(e.nearSlots.has(e.branch.signerSlot))return{ok:!1,code:`invalid_body`,message:`duplicate near_ed25519 signer slot is invalid`};e.nearSlots.add(e.branch.signerSlot);break;case`evm_family_ecdsa`:{let t=b(e.branch,e.ecdsaTargetKeys);if(t)return t}break;default:return F(e.branch)}return y(e.branch,e.branchKeys)}function y(e,t){let n=String(e.branchKey);return t.has(n)?{ok:!1,code:`invalid_body`,message:`duplicate signer branch is invalid`}:(t.add(n),null)}function b(t,n){for(let r of t.chainTargets){let t=e(r);if(n.has(t))return{ok:!1,code:`invalid_body`,message:`duplicate evm_family_ecdsa chain target is invalid`};n.add(t)}return null}function x(e){let t=r(e);if(!t)return{ok:!1,code:`invalid_body`,message:`signer set entry must be an object`};if(!(`kind`in t))return{ok:!1,code:`invalid_body`,message:`unsupported registration signer kind`};switch(n(t.kind)){case`near_ed25519`:return S(t);case`evm_family_ecdsa`:return C(t);default:return{ok:!1,code:`invalid_body`,message:`unsupported registration signer kind`}}}function S(e){if(Object.prototype.hasOwnProperty.call(e,`keyPurpose`)||Object.prototype.hasOwnProperty.call(e,`keyVersion`))return{ok:!1,code:`invalid_body`,message:`near_ed25519 signer spec cannot include protocol key fields`};if(Object.prototype.hasOwnProperty.call(e,`nearAccountId`)||Object.prototype.hasOwnProperty.call(e,`createNearAccount`))return{ok:!1,code:`invalid_body`,message:`near_ed25519 signer spec is invalid`};let t=l(`accountProvisioning`in e?e.accountProvisioning:void 0),n=o(`signerSlot`in e?e.signerSlot:void 0,0),r=Number(`derivationVersion`in e?e.derivationVersion:void 0),i=s(`participantIds`in e?e.participantIds:void 0);return!t||n<1||i.length===0||r!==1?{ok:!1,code:`invalid_body`,message:`near_ed25519 signer spec is invalid`}:{ok:!0,value:{kind:`near_ed25519`,accountProvisioning:t,signerSlot:n,participantIds:i,derivationVersion:r}}}function C(e){let t=u(e);return t?{ok:!0,value:{kind:`evm_family_ecdsa`,participantIds:t.participantIds,chainTargets:t.chainTargets}}:{ok:!1,code:`invalid_body`,message:`evm_family_ecdsa signer spec is invalid`}}function w(e){if(!(`signers`in e)||!Array.isArray(e.signers))return{ok:!1,code:`invalid_body`,message:`signerSelection.signers must be an array`};let t=[];for(let n of e.signers){let e=x(n);if(!e.ok)return e;t.push(e.value)}return h(t)}function T(e){let t=r(e);return t?`kind`in t&&n(t.kind)===`signer_set`?w(t):{ok:!1,code:`invalid_body`,message:`signerSelection.kind must be signer_set`}:{ok:!1,code:`invalid_body`,message:`signerSelection must be an object`}}function E(e){return h(e.signers)}function D(e){for(let t of e.branches)if(t.kind===`near_ed25519`)return t;return null}function O(e){for(let t of e.branches)if(t.kind===`evm_family_ecdsa`)return t;return null}function k(e,t={}){let n=[];for(let r of e.branches){let e=A(r,t);if(!e.ok)return e;n.push(e.value)}return{ok:!0,value:{kind:`signer_set`,signers:n}}}function A(e,t){switch(e.kind){case`near_ed25519`:return{ok:!0,value:j(e)};case`evm_family_ecdsa`:return M(e,t);default:return F(e)}}function j(e){return{kind:`near_ed25519`,accountProvisioning:e.accountProvisioning,signerSlot:e.signerSlot,participantIds:[...e.participantIds],derivationVersion:e.derivationVersion}}function M(e,t){let n=N(e,t);return n?{ok:!0,value:{kind:`evm_family_ecdsa`,participantIds:[...e.participantIds],chainTargets:n}}:{ok:!1,code:`invalid_body`,message:`registration ECDSA chainTargets are invalid`}}function N(e,t){if(!t.normalizeEcdsaChainTarget)return[...e.chainTargets];let n=[];for(let r of e.chainTargets){let e=t.normalizeEcdsaChainTarget(r);if(!e)return null;n.push(e)}return n}function P(e){throw Error(`Unsupported registration signer request: ${String(e)}`)}function F(e){throw Error(`Unsupported registration signer plan branch: ${String(e)}`)}function I(e,t){let i=r(e);if(!i)return{ok:!1,code:`invalid_body`,message:`signerSelection must be an object`};if(!(`mode`in i))return{ok:!1,code:`invalid_body`,message:`unsupported add-signer mode`};let a=n(i.mode);return a===`ecdsa`?L(`ecdsa`in i?i.ecdsa:void 0,t):a===`ed25519`?z(`ed25519`in i?i.ed25519:void 0):{ok:!1,code:`invalid_body`,message:`unsupported add-signer mode`}}function L(e,t){let n=r(e),i=s(n&&`participantIds`in n?n.participantIds:void 0),a=R(n&&`chainTargets`in n?n.chainTargets:void 0,t);return i.length===0||a.length===0?{ok:!1,code:`invalid_body`,message:`ecdsa add-signer spec is invalid`}:{ok:!0,value:{mode:`ecdsa`,ecdsa:{chainTargets:a,participantIds:i}}}}function R(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e){let e=t.normalizeEcdsaChainTarget(r);if(!e)return[];n.push(e)}return n}function z(e){let t=r(e),i=n(t&&`mode`in t?t.mode:void 0),a=o(t&&`signerSlot`in t?t.signerSlot:void 0,1),c=n(t&&`keyPurpose`in t?t.keyPurpose:void 0),l=n(t&&`keyVersion`in t?t.keyVersion:void 0),u=o(t&&`derivationVersion`in t?t.derivationVersion:void 0,0),d=s(t&&`participantIds`in t?t.participantIds:void 0);return!c||!l||!u||d.length===0?{ok:!1,code:`invalid_body`,message:`ed25519 add-signer spec is invalid`}:i===`create_implicit_near_account`?{ok:!0,value:{mode:`ed25519`,ed25519:{mode:i,signerSlot:a,participantIds:d,keyPurpose:c,keyVersion:l,derivationVersion:u}}}:{ok:!1,code:`invalid_body`,message:`unsupported add-signer mode`}}export{I as a,p as c,a as d,i,E as l,O as n,T as o,D as r,m as s,d as t,k as u};
@@ -0,0 +1 @@
1
+ import{r as e,t}from"./digests-BIaE0DMd.js";import{i as n}from"./base64-BmKR3UqU.js";import{r}from"./secureRandomId-8LSc91aN.js";import{i}from"./errors-BJBDbwHk.js";import{o as a}from"./sdkSentEvents-DjOlKtdW.js";import{a as o,c as s,i as c,o as ee,r as te,t as ne}from"./types-f7dyj5N6.js";import{t as l}from"./types-C4OErbBf.js";import{t as u}from"./promptText-bcKcsSka.js";async function d(r){let i=await e(t({kind:String(r.kind||``).trim()||`unknown`,payload:f(r.payload)}));return te.signingOperationFingerprint(`sha256:${n(i)}`)}function f(e){if(typeof e==`bigint`)return e.toString(10);if(e instanceof Uint8Array)return{__bytesB64u:n(e)};if(ArrayBuffer.isView(e))return{__bytesB64u:n(new Uint8Array(e.buffer,e.byteOffset,e.byteLength))};if(e instanceof ArrayBuffer)return{__bytesB64u:n(new Uint8Array(e))};if(Array.isArray(e))return e.map(f);if(!e||typeof e!=`object`)return e;let t={};for(let n of Object.keys(e).sort()){let r=f(e[n]);r!==void 0&&(t[n]=r)}return t}const p={Created:`created`,Planned:`planned`,ConfirmationApproved:`confirmation_approved`,AuthenticationInProgress:`authentication_in_progress`,AuthReady:`auth_ready`,ThresholdConnected:`threshold_connected`,PayloadPrepared:`payload_prepared`,Signed:`signed`,CleanedUp:`cleaned_up`,Completed:`completed`,Failed:`failed`,Cancelled:`cancelled`},m={ShowConfirmation:`showConfirmation`,RequestOtp:`requestOtp`,RequestPasskey:`requestPasskey`,ConnectThreshold:`connectThreshold`,PreparePayload:`preparePayload`,Sign:`sign`,Cleanup:`cleanup`},h={Review:`review`,Authentication:`authentication`,Execution:`execution`},g={Pending:`pending`,Approved:`approved`},_={ReviewApproved:`review_approved`,AuthenticationStarted:`authentication_started`,AuthenticationCompleted:`authentication_completed`};function v(e){return{operationId:e.operationId,current:{kind:p.Created}}}function y(e,t){switch(e.current.kind){case p.Created:case p.Planned:{let n={kind:p.Planned,plan:t};return e.current=n,n}case p.ConfirmationApproved:case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:case p.Signed:case p.CleanedUp:{let n={kind:p.ConfirmationApproved,plan:t};return e.current=n,n}case p.AuthenticationInProgress:{let n={kind:e.current.reviewApproval===g.Approved?p.ConfirmationApproved:p.Planned,plan:t};return e.current=n,n}case p.Completed:throw Error(`[SigningOperationMachine] completed operation cannot be replanned`);case p.Failed:throw Error(`[SigningOperationMachine] failed operation cannot be replanned`);case p.Cancelled:throw Error(`[SigningOperationMachine] cancelled operation cannot be replanned`);default:return I(e.current)}}function b(e){switch(e.current.kind){case p.Planned:e.current={kind:p.ConfirmationApproved,plan:e.current.plan};return;case p.ConfirmationApproved:case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:case p.Signed:case p.CleanedUp:return;case p.AuthenticationInProgress:e.current={kind:p.AuthenticationInProgress,plan:e.current.plan,reviewApproval:g.Approved};return;case p.Created:throw Error(`[SigningOperationMachine] operation must be planned before confirmation`);case p.Completed:throw Error(`[SigningOperationMachine] completed operation cannot be confirmed`);case p.Failed:throw Error(`[SigningOperationMachine] failed operation cannot be confirmed`);case p.Cancelled:throw Error(`[SigningOperationMachine] cancelled operation cannot be confirmed`);default:return I(e.current)}}function x(e){switch(e.current.kind){case p.Planned:e.current={kind:p.AuthenticationInProgress,plan:e.current.plan,reviewApproval:g.Pending};return;case p.ConfirmationApproved:e.current={kind:p.AuthenticationInProgress,plan:e.current.plan,reviewApproval:g.Approved};return;case p.AuthenticationInProgress:return;case p.Created:throw Error(`[SigningOperationMachine] operation must be planned before authentication`);case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:case p.Signed:case p.CleanedUp:return;case p.Completed:throw Error(`[SigningOperationMachine] completed operation cannot authenticate`);case p.Failed:throw Error(`[SigningOperationMachine] failed operation cannot authenticate`);case p.Cancelled:throw Error(`[SigningOperationMachine] cancelled operation cannot authenticate`);default:return I(e.current)}}function S(e){switch(e.current.kind){case p.AuthenticationInProgress:if(e.current.reviewApproval!==g.Approved)throw Error(`[SigningOperationMachine] authentication cannot complete before transaction approval`);e.current={kind:p.AuthReady,plan:e.current.plan};return;case p.ConfirmationApproved:case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:case p.Signed:case p.CleanedUp:return;case p.Created:case p.Planned:throw Error(`[SigningOperationMachine] authentication cannot complete before transaction approval`);case p.Completed:throw Error(`[SigningOperationMachine] completed operation cannot authenticate`);case p.Failed:throw Error(`[SigningOperationMachine] failed operation cannot authenticate`);case p.Cancelled:throw Error(`[SigningOperationMachine] cancelled operation cannot authenticate`);default:return I(e.current)}}function C(e,t){switch(t.kind){case _.ReviewApproved:b(e);return;case _.AuthenticationStarted:x(e);return;case _.AuthenticationCompleted:S(e);return;default:return L(t)}}function w(e){let t;switch(e.current.kind){case p.Planned:t=h.Review;break;case p.AuthenticationInProgress:t=h.Authentication;break;case p.ConfirmationApproved:case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:t=h.Execution;break;case p.Created:throw Error(`[SigningOperationMachine] operation must be planned before cancellation`);case p.Signed:case p.CleanedUp:case p.Completed:throw Error(`[SigningOperationMachine] completed signing cannot be cancelled`);case p.Failed:throw Error(`[SigningOperationMachine] failed operation cannot be cancelled`);case p.Cancelled:return e.current;default:return I(e.current)}let n={kind:p.Cancelled,plan:e.current.plan,phase:t};return e.current=n,n}function re(e){switch(e){case p.Planned:return!1;case p.ConfirmationApproved:return!0;default:return R(e)}}function ie(e){switch(e.kind){case p.Created:case p.Planned:case p.Failed:case p.Cancelled:return!1;case p.AuthenticationInProgress:return e.reviewApproval===g.Approved;case p.ConfirmationApproved:case p.AuthReady:case p.ThresholdConnected:case p.PayloadPrepared:case p.Signed:case p.CleanedUp:case p.Completed:return!0;default:return I(e)}}function T(e){return{kind:`signing_operation_plan`,sessionPlan:e.sessionPlan,operation:e.operation,commands:e.commands}}async function E(e){let t=[];for(let n of e.steps){if(n.command)try{await e.executor.execute(n.command)}catch(r){let i=j({from:n.from,to:{kind:p.Failed,plan:n.command.plan,reason:F(r)},command:n.command,reason:F(r)});return await e.onTransition?.(i.traceEvent),t.push(i),{ok:!1,finalState:i.to,error:r}}if(await e.onTransition?.(n.traceEvent),t.push(n),n.to.kind===p.Failed)return{ok:!0,finalState:n.to}}let n=t.at(-1)?.to||e.steps.at(-1)?.from;if(!n)throw Error(`[SigningOperationMachine] command sequence produced no steps`);return{ok:!0,finalState:n}}async function ae(e){for(let t of e.commands)await e.execute(t)}function D(e){let t=k(e),n=-1;return t.forEach((e,t)=>{e.command&&(n=t)}),n>=0?t.slice(0,n+1):[]}async function O(e){let t,n=await E({steps:D(T({sessionPlan:e.signingSessionPlan,operation:e.signingOperation,commands:[e.commandKind]})),executor:{execute:async n=>{n.kind===e.commandKind&&(t=await e.execute())}}});if(!n.ok)throw n.error;if(n.finalState.kind===p.Failed)throw Error(n.finalState.reason);return t}function k(e,t={kind:p.Planned,plan:e.sessionPlan}){let n=e.sessionPlan;if(n.kind===c.NotReady)return[j({from:t,to:{kind:p.Failed,plan:n,reason:n.reason},reason:n.reason})];let r=[],i=t;return i=A(r,i,{to:{kind:p.ConfirmationApproved,plan:n},command:N(e,{kind:m.ShowConfirmation,plan:n,lane:n.lane})}),n.kind===c.EmailOtpReauth?(i=A(r,i,{to:{kind:p.AuthReady,plan:n},command:N(e,{kind:m.RequestOtp,plan:n,lane:n.lane})}),i=A(r,i,{to:{kind:p.ThresholdConnected,plan:n},command:N(e,{kind:m.ConnectThreshold,plan:n,lane:n.lane})})):n.kind===c.PasskeyReauth?(i=A(r,i,{to:{kind:p.AuthReady,plan:n},command:N(e,{kind:m.RequestPasskey,plan:n,lane:n.lane})}),i=A(r,i,{to:{kind:p.ThresholdConnected,plan:n},command:N(e,{kind:m.ConnectThreshold,plan:n,lane:n.lane})})):i=A(r,i,{to:{kind:p.AuthReady,plan:n}}),i=A(r,i,{to:{kind:p.PayloadPrepared,plan:n},command:N(e,{kind:m.PreparePayload,plan:n,lane:n.lane})}),i=A(r,i,{to:{kind:p.Signed,plan:n},command:N(e,{kind:m.Sign,plan:n,lane:n.lane})}),i=A(r,i,{to:{kind:p.CleanedUp,plan:n},command:N(e,{kind:m.Cleanup,plan:n,lane:n.lane})}),A(r,i,{to:{kind:p.Completed,plan:n}}),r}function A(e,t,n){let r=j({from:t,to:n.to,command:n.command,reason:n.reason});return e.push(r),r.to}function j(e){let t=M(e.from,e.to);return{from:e.from,to:e.to,command:e.command,traceEvent:{event:`signing_operation_transition`,from:e.from.kind,to:e.to.kind,...e.command?{command:e.command.kind}:{},...e.command?.operation?{operationId:e.command.operation.operationId}:{},plan:ee(t),lane:o(t.lane),...e.reason?{reason:e.reason}:{}}}}function M(e,t){if(`plan`in t)return t.plan;if(`plan`in e)return e.plan;throw Error(`[SigningOperationMachine] transition has no signing plan`)}function N(e,t){if(e.commands.includes(t.kind))return P(t,e.operation)}function P(e,t){return t?{...e,operation:t}:e}function F(e){return e instanceof Error&&e.message.trim()?e.message:`execution_command_failed`}function I(e){throw Error(`Unsupported signing operation state: ${String(e)}`)}function L(e){throw Error(`[SigningOperationMachine] unsupported interaction event: ${String(e)}`)}function R(e){throw Error(`Unsupported signing operation state kind: ${String(e)}`)}function z(e){switch(e.signingAuthPlan.kind){case l.WarmSession:return{signingAuthPlan:e.signingAuthPlan};case l.ActiveWalletAuthority:return{signingAuthPlan:e.signingAuthPlan};case l.PasskeyReauth:return{signingAuthPlan:e.signingAuthPlan,...e.webauthnChallenge?{webauthnChallenge:e.webauthnChallenge}:{}};case l.EmailOtpReauth:{let t=e.emailOtpPrompt??e.signingAuthPlan.emailOtpPrompt;if(!t)throw Error(`[SigningConfirmation] missing_email_otp_prompt`);return{signingAuthPlan:e.signingAuthPlan,emailOtpPrompt:t}}default:return B(e.signingAuthPlan)}}function B(e){throw Error(`Unsupported signing auth plan: ${String(e.kind)}`)}async function V(e){H(e.request);let t=e.runtime.orchestrateSigningConfirmation;return await t(e.request)}function H(e){let t=e;switch(e.signingAuthPlan.kind){case l.WarmSession:if(t.emailOtpPrompt!==void 0||t.webauthnChallenge!==void 0)throw Error(`[SigningConfirmation] auth_method_route_mismatch`);return;case l.ActiveWalletAuthority:if(t.emailOtpPrompt!==void 0||t.webauthnChallenge!==void 0)throw Error(`[SigningConfirmation] auth_method_route_mismatch`);return;case l.PasskeyReauth:if(t.emailOtpPrompt!==void 0)throw Error(`[SigningConfirmation] auth_method_route_mismatch`);return;case l.EmailOtpReauth:if(t.webauthnChallenge!==void 0||!t.emailOtpPrompt)throw Error(`[SigningConfirmation] auth_method_route_mismatch`);return;default:return B(e.signingAuthPlan)}}function U(e){switch(e){case`missing_capability`:case`missing_material`:case`authority_ambiguous`:case`binding_mismatch`:case`exact_record_conflict`:case`corrupt`:return{kind:`invalid_material`,reason:e};case`revoked`:case`replaced`:return{kind:`full_login_required`,reason:e};case`persistence_unavailable`:return{kind:`temporarily_unavailable`,reason:e};default:throw Error(`[SigningEngine] unsupported signing material block reason`)}}var W=class extends Error{name=`InvalidWalletSigningMaterialError`;code=`wallet_signing_material_invalid`;constructor(e){super(`Wallet signing material is invalid. Log in again or recover the wallet.`),this.reason=e}},G=class extends Error{name=`WalletFullLoginRequiredError`;code=`wallet_full_login_required`;constructor(e){super(`A full wallet login is required before signing.`),this.reason=e}},K=class extends Error{name=`WalletOperationStepUpCancelled`;code=`wallet_operation_step_up_cancelled`;constructor(){super(`Request cancelled.`)}},q=class extends Error{name=`WalletSigningMaterialTemporarilyUnavailableError`;code=`wallet_signing_material_temporarily_unavailable`;reason=`persistence_unavailable`;constructor(){super(`Wallet signing material storage is temporarily unavailable. Retry the operation.`)}};function J(e){return new W(e)}function Y(e){return new G(e)}function oe(e){let t=U(e);switch(t.kind){case`invalid_material`:return J(t.reason);case`full_login_required`:return Y(t.reason);case`temporarily_unavailable`:return new q;default:throw Error(`[SigningEngine] unsupported signing material disposition`)}}function se(){return new K}function ce(e){return e instanceof W||e instanceof G||e instanceof K}function le(e){return r(e,32,`signing confirmation request IDs`)}function ue(e){return e.override}function de(e){return e.kind===`digest`?e.digest32:e.challenge32}function X(e){let t=V;return async()=>await t({runtime:e.runtime,request:e.request})}async function fe(e){let t=y(e.signingOperationState,e.signingSessionPlan),n={...e.request,signingOperationStateKind:t.kind,onSigningOperationInteractionEvent:C.bind(void 0,e.signingOperationState)},r=X({runtime:e.runtime,request:n});try{return await O({signingSessionPlan:e.signingSessionPlan,signingOperation:e.signingOperation,commandKind:m.ShowConfirmation,execute:r})}catch(t){throw i(t)&&w(e.signingOperationState).phase===h.Authentication?se():t}}async function pe(e){let t=X({runtime:e.runtime,request:e.request});return await O({signingSessionPlan:e.signingSessionPlan,signingOperation:e.signingOperation,commandKind:m.ShowConfirmation,execute:t})}function me(e){let t=e.plan;if(t.kind===c.WarmSession){if(t.keyRef.kind!==ne.Cached)throw Error(`[SigningEngine] warm signing-session plan requires a cached key ref`);let n=Math.floor(Number(e.expiresAtMs)||0),r=Math.floor(Number(e.remainingUses)||0);if(n<=0||r<=0)throw Error(`[SigningEngine] warm signing-session auth plan requires positive expiresAtMs and remainingUses`);if(e.curve===`ed25519`){if(t.keyRef.curve!==`ed25519`)throw Error(`[SigningEngine] Ed25519 warm plan requires an Ed25519 key ref`);return{kind:l.WarmSession,method:s(t.lane.auth),accountId:e.accountId,intent:e.intent,curve:`ed25519`,thresholdSessionId:String(t.keyRef.thresholdSessionId),retention:t.lane.retention,expiresAtMs:n,remainingUses:r}}if(t.keyRef.curve!==`ecdsa`)throw Error(`[SigningEngine] ECDSA warm plan requires an ECDSA key ref`);return{kind:l.WarmSession,method:s(t.lane.auth),accountId:e.accountId,intent:e.intent,curve:`ecdsa`,materialActivation:t.keyRef.materialActivation,authorization:t.keyRef.authorization,retention:t.lane.retention,expiresAtMs:n,remainingUses:r}}return t.kind===c.EmailOtpReauth?{kind:l.EmailOtpReauth,method:`email_otp`,...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}}:{kind:l.PasskeyReauth,method:`passkey`}}function he(e){switch(e.kind){case l.EmailOtpReauth:return`email_otp`;case l.WarmSession:return`warm_session`;case l.ActiveWalletAuthority:return`warm_session`;case l.PasskeyReauth:return`passkey`;default:{let t=e.kind;throw Error(`Unsupported signing confirmation auth method: ${String(t)}`)}}}function Z(e,t){let n=String(e.phase||``),r=e.status===`failed`;if(n===`intent-confirmation-required`)return{phase:a.STEP_05_CONFIRMATION_DISPLAYED,status:`waiting_for_user`,interaction:{kind:`transaction_confirmation`,overlay:`show`},data:Q(e.data)};if(n===`confirmation.complete`)return r?{phase:a.STEP_05_CONFIRMATION_CANCELLED,status:`cancelled`,interaction:{kind:`transaction_confirmation`,overlay:`hide`},error:{message:e.message||`Transaction rejected`},data:Q(e.data)}:{phase:t===`email_otp`?a.STEP_06_AUTH_EMAIL_OTP_VERIFY_SUCCEEDED:a.STEP_05_CONFIRMATION_APPROVED,status:`succeeded`,interaction:{kind:t===`email_otp`?`otp_input`:`transaction_confirmation`,overlay:`hide`},data:Q(e.data)};if(n===`auth.passkey.prompt.started`)return{phase:a.STEP_06_AUTH_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,interaction:{kind:`passkey_assert`,overlay:`show`},data:Q(e.data)};if(n===`auth.passkey.prompt.succeeded`){let t=`passkey_assert`;return r?{phase:a.FAILED,status:`failed`,interaction:{kind:t,overlay:`hide`},error:{message:e.message||`Transaction signing failed`},data:Q(e.data)}:{phase:a.STEP_06_AUTH_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,interaction:{kind:t,overlay:`hide`},data:Q(e.data)}}return null}function Q(e){if(e!=null)return typeof e==`object`&&!Array.isArray(e)?e:{value:e}}function ge(e){return{challengeId:e.challenge.challengeId,...e.challenge.emailHint?{emailHint:e.challenge.emailHint}:{},title:`Enter email code to sign`,helperText:u(e.challenge.emailHint),...e.resend?{onResend:e.resend}:{}}}var $=class extends Error{code;method;constructor(e,t,n){super(n),this.name=`StepUpMethodSelectionError`,this.code=e,this.method=t}};function _e(e,t){if(t.kind===`reuse_warm_session`)return`warm_session`;if(e.authMethod===`voiceid`)throw Error(`Unlock with VoiceID again before signing.`);return t.kind===`force_method`?t.method:e.authMethod}function ve(e){if(e.policy.kind===`reuse_warm_session`)return{method:`warm_session`,authorization:e.policy.authorization};let t=_e(e.selectedLane,e.policy);if(t===`passkey`){if(!e.methods.passkey)throw new $(`missing_step_up_runner`,t,`Passkey step-up runner is required for this operation`);return{method:`passkey`,runner:e.methods.passkey}}if(t===`email_otp`){if(!e.methods.emailOtp)throw new $(`missing_step_up_runner`,t,`Email OTP step-up runner is required for this operation`);return{method:`email_otp`,runner:e.methods.emailOtp}}let n=t;throw new $(`unsupported_step_up_method`,n,`Unsupported step-up method: ${n}`)}async function ye(e){let t=ve({selectedLane:e.selectedLane,policy:e.policy,methods:e.methods});if(t.method===`warm_session`)return{method:`warm_session`,authorization:t.authorization};if(t.method===`passkey`){let n=await t.runner.prepare();return{method:`passkey`,prompt:n,complete:async r=>await t.runner.complete({operation:e.operation,selectedLane:e.selectedLane,policy:e.policy,prompt:n,confirmation:r})}}let n=await t.runner.prepareChallenge({operation:e.operation,selectedLane:e.selectedLane,policy:e.policy}),r={},i=ge({challenge:n,resend:t.runner.resendChallenge?async()=>await t.runner.resendChallenge({operation:e.operation,selectedLane:e.selectedLane,policy:e.policy,currentPrompt:r.prompt||i}):void 0});return r.prompt=i,{method:`email_otp`,prompt:i,complete:async n=>await t.runner.complete({operation:e.operation,selectedLane:e.selectedLane,policy:e.policy,prompt:i,confirmation:n})}}export{O as C,d as E,re as S,ae as T,_,le as a,v as b,pe as c,Y as d,J as f,m as g,z as h,de as i,fe as l,oe as m,ue as n,Z as o,ce as p,X as r,he as s,ye as t,me as u,D as v,E as w,ie as x,T as y};
@@ -0,0 +1 @@
1
+ import{k as e}from"./domainIds-t1lp25yU.js";import{S as t}from"./digests-BIaE0DMd.js";import{E as n,J as r,O as i,k as a}from"./activeWalletSession-BJ4B-nJo.js";import{a as o}from"./presignatures-BCeq56DG.js";import{t as s}from"./indexedDB-C4SDsyOG.js";import{n as c}from"./walletOwnershipGeneration-CgjCtPrV.js";import{o as l}from"./walletSessionAuthorizationStore-B9Vwkshr.js";async function u(e,t){let n=f(e,t);if(n===null)return;let r=await s.resolveSelectedWalletAuthority(n);if(r.kind!==`resolved`)return;let i=await l.readExactWithOperationCredential({walletId:n,authorityId:r.authority.authorityId,authMethodId:r.authMethod.walletAuthMethodId});i.kind===`found`&&await c(n,i.operationCredential.ownershipGeneration)}function d(t){let n=e(t);if(!n.ok)throw Error(`Wallet mutation identity is invalid`);return n.value}function f(e,t){switch(e.type){case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`:case`PM_ACTIVATE_AUTH_METHOD`:case`PM_SET_AUTH_METHOD_ENABLED`:case`PM_ADD_EMAIL_OTP`:case`PM_REVOKE_AUTH_METHOD`:case`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`:case`PM_ROTATE_WALLET_RECOVERY_CODES`:case`PM_REQUEST_WALLET_CUSTODY_EMAIL_OTP_CHALLENGE`:case`PM_SIGN_TX_WITH_ACTIONS`:case`PM_SIGN_AND_SEND_TX`:case`PM_SIGN_DELEGATE_ACTION`:case`PM_SIGN_NEP413`:case`PM_REVOKE_LINKED_DEVICE`:return d(e.payload?.walletId);case`PM_SIGN_TEMPO`:case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return d(e.payload?.walletSession.walletId);case`PM_SYNC_ACCOUNT_FLOW`:{let n=e.payload?.walletId??t;return n===null?null:d(n)}case`PM_SCAN_AND_LINK_DEVICE`:return t===null?null:d(t);case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:case`PING`:case`PM_GET_AUTH_METHOD_AVAILABILITY`:case`PM_PREPARE_WALLET_RUNTIME`:case`PM_SET_CONFIG`:case`PM_ACTIVATE_TRANSACTION_REVIEW`:case`PM_CANCEL`:case`PM_OPEN_AUTH_MENU`:case`PM_CANCEL_AUTH_MENU`:case`PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH`:case`PM_REDEEM_HOSTED_WALLET_SEAMS_SESSION`:case`PM_REGISTER_WALLET`:case`PM_UNLOCK`:case`PM_UNLOCK_AUTH_METHOD`:case`PM_LOCK`:case`PM_LOCK_EXACT_WALLET_SESSION`:case`PM_GET_LAST_WALLET_MOVE_REQUEST`:case`PM_MOVE_WALLET`:case`PM_GET_WALLET_MOVE`:case`PM_GET_WALLET_PLACEMENT`:case`PM_GET_WALLET_SESSION`:case`PM_GET_EXACT_WALLET_SESSION_STATE`:case`PM_GET_NEAR_PROVISIONING_STATE`:case`PM_REQUEST_EMAIL_OTP_CHALLENGE`:case`PM_BEGIN_GOOGLE_EMAIL_OTP_WALLET_AUTH`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_RESEND`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_REROLL_WALLET_ID`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_SUBMIT`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_COMPLETE_REGISTRATION`:case`PM_GOOGLE_EMAIL_OTP_WALLET_AUTH_CANCEL`:case`PM_GET_WALLET_RECOVERY_CODE_STATUS`:case`PM_SEND_TRANSACTION`:case`PM_REPORT_TEMPO_BROADCAST_ACCEPTED`:case`PM_REPORT_TEMPO_BROADCAST_REJECTED`:case`PM_REPORT_TEMPO_FINALIZED`:case`PM_REPORT_TEMPO_DROPPED_OR_REPLACED`:case`PM_RECONCILE_TEMPO_NONCE_LANE`:case`PM_GET_RECENT_UNLOCKS`:case`PM_SET_CONFIRM_BEHAVIOR`:case`PM_SET_CONFIRMATION_CONFIG`:case`PM_GET_CONFIRMATION_CONFIG`:case`PM_HAS_PASSKEY`:case`PM_LIST_LINKED_DEVICES`:case`PM_START_DEVICE2_LINKING_FLOW`:case`PM_DEVICE_LINK_TARGET_FACTOR_ACTION`:case`PM_DEVICE_LINK_EMAIL_OTP_BASE_FACTOR_ACTION`:case`PM_CANCEL_DEVICE_LINKING`:return null;default:throw Error(`Unsupported wallet mutation request`)}}function p(e,t){return`wallet-auth-method-availability:${encodeURIComponent(e)}:${encodeURIComponent(t)}`}async function m(e,t){return h(await s.getAppState(p(e,t))).enabled}function h(e){if(e==null)return{enabled:!0,revision:`initial`};let n=t(e,`authentication method availability`);if(r(n,[`kind`,`revision`],`authentication method availability`),n.kind!==`enabled`&&n.kind!==`disabled`)throw Error(`Authentication method availability is invalid.`);if(n.revision!==void 0&&(typeof n.revision!=`string`||!n.revision))throw Error(`Authentication method availability revision is invalid.`);return{enabled:n.kind===`enabled`,revision:n.revision??`initial`}}async function g(e,t,n){await s.setAppState(p(e,t),{kind:n?`enabled`:`disabled`,revision:crypto.randomUUID()})}async function _(e){let t=await s.resolveSelectedWalletAuthority(e);if(t.kind!==`resolved`)return{kind:`not_enrolled`};let n=(await s.listWalletAuthMethodsV2ForWallet(e)).filter(v.bind(null,t.authority.authorityId));if(n.length===0)return{kind:`not_enrolled`};if(n.length!==1)throw Error(`Select the device authority before managing VoiceID.`);let r=n[0];return await m(e,r.walletAuthMethodId)?{kind:`enabled`,walletAuthMethodId:r.walletAuthMethodId}:{kind:`disabled`,walletAuthMethodId:r.walletAuthMethodId}}function v(e,t){return t.walletAuthorityId===e&&t.kind===`voiceid`&&t.status===`active`}async function y(e,t){let n=await s.getWalletAuthMethodV2(t);if(!n||n.walletId!==e)return!1;let r=await s.listWalletAuthMethodsV2ForWallet(e);for(let e of r)if(e.walletAuthorityId===n.walletAuthorityId&&e.walletAuthMethodId!==t&&e.status===`active`&&e.kind!==`voiceid`)return!0;return!1}async function b(e,t){let n=(await s.seamsWalletDB.getDB()).transaction(o.appState,`readwrite`),r=n.objectStore(o.appState);for(let n of await r.getAllKeys()){if(typeof n!=`string`||!n.startsWith(`voiceid-browser-enrollment-v2:`))continue;let i=await r.get(n);i?.value?.scope?.walletId===e&&i.value.scope.walletAuthMethodId===t&&await r.delete(n)}await n.done}function x(e){let o=t(e,`wallet custody worker reseal`);return r(o,[`nonceB64u`,`sealedCustodySecretB64u`,`aadHashB64u`,`ciphertextDigestB64u`],`wallet custody worker reseal`),{nonceB64u:a(o.nonceB64u),sealedCustodySecretB64u:i(o.sealedCustodySecretB64u),aadHashB64u:n(o.aadHashB64u,`aadHashB64u`),ciphertextDigestB64u:n(o.ciphertextDigestB64u,`ciphertextDigestB64u`)}}export{m as a,g as c,h as i,u as l,p as n,_ as o,y as r,b as s,x as t,f as u};
@@ -0,0 +1 @@
1
+ import{S as e,c as t,t as n}from"./digests-BIaE0DMd.js";import{c as r,l as i,o as a,u as o}from"./participants-BXdREC5k.js";import{i as s,r as c,t as l}from"./base64-BmKR3UqU.js";import{r as u}from"./walletDbName-Ca0rCq5r.js";import{d,h as f}from"./capabilityKinds-DVlGMspk.js";import{E as p,L as m,Mt as h,R as g,jt as _,v,y}from"./digestEncoding-CqNXPZY9.js";import{t as b}from"./authenticatorOptions-WCDKYRux.js";import{r as x,t as ee}from"./walletSessionAuthorizationStatus-DG7DPcgR.js";import{t as S}from"./authorizationAdmission-28jo_IVJ.js";import{n as te}from"./walletSessionFailure-CxsVtroW.js";const C={enabled:!0,targetDepth:5,lowWatermark:4,maxRefillInFlight:1,refillAttemptTimeoutMs:3e4},ne={authMethods:[],network:{chains:[{network:`near-testnet`,rpcUrl:`https://rpc.testnet.fastnear.com`,explorerUrl:`https://testnet.nearblocks.io`},{network:`tempo-testnet`,rpcUrl:`https://rpc.moderato.tempo.xyz`,explorerUrl:`https://explore.tempo.xyz`,chainId:42431},{network:`arc-testnet`,rpcUrl:`https://rpc.testnet.arc.io`,explorerUrl:`https://testnet.arcscan.app`,chainId:5042002},{network:`ethereum-sepolia`,rpcUrl:`https://ethereum-sepolia-rpc.publicnode.com`,explorerUrl:`https://sepolia.etherscan.io`,chainId:11155111}],relayer:{accountId:``,url:``,routes:{delegateAction:`/signed-delegate`}}},registration:{mode:`managed`,projectEnvironmentId:``,publishableKey:``,paymentMode:`disabled`,nearAccountProvisioning:{kind:`implicit_account`}},signing:{sessionDefaults:{ttlMs:u,remainingUses:3},emailOtp:{authPolicy:`session`},sessionPersistenceMode:`none`,sessionSeal:{mode:`none`},routerAb:{normalSigning:{mode:`disabled`}},routerAbEcdsaDerivation:{presignaturePool:C},thresholdEcdsa:{provisioningDefaults:{tempo:{enabled:!0,signingSession:{kind:`jwt`,ttlMs:u,remainingUses:3}},evm:{enabled:!0,signingSession:{kind:`jwt`,ttlMs:u,remainingUses:3}}}}},wallet:{mode:`iframe`,iframe:{origin:`https://wallet.example.localhost`,servicePath:`/wallet-service`,sdkBasePath:`/sdk`,walletHostVariant:`runtime`,rpIdOverride:`example.localhost`}},webauthn:{authenticatorOptions:{userVerification:b.Preferred,originPolicy:{single:void 0,all_subdomains:!0,multiple:void 0}}},ui:{appearance:{theme:{id:`default`,mode:`dark`,colors:{}},palette:`default`}}};async function re(t,n){let r=e(n,`ECDSA prepare response`);if(r.kind!==t.authorization.kind)throw Error(`ECDSA prepare authorization kind does not match the request`);let i=await v(t,r.signing);if(t.authorization.kind===`operation_step_up`){if(Object.keys(r).some(w))throw Error(`Invalid step-up prepare response`);return{kind:`operation_step_up`,signing:i}}if(Object.keys(r).some(ie))throw Error(`Invalid Wallet Session prepare response`);let a=e(r.session_status,`ECDSA prepare session status`),o=d(a.quotaId),s=f(t.authorization.wallet_session_id);if(!o.ok||!s.ok)throw Error(`Invalid prepare session identity`);let c=x(a,{walletSessionId:s.value,quotaId:o.value});if(!c||c.status!==`active`||c.authorization.walletId!==t.scope.wallet_id)throw Error(`ECDSA prepare did not return the admitted Wallet Session`);return{kind:`reusable_wallet_session`,signing:i,sessionStatus:c}}function w(e){return e!==`kind`&&e!==`signing`}function ie(e){return w(e)&&e!==`session_status`}var T=class extends Error{code;path;status;constructor(e){super(`Router A/B signing ${e.path} returned HTTP ${e.status}: ${e.message||e.code}`),this.name=`RouterAbSigningRequestError`,this.code=e.code,this.path=e.path,this.status=e.status}};function ae(e){let t=String(e.code||``).trim(),n=`Router A/B signing ${e.path} returned HTTP ${e.status}: ${e.message||t||`unknown admission failure`}`;if(e.authorizationDecision?.kind===`step_up_required`)return new S({kind:`exhausted`,source:`server_prepare`,detail:n},e.authorizationDecision);switch(t){case`wallet_budget_exhausted`:return new S({kind:`exhausted`,source:`server_prepare`,detail:n},e.authorizationDecision);case`wallet_budget_in_flight`:case`wallet_budget_reserved`:return new S({kind:`in_flight`,source:`server_prepare`,detail:n,retryAfterMs:150});default:return null}}function E(e,t){let n=Math.floor(Number(e));if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} must be a positive integer`);return n}function D(e,t,n){if(!Array.isArray(e))throw Error(`${t} must be a byte array`);let r=e.map(e=>Number(e));if(!r.every(e=>Number.isInteger(e)&&e>=0&&e<=255))throw Error(`${t} must contain bytes`);if(n!==void 0&&r.length!==n)throw Error(`${t} must contain ${n} bytes`);return r}function O(e,n){let r=t(e,n);if(c(r).length!==32)throw Error(`${n} must decode to 32 bytes`);return r}function k(e,n){let r=t(e,n);if(c(r).length===0)throw Error(`${n} must decode to non-empty bytes`);return r}function A(e,n){let r=t(e,n),i;try{i=l(r)}catch{i=c(r)}if(i.length!==32)throw Error(`${n} must decode to 32 bytes`);return s(i)}function j(e){return{bytes:[...D([...e],`digest bytes`,32)]}}function M(e,t){return s(Uint8Array.from(D(e.bytes,t)))}async function oe(e){return s(await Q(new TextEncoder().encode(n(e))))}function se(e){let n=t(e.message,`nep413.message`),r=t(e.recipient,`nep413.recipient`),i=c(A(e.nonce,`nep413.nonce`)),a=e.callbackUrl==null?void 0:t(e.callbackUrl,`callbackUrl`),o=[];return Z(o,2147484061),q(o,n),Y(o,i),q(o,r),a?(o.push(1),q(o,a)):o.push(0),s(Uint8Array.from(o))}async function ce(e){let n={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`near_transaction_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,transactions:e.transactions.map((e,n)=>({receiver_id:t(e.receiverId,`transactions[${n}].receiverId`),action_fingerprint:t(e.actionFingerprint,`transactions[${n}].actionFingerprint`)})),unsigned_transaction_borsh_b64u:k(e.unsignedTransactionBorshB64u,`unsignedTransactionBorshB64u`)},signing_payload:{kind:`near_unsigned_transaction_borsh_v1`,unsigned_transaction_borsh_b64u:k(e.unsignedTransactionBorshB64u,`unsignedTransactionBorshB64u`),expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:n,admissionMaterial:await P(n)}}async function le(e){let n=A(e.nonce,`nonce`),r=e.callbackUrl==null?void 0:t(e.callbackUrl,`callbackUrl`),i=se({message:e.message,recipient:e.recipient,nonce:n,...r?{callbackUrl:r}:{}}),a={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`nep413_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,recipient:t(e.recipient,`recipient`),message:t(e.message,`message`),nonce_b64u:n,...r?{callback_url:r}:{}},signing_payload:{kind:`nep413_message_v1`,canonical_message_b64u:i,expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:a,admissionMaterial:await P(a)}}async function ue(e){let n=k(e.delegate.canonicalDelegateBorshB64u,`canonicalDelegateBorshB64u`),r={scope:I(e.scope,`scope`),expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),display_digest:j(c(O(e.displayDigestB64u,`displayDigestB64u`))),intent:{kind:`near_delegate_action_v1`,operation_id:t(e.operationId,`operationId`),operation_fingerprint:t(e.operationFingerprint,`operationFingerprint`),near_account_id:t(e.nearAccountId,`nearAccountId`),near_network_id:e.nearNetworkId,delegate:{sender_id:t(e.delegate.senderId,`delegate.senderId`),receiver_id:t(e.delegate.receiverId,`delegate.receiverId`),public_key:t(e.delegate.publicKey,`delegate.publicKey`),nonce:t(e.delegate.nonce,`delegate.nonce`),max_block_height:t(e.delegate.maxBlockHeight,`delegate.maxBlockHeight`),action_fingerprint:t(e.delegate.actionFingerprint,`delegate.actionFingerprint`),canonical_delegate_borsh_b64u:n}},signing_payload:{kind:`near_delegate_action_v1`,canonical_delegate_borsh_b64u:n,expected_signing_digest_b64u:O(e.expectedSigningDigestB64u,`expectedSigningDigestB64u`)}};return{request:r,admissionMaterial:await P(r)}}function N(e){let n=I(e.scope,`scope`),r={scope:n,expires_at_ms:E(e.expiresAtMs,`expiresAtMs`),prepare_binding:{server_round1_handle:t(e.prepareResponse.server_round1_handle,`server_round1_handle`),round1_binding_digest:L(e.prepareResponse.round1_binding_digest,`round1_binding_digest`),intent_digest:L(e.admissionMaterial.intentDigest,`intent_digest`),signing_payload_digest:L(e.admissionMaterial.signingPayloadDigest,`signing_payload_digest`)},protocol:{kind:`ed25519_two_party_frost_finalize_v1`,client_commitments:z(e.clientCommitments,`clientCommitments`),server_commitments:z(e.prepareResponse.server_commitments,`serverCommitments`),client_verifying_share_b64u:t(e.clientVerifyingShareB64u,`clientVerifyingShareB64u`),server_verifying_share_b64u:t(e.prepareResponse.server_verifying_share_b64u,`serverVerifyingShareB64u`),client_signature_share_b64u:t(e.clientSignatureShareB64u,`clientSignatureShareB64u`)}};if(n.authorization.kind===`reusable_wallet_session`&&e.prepareResponse.scope.authorization.kind===`reusable_wallet_session`)return{...r,scope:{...n,authorization:n.authorization},authorized_operation:V(e.prepareResponse.authorized_operation,`authorized_operation`)};if(n.authorization.kind===`operation_step_up`&&e.prepareResponse.scope.authorization.kind===`operation_step_up`)return{...r,scope:{...n,authorization:n.authorization},authorized_operation:H(e.prepareResponse.authorized_operation,`authorized_operation`)};throw Error(`Router A/B normal-signing authorization changed after prepare`)}async function P(e){let t=j(await Q(Se(e.intent))),n=j(await Q(Ce(e.signing_payload))),r=j(await Q(we(e.signing_payload))),i=c(Te(e.signing_payload));if(!De(r.bytes,i))throw Error(`Router A/B normal-signing expected signing digest drift`);return{intentDigest:t,signingPayloadDigest:n,admittedSigningDigest:r}}function F(e,t,n){let r=Object.keys(e).sort(),i=[...t].sort();if(r.length!==i.length||r.some((e,t)=>e!==i[t]))throw Error(`${n} has invalid fields`)}function I(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);F(r,[`request_id`,`account_id`,`authorization`,`material_activation`,`signing_worker_id`],n);let i={request_id:t(r.request_id,`${n}.request_id`),account_id:t(r.account_id,`${n}.account_id`),authorization:h(r.authorization),material_activation:_(r.material_activation),signing_worker_id:t(r.signing_worker_id,`${n}.signing_worker_id`)};if(i.material_activation.signing_worker!==i.signing_worker_id)throw Error(`${n} material activation SigningWorker mismatch`);return i}function L(e,t){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`${t} must be an object`);return{bytes:D(n.bytes,`${t}.bytes`,32)}}function R(e,t){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`${t} must be an object`);let r=D(n.bytes,`${t}.bytes`);if(r.length===0)throw Error(`${t}.bytes must be non-empty`);return{bytes:r}}function z(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);return{hiding:t(r.hiding,`${n}.hiding`),binding:t(r.binding,`${n}.binding`)}}function B(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);return{server_id:t(r.server_id,`${n}.server_id`),key_epoch:t(r.key_epoch,`${n}.key_epoch`),recipient_encryption_key:t(r.recipient_encryption_key,`${n}.recipient_encryption_key`)}}function V(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);F(r,[`kind`,`authorized_operation_id`,`operation_id`,`capability_kind`,`operation_kind`,`lane_digest_b64u`,`intent_digest_b64u`,`display_digest_b64u`,`operation_fingerprint_digest`],n);let i=t(r.kind,`${n}.kind`);if(i!==`reusable_wallet_session_authorized_operation_v1`)throw Error(`${n}.kind is invalid`);let a=t(r.capability_kind,`${n}.capability_kind`);if(a!==`near_ed25519_mpc_signing`)throw Error(`${n}.capability_kind is invalid`);let o=t(r.operation_kind,`${n}.operation_kind`);if(o!==`near.sign_transaction`&&o!==`near.sign_delegate_action`&&o!==`near.sign_nep413_message`)throw Error(`${n}.operation_kind is invalid`);return{kind:i,authorized_operation_id:t(r.authorized_operation_id,`${n}.authorized_operation_id`),operation_id:t(r.operation_id,`${n}.operation_id`),capability_kind:a,operation_kind:o,lane_digest_b64u:O(r.lane_digest_b64u,`${n}.lane_digest_b64u`),intent_digest_b64u:O(r.intent_digest_b64u,`${n}.intent_digest_b64u`),display_digest_b64u:O(r.display_digest_b64u,`${n}.display_digest_b64u`),operation_fingerprint_digest:O(r.operation_fingerprint_digest,`${n}.operation_fingerprint_digest`)}}function H(e,n){let r=e&&typeof e==`object`?e:null;if(!r)throw Error(`${n} must be an object`);if(F(r,[`kind`,`authorization_session_id`,`evidence_set_digest`,`authorized_operation_id`,`operation_id`,`capability_kind`,`operation_kind`,`lane_digest_b64u`,`intent_digest_b64u`,`display_digest_b64u`,`operation_fingerprint_digest`],n),t(r.kind,`${n}.kind`)!==`verified_step_up_authorized_operation_v1`)throw Error(`${n}.kind is invalid`);if(t(r.capability_kind,`${n}.capability_kind`)!==`near_ed25519_mpc_signing`)throw Error(`${n}.capability_kind is invalid`);let i=t(r.operation_kind,`${n}.operation_kind`);if(i!==`near.sign_transaction`&&i!==`near.sign_delegate_action`&&i!==`near.sign_nep413_message`)throw Error(`${n}.operation_kind is invalid`);return{kind:`verified_step_up_authorized_operation_v1`,authorization_session_id:t(r.authorization_session_id,`${n}.authorization_session_id`),evidence_set_digest:O(r.evidence_set_digest,`${n}.evidence_set_digest`),authorized_operation_id:t(r.authorized_operation_id,`${n}.authorized_operation_id`),operation_id:t(r.operation_id,`${n}.operation_id`),capability_kind:`near_ed25519_mpc_signing`,operation_kind:i,lane_digest_b64u:O(r.lane_digest_b64u,`${n}.lane_digest_b64u`),intent_digest_b64u:O(r.intent_digest_b64u,`${n}.intent_digest_b64u`),display_digest_b64u:O(r.display_digest_b64u,`${n}.display_digest_b64u`),operation_fingerprint_digest:O(r.operation_fingerprint_digest,`${n}.operation_fingerprint_digest`)}}function U(e){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`Router A/B normal-signing prepare response must be an object`);let r=t(n.signature_scheme,`signature_scheme`);if(r!==`ed25519_v1`)throw Error(`Unsupported Router A/B normal-signing signature scheme: ${r}`);let i=I(n.scope,`scope`),a={scope:i,signing_payload_digest:L(n.signing_payload_digest,`signing_payload_digest`),round1_binding_digest:L(n.round1_binding_digest,`round1_binding_digest`),signing_worker:B(n.signing_worker,`signing_worker`),server_round1_handle:t(n.server_round1_handle,`server_round1_handle`),server_commitments:z(n.server_commitments,`server_commitments`),server_verifying_share_b64u:t(n.server_verifying_share_b64u,`server_verifying_share_b64u`),signature_scheme:`ed25519_v1`,prepared_at_ms:E(n.prepared_at_ms,`prepared_at_ms`),expires_at_ms:E(n.expires_at_ms,`expires_at_ms`)};switch(i.authorization.kind){case`reusable_wallet_session`:return F(n,[`scope`,`signing_payload_digest`,`round1_binding_digest`,`signing_worker`,`server_round1_handle`,`server_commitments`,`server_verifying_share_b64u`,`signature_scheme`,`prepared_at_ms`,`expires_at_ms`,`authorized_operation`],`Router A/B reusable Wallet Session prepare response`),{...a,scope:{...i,authorization:i.authorization},authorized_operation:V(n.authorized_operation,`authorized_operation`)};case`operation_step_up`:return F(n,[`scope`,`signing_payload_digest`,`round1_binding_digest`,`signing_worker`,`server_round1_handle`,`server_commitments`,`server_verifying_share_b64u`,`signature_scheme`,`prepared_at_ms`,`expires_at_ms`,`authorized_operation`],`Router A/B operation step-up prepare response`),{...a,scope:{...i,authorization:i.authorization},authorized_operation:H(n.authorized_operation,`authorized_operation`)}}}function de(e){let n=e&&typeof e==`object`?e:null;if(!n)throw Error(`Router A/B normal-signing response must be an object`);F(n,[`scope`,`signing_payload_digest`,`signing_worker`,`signature_scheme`,`signature`,`signed_at_ms`],`Router A/B normal-signing response`);let r=t(n.signature_scheme,`signature_scheme`);if(r!==`ed25519_v1`)throw Error(`Unsupported Router A/B normal-signing signature scheme: ${r}`);return{scope:I(n.scope,`scope`),signing_payload_digest:L(n.signing_payload_digest,`signing_payload_digest`),signing_worker:B(n.signing_worker,`signing_worker`),signature_scheme:`ed25519_v1`,signature:R(n.signature,`signature`),signed_at_ms:E(n.signed_at_ms,`signed_at_ms`)}}function fe(e){let t=e.credential.kind===`wallet_session_opaque`?{token:e.credential.walletSessionToken,home:e.credential.home}:null;return a({...t?{headers:r(t)}:{},body:e.body})}function pe(e){if(!e.trim())return null;try{let t=JSON.parse(e),n=t&&typeof t==`object`?t:null;if(!n)return null;let r=String(n.code||``).trim(),i=String(n.message||``).trim();if(!r)return null;let a=n.authorization_decision===void 0?void 0:me(n.authorization_decision);return{code:r,message:i,...a?{authorizationDecision:a}:{}}}catch{return null}}function me(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Router A/B owner-operation authorization decision is invalid`);let t=e,n=t.kind;if(n===`step_up_required`){W(t,[`kind`,`reason`,`step_up`],`owner-operation step-up decision`);let e=t.reason;if(e!==`wallet_session_missing`&&e!==`wallet_session_expired`&&e!==`wallet_session_exhausted`&&e!==`wallet_session_ended`&&e!==`wallet_session_superseded`)throw Error(`owner-operation step-up decision reason is invalid`);let r=t.step_up;return r&&typeof r==`object`&&!Array.isArray(r)&&`operation_digests`in r?{kind:n,reason:e,step_up:p(r)}:{kind:n,reason:e,step_up:he(r)}}if(n===`denied`){if(W(t,[`kind`,`denial`],`owner-operation denial decision`),!t.denial||typeof t.denial!=`object`||Array.isArray(t.denial))throw Error(`owner-operation denial is invalid`);let e=t.denial;W(e,[`code`,`message`],`owner-operation denial`);let r=e.code;if(r!==`invalid_identity`&&r!==`invalid_authority`&&r!==`invalid_operation`&&r!==`inactive_material`&&r!==`replayed_step_up`&&r!==`authorization_unavailable`)throw Error(`owner-operation denial code is invalid`);if(typeof e.message!=`string`||e.message.trim()!==e.message)throw Error(`owner-operation denial message is invalid`);return{kind:n,denial:{code:r,message:e.message}}}if(n===`authorized`){if(W(t,[`kind`,`operation`,`source`],`owner-operation decision`),!t.operation||typeof t.operation!=`object`||Array.isArray(t.operation))throw Error(`owner-operation authorized operation is invalid`);let e=t.operation;if(W(e,[`kind`,`operation_id`,`authorized_operation_id`,`operation_fingerprint_digest`],`owner-operation authorized operation`),e.kind!==`authorized_operation`||typeof e.operation_id!=`string`||typeof e.authorized_operation_id!=`string`||typeof e.operation_fingerprint_digest!=`string`)throw Error(`owner-operation authorized operation is invalid`);if(!t.source||typeof t.source!=`object`||Array.isArray(t.source))throw Error(`owner-operation authorized source is invalid`);let r=t.source;if(W(r,[`kind`,`wallet_session_id`,`quota_id`],`owner-operation authorized source`),r.kind!==`reusable_wallet_session`||typeof r.wallet_session_id!=`string`||typeof r.quota_id!=`string`)throw Error(`owner-operation authorized source is invalid`);return{kind:n,operation:{kind:`authorized_operation`,operation_id:e.operation_id,authorized_operation_id:e.authorized_operation_id,operation_fingerprint_digest:e.operation_fingerprint_digest},source:{kind:`reusable_wallet_session`,wallet_session_id:r.wallet_session_id,quota_id:r.quota_id}}}throw Error(`owner-operation authorization decision kind is invalid`)}function he(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Ed25519 operation step-up preparation is invalid`);let t=e;W(t,[`wallet_id`,`operation_kind`,`operation_id`,`request_id`,`account_id`,`material_activation`,`signing_worker_id`,`near_account_id`,`signer_slot`,`participant_ids`,`expires_at_ms`],`Ed25519 owner-operation step-up preparation`);let n=t.operation_kind;if(n!==`near.sign_transaction`&&n!==`near.sign_delegate_action`&&n!==`near.sign_nep413_message`)throw Error(`Ed25519 operation step-up kind is invalid`);if(typeof t.wallet_id!=`string`||typeof t.operation_id!=`string`||typeof t.request_id!=`string`||typeof t.account_id!=`string`||typeof t.signing_worker_id!=`string`||typeof t.near_account_id!=`string`||!Number.isSafeInteger(t.signer_slot)||!Number.isSafeInteger(t.expires_at_ms)||!Array.isArray(t.participant_ids)||t.participant_ids.length!==2||!t.participant_ids.every(e=>Number.isSafeInteger(e)&&Number(e)>0))throw Error(`Ed25519 operation step-up preparation fields are invalid`);let[r,i]=t.participant_ids,a=t.signer_slot,o=t.expires_at_ms;if(typeof r!=`number`||typeof i!=`number`||typeof a!=`number`||typeof o!=`number`)throw Error(`Ed25519 operation step-up participants are invalid`);return{wallet_id:t.wallet_id,operation_kind:n,operation_id:t.operation_id,request_id:t.request_id,account_id:t.account_id,material_activation:_(t.material_activation),signing_worker_id:t.signing_worker_id,near_account_id:t.near_account_id,signer_slot:a,participant_ids:[r,i],expires_at_ms:o}}function W(e,t,n){let r=new Set(t);for(let t of Object.keys(e))if(!r.has(t))throw Error(`${n} contains unsupported field ${t}`);for(let r of t)if(!Object.hasOwn(e,r))throw Error(`${n} is missing ${r}`)}function ge(e){let t=pe(e.bodyText);return t?ae({code:t.code,message:t.message,path:e.path,status:e.status,authorizationDecision:t.authorizationDecision})||te({code:t.code,message:`Router A/B signing ${e.path} returned HTTP ${e.status}: ${t.message}`})||new T({code:t.code,message:t.message,path:e.path,status:e.status}):Error(`Router A/B signing ${e.path} returned HTTP ${e.status}${e.bodyText?`: ${e.bodyText}`:``}`)}async function G(e){if(typeof fetch!=`function`)throw Error(`fetch is not available for Router A/B normal-signing request`);let n=o(t(e.relayServerUrl,`relayServerUrl`)),r=await i(new Request(`${n}${e.path}`,{...fe({credential:e.credential,body:e.body}),signal:e.signal}));try{e.onServerTiming?.(r.headers.get(`Server-Timing`))}catch{}if(!r.ok){let t=await r.text().catch(()=>``),n=ge({path:e.path,status:r.status,bodyText:t});throw e.credential.kind===`wallet_session_opaque`&&n instanceof S&&n.failure.kind===`exhausted`&&ee.forgetCredential(e.credential.walletSessionToken),n}return e.parse(await r.json())}function _e(t,n){let r=e(n,`Ed25519 prepare response`);if(r.kind!==t.scope.authorization.kind)throw Error(`Ed25519 prepare authorization kind does not match the request`);let i=U(r.signing);if(t.scope.authorization.kind===`operation_step_up`)return W(r,[`kind`,`signing`],`Ed25519 step-up prepare response`),{kind:`operation_step_up`,signing:i};W(r,[`kind`,`signing`,`session_status`],`Ed25519 session prepare response`);let a=e(r.session_status,`Ed25519 prepare session status`),o=f(t.scope.authorization.wallet_session_id),s=d(a.quotaId);if(!o.ok||!s.ok)throw Error(`Invalid Ed25519 prepare session identity`);let c=x(a,{walletSessionId:o.value,quotaId:s.value});if(!c||c.status!==`active`)throw Error(`Ed25519 prepare did not return an active Wallet Session`);return{kind:`reusable_wallet_session`,signing:i,sessionStatus:c}}async function ve(e){return G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ed25519/sign/prepare`,credential:e.credential,body:e.request,parse:_e.bind(null,e.request)})}async function ye(e){return await g(e.request),G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ecdsa-derivation/sign/prepare`,onServerTiming:e.onServerTiming,credential:e.credential,body:e.request,parse:re.bind(null,e.request)})}async function be(e){return G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ed25519/sign`,credential:e.credential,body:e.request,parse:de})}async function xe(e){return await m(e.request),G({relayServerUrl:e.relayServerUrl,path:`/router-ab/ecdsa-derivation/sign`,onServerTiming:e.onServerTiming,credential:e.credential,body:e.request,parse:t=>y(e.request,t)})}function Se(e){let t=[];switch(J(t,$(`router-ab-protocol/ed25519-normal-signing/intent/v2`)),e.kind){case`near_transaction_v1`:J(t,$(`near_transaction_v1`)),K(t,e),X(t,e.transactions.length);for(let n of e.transactions)J(t,$(n.receiver_id)),J(t,$(n.action_fingerprint));return J(t,$(e.unsigned_transaction_borsh_b64u)),Uint8Array.from(t);case`nep413_v1`:return J(t,$(`nep413_v1`)),K(t,e),J(t,$(e.recipient)),J(t,$(e.message)),J(t,$(e.nonce_b64u)),Ee(t,e.callback_url),Uint8Array.from(t);case`near_delegate_action_v1`:return J(t,$(`near_delegate_action_v1`)),K(t,e),J(t,$(e.delegate.sender_id)),J(t,$(e.delegate.receiver_id)),J(t,$(e.delegate.public_key)),J(t,$(e.delegate.nonce)),J(t,$(e.delegate.max_block_height)),J(t,$(e.delegate.action_fingerprint)),J(t,$(e.delegate.canonical_delegate_borsh_b64u)),Uint8Array.from(t)}}function Ce(e){let t=[];switch(J(t,$(`router-ab-protocol/ed25519-normal-signing/payload/v2`)),e.kind){case`near_unsigned_transaction_borsh_v1`:return J(t,$(`near_unsigned_transaction_borsh_v1`)),J(t,$(e.unsigned_transaction_borsh_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t);case`nep413_message_v1`:return J(t,$(`nep413_message_v1`)),J(t,$(e.canonical_message_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t);case`near_delegate_action_v1`:return J(t,$(`near_delegate_action_v1`)),J(t,$(e.canonical_delegate_borsh_b64u)),J(t,$(e.expected_signing_digest_b64u)),Uint8Array.from(t)}}function we(e){switch(e.kind){case`near_unsigned_transaction_borsh_v1`:return c(e.unsigned_transaction_borsh_b64u);case`nep413_message_v1`:return c(e.canonical_message_b64u);case`near_delegate_action_v1`:return c(e.canonical_delegate_borsh_b64u)}}function Te(e){switch(e.kind){case`near_unsigned_transaction_borsh_v1`:case`nep413_message_v1`:case`near_delegate_action_v1`:return e.expected_signing_digest_b64u}}function K(e,t){J(e,$(t.operation_id)),J(e,$(t.operation_fingerprint)),J(e,$(t.near_account_id)),J(e,$(t.near_network_id))}function Ee(e,t){t?(e.push(1),J(e,$(t))):e.push(0)}function q(e,t){let n=$(t);Z(e,n.length),Y(e,n)}function J(e,t){X(e,t.length),Y(e,t)}function Y(e,t){for(let n of t)e.push(n)}function X(e,t){e.push(t>>>24&255,t>>>16&255,t>>>8&255,t&255)}function Z(e,t){e.push(t&255,t>>>8&255,t>>>16&255,t>>>24&255)}async function Q(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`Web Crypto SHA-256 is unavailable for Router A/B normal signing`);let n=new Uint8Array(e.length);return n.set(e),new Uint8Array(await t.digest(`SHA-256`,n.buffer))}function $(e){return new TextEncoder().encode(e)}function De(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}export{N as a,ye as c,oe as d,C as f,le as i,ve as l,ue as n,xe as o,ne as p,ce as r,be as s,T as t,M as u};
@@ -0,0 +1 @@
1
+ import{N as e,k as t}from"./domainIds-t1lp25yU.js";import{S as n}from"./digests-BIaE0DMd.js";import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import{d as r,f as i,p as a,s as o,u as s}from"./sessionObservationRevision-JOvVF4Hf.js";import"./capabilityKinds-DVlGMspk.js";import{t as c}from"./walletIframeIdentity-CpgyEnKg.js";import{i as l}from"./errors-BJBDbwHk.js";import{C as u,S as d,T as f,_ as ee,a as p,b as m,c as te,d as ne,f as re,g as ie,h,i as g,l as _,m as ae,n as oe,o as v,p as se,r as ce,s as le,t as ue,u as de,v as fe,w as pe,x as me,y as he}from"./icons-BlMXolHv.js";import{t as y}from"./surface-measurement-reporter-DXsvq401.js";import{i as ge,n as _e,o as ve,r as b,s as x,t as ye}from"./csp-stylesheet-DUSqfXvZ.js";import{a as S}from"./signerDomain-BAsLT3XN.js";import"./registrationIntent-Do1tD1V7.js";import"./presignatures-BCeq56DG.js";import"./accountIds-CW2BP-d9.js";import"./device-linking-DiCNt3iA.js";import"./walletAuthority-BTGAuOi8.js";import"./digestEncoding-CqNXPZY9.js";import"./walletAuthMethodRecord-DLBB5fez.js";import{o as be,r as xe}from"./signerSlot-D2RZnb27.js";import{c as Se,i as Ce,s as we}from"./sdkSentEvents-DjOlKtdW.js";import{P as Te,k as Ee,t as De}from"./indexedDB-C4SDsyOG.js";import"./keccak-mS0Mejjx.js";import"./registrationSignerPlan-DK2b3N_p.js";import"./walletCapabilityBindings-D5YYB7nN.js";import"./emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js";import{t as Oe}from"./walletSessionAuthorizationStatus-DG7DPcgR.js";import{t as ke}from"./SeamsWordmark-DwvPx2UA.js";import{Yt as Ae,i as je,n as Me,qt as Ne,r as Pe,s as Fe}from"./registration-CNLUYN-p.js";import"./nearEd25519YaoMaterialActivation-BfXmy3Jr.js";import"./wallet-recovery-BZB2Vu3X.js";import{t as Ie}from"./challengeDelivery-Dj9HrjW9.js";import"./signNear-DMpJFkwF.js";import{a as Le}from"./confirm-ui-nU6ymgiv.js";import{c as C,i as w,o as Re,r as ze,s as T,t as Be}from"./appearance-token-vars-BJydfWT_.js";import{_ as Ve,a as He,b as Ue,d as We,f as Ge,g as Ke,h as qe,handleWalletHostRuntimeRequestWithHandlers as Je,i as Ye,l as E,m as Xe,n as Ze,o as Qe,p as $e,r as et,s as D,u as tt,v as O,y as nt}from"./runtimeContext-5JcewRo3.js";import{n as k,r as rt,t as it}from"./shared-CkHhXgFB.js";function at(e){return{PM_GET_LAST_WALLET_MOVE_REQUEST:lt.bind(null,e),PM_MOVE_WALLET:ct.bind(null,e),PM_GET_WALLET_PLACEMENT:ot.bind(null,e),PM_GET_WALLET_MOVE:st.bind(null,e)}}async function ot(e,r){let i=n(r.payload,`Wallet placement request`),a=t(i.walletId);if(!a.ok||Object.keys(i).length!==1)throw Error(`Wallet placement identity is invalid`);let o=await e.getWalletRuntime().placement.get(a.value);e.respondIfCancelled(r.requestId)||k(e,r.requestId,o)}async function st(e,r){let i=n(r.payload,`Wallet move request`),a=t(i.walletId),o=Ye(i.moveId);if(!a.ok||Object.keys(i).length!==2)throw Error(`Wallet move request is invalid`);let s=await e.getWalletRuntime().placement.getMove(a.value,o);e.respondIfCancelled(r.requestId)||k(e,r.requestId,s)}async function ct(e,t){let n=He(t.payload),r=await e.getWalletRuntime().placement.move(n);e.respondIfCancelled(t.requestId)||k(e,t.requestId,r)}async function lt(e,r){let i=n(r.payload,`Wallet move locator request`),a=t(i.walletId);if(!a.ok||Object.keys(i).length!==1)throw Error(`Wallet move locator identity is invalid`);let o=await e.getWalletRuntime().placement.getLastMoveRequest(a.value);e.respondIfCancelled(r.requestId)||k(e,r.requestId,o)}function ut(e){if(!e)throw Error(`PM_UNLOCK payload is required`);return e}function dt(e){switch(e.kind){case`default_options`:return{};case`custom_options`:return{...A(`signerSlot`,e.options.signerSlot),...A(`signingSession`,e.options.signingSession),...A(`unlockSelection`,e.options.unlockSelection),...ft(e.options.ecdsaKeyFactsInventory)}}}function ft(e){switch(e.kind){case`default`:return{};case`value`:return{ecdsaKeyFactsInventory:e.value}}}function A(e,t){switch(t.kind){case`default`:return{};case`value`:return{[e]:t.value}}}const pt=new Set(Ee);function j(e){let t=``;for(let n of e.toUpperCase()){let e=n===`O`?`0`:n===`I`||n===`L`?`1`:n;pt.has(e)&&(t+=e)}return t}const mt=/[\s\-\u2010-\u2015\u2212]/;function ht(e){let t=new Set;for(let n of e.toUpperCase())mt.test(n)||j(n)||t.add(n);return Array.from(t).slice(0,3)}function gt(e,t,n){let r=t&&t.start===t.end?t.start:null,i=t===null?null:Math.min(t.start,31),a=[];for(let o=0;o<32;o+=4){let s=o+4,c=[];for(let i=o;i<s;i+=1){let a=e[i]??``,o=[`seams-otp-slot`];a&&o.push(`is-filled`),i===r&&o.push(`is-caret`),r===32&&i===31&&o.push(`is-caret-after`),t&&i>=t.start&&i<t.end&&o.push(`is-selected`),n&&i>=n.start&&i<n.end&&o.push(`is-new`),c.push(b(`span`,{class:o.join(` `),"data-recovery-slot":i,children:a},i))}let l=[`seams-recovery-code-group`];i!==null&&i>=o&&i<s&&l.push(`is-active`),e.length>=s&&l.push(`is-complete`),a.push(b(`div`,{class:l.join(` `),children:c},o))}return a}function _t(e){let t=Ie(e);return t===null?null:b(`p`,{class:`seams-otp-description`,children:[b(w,{message:`Demo email code:`}),` `,b(`code`,{children:t})]})}const M=`seams-auth-menu-title`,N=`seams-auth-menu-account-list`;function P(e,t=6){return e.padEnd(t,` `).slice(0,t).split(``)}function vt(e,t,n,r){let i=null;for(let r of e.querySelectorAll(`[data-recovery-slot]`)){let e=Number(r.dataset.recoverySlot),a=r.getBoundingClientRect(),o=t<a.left?a.left-t:Math.max(0,t-a.right),s=n<a.top?a.top-n:Math.max(0,n-a.bottom),c=o*o+s*s;(i===null||c<i.distance)&&(i={index:e,distance:c,after:t>a.left+a.width/2})}return i===null?null:Math.min(i.after?i.index+1:i.index,r)}function F(e){return b(x,{children:b(`span`,{class:`seams-otp-slot ${e.trim()?`is-filled`:``}`,children:e})})}function yt(e){let t=e.kind===`recovery`?`:${e.stage}`:``;return`${e.kind}:${e.mode}:${e.status.kind}${t}`}function bt(e){return e.status.kind===`succeeded`?``:e.status.kind===`busy`?e.status.headline:e.status.kind===`recoverable`?e.status.message:e.stage===`passkey_ready`?`Recovery code accepted.`:e.stage===`sign_in_ready`?`Wallet recovered. Unlock it to continue.`:``}function xt(e){return e.kind===`recovery`?e.stage===`choose_method`?`Back to recovery code`:`Back to unlock wallet`:`Back`}function I(e){return e.kind===`recovery`&&e.stage===`finalizing`}function St(e){return e===`register`?{prompt:`Already have a wallet?`,action:`Unlock wallet`,nextMode:`login`}:{prompt:`Don't have a wallet?`,action:`Create a wallet`,nextMode:`register`}}function Ct(e){return e===`register`?`Create a wallet`:`Unlock wallet`}function wt(e){return e===`register`?`Create wallet with passkey`:`Unlock with passkey`}function Tt(e){return e.kind===`google_otp_login`||e.kind===`google_registration`?e.error||null:e.kind===`passkey`&&e.status.kind===`recoverable`&&e.status.reason===`error`?e.status.message:null}function L(e){return f(e.accountOptions,e.selectedAccount).selectedAccount}function Et(e){return e.walletId}function R(e){return e.authMethod===`email_otp`?e.emailAddress:null}function Dt(e){if(!e)return`Saved wallets`;let t=R(e);return t?`Saved wallets. Selected wallet ID ${e.walletId}, email ${t}`:`Saved wallets. Selected ${e.walletId}`}function Ot(e){let t=new Map;for(let n of e)t.has(n.walletId)||t.set(n.walletId,n);return t.size?[{id:`wallets`,label:`Saved wallets`,accounts:[...t.values()]}]:[]}const kt=()=>new Promise(e=>setTimeout(e,90));function At(e){return e.dataset.blink?null:(e.dataset.blink=`off`,kt().then(()=>(e.dataset.blink=`on`,kt())).then(()=>{delete e.dataset.blink}))}var jt=class extends ge{shownNotice=``;render(){let{notice:e,onRetry:t}=this.props;return e&&(this.shownNotice=e),b(`div`,{class:`seams-auth-footer`,"data-state":e?`notice`:`brand`,children:[b(`div`,{class:`seams-auth-footer-brand`,"aria-hidden":e?`true`:void 0,children:[b(`span`,{children:b(w,{message:`Secured by`})}),` `,b(ke,{})]}),b(`div`,{class:`seams-auth-footer-notice`,children:[oe(),b(`span`,{class:`seams-auth-footer-text`,"aria-hidden":`true`,children:b(w,{copy:this.shownNotice})}),b(`button`,{class:`seams-auth-footer-action`,type:`button`,disabled:!e,onClick:t,children:b(w,{message:`Try again`})})]}),e?b(`p`,{class:`sr-only`,role:`alert`,children:b(w,{copy:e})}):null]})}};function z(e,t){return b(x,{children:b(`div`,{class:`seams-link-device-dot-ring is-${e}`,"aria-hidden":`true`,children:[Array.from({length:12},(e,t)=>b(x,{children:b(`span`,{"data-dot-index":t})})),t?b(x,{children:b(`div`,{class:`seams-link-device-dot-ring-glyph`,children:t})}):null,b(`svg`,{class:`seams-link-device-dot-ring-check`,viewBox:`0 0 52 52`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,children:b(`path`,{d:`m18.5 27 5 5 10-11`})})]})})}function Mt(e){switch(e.kind){case`sending`:return{ring:`waiting`,heading:`Sending your code`,status:`Emailing a 6-digit code`,pending:!0,tone:`neutral`};case`resending`:return{ring:`waiting`,heading:`Sending a new code`,status:`Emailing a fresh 6-digit code`,pending:!0,tone:`neutral`};case`submitting`:return{ring:`waiting`,heading:`Checking your code`,status:`Verifying the code you entered`,pending:!0,tone:`neutral`};case`code_input`:return{ring:`idle`,heading:`Verify your email`,status:`Enter the 6-digit code we just sent.`,pending:!1,tone:`neutral`};case`incorrect`:return{ring:`idle`,heading:`Verify your email`,status:e.message,pending:!1,tone:`error`};case`expired`:return{ring:`idle`,heading:`That code expired`,status:e.message,pending:!1,tone:`error`};case`unavailable`:return{ring:`idle`,heading:`Email code unavailable`,status:e.message,pending:!1,tone:`error`};case`completed`:return{ring:`approved`,heading:`Email verified`,status:`Finishing linking this device`,pending:!0,tone:`neutral`}}}var Nt=class extends ge{static contextType=ze;state={accountMenu:`closed`,recoverySelection:null,recoveryRejection:null};recoveryDrawnCode=``;recoveryArrival=null;recoveryArrivalTimer=null;recoveryRejectionTimer=null;accountMenuExitTimer=null;accountMenuChoice=null;previouslyFocusedElement=null;shouldFocusInitialControl=!0;contentResizeObserver=null;contentHeightFrame=null;previousLinkDeviceStateKind=null;previousRecoveryStage=null;lastMethod=`passkey`;walletRowEntry=null;get viewModel(){return this.props.viewModel}get accountMenuOpen(){return this.state.accountMenu===`open`}openAccountMenu(){this.endAccountMenuExit(),this.setState({accountMenu:`open`})}closeAccountMenu(){this.accountMenuOpen&&(this.setState({accountMenu:`closing`}),this.accountMenuExitTimer=setTimeout(()=>{this.endAccountMenuExit(),this.setState({accountMenu:`closed`})},160))}endAccountMenuExit(){this.accountMenuExitTimer!==null&&clearTimeout(this.accountMenuExitTimer),this.accountMenuExitTimer=null,this.accountMenuChoice=null}componentDidMount(){let e=document.activeElement;e instanceof HTMLElement&&!this.props.element.contains(e)&&(this.previouslyFocusedElement=e),document.addEventListener(`pointerdown`,this.onDocumentPointerDown),document.addEventListener(`keydown`,this.onKeyDown,!0),this.afterRender()}componentDidUpdate(e){this.afterRender(e.viewModel)}componentWillUnmount(){this.contentResizeObserver?.disconnect(),this.contentResizeObserver=null,this.contentHeightFrame!==null&&cancelAnimationFrame(this.contentHeightFrame),this.contentHeightFrame=null,this.endAccountMenuExit(),this.recoveryArrivalTimer!==null&&clearTimeout(this.recoveryArrivalTimer),this.recoveryRejectionTimer!==null&&clearTimeout(this.recoveryRejectionTimer),window.removeEventListener(`resize`,this.queueContentHeightSync),document.removeEventListener(`pointerdown`,this.onDocumentPointerDown),document.removeEventListener(`keydown`,this.onKeyDown,!0),this.props.styles.deleteDynamicRule(this.props.element.id+`-height`),this.restoreFocus()}afterRender(e){this.shouldFocusInitialControl&&this.focusInitialControl(),this.focusRecoveryControl(e),this.focusLinkDevicePasskeyAction(),this.observeContentSize(),this.queueContentHeightSync()}focusRecoveryControl(e){let t=this.viewModel;if(e?.kind===`recovery`&&t.kind!==`recovery`){this.previousRecoveryStage=null,this.props.element.querySelector(`[data-recovery-action]`)?.focus();return}if(t.kind!==`recovery`)return;let n=this.previousRecoveryStage!==t.stage;if(this.previousRecoveryStage=t.stage,t.stage===`enter_code`){let t=this.props.element.querySelector(`[aria-invalid="true"]`);if(t){t.focus();return}(e?.kind!==`recovery`||e.stage!==`enter_code`)&&this.props.element.querySelector(`[data-recovery-code]`)?.focus();return}if(t.stage===`choose_method`){n&&this.props.element.querySelector(`[data-recovery-target]`)?.focus();return}let r=t.status.kind===`recoverable`&&e?.kind===`recovery`&&e.status.kind!==`recoverable`;(n||r)&&(t.stage===`passkey_ready`||t.stage===`finalizing`||t.stage===`sign_in_ready`)&&this.props.element.querySelector(`[data-auth-menu-primary]`)?.focus()}focusLinkDevicePasskeyAction(){let e=this.viewModel.kind===`link_device`?this.viewModel.linkDevice.kind:null,t=e===`passkey_required`&&this.previousLinkDeviceStateKind!==e;this.previousLinkDeviceStateKind=e,t&&this.props.element.querySelector(`[data-link-device-passkey-action]`)?.focus()}observeContentSize(){if(this.contentResizeObserver)return;let e=this.props.element.querySelector(`.seams-content-sizer`);e&&(this.contentResizeObserver=new ResizeObserver(this.queueContentHeightSync),this.contentResizeObserver.observe(e),window.addEventListener(`resize`,this.queueContentHeightSync))}queueContentHeightSync=()=>{this.contentHeightFrame!==null&&cancelAnimationFrame(this.contentHeightFrame),this.contentHeightFrame=requestAnimationFrame(this.syncContentHeight)};syncContentHeight=()=>{this.contentHeightFrame=null;let e=this.props.element.querySelector(`.seams-content-switcher`),t=this.props.element.querySelector(`.seams-content-sizer`);!e||!t||this.props.element.hidden||this.props.styles.setDynamicDeclarations(this.props.element.id+`-height`,`#`+this.props.element.id+` .seams-content-switcher`,{height:t.scrollHeight+`px`})};focusInitialControl(){if(!this.props.element.isConnected||!this.shouldFocusInitialControl)return;this.shouldFocusInitialControl=!1;let e=document.activeElement;e instanceof HTMLElement&&this.props.element.contains(e)||this.props.element.querySelector(`[data-auth-menu-input], [data-auth-menu-primary]`)?.focus()}restoreFocus(){let e=this.previouslyFocusedElement;this.previouslyFocusedElement=null,e?.isConnected&&e.focus()}onKeydown=e=>{if(e.key===`Escape`){if(e.preventDefault(),this.viewModel&&I(this.viewModel))return;if(this.accountMenuOpen){this.closeAccountMenu();return}this.emitIntent({kind:`close`,reason:`escape`});return}if(e.key!==`Tab`)return;let t=this.focusableElements();if(t.length===0)return;let n=document.activeElement,r=t.indexOf(n instanceof HTMLElement?n:t[0]);e.shiftKey&&r<=0?(e.preventDefault(),t[t.length-1]?.focus()):!e.shiftKey&&r===t.length-1&&(e.preventDefault(),t[0]?.focus())};focusableElements(){return Array.from(this.props.element.querySelectorAll(`button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])`))}onBackClick=()=>{this.emitIntent({kind:`back`})};onKeyDown=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=this.viewModel;!t||t.kind!==`recovery`&&!d(t.status)||(e.preventDefault(),e.stopPropagation(),!I(t)&&this.emitIntent({kind:`back`}))};onIntentSwitchClick=()=>{let e=this.viewModel;e&&this.emitIntent({kind:`mode_selected`,mode:St(e.mode).nextMode})};onRegistrationReroll=()=>{this.emitIntent({kind:`registration_reroll`})};onPasskeyNameInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`passkey_name_changed`,passkeyName:e.currentTarget.value})};onLoginAccountSelect=e=>{let t=e.currentTarget;if(!(t instanceof HTMLButtonElement))return;let n=t.dataset.walletId,r=t.dataset.authMethod,i=this.viewModel;if(!n||i.kind!==`passkey`||i.mode!==`login`)return;let a=i.accountOptions.find(e=>e.walletId===n&&e.authMethod===r),o=L(i);if(!a||!o||this.accountMenuChoice)return;let s=At(t);if(!s)return;let c={chosen:a,previous:o};this.accountMenuChoice=c,this.emitIntent({kind:`login_account_selected`,walletId:a.walletId,authMethod:a.authMethod}),s.then(()=>{this.accountMenuChoice===c&&this.closeAccountMenu()})};onAccountMenuToggle=()=>{this.accountMenuOpen?this.closeAccountMenu():this.openAccountMenu()};onDocumentPointerDown=e=>{!this.accountMenuOpen||!(e.target instanceof Node)||this.props.element.querySelector(`.seams-account-menu`)?.contains(e.target)||this.closeAccountMenu()};onPrimaryClick=()=>{let e=this.viewModel;if(!e||!m(e)||e.kind===`link_device`)return;if(e.kind===`google_otp_login`){this.emitIntent({kind:`google_otp_submit`});return}if(e.kind===`google_registration`){this.emitIntent({kind:`google_registration_complete`});return}let t=e.mode===`register`?{kind:`submit`,mode:`register`,passkeyName:e.passkeyName}:{kind:`submit`,mode:`login`};this.lastMethod=`passkey`,this.emitIntent(t)};onGoogleOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`google_otp_code_changed`,code:e.currentTarget.value})};onGoogleOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`google_otp_submit`}))};onGoogleOtpResend=()=>{this.emitIntent({kind:`google_otp_resend`})};onGoogleRegistrationReroll=()=>{this.emitIntent({kind:`google_registration_reroll`})};onVoiceClick=()=>{this.lastMethod=`voiceid`,this.emitIntent({kind:`voiceid_selected`})};onGoogleClick=()=>{this.lastMethod=`google`,this.emitIntent({kind:`external_auth`,provider:`google`})};onNoticeRetry=()=>{if(this.lastMethod===`voiceid`){this.onVoiceClick();return}this.lastMethod===`google`&&me(this.viewModel)?this.onGoogleClick():this.onPrimaryClick()};onLinkDeviceOpen=()=>{this.emitIntent({kind:`link_device_open`})};onRecoveryOpen=()=>{this.emitIntent({kind:`recovery_open`})};onRecoveryCodeInput=e=>{if(!(e.currentTarget instanceof HTMLInputElement)||this.viewModel.kind!==`recovery`)return;let t=e.currentTarget,n=t.value,r=ht(n);r.length>0&&this.showRecoveryRejection(r);let i=j(n.slice(0,t.selectionStart??n.length)).length,a=j(n).slice(0,32);t.value!==a&&(t.value=a,t.setSelectionRange(Math.min(i,a.length),Math.min(i,a.length))),this.syncRecoverySelection(t),this.emitIntent({kind:`recovery_code_changed`,recoveryCode:a})};onRecoverySelectionMove=e=>{e.currentTarget instanceof HTMLInputElement&&this.syncRecoverySelection(e.currentTarget)};onRecoveryCodeClick=e=>{let t=e.currentTarget;if(t instanceof HTMLInputElement){if(t.selectionStart===t.selectionEnd){let n=vt(this.props.element,e.clientX,e.clientY,t.value.length);n!==null&&t.setSelectionRange(n,n)}this.syncRecoverySelection(t)}};showRecoveryRejection(e){let t=this.state.recoveryRejection?.parity===0?1:0;this.setState({recoveryRejection:{characters:e,parity:t}}),this.recoveryRejectionTimer!==null&&clearTimeout(this.recoveryRejectionTimer),this.recoveryRejectionTimer=setTimeout(this.clearRecoveryRejection,2e3)}clearRecoveryRejection=()=>{this.recoveryRejectionTimer=null,this.setState({recoveryRejection:null})};recoveryCodeArrival(e){let t=this.recoveryDrawnCode;if(e===t)return this.recoveryArrival;this.recoveryDrawnCode=e;let n=0;for(;n<t.length&&t[n]===e[n];)n+=1;let r=n+e.length-t.length;return this.recoveryArrival=e.length>t.length?{start:n,end:r}:null,this.recoveryArrivalTimer!==null&&clearTimeout(this.recoveryArrivalTimer),this.recoveryArrivalTimer=setTimeout(this.endRecoveryArrival,600),this.recoveryArrival}endRecoveryArrival=()=>{this.recoveryArrivalTimer=null,this.recoveryArrival=null};onRecoveryCodeBlur=()=>{this.setState({recoverySelection:null})};syncRecoverySelection(e){let t=e.value.length,n=Math.min(e.selectionStart??t,t),r=Math.min(Math.max(e.selectionEnd??n,n),t),i=this.state.recoverySelection;i?.start===n&&i.end===r||this.setState({recoverySelection:{start:n,end:r}})}onRecoverySubmit=e=>{e.preventDefault(),this.emitIntent({kind:`recovery_code_submit`})};onRecoveryPasskeySelected=()=>{this.emitIntent({kind:`recovery_passkey_selected`})};onRecoveryGoogleSelected=()=>{this.emitIntent({kind:`recovery_google_selected`})};onRecoveryGoogleOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`recovery_google_otp_code_changed`,code:e.currentTarget.value})};onRecoveryGoogleOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`recovery_google_otp_submit`}))};onRecoveryGoogleOtpSubmit=()=>{this.emitIntent({kind:`recovery_google_otp_submit`})};onRecoveryCreatePasskey=()=>{this.emitIntent({kind:`recovery_create_passkey`})};onRecoverySignIn=()=>{this.emitIntent({kind:`recovery_sign_in`})};onLinkDeviceCreatePasskey=()=>{this.emitIntent({kind:`link_device_create_passkey`})};onLinkDeviceFactorChange=e=>{if(!(e.currentTarget instanceof HTMLInputElement))return;let t=e.currentTarget.value===`email_otp`?{kind:`email_otp`}:{kind:`passkey_prf`};this.emitIntent({kind:`link_device_factor_selected`,targetFactor:t})};onLinkDeviceTargetEmailInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`link_device_target_email_changed`,emailAddress:e.currentTarget.value})};onLinkDeviceStart=()=>{this.emitIntent({kind:`link_device_start`})};onLinkDeviceEmailOtpCodeInput=e=>{e.currentTarget instanceof HTMLInputElement&&this.emitIntent({kind:`link_device_email_otp_code_changed`,code:e.currentTarget.value})};onLinkDeviceEmailOtpKeydown=e=>{e.key===`Enter`&&(e.preventDefault(),this.emitIntent({kind:`link_device_email_otp_submit`}))};onLinkDeviceEmailOtpResend=()=>{this.emitIntent({kind:`link_device_email_otp_resend`})};onLinkDeviceEmailOtpSubmit=()=>{this.emitIntent({kind:`link_device_email_otp_submit`})};emitIntent(e){this.props.onIntent(e)}render(){let e=this.viewModel;if(!e)return b(x,{});let t=d(e.status),n=e.status.kind===`succeeded`?e.status.phase:null,r=e.kind===`link_device`,i=e.kind===`google_otp_login`,a=e.kind===`google_registration`,o=e.kind===`recovery`;return b(x,{children:b(`div`,{class:`seams-signup-menu-root auth-menu-root`,"data-mode":e.mode,"data-waiting":t||n?`true`:`false`,"data-success":n??void 0,"data-scan-device":r?`true`:`false`,"data-otp-prompt":i?`true`:`false`,"data-registration-prompt":a?`true`:`false`,"data-recovery":o?`true`:`false`,"aria-labelledby":M,"aria-busy":t?`true`:`false`,tabIndex:-1,onKeyDown:this.onKeydown,children:[b(`div`,{class:`seams-menu-origin`,children:[b(Le,{}),` `,b(`span`,{children:e.hostname})]}),b(`div`,{class:`seams-content-switcher`,children:[b(`button`,{class:`seams-back-button ${!n&&(t||r||i||a||o)?`is-visible`:``}`,type:`button`,"aria-label":T(this.context,xt(e)),"data-auth-menu-close":!0,disabled:n!==null||I(e),onClick:this.onBackClick,children:ce()}),o?b(`div`,{class:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:b(w,{copy:bt(e)})}):null,b(`div`,{class:`seams-content-area`,children:b(`div`,{class:`seams-content-sizer`,children:t||n?this.renderWaiting(e):b(x,{children:b(`div`,{class:`seams-signin-menu`,children:b(x,{children:this.renderActiveView(e)},yt(e))})})})})]}),b(jt,{notice:Tt(e),onRetry:this.onNoticeRetry})]})})}renderActiveView(e){return e.kind===`recovery`?this.renderRecovery(e):e.kind===`link_device`?this.renderLinkDevice(e):e.kind===`google_otp_login`?this.renderGoogleOtp(e):e.kind===`google_registration`?this.renderGoogleRegistration(e):b(x,{children:[this.renderMenuHeader(e),` `,this.renderPasskeyInput(e),this.renderAuthMethods(e),` `,this.renderOtherOptions(),this.renderIntentSwitch(e)]})}renderMenuHeader(e){let t=Ct(e.mode);return b(`div`,{class:`seams-menu-header`,children:[t===e.heading?null:b(`div`,{class:`seams-menu-eyebrow`,children:b(w,{copy:t})}),b(`div`,{class:`seams-title`,id:M,children:b(w,{copy:e.heading})}),e.subtitle?b(`div`,{class:`seams-subhead`,children:b(w,{copy:e.subtitle})}):null]})}renderHeader(e){return b(x,{children:b(`div`,{class:`seams-header`,children:b(`div`,{children:[b(`div`,{class:`seams-title`,id:M,children:b(w,{copy:e.heading})}),b(`div`,{class:`seams-subhead`,children:b(w,{copy:e.subtitle})})]})})})}walletRowEntering(e,t){let n=yt(e),r=this.walletRowEntry;return r?.viewKey===n?t&&!r.shown&&(this.walletRowEntry={viewKey:n,shown:t,entering:!0}):this.walletRowEntry={viewKey:n,shown:t,entering:!1},this.walletRowEntry?.entering??!1}onWalletRowEntered=e=>{let t=this.walletRowEntry;e.target!==e.currentTarget||!t?.entering||(this.walletRowEntry={...t,entering:!1},this.forceUpdate())};renderPasskeyInput(e){if(e.mode===`login`){let t=L(e),n=this.walletRowEntering(e,t!==null);if(!t)return b(x,{});let r=Ot(e.accountOptions),i=this.state.accountMenu,a=this.accountMenuChoice,o=a?.previous??t;return b(x,{children:b(`div`,{class:`seams-passkey-row ${n?`is-entering`:``}`,onAnimationEnd:this.onWalletRowEntered,children:b(`div`,{class:`seams-input-pill`,children:[b(`div`,{class:`seams-input-wrap`,children:b(`div`,{class:`seams-account-menu-account seams-selected-account`,"aria-hidden":`true`,children:[b(`span`,{class:`seams-account-menu-account-primary`,children:Et(t)}),R(t)?b(x,{children:b(`span`,{class:`seams-account-menu-account-secondary`,children:R(t)})}):null]})}),b(`div`,{class:`seams-account-menu ${i===`closed`?``:`is-open`}`,children:[b(`button`,{class:`seams-account-menu-trigger`,type:`button`,"data-auth-menu-input":!0,"aria-label":T(this.context,Dt(t)),"aria-haspopup":`listbox`,"aria-expanded":this.accountMenuOpen?`true`:`false`,"aria-controls":N,onClick:this.onAccountMenuToggle,children:ue()}),i===`closed`?null:b(x,{children:b(`div`,{id:N,class:`seams-account-menu-popover ${i===`closing`?`is-closing`:``}`,role:`listbox`,children:r.map(e=>{let t=`${N}-${e.id}`;return b(x,{children:b(`div`,{class:`seams-account-menu-group`,role:`group`,"aria-labelledby":t,children:[b(`div`,{id:t,class:`seams-account-menu-group-label`,children:b(w,{copy:e.label})}),e.accounts.map(e=>{let t=e.walletId===o.walletId,n=!t&&e.walletId===a?.chosen.walletId,r=R(e);return b(x,{children:b(`button`,{class:`seams-account-menu-option ${t?`is-selected`:``} ${n?`is-chosen`:``}`,type:`button`,role:`option`,"aria-selected":t?`true`:`false`,title:T(this.context,r?`${e.walletId} ${r}`:e.walletId),"data-wallet-id":e.walletId,"data-auth-method":e.authMethod,onClick:this.onLoginAccountSelect,children:[b(`span`,{class:`seams-account-menu-check`,"aria-hidden":`true`}),b(`span`,{class:`seams-account-menu-account`,children:[b(`span`,{class:`seams-account-menu-account-primary`,children:e.walletId}),r?b(x,{children:b(`span`,{class:`seams-account-menu-account-secondary`,children:b(w,{copy:r})})}):null]})]})})})]})})})})})]})]})})})}return e.showRegistrationInput?b(x,{children:b(`div`,{class:`seams-passkey-row`,children:b(`div`,{class:`seams-input-pill`,children:[b(`div`,{class:`seams-input-wrap`,children:b(`input`,{id:`seams-auth-menu-passkey-name`,class:`seams-input`,"data-auth-menu-input":!0,type:`text`,autocomplete:`nickname`,placeholder:T(this.context,e.passkeyNameLabel),value:e.passkeyName,readonly:e.passkeyNameReadOnly,disabled:d(e.status),onInput:this.onPasskeyNameInput})}),e.passkeyNameReadOnly?b(x,{children:b(`button`,{class:`seams-input-action-trigger auth-menu-registration-reroll`,type:`button`,title:C(this.context,`Generate another name`),"aria-label":C(this.context,`Generate another name`),onClick:this.onRegistrationReroll,disabled:!u(e),children:se()})}):null]})})}):b(x,{})}renderAuthMethods(e){let t=e.enabledExternalProviders?.includes(`google`)??!1;return b(x,{children:b(`div`,{class:`seams-auth-methods`,children:[b(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:[p(),b(`span`,{children:b(w,{copy:wt(e.mode)})})]}),t?b(`button`,{class:`seams-auth-method-btn`,type:`button`,"data-auth-menu-provider":`google`,disabled:!me(e),onClick:this.onGoogleClick,children:[v(),b(`span`,{children:b(w,{copy:e.mode===`login`?`Unlock with email code`:`Continue with Google`})})]}):null,e.mode===`login`&&e.accountOptions.some(Pt.bind(null,L(e)?.walletId))?b(`button`,{type:`button`,class:`seams-auth-method-btn`,"data-auth-menu-voiceid":!0,onClick:this.onVoiceClick,children:[Ft(),b(`span`,{children:`Unlock with VoiceID`})]}):null]})})}renderOtherOptions(){return b(x,{children:[b(`div`,{class:`seams-menu-options-label`,children:b(w,{message:`Other options`})}),b(`div`,{class:`seams-menu-options`,children:[b(`button`,{class:`seams-menu-option`,type:`button`,onClick:this.onLinkDeviceOpen,children:[b(`span`,{class:`seams-menu-option-icon`,children:le()}),b(`span`,{class:`seams-menu-option-text`,children:[b(w,{message:`Link this device`}),b(`small`,{children:b(w,{message:`Scan a code with your other device`})})]}),g()]}),b(`button`,{class:`seams-menu-option`,type:`button`,"data-recovery-action":!0,onClick:this.onRecoveryOpen,children:[b(`span`,{class:`seams-menu-option-icon`,children:re()}),b(`span`,{class:`seams-menu-option-text`,children:[b(w,{message:`Recover wallet`}),b(`small`,{children:b(w,{message:`Use your recovery code`})})]}),g()]})]})]})}renderRecovery(e){if(e.stage===`enter_code`){let t=j(e.recoveryCode).slice(0,32),n=this.recoveryCodeArrival(t),r=this.state.recoveryRejection,i=e.status.kind===`recoverable`?e.status.message:``,a=e.recoveryCodeError??i,o=a.length>0;return b(x,{children:[this.renderHeader(e),b(`p`,{id:`seams-recovery-code-feedback`,class:`seams-recovery-status ${o?`seams-recovery-error`:``}`,"aria-hidden":o?`false`:`true`,role:o?`alert`:`status`,children:b(w,{copy:a})}),b(`form`,{class:`seams-recovery-form`,novalidate:!0,onSubmit:this.onRecoverySubmit,children:[b(`div`,{class:`seams-recovery-field`,children:[b(`div`,{class:`seams-recovery-field-header`,children:[b(`label`,{class:`seams-field-label`,for:`seams-recovery-code`,children:b(w,{message:`Recovery code`})}),b(`span`,{id:`seams-recovery-code-count`,class:`seams-recovery-code-count`,children:[t.length,`/`,32]})]}),b(`div`,{class:`seams-otp-code-field seams-recovery-code-field ${r?`is-rejecting-${r.parity}`:``}`,children:[b(`input`,{id:`seams-recovery-code`,class:`seams-otp-input`,"data-recovery-code":!0,name:`recoveryCode`,type:`text`,inputmode:`text`,autocomplete:`off`,autocapitalize:`characters`,autocorrect:`off`,spellcheck:!1,"aria-invalid":e.recoveryCodeError?`true`:`false`,"aria-describedby":e.recoveryCodeError?`seams-recovery-code-feedback seams-recovery-code-count seams-recovery-code-hint`:`seams-recovery-code-count seams-recovery-code-hint`,value:t,onInput:this.onRecoveryCodeInput,onFocus:this.onRecoverySelectionMove,onKeyUp:this.onRecoverySelectionMove,onSelect:this.onRecoverySelectionMove,onClick:this.onRecoveryCodeClick,onBlur:this.onRecoveryCodeBlur}),b(`div`,{class:`seams-otp-slots seams-recovery-code-slots ${n&&n.end-n.start>1?`is-sweeping`:``}`,"aria-hidden":`true`,children:gt(t,this.state.recoverySelection,n)})]}),b(`p`,{id:`seams-recovery-code-hint`,class:`seams-recovery-code-hint ${r?`is-error`:``}`,"aria-live":`polite`,children:r?`Recovery codes don’t use ${r.characters.join(`, `)}.`:b(w,{message:`You can paste the whole code.`})})]}),b(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`submit`,"data-auth-menu-primary":!0,"data-recovery-continue":!0,children:b(w,{message:`Continue`})})]})]})}if(e.stage===`choose_method`||e.stage===`preparing`){let t=e.stage===`preparing`?e.target.kind:null,n=e.status.kind===`recoverable`?e.status.message:e.status.kind===`busy`?e.status.headline:``,r=e.enabledExternalProviders?.includes(`google`)??!1;return b(x,{children:[this.renderHeader(e),b(`p`,{class:`seams-recovery-status ${e.status.kind===`recoverable`?`seams-recovery-error`:``}`,"aria-hidden":`true`,children:b(w,{copy:n})}),b(`div`,{class:`seams-auth-methods seams-recovery-methods`,children:[b(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,"data-recovery-target":`passkey`,disabled:t!==null,onClick:this.onRecoveryPasskeySelected,children:[t===`passkey`?b(`span`,{class:`seams-spinner`,"aria-hidden":`true`}):p(),b(`span`,{children:b(w,{message:`Create a passkey`})})]}),r?b(`button`,{class:`seams-auth-method-btn`,type:`button`,"data-recovery-target":`google_email_otp`,disabled:t!==null,onClick:this.onRecoveryGoogleSelected,children:[t===`google_email_otp`?b(`span`,{class:`seams-spinner`,"aria-hidden":`true`}):v(),b(`span`,{children:b(w,{message:`Continue with Google`})})]}):null]}),b(`p`,{class:`seams-recovery-method-note`,children:b(w,{message:`This adds a new sign-in method to your wallet.`})})]})}if(e.stage===`email_code_required`){let t=P(e.otpCode),n=/^\d{6}$/.test(e.otpCode)&&e.status.kind!==`busy`,r=e.delivery.status===`reused`?`Use the code already sent to ${e.emailHint}.`:`A 6-digit code was sent to ${e.emailHint}.`;return b(x,{children:[this.renderHeader(e),b(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[b(`p`,{class:`seams-otp-description`,children:b(w,{copy:r})}),_t(e.delivery),b(`label`,{class:`seams-field-label`,for:`seams-recovery-google-otp`,children:b(w,{message:`Email code`})}),b(`div`,{class:`seams-otp-code-field`,"data-disabled":e.status.kind===`busy`?`true`:`false`,children:[b(`input`,{class:`seams-otp-input`,id:`seams-recovery-google-otp`,"data-auth-menu-input":!0,"data-email-otp-challenge-id":e.challengeId,"data-email-otp-wallet-id":e.walletId,name:`recoveryEmailOtpCode`,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,spellcheck:!1,pattern:`[0-9]*`,maxLength:6,"aria-invalid":e.status.kind===`recoverable`?`true`:`false`,"aria-describedby":e.status.kind===`recoverable`?`seams-recovery-google-otp-error`:``,value:e.otpCode,disabled:e.status.kind===`busy`,onInput:this.onRecoveryGoogleOtpCodeInput,onKeyDown:this.onRecoveryGoogleOtpKeydown}),b(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:t.map(F)})]}),e.status.kind===`recoverable`?b(x,{children:b(`p`,{id:`seams-recovery-google-otp-error`,class:`seams-recovery-status seams-recovery-error`,role:`alert`,children:b(w,{copy:e.status.message})})}):null,b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!n,onClick:this.onRecoveryGoogleOtpSubmit,children:b(w,{message:`Verify email code`})})]})]})}let t=e.stage===`finalizing`&&e.status.kind===`recoverable`,n=e.stage===`sign_in_ready`,r=e.target.kind===`google_email_otp`,i=e.status.kind===`recoverable`?e.status.message:n?null:e.stage===`google_ready`?`Continue with Google, then verify the code sent to your email.`:r?`Finishing recovery with Google…`:`Create a new passkey to finish recovering this wallet.`,a=n?this.onRecoverySignIn:r?t?this.onRecoveryGoogleOtpSubmit:this.onGoogleClick:this.onRecoveryCreatePasskey;return b(x,{children:[this.renderHeader(e),b(`div`,{class:`seams-recovery-confirmation`,children:[i===null?null:b(x,{children:b(`p`,{class:`seams-recovery-status`,children:b(w,{copy:i})})}),b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,onClick:a,children:[r&&!t?v():null,n?r?b(w,{message:`Unlock with Google`}):b(w,{message:`Unlock with new passkey`}):t?b(w,{message:`Retry finalization`}):r?b(w,{message:`Continue with Google`}):b(w,{message:`Create new passkey`})]})]})]})}renderIntentSwitch(e){let t=St(e.mode);return b(x,{children:b(`div`,{class:`seams-auth-intent-switch`,children:[b(`span`,{children:b(w,{copy:t.prompt})}),b(`button`,{type:`button`,"data-auth-menu-mode":t.nextMode,onClick:this.onIntentSwitchClick,children:b(w,{copy:t.action})})]})})}renderWaiting(e){let t=e.status;if(t.kind===`succeeded`)return this.renderSuccess(t);if(t.kind!==`busy`)return b(x,{});let n=t.headline,r=t.illustration?ae[t.illustration]:null;return b(x,{children:b(`div`,{class:`seams-waiting`,role:`status`,"aria-live":`polite`,children:[r?b(`span`,{class:`seams-passkey-prompt`,role:`img`,"aria-label":T(this.context,r.label),children:de()}):null,b(`div`,{class:`seams-waiting-message`,children:[b(`span`,{class:`seams-waiting-text`,children:b(w,{copy:n})}),r?b(`span`,{class:`seams-passkey-instruction`,children:b(w,{copy:r.instruction})}):null,e.showProgress&&t.detail&&t.detail!==n?b(x,{children:b(`span`,{class:`seams-waiting-sdk-events`,children:b(w,{copy:t.detail})})}):null]}),r?null:b(`div`,{"aria-label":C(this.context,`Loading`),class:`seams-spinner`})]})})}renderSuccess(e){return b(`div`,{class:`seams-waiting seams-success`,role:`status`,"aria-live":`polite`,children:[b(`span`,{class:`seams-passkey-prompt seams-success-prompt`,children:ne()},`success-prompt`),b(`div`,{class:`seams-waiting-message seams-success-message`,children:[b(`span`,{class:`seams-waiting-text`,children:b(w,{copy:e.headline})}),b(`span`,{class:`seams-passkey-instruction`,children:b(w,{copy:e.message})})]},`success-message`)]})}renderLinkDevice(e){let t=e.linkDevice;if(t.kind===`select_factor`)return this.renderLinkDeviceFactorSelection(t);if(t.kind===`passkey_required`||t.kind===`creating_passkey`)return this.renderLinkDevicePasskeyConfirmation(t);if(t.kind===`email_otp_required`)return this.renderLinkDeviceEmailOtp(t);if(t.kind===`activating`)return this.renderLinkedDeviceActivation(t);if(t.kind===`expired`)return this.renderLinkDeviceFailurePanel({dismiss:`expired`,title:`Linking expired`,detail:t.message,action:`Try again`});if(t.kind===`cancelled`)return this.renderLinkDeviceFailurePanel({dismiss:`cancelled`,title:`Linking cancelled`,detail:t.message,action:`Return to unlock wallet`});if(t.kind===`error`||t.kind===`activation_error`)return this.renderLinkDeviceFailure(t);let n=t.kind===`ready`;return b(x,{children:b(`div`,{class:`seams-scan-device-content`,children:b(`div`,{class:`qr-code-container`,children:b(`div`,{class:`qr-body`,children:b(`div`,{class:`qr-code-section`,children:[b(`div`,{class:`qr-code-display`,children:n?b(x,{children:b(`img`,{src:t.qrCodeDataURL,alt:`QR code to link this device`,class:`qr-code-image`})}):b(x,{children:b(`div`,{class:`qr-code-placeholder`,children:b(`span`,{class:`seams-spinner`,"aria-hidden":`true`})})})}),b(`div`,{class:`qr-header`,children:b(`h2`,{class:`qr-title`,id:M,children:b(w,{copy:e.heading})})}),b(`div`,{class:`qr-instruction`,children:n?b(w,{copy:e.subtitle}):b(w,{message:`Preparing a one-time code for your other device.`})}),b(`div`,{class:`qr-status`,role:`status`,"aria-live":`polite`,children:[n?b(w,{copy:t.message}):b(w,{message:`Generating QR code`}),b(`span`,{class:`animated-ellipsis`})]})]})})})})})}renderLinkDeviceFactorSelection(e){let t=e.targetFactor.kind===`email_otp`,n=e.targetFactor.kind===`email_otp`&&typeof e.targetEmail==`string`?e.targetEmail:``,r=!t||nt(n);return b(x,{children:b(`div`,{class:`seams-link-device-confirmation`,children:[b(`h2`,{class:`qr-title`,id:M,children:b(w,{message:`Match your other device`})}),b(`p`,{class:`seams-link-device-confirmation-copy`,children:b(w,{message:`Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter.`})}),b(`fieldset`,{class:`seams-link-device-factor-options`,children:[b(`legend`,{class:`sr-only`,children:b(w,{message:`Wallet unlock method`})}),b(`label`,{children:[b(`span`,{class:`seams-auth-method-choice-icon`,children:p()}),b(`span`,{class:`seams-auth-method-choice-label`,children:b(w,{message:`Passkey`})}),b(`input`,{type:`radio`,name:`linked-device-factor`,value:`passkey_prf`,checked:e.targetFactor.kind===`passkey_prf`,onChange:this.onLinkDeviceFactorChange})]}),b(`label`,{children:[b(`span`,{class:`seams-auth-method-choice-icon`,children:_()}),b(`span`,{class:`seams-auth-method-choice-label`,children:b(w,{message:`Email code`})}),b(`input`,{type:`radio`,name:`linked-device-factor`,value:`email_otp`,checked:e.targetFactor.kind===`email_otp`,onChange:this.onLinkDeviceFactorChange})]})]}),t?b(x,{children:b(`label`,{class:`seams-link-device-target-email`,children:[b(`span`,{class:`seams-field-label`,children:b(w,{message:`Email address`})}),b(`input`,{type:`email`,name:`linked-device-target-email`,autocomplete:`email`,value:n,"aria-label":C(this.context,`Email address`),"aria-invalid":n.length>0&&!r?`true`:`false`,onInput:this.onLinkDeviceTargetEmailInput})]})}):null,e.error?b(x,{children:b(`p`,{class:`seams-link-device-inline-error`,role:`alert`,children:b(w,{copy:e.error})})}):null,b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!r,onClick:this.onLinkDeviceStart,children:b(w,{message:`Continue`})})]})})}renderLinkDeviceEmailOtp(e){let t=e.state,n=Mt(t),r=t.kind===`sending`||t.kind===`submitting`||t.kind===`resending`,i=e.otpCode.length===6&&(t.kind===`code_input`||t.kind===`incorrect`),a=t.kind!==`completed`&&t.kind!==`expired`&&t.kind!==`unavailable`,o=`maskedEmailHint`in t?t.maskedEmailHint:``,s=P(e.otpCode);return b(x,{children:b(`div`,{class:`seams-link-device-confirmation seams-link-device-email-otp`,"data-tone":n.tone,"data-otp-phase":t.kind,children:[z(n.ring,_()),b(`h2`,{class:`qr-title`,id:M,children:b(w,{copy:n.heading})}),o?b(x,{children:b(`div`,{class:`seams-link-device-email-chip`,title:T(this.context,o),children:b(`span`,{children:o})})}):null,b(`p`,{class:`seams-link-device-email-status`,id:`seams-linked-device-otp-status`,role:`status`,"aria-live":`polite`,children:[b(w,{copy:n.status}),n.pending?b(x,{children:b(`span`,{class:`animated-ellipsis`,"aria-hidden":`true`})}):null]}),a?b(x,{children:[b(`label`,{class:`sr-only`,for:`seams-linked-device-email-otp`,children:b(w,{message:`Email code`})}),b(`div`,{class:`seams-otp-code-field`,"data-disabled":r?`true`:`false`,children:[b(`input`,{class:`seams-otp-input`,id:`seams-linked-device-email-otp`,"data-auth-menu-input":!0,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,pattern:`[0-9]*`,maxLength:6,"aria-label":C(this.context,`Email verification code`),"aria-describedby":`seams-linked-device-otp-status`,"aria-invalid":t.kind===`incorrect`?`true`:`false`,value:e.otpCode,disabled:r,onInput:this.onLinkDeviceEmailOtpCodeInput,onKeyDown:this.onLinkDeviceEmailOtpKeydown}),b(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:s.map(F)})]})]}):null,this.renderLinkDeviceEmailOtpActions(t,{busy:r,canSubmit:i})]})})}renderLinkDeviceEmailOtpActions(e,t){return e.kind===`completed`?null:e.kind===`unavailable`?b(x,{children:b(`button`,{class:`seams-link-device-btn`,type:`button`,"data-link-device-error-dismiss":!0,onClick:this.onBackClick,children:b(w,{message:`Return to unlock wallet`})})}):e.kind===`expired`?b(x,{children:b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,onClick:this.onLinkDeviceEmailOtpResend,children:b(w,{message:`Send a new code`})})}):b(x,{children:[b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,disabled:!t.canSubmit,onClick:this.onLinkDeviceEmailOtpSubmit,children:e.kind===`submitting`?b(w,{message:`Verifying`}):b(w,{message:`Verify code`})}),b(`button`,{class:`seams-otp-resend`,type:`button`,disabled:t.busy,onClick:this.onLinkDeviceEmailOtpResend,children:b(w,{message:`Send another code`})})]})}renderLinkDeviceFailure(e){let t=e.kind===`activation_error`;return this.renderLinkDeviceFailurePanel({dismiss:`error`,title:t?`Device linked`:`Couldn't link device`,detail:t?b(x,{children:[b(w,{message:`Unable to open the wallet. Go back and try again.`}),` `,b(w,{copy:e.message})]}):e.message,action:`Return to unlock wallet`})}renderLinkDeviceFailurePanel(e){return b(x,{children:b(`div`,{class:`seams-link-device-confirmation seams-link-device-failure`,children:[b(`div`,{class:`seams-link-device-failure-icon`,children:te()}),b(`h2`,{class:`qr-title`,id:M,children:b(w,{copy:e.title})}),b(`p`,{class:`seams-link-device-failure-detail`,role:`alert`,children:typeof e.detail==`string`?b(w,{copy:e.detail}):e.detail}),b(`button`,{class:`seams-link-device-btn`,type:`button`,"data-auth-menu-primary":!0,[`data-link-device-${e.dismiss}-dismiss`]:!0,onClick:this.onBackClick,children:b(w,{copy:e.action})})]})})}renderLinkedDeviceActivation(e){return b(x,{children:b(`div`,{class:`seams-link-device-confirmation`,children:[b(`span`,{class:`seams-spinner`,"aria-hidden":`true`}),b(`h2`,{class:`qr-title`,id:M,children:b(w,{message:`Opening linked wallet`})}),b(`p`,{class:`seams-link-device-confirmation-copy`,role:`status`,"aria-live":`polite`,children:b(w,{copy:e.message})})]})})}renderLinkDevicePasskeyConfirmation(e){let t=e.kind===`creating_passkey`;return b(x,{children:b(`div`,{class:`seams-link-device-confirmation`,children:[z(t?`waiting`:`approved`),b(`h2`,{class:`qr-title`,id:M,"aria-live":`polite`,children:b(w,{copy:e.message})}),b(`button`,{class:`seams-link-device-btn seams-link-device-btn-primary`,type:`button`,"data-auth-menu-primary":!0,"data-link-device-passkey-action":!0,disabled:t,onClick:this.onLinkDeviceCreatePasskey,children:t?b(w,{message:`Waiting for passkey`}):b(w,{message:`Create passkey`})})]})})}renderGoogleOtp(e){let t=e.delivery.status===`reused`?`Use the code already sent to ${e.emailHint}.`:`A 6-digit code was sent to ${e.emailHint}.`,n=P(e.otpCode);return b(x,{children:b(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[b(`div`,{class:`seams-otp-prompt-copy`,children:[b(`div`,{class:`seams-otp-title`,id:M,children:b(w,{copy:e.heading})}),b(`p`,{class:`seams-otp-description`,children:b(w,{copy:t})}),_t(e.delivery),b(`div`,{class:`seams-otp-account`,title:T(this.context,e.walletId),children:[b(`span`,{class:`seams-otp-account-label`,children:b(w,{message:`Wallet`})}),b(`span`,{class:`seams-otp-account-value`,children:e.walletId})]})]}),b(`label`,{class:`seams-field-label`,for:`seams-auth-menu-google-otp`,children:b(w,{message:`Email code`})}),b(`div`,{class:`seams-otp-code-field`,"data-disabled":e.submitBusy?`true`:`false`,children:[b(`input`,{class:`seams-otp-input`,id:`seams-auth-menu-google-otp`,"data-auth-menu-input":!0,"data-email-otp-challenge-id":e.challengeId,"data-email-otp-wallet-id":e.walletId,type:`text`,inputmode:`numeric`,autocomplete:`one-time-code`,pattern:`[0-9]*`,maxLength:6,value:e.otpCode,disabled:e.submitBusy,onInput:this.onGoogleOtpCodeInput,onKeyDown:this.onGoogleOtpKeydown}),b(`div`,{class:`seams-otp-slots`,"aria-hidden":`true`,children:n.map(F)})]}),b(`p`,{class:`seams-otp-helper`,children:b(w,{copy:e.prompt.helperText??``})}),b(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:e.submitBusy?b(w,{message:`Unlocking…`}):b(w,{copy:e.ctaLabel})}),b(`button`,{class:`seams-otp-resend auth-menu-google-resend`,type:`button`,disabled:e.resendBusy||e.submitBusy,onClick:this.onGoogleOtpResend,children:e.resendBusy?b(w,{message:`Sending…`}):b(w,{message:`Resend Code`})})]})})}renderGoogleRegistration(e){return b(x,{children:b(`div`,{class:`seams-otp-prompt`,"aria-live":`polite`,children:[b(`div`,{class:`seams-otp-prompt-copy`,children:[b(`div`,{class:`seams-otp-title`,id:M,children:b(w,{copy:e.heading})}),b(`p`,{class:`seams-otp-description`,children:b(w,{copy:e.subtitle})}),b(`div`,{class:`seams-otp-account`,title:T(this.context,e.walletId),children:[b(`span`,{class:`seams-otp-account-label`,children:b(w,{message:`Wallet`})}),b(`span`,{class:`seams-otp-account-value`,children:e.walletId})]}),b(`button`,{class:`seams-otp-reroll`,type:`button`,disabled:e.rerollBusy||e.submitBusy,onClick:this.onGoogleRegistrationReroll,children:e.rerollBusy?b(w,{message:`Generating…`}):b(w,{message:`Generate another name`})})]}),b(`button`,{class:`seams-auth-method-btn seams-auth-method-btn-primary`,type:`button`,"data-auth-menu-primary":!0,disabled:!m(e),onClick:this.onPrimaryClick,children:e.submitBusy?b(w,{message:`Creating...`}):b(w,{copy:e.ctaLabel})})]})})}};function Pt(e,t){return t.walletId===e&&t.authMethod===`voiceid`}function Ft(){return b(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,"aria-hidden":`true`,children:b(`path`,{d:`M4 10v4m4-7v10m4-14v18m4-14v10m4-7v4`})})}const It=new WeakMap;let Lt=0;function Rt(e){let t=It.get(e);return t||(t=ye({doc:e,baseCss:``,dynamicStyleDataAttr:`data-seams-auth-menu-dynamic`,nonce:_e}),It.set(e,t)),t}var zt=class{element;styles;entrance=[];state;constructor(e){let t=e.parent.ownerDocument;this.styles=Rt(t),this.element=t.createElement(`div`),this.element.className=`seams-wallet-ui seams-auth-menu-surface`,this.element.id=`seams-auth-menu-${++Lt}`,this.state={kind:`mounted`,onIntent:e.onIntent},this.element.addEventListener(`cancel`,this.cancel),e.parent.appendChild(this.element);try{this.update(e.viewModel),this.animateEntrance(e.initialHeightCssPx)}catch(e){throw this.dispose(),e}}animateEntrance(e){if(e===void 0||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let t=this.element.querySelector(`.auth-menu-root`);if(!t)return;let n=t.getBoundingClientRect().height;this.entrance.push(t.animate([{height:`${e}px`,minHeight:`0px`,overflow:`hidden`},{height:`${n}px`,minHeight:`0px`,overflow:`hidden`}],{duration:200,easing:`cubic-bezier(0.32, 0.72, 0, 1)`}));for(let e of t.children)this.entrance.push(e.animate([{opacity:0},{opacity:1}],{duration:140,delay:60,fill:`backwards`,easing:`cubic-bezier(0.25, 1, 0.5, 1)`}))}update(e){this.state.kind!==`disposed`&&(this.element.lang=e.appearance.locale??`en`,this.element.dataset.theme=e.appearance.theme.mode,this.styles.setDynamicRule(this.element.id+`-appearance`,Be(this.element.id,e.appearance)),ve(Re(e.appearance.locale??`en`,b(Nt,{element:this.element,viewModel:e,onIntent:this.state.onIntent,styles:this.styles})),this.element))}dispose(){if(this.state.kind!==`disposed`){this.state={kind:`disposed`};for(let e of this.entrance)e.cancel();this.entrance=[],this.element.removeEventListener(`cancel`,this.cancel),ve(null,this.element),this.styles.deleteDynamicRule(this.element.id+`-appearance`),this.element.remove()}}cancel=()=>{this.state.kind===`mounted`&&this.state.onIntent({kind:`close`,reason:`close_button`})}};function Bt(e){return new zt(e)}const Vt=Symbol(`hostedPasskeyLoginPrepared`),Ht=Symbol(`hostedPasskeyAccountSyncPrepared`),B=300*1e3;function Ut(e){return{signingEngine:e.signingEngine,nearClient:e.nearClient,configs:e.configs,theme:e.theme,resumePendingAcknowledgementsV1:e.resumePendingAcknowledgementsV1}}const V=new WeakMap;function Wt(e){return e.signal}function H(e){if(Wt(e).aborted)throw Error(`Hosted auth-menu passkey preparation was cancelled`)}function Gt(e){if(Date.now()>=e.expiresAtMs)throw W(e),Error(`Hosted auth-menu passkey preparation expired`)}function Kt(e){let t=V.get(e);if(!t)throw Error(`Hosted auth-menu passkey preparation is unknown`);if(t.lifecycle!==`ready`)throw Error(`Hosted auth-menu passkey preparation is no longer usable`);if(Date.now()>=e.expiresAtMs)throw W(e),Error(`Hosted auth-menu passkey preparation expired`);return H(e.cancellation),t}function qt(e){return{id:String(e.credentialId||``).trim(),type:`public-key`,transports:Array.isArray(e.transports)?e.transports:[]}}function Jt(e){return{authMenuSessionId:e.authMenuSessionId,requestId:e.requestId}}async function Yt(e){H(e.cancellation);let t=be(e.walletId),n=await tt(String(t));if(n){H(e.cancellation);let r=Object.freeze({kind:`hosted_passkey_linked_authority_login_prepared_v1`,...Jt(e),walletId:t,selection:n,expiresAtMs:Date.now()+B,cancellation:e.cancellation,[Vt]:!0});return V.set(r,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),r}let r=await Xe({walletId:String(t),requestedCapabilityFamilies:{kind:`all_registered_mpc`}}),i=r.kind===`resolved`?r.subjectSet:await We(String(t));if(!i)return await U({context:e.context,walletId:null,authMenuSessionId:e.authMenuSessionId,requestId:e.requestId,cancellation:e.cancellation});H(e.cancellation);let a=Object.freeze({kind:`hosted_passkey_owner_login_prepared_v1`,...Jt(e),walletId:t,subjectSet:i,expiresAtMs:Date.now()+B,cancellation:e.cancellation,[Vt]:!0});return V.set(a,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),a}async function U(e){H(e.cancellation);let t=await Ze(e.context,e.walletId);H(e.cancellation);let n=Object.freeze({kind:`hosted_passkey_account_sync_prepared_v1`,authMenuSessionId:e.authMenuSessionId,requestId:e.requestId,challenge:t,expiresAtMs:Date.now()+B,cancellation:e.cancellation,[Ht]:!0});return V.set(n,{context:e.context,loginOptions:{},syncOptions:{},lifecycle:`ready`,authority:null}),n}function Xt(e){let t=Kt(e);t.lifecycle=`consuming`;let n={subjectId:e.challenge.walletId||`account-sync`,challengeB64u:e.challenge.syncOptions.challengeB64u,allowCredentials:e.challenge.syncOptions.credentialIds.map(e=>qt({credentialId:e}))},r;try{r=t.context.signingEngine.getAuthenticationCredentialsSerialized({...n,includeSecondPrfOutput:!1})}catch(e){throw t.lifecycle=`cancelled`,e}return t.authority=r,r.then(()=>{t.lifecycle===`consuming`&&(t.lifecycle=`consumed`)},()=>{t.lifecycle===`consuming`&&(t.lifecycle=`cancelled`)}),r}function Zt(e){let t=V.get(e);if(!t)throw Error(`Hosted auth-menu passkey preparation is unknown`);if(t.lifecycle!==`consuming`&&t.lifecycle!==`consumed`||!t.authority)throw Error(`Hosted auth-menu passkey credential must be started by its CTA`);return t.lifecycle=`completing`,t}async function Qt(e){let t=Kt(e);t.lifecycle=`completing`;let n=!1,r=e=>{e.phase===we.CANCELLED&&(n=!0)};try{let i=t.loginOptions.onEvent,a={...t.loginOptions,onEvent:e=>{r(e),i?.(e)}},o=e.kind===`hosted_passkey_linked_authority_login_prepared_v1`?await Ge(t.context,String(e.walletId),a):await $e(t.context,e.subjectSet,a);return o.success?t.context.resumePendingAcknowledgementsV1():D(),{result:o,cancelledByUser:n}}finally{t.lifecycle=`finished`}}async function $t(e){let t=Zt(e),n=t.authority;if(!n)throw Error(`Hosted auth-menu passkey credential is missing`);try{let r=await n;return Gt(e),H(e.cancellation),await et(t.context,e.challenge,r,t.syncOptions)}finally{t.lifecycle=`finished`}}function W(e){let t=V.get(e);!t||t.lifecycle===`finished`||t.lifecycle===`cancelled`||(t.lifecycle=`cancelled`)}const en=`That recovery code can’t be used. Check the code and try again.`;function tn(e){let t=e.replace(/[\s-]/g,``);if(!t)return`Enter a recovery code.`;if(t.length!==32)return`Enter all 32 characters of the recovery code.`;try{return Te(t),null}catch{return en}}function G(e){if(e.kind===`hosted_passkey_registration_prepared_v1`){Me(e);return}W(e)}function K(){}function nn(e){return e.target.kind===`passkey`}function rn(e){return e.kind===`recovery`&&e.stage===`finalizing`&&(e.operation.kind===`hosted_recovery_credential_created`||e.operation.kind===`hosted_recovery_email_otp_verified`)}function an(e){return e.kind===`authenticated`||e.kind===`registered`||e.kind===`account_synced`}function on(e){return e.targetFactor.kind===`email_otp`?{targetFactor:e.targetFactor,targetEmail:Ue(e.targetEmail)}:{targetFactor:e.targetFactor}}const sn=1300,cn={kind:`recoverable`,reason:`error`,message:`Google sign-in was cancelled.`};function q(e){let t=e.mode??e.request.initialMode,n=e.request.copy[t],r={kind:`passkey`,appearance:e.appearance,hostname:e.hostname,closeLabel:e.request.copy.common.closeLabel,heading:n.title,subtitle:n.subtitle,ctaLabel:n.passkeyCta,showProgress:e.request.showProgress,enabledExternalProviders:e.request.enabledExternalProviders,status:{kind:`idle`,interaction:`arming`}};return t===`register`?{...r,mode:t,showRegistrationInput:e.request.showRegistrationInput||e.request.registrationAccountInput===`sponsored_named_near_account`,passkeyNameReadOnly:e.request.registrationAccountInput===`implicit_wallet`,passkeyName:e.request.registrationAccountInput===`implicit_wallet`?String(xe()):``,passkeyNameLabel:e.request.copy.register.passkeyNameLabel}:{...r,mode:t,accountOptions:[],selectedAccount:null}}function ln(e){let t=q({...e,mode:`login`});if(t.kind!==`passkey`||t.mode!==`login`)throw Error(`login view model construction failed`);return t}async function un(e){let[t]=await Promise.allSettled([e,new Promise(e=>setTimeout(e,500))]);if(t.status===`rejected`)throw t.reason;return t.value}function dn(e){return e.trim()||`Wallet`}function fn(e){return`close_button`}function J(){try{let e=globalThis.crypto?.randomUUID?.();if(e)return`auth-menu-external-${e}`}catch{}return`auth-menu-external-${Date.now()}-${Math.random().toString(36).slice(2)}`}function pn(e){return{appearance:e.base.appearance,hostname:e.base.hostname,closeLabel:e.base.closeLabel,heading:e.flow.prompt.title,subtitle:e.flow.prompt.description,ctaLabel:e.flow.prompt.submitLabel,showProgress:e.base.showProgress,enabledExternalProviders:e.base.enabledExternalProviders,status:e.status}}function mn(e){let t=`google-email-otp-login:${e.flow.walletId}:`;if(!e.flow.flowId.startsWith(t))throw Error(`Google Email OTP login flow identity is invalid`);return{...pn({base:e.base,flow:e.flow,status:e.status??{kind:`idle`,interaction:`actionable`}}),kind:`google_otp_login`,mode:`login`,emailHint:e.flow.emailHint,walletId:String(e.flow.walletId),challengeId:e.flow.flowId.slice(t.length),prompt:e.flow.prompt,delivery:e.flow.delivery,otpCode:e.otpCode??``,resendBusy:e.resendBusy??!1,submitBusy:e.submitBusy??!1,...e.error?{error:e.error}:{}}}function hn(e){return{...pn({base:e.base,flow:e.flow,status:e.status??{kind:`idle`,interaction:`actionable`}}),kind:`google_registration`,mode:`register`,emailHint:e.flow.emailHint,walletId:String(e.flow.walletId),prompt:e.flow.prompt,rerollBusy:e.rerollBusy??!1,submitBusy:e.submitBusy??!1,...e.error?{error:e.error}:{}}}function Y(e){return e instanceof Error&&e.message.trim()?e.message.trim():String(e)}function gn(e){switch(e.kind){case`passkey`:return e.status.kind===`recoverable`?{mode:e.mode,message:e.status.detail??e.status.message}:null;case`google_otp_login`:case`google_registration`:return e.error?{mode:e.mode,message:e.error}:e.status.kind===`recoverable`?{mode:e.mode,message:e.status.message}:null;case`link_device`:return null;case`recovery`:return e.stage===`sign_in_ready`&&e.status.kind===`recoverable`?{mode:`login`,message:e.status.detail??e.status.message}:null;default:{let t=e;throw Error(`Unknown auth-menu view model: ${JSON.stringify(t)}`)}}}function _n(e){return{kind:`link_device`,appearance:e.appearance,hostname:e.hostname,closeLabel:e.closeLabel,heading:`Scan and link device`,subtitle:`Scan this code with your other device.`,ctaLabel:``,showProgress:e.showProgress,enabledExternalProviders:e.enabledExternalProviders,status:{kind:`idle`,interaction:`actionable`},mode:e.mode,linkDevice:{kind:`select_factor`,targetFactor:{kind:`passkey_prf`}}}}function X(e){let t={kind:`recovery`,mode:`login`,appearance:e.base.appearance,hostname:e.base.hostname,closeLabel:e.base.closeLabel,heading:`Recover wallet`,subtitle:e.stage===`sign_in_ready`?e.target.kind===`google_email_otp`?`Your Google account is ready to unlock your wallet.`:`Your wallet is ready. Unlock it with your passkey.`:e.stage===`choose_method`||e.stage===`preparing`?`Choose how you will sign in to this wallet from now on.`:`Enter a recovery code to recover your wallet.`,ctaLabel:e.stage===`passkey_ready`?`Create new passkey`:e.stage===`google_ready`?`Continue with Google`:e.stage===`email_code_required`?`Verify email code`:e.stage===`sign_in_ready`?e.target.kind===`google_email_otp`?`Unlock with Google`:`Unlock with new passkey`:e.stage===`preparing`||e.stage===`choose_method`?`Create a passkey`:`Continue`,showProgress:e.base.showProgress,enabledExternalProviders:e.base.enabledExternalProviders,recoveryCode:e.recoveryCode??``,recoveryCodeError:e.recoveryCodeError??null};switch(e.stage){case void 0:case`enter_code`:return{...t,stage:`enter_code`,status:e.status??{kind:`idle`,interaction:`actionable`}};case`choose_method`:return{...t,stage:`choose_method`,status:e.status??{kind:`idle`,interaction:`actionable`}};case`preparing`:return{...t,stage:e.stage,target:e.target,status:e.status};case`passkey_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}};case`google_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}};case`email_code_required`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,challengeId:e.challengeId,emailHint:e.emailHint,delivery:e.delivery,otpCode:e.otpCode??``,status:e.status??{kind:`idle`,interaction:`awaiting_input`}};case`finalizing`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status};case`sign_in_ready`:return{...t,target:e.target,walletId:e.walletId,stage:e.stage,status:e.status??{kind:`idle`,interaction:`actionable`}}}}function Z(e){if(e.stage===`enter_code`||e.stage===`choose_method`||e.stage===`preparing`)throw Error(`recovery wallet id is unavailable before preparation`);return e.walletId}function Q(e){if(e.stage===`enter_code`||e.stage===`choose_method`)throw Error(`recovery target is unavailable before preparation`);return e.target}function $(e){return e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:{kind:`recoverable`,reason:`error`,message:e.kind===`consumed`?`That recovery code has already been used. Use another code.`:en}}function vn(){return{kind:`recoverable`,reason:`error`,message:`Recovery couldn’t be completed. Try again.`}}function yn(e){return e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:{kind:`recoverable`,reason:`error`,message:`A passkey couldn’t be created. Try again.`}}var bn=class{voiceLogin={kind:`unavailable`};voiceCapture=null;menuLeaving=null;setVoiceLogin(e){this.voiceLogin.kind!==`running`&&(this.voiceLogin={kind:`ready`,unlock:e})}assertVoiceLoginActive=()=>{if(this.stateValue.kind===`complete`||this.voiceLogin.kind!==`running`)throw Error(`VoiceID login was cancelled.`)};mountVoiceCapture=e=>{if(this.assertVoiceLoginActive(),this.measurementReporter?.disconnect(),this.surface){let e=this.surface.element;this.menuLeaving=En(e,e.getBoundingClientRect()),this.menuLeaving.onfinish=this.finishMenuLeaving}let t=this.surface?.element.querySelector(`.seams-menu-origin`);return t&&e.querySelector(`.seams-voiceid-unlock-header`)?.prepend(t.cloneNode(!0)),document.body.append(e),this.voiceCapture=e,this.measurementReporter=y({kind:`auth_menu_surface`,element:e,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement}),this.restoreVoiceCapture.bind(this,e)};restoreVoiceCapture(e,t){if(this.voiceCapture=null,this.measurementReporter?.disconnect(),t===`succeeded`||!this.menuHidden()){e.remove();return}let n=En(e,e.getBoundingClientRect()),r=e.remove.bind(e);n.onfinish=r,n.oncancel=r,this.revealMenu()}finishMenuLeaving=()=>{!this.surface||!this.menuLeaving||(this.surface.element.hidden=!0,this.restoreMenuFlow())};restoreMenuFlow(){let e=this.menuLeaving;this.menuLeaving=null,e?.cancel(),this.surface?.element.classList.remove(`seams-auth-card-leaving`)}menuHidden(){return this.stateValue.kind!==`complete`&&(this.menuLeaving!==null||this.surface?.element.hidden===!0)}revealMenu(){!this.surface||!this.menuHidden()||(this.restoreMenuFlow(),this.surface.element.hidden=!1,this.surface.element.inert=!1,this.surface.element.querySelector(`[data-auth-menu-voiceid]`)?.focus(),this.measurementReporter=y({kind:`auth_menu_surface`,element:this.surface.element,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement}))}async unlockWithVoice(){if(this.voiceLogin.kind!==`ready`||this.stateValue.kind!==`ready`&&this.stateValue.kind!==`preparing`)return;let e=this.currentViewModel();if(e.kind!==`passkey`||e.mode!==`login`)return;let t=f(this.loginAccountOptions,this.selectedLoginAccount).selectedAccount?.walletId,n=this.loginAccountOptions.find(Dn.bind(null,t));if(!n||n.authMethod!==`voiceid`)return;let r=this.voiceLogin.unlock;this.invalidatePreparation(),this.voiceLogin={kind:`running`,unlock:r};try{let e=await r({walletId:n.walletId,walletAuthMethodId:n.walletAuthMethodId,method:`voiceid`},this.assertVoiceLoginActive,this.mountVoiceCapture);if(this.assertVoiceLoginActive(),!e.success)throw Error(e.error);this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.walletId,method:`voiceid`},`capture`)}catch(t){this.revealMenu(),this.state.kind!==`complete`&&(this.stateValue={kind:`preparing`,viewModel:{...e,status:h(Y(t))}},this.updateElement())}finally{this.voiceLogin={kind:`ready`,unlock:r}}}identity;request;stateValue;surface=null;outcomeResolver=null;outcomePromise=null;successTimers=[];cleanedUp=!1;prepared=null;preparePasskey=null;registrationPreparation=null;preparationCancellation=null;googleCancellation=null;beginGoogleEmailOtp;startDeviceLinking;cancelDeviceLinking;loginPreparation=null;loginAccountOptions=[];selectedLoginAccount=null;modeSelectionSource=`initial`;sendToParent;measurementReporter=null;preparationGeneration=0;googleGeneration=0;deviceLinkGeneration=0;linkedDeviceActivationInProgress=!1;targetPasskeyActivation=null;targetEmailOtpActivation=null;linkedDeviceEmailOtpSendStarted=!1;linkedDeviceTargetFactor={kind:`passkey_prf`};linkedDeviceTargetEmailAddress=``;preparationDeadlineTimer=null;preparationExpiryTimer=null;lastReportedError=null;recoveryPort;prepareRecoveredLogin;recoveryGeneration=0;recoveryCancellation=null;recoveryLoginPrepared=null;recoveryReturnState=null;constructor(e){this.identity={authMenuSessionId:e.request.authMenuSessionId,requestId:e.requestId},this.request=e.request,this.beginGoogleEmailOtp=e.beginGoogleEmailOtp,this.startDeviceLinking=e.startDeviceLinking,this.cancelDeviceLinking=e.cancelDeviceLinking,this.recoveryPort=e.recoveryPort,this.prepareRecoveredLogin=e.prepareRecoveredLogin,this.sendToParent=e.sendToParent,this.stateValue={kind:`preparing`,viewModel:q({request:e.request,appearance:e.appearance,hostname:dn(e.hostname)})}}get state(){return this.stateValue}setRegistrationPreparation(e){this.registrationPreparation=e,this.stateValue.kind!==`complete`&&this.currentViewModel().mode===`register`&&(this.preparePasskey=null,this.startPasskeyPreparation())}setPasskeyPreparation(e){this.preparePasskey=e,this.startPasskeyPreparation()}setLoginPreparation(e){let t=this.stateValue.kind===`complete`?null:this.currentViewModel();t?.kind===`passkey`&&t.mode===`login`&&(this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`)&&this.invalidatePreparation(),this.loginPreparation=e.prepare,this.loginAccountOptions=e.accountOptions,this.selectedLoginAccount=e.selectedAccount,this.updateLoginSelectionViewModel(),(this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`)&&this.currentViewModel().mode===`login`&&this.activateSelectedLoginMethod()}defaultToLoginForDetectedLocalWallet(){if(this.modeSelectionSource!==`initial`||this.stateValue.kind===`complete`)return;let e=this.currentViewModel();e.kind!==`passkey`||e.mode!==`register`||this.showPasskeyMode(`login`)}prepareSelectedLogin=e=>{if(!this.loginPreparation)throw Error(`Hosted login preparation is unavailable`);let t=f(this.loginAccountOptions,this.selectedLoginAccount);if(!ee(t))throw Error(`Email OTP accounts require Google sign-in`);return this.loginPreparation(t.kind===`discoverable`?null:t.walletId,e)};activateSelectedLoginMethod(){if(ee(f(this.loginAccountOptions,this.selectedLoginAccount))){this.setPasskeyPreparation(this.prepareSelectedLogin);return}this.preparePasskey=null;let e=this.stateValue;e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`login`||(this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`actionable`}}},this.updateElement())}updateLoginSelectionViewModel(){let e=this.stateValue;e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`login`||(this.stateValue={...e,viewModel:{...e.viewModel,accountOptions:this.loginAccountOptions,selectedAccount:this.selectedLoginAccount}})}mount(){if(this.surface||this.cleanedUp)throw Error(`Hosted auth-menu session is already mounted`);if(document.querySelectorAll(`.seams-auth-menu-surface`).length>0)throw Error(`A hosted auth-menu surface is already mounted`);let e=document.body||document.documentElement;if(!e)throw Error(`Wallet host document has no mount root`);this.surface=Bt({parent:e,viewModel:this.currentViewModel(),initialHeightCssPx:this.request.initialHeightCssPx,onIntent:this.onIntent}),this.measurementReporter=y({kind:`auth_menu_surface`,element:this.surface.element,requestId:this.identity.requestId,authMenuSessionId:this.identity.authMenuSessionId,postMeasurement:this.postSurfaceMeasurement})}waitForOutcome(){return this.stateValue.kind===`complete`?Promise.resolve(this.stateValue.outcome):(this.outcomePromise||=new Promise(e=>{this.outcomeResolver=e}),this.outcomePromise)}cancel(e){if(this.stateValue.kind===`complete`){this.finish(this.stateValue.outcome);return}if(rn(this.stateValue)){if(e===`close_button`)return;this.complete({kind:`cancelled`,authMenuSessionId:this.identity.authMenuSessionId,reason:e});return}this.stateValue.kind===`link_device`&&console.error(`[Device2Linking] auth menu cancelled`,{reason:e}),this.invalidatePreparation(),this.complete({kind:`cancelled`,authMenuSessionId:this.identity.authMenuSessionId,reason:e})}startPasskeyPreparation(){if(this.stateValue.kind===`complete`)return;let e=this.currentViewModel();if(e.kind!==`passkey`)return;let t=e.mode===`register`?this.registrationPreparation:null,n=e.mode===`login`?this.preparePasskey:null;if(!n&&!t)return;if(t&&e.mode===`register`&&e.showRegistrationInput&&e.passkeyName.trim().length===0){this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e,status:{kind:`idle`,interaction:`awaiting_input`}}},this.updateElement();return}this.clearPreparationExpiryTimer();let r=++this.preparationGeneration,i=new AbortController;this.preparationCancellation=i;let a={kind:`abort_signal`,signal:i.signal};this.stateValue={kind:`preparing`,viewModel:{...e,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.schedulePreparationDeadline(r,i),Promise.resolve().then(()=>t?t(this.registrationValue(),a,this.showRegistrationDelay):n(a)).then(t=>{if(r!==this.preparationGeneration||this.stateValue.kind===`complete`){G(t);return}this.clearPreparationDeadlineTimer(),this.prepared=t,this.stateValue={kind:`ready`,prepared:t,viewModel:{...e,status:{kind:`idle`,interaction:`actionable`}}},this.schedulePreparationExpiry(t),this.updateElement()},t=>{r!==this.preparationGeneration||this.stateValue.kind===`complete`||(this.clearPreparationDeadlineTimer(),this.stateValue={kind:`preparing`,viewModel:{...e,status:h(Y(t))}},this.updateElement())})}invalidatePreparation(){this.invalidateRecovery(),this.stateValue.kind===`link_device`&&(this.deviceLinkGeneration+=1,this.cancelDeviceLinking().catch(()=>{})),this.clearPreparationDeadlineTimer(),this.clearPreparationExpiryTimer(),this.preparationGeneration+=1,this.preparationCancellation?.abort(),this.preparationCancellation=null,this.googleGeneration+=1,this.googleCancellation?.abort(),this.googleCancellation=null;let e=this.prepared;this.prepared=null,e&&G(e),this.stateValue.kind===`performing`&&G(this.stateValue.prepared),(this.stateValue.kind===`google_login`||this.stateValue.kind===`google_registration`)&&this.stateValue.flow.cancel().catch(()=>{})}invalidateRecovery(){this.recoveryGeneration+=1,this.recoveryCancellation?.abort(),this.recoveryCancellation=null;let e=this.recoveryLoginPrepared;this.recoveryLoginPrepared=null,e&&G(e);let t=this.stateValue;t.kind!==`recovery`||!t.operation||rn(t)||this.recoveryPort.cancel(t.operation).catch(()=>{})}registrationValue(){let e=this.stateValue;return(e.kind===`preparing`||e.kind===`ready`)&&e.viewModel.kind===`passkey`&&e.viewModel.mode===`register`?e.viewModel.passkeyName:``}clearPreparationExpiryTimer(){this.preparationExpiryTimer!==null&&(clearTimeout(this.preparationExpiryTimer),this.preparationExpiryTimer=null)}clearPreparationDeadlineTimer(){this.preparationDeadlineTimer!==null&&(clearTimeout(this.preparationDeadlineTimer),this.preparationDeadlineTimer=null)}schedulePreparationDeadline(e,t){this.clearPreparationDeadlineTimer(),this.preparationDeadlineTimer=setTimeout(this.expirePasskeyPreparation.bind(this,e,t),2e4)}expirePasskeyPreparation(e,t){let n=this.stateValue;e!==this.preparationGeneration||t!==this.preparationCancellation||n.kind!==`preparing`||n.viewModel.kind!==`passkey`||n.viewModel.status.kind!==`idle`||n.viewModel.status.interaction!==`arming`||(this.clearPreparationDeadlineTimer(),this.preparationGeneration+=1,this.preparationCancellation=null,t.abort(),this.stateValue={kind:`preparing`,viewModel:{...n.viewModel,status:h(`Passkey preparation timed out`)}},this.updateElement())}schedulePreparationExpiry(e){this.clearPreparationExpiryTimer();let t=Math.max(0,e.expiresAtMs-Date.now());this.preparationExpiryTimer=setTimeout(()=>{this.preparationExpiryTimer=null,!(this.stateValue.kind!==`ready`||this.stateValue.prepared!==e||this.prepared!==e||this.stateValue.viewModel.kind!==`passkey`)&&(G(e),this.prepared=null,this.stateValue={kind:`preparing`,viewModel:{...this.stateValue.viewModel,status:{kind:`recoverable`,reason:`expired`,message:`Passkey preparation expired. Retry to continue.`}}},this.updateElement())},t)}startGoogleFlow(e,t){this.invalidatePreparation();let n=++this.googleGeneration,r=new AbortController;this.googleCancellation=r;let i=this.currentViewModel();i.kind===`recovery`||i.kind===`link_device`||(this.stateValue={kind:`preparing`,viewModel:{...i,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Starting Google sign-in`}}},this.updateElement(),this.beginGoogleEmailOtp({idToken:e,authTarget:t,signal:r.signal}).then(e=>{if(n!==this.googleGeneration||r.signal.aborted||this.stateValue.kind===`complete`){e.cancel().catch(()=>{});return}this.googleCancellation=null,e.mode===`login`?this.stateValue={kind:`google_login`,flow:e,viewModel:mn({base:i,flow:e})}:this.stateValue={kind:`google_registration`,flow:e,viewModel:hn({base:i,flow:e})},this.updateElement()},e=>{n!==this.googleGeneration||r.signal.aborted||this.stateValue.kind===`complete`||(this.googleCancellation=null,this.stateValue={kind:`preparing`,viewModel:{...i,status:h(Y(e))}},this.updateElement())}))}requestExternalAuth(e){if(this.stateValue.kind===`complete`)return null;if(this.stateValue.kind===`recovery`&&this.stateValue.stage===`google_ready`)return this.requestRecoveryGoogleVerification(e,this.stateValue);if(this.stateValue.kind===`recovery`&&this.stateValue.stage===`sign_in_ready`&&this.stateValue.viewModel.target.kind===`google_email_otp`)return this.requestRecoveredGoogleSignIn(e,this.stateValue);let t=this.currentViewModel();if(t.kind!==`passkey`||!this.request.enabledExternalProviders.includes(e)||this.stateValue.kind===`awaiting_external_auth`)return null;let n;if(t.mode===`register`)n={mode:`register`};else{let e=f(t.accountOptions,t.selectedAccount);if(!ie(e))return null;n={mode:`login`,loginTarget:e.loginTarget}}this.invalidatePreparation();let r=o(J());if(!r)return null;let i={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:r,provider:e,mode:t.mode};return this.stateValue={kind:`awaiting_external_auth`,viewModel:{...t,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}},request:i,authTarget:n},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:i}),i}acceptExternalAuthResolution(e){let t=this.stateValue;if(t.kind===`recovery`&&t.stage===`google_external_auth`){if(t.request.authMenuSessionId!==e.authMenuSessionId||t.request.externalAuthRequestId!==e.externalAuthRequestId||this.identity.requestId!==e.requestId)return!1;if(e.evidence.kind===`google_id_token`)return this.startRecoveryGoogleVerification(t,e.evidence.idToken),!0;let n=e.evidence.kind===`cancelled`?cn:h(e.evidence.message);return this.stateValue={kind:`recovery`,stage:`google_ready`,operation:t.operation,returnState:t.returnState,viewModel:X({base:t.viewModel,walletId:Z(t.viewModel),stage:`google_ready`,target:t.operation.target,status:n})},this.updateElement(),!0}if(t.kind!==`awaiting_external_auth`||t.viewModel.kind!==`passkey`||t.request.authMenuSessionId!==e.authMenuSessionId||t.request.externalAuthRequestId!==e.externalAuthRequestId||this.identity.requestId!==e.requestId)return!1;switch(e.evidence.kind){case`google_id_token`:return this.startGoogleFlow(e.evidence.idToken,t.authTarget),!0;case`cancelled`:case`failed`:{let n=e.evidence.kind===`cancelled`?cn:h(e.evidence.message);return this.stateValue={kind:`preparing`,viewModel:{...t.viewModel,status:n}},this.updateElement(),!0}default:return Tn(e.evidence)}}requestRecoveryGoogleVerification(e,t){if(!this.request.enabledExternalProviders.includes(e))return null;let n=o(J());if(!n)return null;let r={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:n,provider:e,mode:`login`};return this.stateValue={kind:`recovery`,stage:`google_external_auth`,operation:t.operation,returnState:t.returnState,request:r,viewModel:X({base:t.viewModel,walletId:Z(t.viewModel),stage:`finalizing`,target:t.operation.target,status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}})},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:r}),r}requestRecoveredGoogleSignIn(e,t){if(!this.request.enabledExternalProviders.includes(e))return null;let n=o(J());if(!n)return null;let r={kind:`hosted_auth_menu_external_auth_request_v1`,authMenuSessionId:this.identity.authMenuSessionId,externalAuthRequestId:n,provider:e,mode:`login`};return this.stateValue={kind:`awaiting_external_auth`,request:r,authTarget:{mode:`login`,loginTarget:{kind:`wallet`,walletId:Z(t.viewModel)}},viewModel:{...ln({request:this.request,appearance:t.viewModel.appearance,hostname:t.viewModel.hostname}),status:{kind:`busy`,headline:`Waiting for Google login…`,illustration:`google`,detail:`Waiting for Google sign-in`}}},this.updateElement(),this.sendToParent({type:`AUTH_MENU_EXTERNAL_AUTH_REQUEST`,requestId:this.identity.requestId,payload:r}),r}cleanup(){if(this.voiceCapture?.dispatchEvent(new Event(`cancel`,{cancelable:!0})),!this.cleanedUp){this.cleanedUp=!0;for(let e of this.successTimers)clearTimeout(e);this.successTimers=[],this.invalidatePreparation(),this.measurementReporter?.disconnect(),this.measurementReporter=null,this.surface?.dispose(),this.surface=null}}postSurfaceMeasurement=e=>{this.sendToParent({type:`SURFACE_MEASUREMENT`,payload:e})};currentViewModel(){switch(this.stateValue.kind){case`preparing`:case`awaiting_external_auth`:case`ready`:case`performing`:return this.stateValue.viewModel;case`google_login`:case`google_registration`:case`link_device`:case`recovery`:return this.stateValue.viewModel;case`complete`:throw Error(`Completed auth-menu session has no view model`)}}updateElement(){let e=this.currentViewModel();this.reportPresentedError(e),this.surface?.update(e)}reportPresentedError(e){let t=gn(e);if(!t){this.lastReportedError=null;return}let n=`${t.mode}:${t.message}`;if(n===this.lastReportedError)return;this.lastReportedError=n;let i=r({kind:`hosted_auth_menu_error_v1`,authMenuSessionId:this.identity.authMenuSessionId,mode:t.mode,message:t.message});if(!i)throw Error(`Unable to emit hosted auth-menu error event`);this.sendToParent({type:`AUTH_MENU_ERROR`,requestId:this.identity.requestId,payload:i})}onIntent=e=>{if(this.stateValue.kind!==`complete`&&!(this.voiceLogin.kind===`running`&&e.kind!==`close`))switch(e.kind){case`mode_selected`:this.selectMode(e.mode);return;case`back`:this.back();return;case`link_device_open`:this.openLinkDevice();return;case`recovery_open`:this.openRecovery();return;case`recovery_code_changed`:this.changeRecoveryCode(e.recoveryCode);return;case`recovery_code_submit`:this.submitRecoveryCode();return;case`recovery_passkey_selected`:this.prepareRecovery(`passkey`);return;case`recovery_google_selected`:this.prepareRecovery(`google_email_otp`);return;case`recovery_google_otp_code_changed`:this.changeRecoveryGoogleOtpCode(e.code);return;case`recovery_google_otp_submit`:this.submitRecoveryGoogleOtp();return;case`recovery_create_passkey`:this.createRecoveryPasskey();return;case`recovery_sign_in`:this.signInRecoveredWallet();return;case`link_device_factor_selected`:this.selectLinkedDeviceTargetFactor(e.targetFactor);return;case`link_device_target_email_changed`:this.changeLinkedDeviceTargetEmailAddress(e.emailAddress);return;case`link_device_start`:this.startSelectedDeviceLinking();return;case`link_device_create_passkey`:this.createLinkedDevicePasskey();return;case`link_device_email_otp_code_changed`:this.changeLinkedDeviceEmailOtpCode(e.code);return;case`link_device_email_otp_resend`:this.resendLinkedDeviceEmailOtp();return;case`link_device_email_otp_submit`:this.submitLinkedDeviceEmailOtp();return;case`registration_reroll`:this.rerollRegistrationWallet();return;case`close`:this.cancel(fn(e));return;case`passkey_name_changed`:{let t=this.stateValue.kind===`preparing`||this.stateValue.kind===`ready`?this.stateValue.viewModel:null;t?.kind===`passkey`&&t.mode===`register`&&!t.passkeyNameReadOnly&&(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...t,passkeyName:e.passkeyName,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation());return}case`voiceid_selected`:this.unlockWithVoice();return;case`login_account_selected`:this.selectLoginAccount(e.walletId,e.authMethod);return;case`submit`:if(this.stateValue.kind===`preparing`&&this.stateValue.viewModel.status.kind===`recoverable`){this.retryPreparation();return}this.stateValue.kind===`ready`&&this.prepared===this.stateValue.prepared&&(e.mode===`register`&&this.stateValue.prepared.kind===`hosted_passkey_registration_prepared_v1`||e.mode===`login`&&(this.stateValue.prepared.kind===`hosted_passkey_owner_login_prepared_v1`||this.stateValue.prepared.kind===`hosted_passkey_linked_authority_login_prepared_v1`||this.stateValue.prepared.kind===`hosted_passkey_account_sync_prepared_v1`))&&this.performPreparedPasskey(this.stateValue.prepared);return;case`external_auth`:this.requestExternalAuth(e.provider);return;case`google_otp_code_changed`:this.updateGoogleOtpCode(e.code);return;case`google_otp_resend`:this.resendGoogleOtp();return;case`google_otp_submit`:this.submitGoogleOtp();return;case`google_registration_reroll`:this.rerollGoogleRegistration();return;case`google_registration_complete`:this.completeGoogleRegistration();return;case`retry`:this.retryPreparation();return;default:return xn(e)}};selectMode(e){let t=this.stateValue;t.kind===`complete`||t.kind===`performing`||t.kind===`link_device`||(this.modeSelectionSource=`user`,this.currentViewModel().mode!==e&&this.showPasskeyMode(e))}showPasskeyMode(e){if(this.stateValue.kind===`complete`||this.stateValue.kind===`link_device`)return;let t=this.currentViewModel();this.invalidatePreparation();let n=q({request:{...this.request,initialMode:e},appearance:t.appearance,hostname:t.hostname,mode:e});this.stateValue={kind:`preparing`,viewModel:n.kind===`passkey`&&n.mode===`login`?{...n,accountOptions:this.loginAccountOptions,selectedAccount:this.selectedLoginAccount}:n},this.updateElement(),e===`login`?this.activateSelectedLoginMethod():(this.preparePasskey=null,this.startPasskeyPreparation())}back(){if(this.stateValue.kind===`recovery`){if(this.stateValue.stage===`finalizing`)return;if(this.stateValue.stage===`choose_method`){this.returnToRecoveryCode();return}this.closeRecovery();return}if(this.stateValue.kind===`link_device`){this.closeLinkDevice();return}(this.stateValue.kind===`performing`||this.stateValue.kind===`awaiting_external_auth`||this.stateValue.kind===`google_login`||this.stateValue.kind===`google_registration`)&&this.showPasskeyMode(this.stateValue.viewModel.mode)}openRecovery(){let e=this.stateValue;if(e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`)return;let t={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}};this.invalidatePreparation(),this.recoveryReturnState=t,this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:t,viewModel:X({base:e.viewModel})},this.updateElement()}closeRecovery(){let e=this.stateValue;if(e.kind!==`recovery`)return;let t=e.returnState;this.invalidateRecovery(),this.recoveryReturnState=null,this.stateValue=t,this.updateElement(),this.preparePasskey=t.viewModel.mode===`login`?this.prepareSelectedLogin:null,this.startPasskeyPreparation()}changeRecoveryCode(e){let t=this.stateValue;t.kind!==`recovery`||t.stage!==`enter_code`||(this.stateValue={...t,viewModel:{...t.viewModel,recoveryCode:e,recoveryCodeError:null}},this.updateElement())}submitRecoveryCode(){let e=this.stateValue;if(e.kind!==`recovery`||e.stage!==`enter_code`)return;let t=tn(e.viewModel.recoveryCode);if(t){this.stateValue={...e,viewModel:{...e.viewModel,recoveryCodeError:t}},this.updateElement();return}this.stateValue={...e,stage:`choose_method`,viewModel:X({base:e.viewModel,recoveryCode:e.viewModel.recoveryCode,stage:`choose_method`})},this.updateElement()}returnToRecoveryCode(){let e=this.stateValue;e.kind!==`recovery`||e.stage!==`choose_method`||(this.stateValue={...e,stage:`enter_code`,viewModel:X({base:e.viewModel,recoveryCode:e.viewModel.recoveryCode})},this.updateElement())}prepareRecovery(e=`passkey`){let t=this.stateValue;if(t.kind!==`recovery`||t.stage!==`choose_method`)return;let n=t.viewModel.recoveryCode.trim(),r;try{r=this.recoveryPort.targetFor(e)}catch{this.stateValue={...t,viewModel:X({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,stage:`choose_method`,status:$({kind:`refused`})})},this.updateElement();return}let i=++this.recoveryGeneration,a=new AbortController;this.recoveryCancellation=a,this.stateValue={...t,stage:`preparing`,viewModel:X({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,stage:`preparing`,target:r,status:{kind:`busy`,headline:`Checking recovery code…`}})},this.updateElement();let o;try{o=this.recoveryPort.prepare({recoveryCode:n,target:r,signal:a.signal})}catch{this.rejectRecoveryPreparation(i);return}o.then(this.completeRecoveryPreparation.bind(this,i),this.rejectRecoveryPreparation.bind(this,i))}completeRecoveryPreparation(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`){t.kind===`hosted_recovery_prepared`&&this.recoveryPort.cancel(t).catch(K);return}if(this.recoveryCancellation=null,t.kind!==`hosted_recovery_prepared`){this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:n.returnState,viewModel:X({base:n.viewModel,recoveryCode:n.viewModel.recoveryCode,status:$(t)})},this.updateElement();return}if(nn(t)){this.stateValue={kind:`recovery`,stage:`passkey_ready`,operation:t,returnState:n.returnState,viewModel:X({base:n.viewModel,walletId:String(t.walletId),recoveryCode:``,stage:`passkey_ready`,target:t.target})},this.createRecoveryPasskey();return}let r={kind:`recovery`,stage:`google_ready`,operation:t,returnState:n.returnState,viewModel:X({base:n.viewModel,walletId:String(t.walletId),recoveryCode:``,stage:`google_ready`,target:t.target})};this.stateValue=r,this.requestRecoveryGoogleVerification(`google`,r)||(this.stateValue={...r,viewModel:X({base:r.viewModel,walletId:Z(r.viewModel),stage:`google_ready`,target:r.operation.target,status:{kind:`recoverable`,reason:`error`,message:`Google sign-in is unavailable. Try again.`}})},this.updateElement())}rejectRecoveryPreparation(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||(this.recoveryCancellation=null,this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:t.returnState,viewModel:X({base:t.viewModel,recoveryCode:t.viewModel.recoveryCode,status:$({kind:`transport_uncertain`})})},this.updateElement())}startRecoveryGoogleVerification(e,t){let n=++this.recoveryGeneration;this.recoveryPort.verifyGoogle(e.operation,t).then(this.completeRecoveryGoogleVerification.bind(this,n),this.rejectRecoveryGoogleVerification.bind(this,n))}completeRecoveryGoogleVerification(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`google_external_auth`){t.kind===`hosted_recovery_google_verified`&&this.recoveryPort.cancel(t).catch(K);return}if(t.kind!==`hosted_recovery_google_verified`){this.showRecoveryGoogleVerificationFailure(n,t);return}this.stateValue={kind:`recovery`,stage:`email_code_required`,operation:t,returnState:n.returnState,viewModel:X({base:n.viewModel,walletId:String(t.walletId),stage:`email_code_required`,target:t.target,challengeId:t.challengeId,emailHint:t.delivery.emailHint,delivery:t.delivery})},this.updateElement()}rejectRecoveryGoogleVerification(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`google_external_auth`||this.showRecoveryGoogleVerificationFailure(t,{kind:`transport_uncertain`})}showRecoveryGoogleVerificationFailure(e,t){this.stateValue={kind:`recovery`,stage:`google_ready`,operation:e.operation,returnState:e.returnState,viewModel:X({base:e.viewModel,walletId:Z(e.viewModel),stage:`google_ready`,target:e.operation.target,status:$(t)})},this.updateElement()}changeRecoveryGoogleOtpCode(e){let t=this.stateValue;if(t.kind!==`recovery`||t.stage!==`email_code_required`)return;let n=e.replace(/\D/g,``).slice(0,6);this.stateValue={...t,viewModel:X({base:t.viewModel,walletId:Z(t.viewModel),stage:`email_code_required`,target:t.operation.target,challengeId:t.operation.challengeId,emailHint:t.operation.delivery.emailHint,delivery:t.operation.delivery,otpCode:n})},this.updateElement(),/^\d{6}$/.test(n)&&this.submitRecoveryGoogleOtp()}submitRecoveryGoogleOtp(){let e=this.stateValue;if(e.kind===`recovery`&&e.stage===`finalizing`&&e.operation.kind===`hosted_recovery_email_otp_verified`&&e.viewModel.status.kind===`recoverable`){this.finishRecovery(e.operation);return}if(e.kind!==`recovery`||e.stage!==`email_code_required`)return;let t=e.viewModel.otpCode.trim();if(!/^\d{6}$/.test(t))return;let n=++this.recoveryGeneration;this.stateValue={...e,viewModel:X({base:e.viewModel,walletId:Z(e.viewModel),stage:`email_code_required`,target:e.operation.target,challengeId:e.operation.challengeId,emailHint:e.operation.delivery.emailHint,delivery:e.operation.delivery,otpCode:t,status:{kind:`busy`,headline:`Verifying email code…`}})},this.updateElement(),this.recoveryPort.verifyEmailOtp(e.operation,{challengeId:e.operation.challengeId,otpCode:t}).then(this.completeRecoveryEmailOtpVerification.bind(this,n),this.rejectRecoveryEmailOtpVerification.bind(this,n))}completeRecoveryEmailOtpVerification(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`email_code_required`){t.kind===`hosted_recovery_email_otp_verified`&&this.recoveryPort.cancel(t).catch(K);return}if(t.kind!==`hosted_recovery_email_otp_verified`){this.showRecoveryEmailOtpFailure(n,t);return}this.finishRecovery(t)}rejectRecoveryEmailOtpVerification(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`email_code_required`||this.showRecoveryEmailOtpFailure(t,{kind:`transport_uncertain`})}showRecoveryEmailOtpFailure(e,t){this.stateValue={...e,viewModel:X({base:e.viewModel,walletId:Z(e.viewModel),stage:`email_code_required`,target:e.operation.target,challengeId:e.operation.challengeId,emailHint:e.operation.delivery.emailHint,delivery:e.operation.delivery,otpCode:e.viewModel.otpCode,status:$(t)})},this.updateElement()}createRecoveryPasskey(){let e=this.stateValue;if(e.kind!==`recovery`)return;if(e.stage===`finalizing`&&e.operation.kind===`hosted_recovery_credential_created`&&e.viewModel.status.kind===`recoverable`){this.finishRecovery(e.operation);return}if(e.stage!==`passkey_ready`)return;let t=++this.recoveryGeneration,n;try{n=this.recoveryPort.createPasskey(e.operation)}catch{this.showRecoveryCreateFailure(e,{kind:`refused`});return}this.stateValue={...e,stage:`finalizing`,viewModel:X({base:e.viewModel,walletId:Z(e.viewModel),stage:`finalizing`,target:Q(e.viewModel),status:{kind:`busy`,headline:`Creating new passkey…`}})},this.updateElement(),n.then(this.completeRecoveryCredentialCreation.bind(this,t),this.rejectRecoveryCredentialCreation.bind(this,t))}completeRecoveryCredentialCreation(e,t){let n=this.stateValue;if(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`finalizing`||n.operation.kind!==`hosted_recovery_prepared`){t.kind===`hosted_recovery_credential_created`&&this.recoveryPort.cancel(t).catch(K);return}if(t.kind!==`hosted_recovery_credential_created`){this.showRecoveryCreateFailure({returnState:n.returnState,viewModel:n.viewModel,operation:n.operation},t);return}this.finishRecovery(t)}rejectRecoveryCredentialCreation(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`finalizing`||t.operation.kind!==`hosted_recovery_prepared`||this.showRecoveryCreateFailure({returnState:t.returnState,viewModel:t.viewModel,operation:t.operation},{kind:`refused`})}showRecoveryCreateFailure(e,t){if(!nn(e.operation)){this.recoveryPort.cancel(e.operation).catch(K),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:e.returnState,viewModel:X({base:e.viewModel,recoveryCode:``,status:$(t)})},this.updateElement();return}if(t.kind===`refused`){this.recoveryPort.cancel(e.operation).catch(K),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:e.returnState,viewModel:X({base:e.viewModel,recoveryCode:``,status:$(t)})},this.updateElement();return}this.stateValue={kind:`recovery`,stage:`passkey_ready`,operation:e.operation,returnState:e.returnState,viewModel:X({base:e.viewModel,walletId:Z(e.viewModel),stage:`passkey_ready`,target:e.operation.target,status:yn(t)})},this.updateElement()}finishRecovery(e){let t=this.stateValue;if(t.kind!==`recovery`)return;let n=++this.recoveryGeneration;this.stateValue={kind:`recovery`,stage:`finalizing`,operation:e,returnState:t.returnState,viewModel:X({base:t.viewModel,walletId:Z(t.viewModel),stage:`finalizing`,target:Q(t.viewModel),status:{kind:`busy`,headline:`Finishing recovery…`}})},this.updateElement();let r;try{r=this.recoveryPort.finalize(e)}catch{this.rejectRecoveryFinalization(n);return}r.then(this.completeRecoveryFinalization.bind(this,n),this.rejectRecoveryFinalization.bind(this,n))}completeRecoveryFinalization(e,t){let n=this.stateValue;if(!(e!==this.recoveryGeneration||n.kind!==`recovery`||n.stage!==`finalizing`||n.operation.kind!==`hosted_recovery_credential_created`&&n.operation.kind!==`hosted_recovery_email_otp_verified`)){if(t.kind!==`ready_for_sign_in`){t.kind===`refused`?(this.recoveryPort.cancel(n.operation).catch(()=>{}),this.stateValue={kind:`recovery`,stage:`enter_code`,returnState:n.returnState,viewModel:X({base:n.viewModel,status:$(t)})}):this.stateValue={...n,viewModel:X({base:n.viewModel,walletId:Z(n.viewModel),stage:`finalizing`,target:Q(n.viewModel),status:vn()})},this.updateElement();return}if(n.operation.target.kind===`passkey`){this.prepareRecoveredPasskeyLogin(t.walletId,n.returnState);return}this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n.returnState,viewModel:X({base:n.viewModel,walletId:String(t.walletId),stage:`sign_in_ready`,target:n.operation.target})},this.updateElement()}}rejectRecoveryFinalization(e){let t=this.stateValue;e!==this.recoveryGeneration||t.kind!==`recovery`||t.stage!==`finalizing`||t.operation.kind!==`hosted_recovery_credential_created`&&t.operation.kind!==`hosted_recovery_email_otp_verified`||(this.stateValue={...t,viewModel:X({base:t.viewModel,walletId:Z(t.viewModel),stage:`finalizing`,target:Q(t.viewModel),status:vn()})},this.updateElement())}prepareRecoveredPasskeyLogin(e,t){let n=this.stateValue;if(n.kind!==`recovery`)return;let r=++this.recoveryGeneration,i=new AbortController;this.recoveryCancellation=i;let a=this.prepareRecoveredLogin(e,{kind:`abort_signal`,signal:i.signal});this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:t,viewModel:X({base:n.viewModel,walletId:String(e),stage:`sign_in_ready`,target:Q(n.viewModel),status:{kind:`busy`,headline:`Preparing to unlock…`}})},this.updateElement(),a.then(this.completeRecoveredLoginPreparation.bind(this,r,t),this.rejectRecoveredLoginPreparation.bind(this,r,e,t))}completeRecoveredLoginPreparation(e,n,r){let i=this.stateValue;if(e!==this.recoveryGeneration||i.kind!==`recovery`){G(r);return}if(this.recoveryCancellation=null,r.kind!==`hosted_passkey_owner_login_prepared_v1`&&r.kind!==`hosted_passkey_linked_authority_login_prepared_v1`){G(r);let a=t(Z(i.viewModel));if(!a.ok)return;this.rejectRecoveredLoginPreparation(e,a.value,n);return}this.recoveryLoginPrepared=r,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:X({base:i.viewModel,walletId:Z(i.viewModel),stage:`sign_in_ready`,target:Q(i.viewModel)})},this.updateElement()}rejectRecoveredLoginPreparation(e,t,n){let r=this.stateValue;e!==this.recoveryGeneration||r.kind!==`recovery`||(this.recoveryCancellation=null,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:X({base:r.viewModel,walletId:String(t),stage:`sign_in_ready`,target:Q(r.viewModel),status:{kind:`recoverable`,reason:`error`,message:`Your wallet was recovered. Unlock it again to continue.`}})},this.updateElement())}signInRecoveredWallet(){let e=this.stateValue;if(e.kind!==`recovery`||e.stage!==`sign_in_ready`)return;if(e.viewModel.target.kind===`google_email_otp`){this.requestExternalAuth(`google`);return}let n=this.recoveryLoginPrepared;if(!n){let n=t(Z(e.viewModel));if(!n.ok)return;this.prepareRecoveredPasskeyLogin(n.value,e.returnState);return}this.recoveryLoginPrepared=null,this.performPreparedPasskey(n)}openLinkDevice(){let e=this.stateValue;if(e.kind!==`preparing`&&e.kind!==`ready`||e.viewModel.kind!==`passkey`)return;let t={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}};this.invalidatePreparation(),this.linkedDeviceActivationInProgress=!1,this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.linkedDeviceTargetFactor={kind:`passkey_prf`},this.linkedDeviceTargetEmailAddress=``,this.stateValue={kind:`link_device`,returnState:t,viewModel:_n(e.viewModel)},this.updateElement()}selectLinkedDeviceTargetFactor(e){let t=this.stateValue;t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`select_factor`||(this.linkedDeviceTargetFactor=e,this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:e.kind===`email_otp`?{kind:`select_factor`,targetFactor:e,targetEmail:this.linkedDeviceTargetEmailAddress}:{kind:`select_factor`,targetFactor:e}}},this.updateElement())}changeLinkedDeviceTargetEmailAddress(e){let t=this.stateValue;t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`select_factor`||t.viewModel.linkDevice.targetFactor.kind!==`email_otp`||(this.linkedDeviceTargetEmailAddress=e,this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{kind:`select_factor`,targetFactor:t.viewModel.linkDevice.targetFactor,targetEmail:e}}},this.updateElement())}startSelectedDeviceLinking(){let e=this.stateValue;if(e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`select_factor`)return;let t=e.viewModel.linkDevice,n;try{if(t.targetFactor.kind===`email_otp`){let e=t.targetEmail;if(typeof e!=`string`)throw Error(`linked-device target email address is unavailable`);n=on({targetFactor:t.targetFactor,targetEmail:e})}else n=on({targetFactor:t.targetFactor})}catch(t){this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{...e.viewModel.linkDevice,error:Y(t)}}},this.updateElement();return}let r=++this.deviceLinkGeneration;this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`loading`,message:`Generating QR code...`}}},this.updateElement(),this.startDeviceLinking(n,{onEvent:this.onLinkDeviceEvent.bind(this,r),onTargetFactorRequired:this.onTargetFactorRequired.bind(this,r)}).then(this.completeLinkDeviceOpen.bind(this,r)).catch(this.failLinkDeviceOpen.bind(this,r))}onLinkDeviceEvent(e,t){let n=this.stateValue;if(e!==this.deviceLinkGeneration||n.kind!==`link_device`)return;let r=Se(t);switch(r.kind){case`active`:if(this.linkedDeviceActivationInProgress)return;this.linkedDeviceActivationInProgress=!0,this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:r.walletId,method:this.linkedDeviceTargetFactor.kind===`email_otp`?`google_email_otp`:`passkey`});return;case`invalid_active`:this.showLinkedDeviceActivationError(n,Error(`Linked-device activation omitted its wallet identity`));return;case`failed`:if(t.error?.code===O.SESSION_EXPIRED){this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`expired`,message:`This linking request expired. Start again to link this device.`}}},this.updateElement();return}if(t.error?.code===O.DELIVERY_RECOVERY_REQUIRED){this.showLinkedDeviceActivationError(n,Error(t.message||`Go back and unlock the new linked method to finish setup.`));return}break;case`cancelled`:this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`cancelled`,message:`The other device cancelled this linking request. Go back to try again.`}}},this.updateElement();return;case`pending`:break;default:return Sn(r)}let i=t.message?.trim();if(!i)return;let a=n.viewModel.linkDevice,o=a.kind===`email_otp_required`?a:a.kind===`ready`||a.kind===`passkey_required`||a.kind===`creating_passkey`?{...a,message:i}:{kind:`loading`,message:i};this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:o}},this.updateElement()}showLinkedDeviceActivationError(e,t){this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`activation_error`,message:Y(t)}}},this.updateElement()}completeLinkDeviceOpen(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||this.linkedDeviceActivationInProgress||n.viewModel.linkDevice.kind!==`loading`||(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:this.targetPasskeyActivation?{kind:`passkey_required`,message:`Create a passkey to finish linking this device`}:{kind:`ready`,qrCodeDataURL:t.qrCodeDataURL,message:`Waiting for device to scan`}}},this.updateElement())}onTargetFactorRequired(e,t){switch(t.kind){case`linked_device_target_passkey_activation_v1`:this.onTargetPasskeyActivation(e,t);return;case`linked_device_target_email_otp_activation_v1`:this.onTargetEmailOtpActivation(e,t);return;default:return Cn(t)}}onTargetPasskeyActivation(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||(this.targetPasskeyActivation=t,n.viewModel.linkDevice.kind===`ready`&&(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`passkey_required`,message:`Create a passkey to finish linking this device`}}},this.updateElement()))}onTargetEmailOtpActivation(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||(this.targetEmailOtpActivation=t,this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`email_otp_required`,state:t.state,otpCode:n.viewModel.linkDevice.kind===`email_otp_required`?n.viewModel.linkDevice.otpCode:``}}},this.updateElement(),t.state.kind===`sending`&&!this.linkedDeviceEmailOtpSendStarted&&(this.linkedDeviceEmailOtpSendStarted=!0,t.sendCode().catch(this.failLinkedDeviceEmailOtp.bind(this))))}changeLinkedDeviceEmailOtpCode(e){let t=this.stateValue;if(t.kind!==`link_device`||t.viewModel.linkDevice.kind!==`email_otp_required`)return;let n=e.replace(/\D/g,``).slice(0,6),r=t.viewModel.linkDevice.otpCode,i=t.viewModel.linkDevice.state;this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{...t.viewModel.linkDevice,otpCode:n}}},this.updateElement(),n.length===6&&n!==r&&(i.kind===`code_input`||i.kind===`incorrect`)&&this.submitLinkedDeviceEmailOtpCode(n)}resendLinkedDeviceEmailOtp(){let e=this.targetEmailOtpActivation;e&&e.resendCode().catch(this.failLinkedDeviceEmailOtp.bind(this))}submitLinkedDeviceEmailOtp(){let e=this.stateValue;e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`email_otp_required`||e.viewModel.linkDevice.otpCode.length!==6||this.submitLinkedDeviceEmailOtpCode(e.viewModel.linkDevice.otpCode)}submitLinkedDeviceEmailOtpCode(e){let t=this.targetEmailOtpActivation;t&&t.submitCode(e).catch(this.failLinkedDeviceEmailOtp.bind(this))}failLinkedDeviceEmailOtp(e){let t=this.stateValue;t.kind===`link_device`&&this.showLinkedDeviceActivationError(t,e)}createLinkedDevicePasskey(){let e=this.stateValue,t=this.targetPasskeyActivation;!t||e.kind!==`link_device`||e.viewModel.linkDevice.kind!==`passkey_required`||(this.targetPasskeyActivation=null,this.stateValue={...e,viewModel:{...e.viewModel,linkDevice:{kind:`creating_passkey`,message:`Follow the passkey prompt on your screen`}}},this.updateElement(),t.createPasskey().catch(this.failTargetPasskeyCreation.bind(this)))}failTargetPasskeyCreation(e){let t=this.stateValue;t.kind===`link_device`&&(this.stateValue={...t,viewModel:{...t.viewModel,linkDevice:{kind:`error`,message:Y(e)}}},this.updateElement())}failLinkDeviceOpen(e,t){let n=this.stateValue;e!==this.deviceLinkGeneration||n.kind!==`link_device`||this.linkedDeviceActivationInProgress||n.viewModel.linkDevice.kind!==`loading`||(this.stateValue={...n,viewModel:{...n.viewModel,linkDevice:{kind:`error`,message:Y(t)}}},this.updateElement())}closeLinkDevice(){let e=this.stateValue;e.kind===`link_device`&&(this.deviceLinkGeneration+=1,this.targetPasskeyActivation=null,this.targetEmailOtpActivation=null,this.linkedDeviceEmailOtpSendStarted=!1,this.cancelDeviceLinking().catch(()=>{}),this.stateValue=e.returnState,this.updateElement(),this.startPasskeyPreparation())}rerollRegistrationWallet(){let e=this.stateValue;e.kind!==`ready`&&e.kind!==`preparing`||e.viewModel.kind!==`passkey`||e.viewModel.mode!==`register`||!e.viewModel.passkeyNameReadOnly||!e.viewModel.showRegistrationInput||(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,passkeyName:String(xe()),status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation())}selectLoginAccount(e,t){let n=this.loginAccountOptions.find(n=>n.walletId===e&&n.authMethod===t);if(!n||n.walletId===this.selectedLoginAccount?.walletId&&n.authMethod===this.selectedLoginAccount.authMethod)return;let r=this.stateValue;if(r.kind!==`preparing`&&r.kind!==`ready`||r.viewModel.kind!==`passkey`||r.viewModel.mode!==`login`)return;let i=n.walletId!==this.selectedLoginAccount?.walletId;if(this.selectedLoginAccount=n,!i){this.updateLoginSelectionViewModel(),this.updateElement();return}this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...r.viewModel,selectedAccount:n,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.activateSelectedLoginMethod()}retryPreparation(){let e=this.stateValue;e.kind!==`preparing`||e.viewModel.kind!==`passkey`||e.viewModel.status.kind!==`recoverable`||(this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation())}updateGoogleOtpCode(e){let t=this.stateValue;if(t.kind!==`google_login`||t.viewModel.submitBusy)return;let n=e.replace(/\D/g,``).slice(0,6);this.stateValue={...t,viewModel:{...t.viewModel,otpCode:n,error:``}},this.updateElement(),/^\d{6}$/.test(n)&&this.submitGoogleOtp()}resendGoogleOtp(){let e=this.stateValue;if(e.kind!==`google_login`||e.viewModel.resendBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Sending a new email code`},resendBusy:!0,error:``}},this.updateElement(),un(t.resend()).then(n=>{if(this.stateValue.kind!==`google_login`||this.stateValue.flow!==t){n.ok&&n.value.cancel().catch(()=>{});return}if(!n.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:n.error.message}},this.updateElement();return}if(n.value.mode!==`login`){n.value.cancel().catch(()=>{}),this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:`Google returned an unexpected registration flow.`}},this.updateElement();return}let r=n.value;this.stateValue={kind:`google_login`,flow:r,viewModel:mn({base:e.viewModel,flow:r})},this.updateElement()},e=>{this.stateValue.kind!==`google_login`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},resendBusy:!1,error:Y(e)}},this.updateElement())})}submitGoogleOtp(){let e=this.stateValue;if(e.kind!==`google_login`||e.viewModel.submitBusy)return;let t=e.viewModel.otpCode;if(!/^\d{6}$/.test(t)){this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`idle`,interaction:`actionable`},error:`Enter the 6-digit code from your email.`}},this.updateElement();return}let n=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Verifying your email code`},submitBusy:!0,error:``}},this.updateElement(),n.submit({otpCode:t}).then(e=>{if(!(this.stateValue.kind!==`google_login`||this.stateValue.flow!==n)){if(!e.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:e.error.message}},this.updateElement();return}if(e.value.mode!==`login`){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:`Google returned an unexpected registration result.`}},this.updateElement();return}this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.value.walletId,method:`google_email_otp`})}},e=>{this.stateValue.kind!==`google_login`||this.stateValue.flow!==n||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:Y(e)}},this.updateElement())})}rerollGoogleRegistration(){let e=this.stateValue;if(e.kind!==`google_registration`||e.viewModel.rerollBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Generating another wallet name`},rerollBusy:!0,error:``}},this.updateElement(),t.rerollWalletId().then(n=>{if(this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t){n.ok&&n.value.cancel().catch(()=>{});return}if(!n.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:n.error.message}},this.updateElement();return}if(n.value.mode!==`register`){n.value.cancel().catch(()=>{}),this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:`Google returned an unexpected login flow.`}},this.updateElement();return}let r=n.value;this.stateValue={kind:`google_registration`,flow:r,viewModel:hn({base:e.viewModel,flow:r})},this.updateElement()},e=>{this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},rerollBusy:!1,error:Y(e)}},this.updateElement())})}completeGoogleRegistration(){let e=this.stateValue;if(e.kind!==`google_registration`||e.viewModel.submitBusy)return;let t=e.flow;this.stateValue={...e,viewModel:{...e.viewModel,status:{kind:`busy`,headline:`Creating your wallet`},submitBusy:!0,error:``}},this.updateElement(),t.completeRegistration().then(e=>{if(!(this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t)){if(!e.ok){this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:e.error.message}},this.updateElement();return}this.complete({kind:`registered`,authMenuSessionId:this.identity.authMenuSessionId,walletId:e.value.walletId,method:`google_email_otp`})}},e=>{this.stateValue.kind!==`google_registration`||this.stateValue.flow!==t||(this.stateValue={...this.stateValue,viewModel:{...this.stateValue.viewModel,status:{kind:`idle`,interaction:`actionable`},submitBusy:!1,error:Y(e)}},this.updateElement())})}complete(e,t=`menu`){if(this.stateValue.kind===`complete`)return;let n=this.surface?this.currentViewModel():null;if(this.stateValue={kind:`complete`,outcome:e},t===`menu`&&n&&an(e)&&this.showSuccess(n,e,`shown`)){this.invalidatePreparation(),this.successTimers=[setTimeout(this.showSuccess.bind(this,n,e,`leaving`),sn),setTimeout(this.finish.bind(this,e),sn+240)];return}this.finish(e)}showSuccess(e,t,n){let r=he(e,{kind:`succeeded`,...fe(t.kind),phase:n});return!r||!this.surface?!1:(this.surface.update(r),!0)}finish(e){this.cleanup();let t=this.outcomeResolver;this.outcomeResolver=null,t?.(e)}showRegistrationDelay=e=>{if(e.phase!==Ce.STEP_05_ED25519_SIGNER_PROVISION_DELAYED&&e.phase!==Ce.STEP_06_RELAY_BOOTSTRAP_DELAYED)return;let t=this.stateValue;if(t.kind!==`performing`)return;let n=t.viewModel;n.kind!==`passkey`||n.status.kind!==`busy`||(this.stateValue={...t,viewModel:{...n,status:{kind:`busy`,headline:e.message}}},this.updateElement())};performPreparedPasskey(e){this.prepared=null;let t=this.currentViewModel();if(this.stateValue={kind:`performing`,prepared:e,viewModel:t.kind===`recovery`?X({base:t,walletId:Z(t),stage:`sign_in_ready`,target:Q(t),status:{kind:`busy`,headline:pe(`login`),illustration:`passkey`,detail:`Continue with your passkey`}}):{...t,status:{kind:`busy`,headline:pe(t.mode),illustration:`passkey`,detail:`Continue with your passkey`}}},e.kind===`hosted_passkey_owner_login_prepared_v1`||e.kind===`hosted_passkey_linked_authority_login_prepared_v1`){this.updateElement(),this.finishPreparedPasskey(e);return}let n;try{n=this.startPreparedCredential(e)}catch(t){this.updateElement(),this.failPreparedPasskey(e,t);return}this.updateElement(),n.then(()=>this.finishPreparedPasskey(e),t=>this.failPreparedPasskey(e,t))}startPreparedCredential(e){return e.kind===`hosted_passkey_registration_prepared_v1`?Fe(e):Xt(e)}async finishPreparedPasskey(e){try{switch(e.kind){case`hosted_passkey_registration_prepared_v1`:{let t=await je({prepared:e});this.completeRegistrationResult(t);return}case`hosted_passkey_owner_login_prepared_v1`:case`hosted_passkey_linked_authority_login_prepared_v1`:{let t=await Qt(e);this.completeLoginResult(t);return}case`hosted_passkey_account_sync_prepared_v1`:{let t=await $t(e);this.completeAccountSyncResult(t);return}default:return wn(e)}}catch(t){this.failPreparedPasskey(e,t)}}completeRegistrationResult(e){if(!e.success||e.kind!==`wallet_registered`&&e.kind!==`ecdsa_wallet_registered_near_pending`){this.fail({kind:`error`,error:Error(e.success?`Hosted registration returned an unexpected result`:e.error)});return}let n=t(String(e.walletId));if(!n.ok){this.fail({kind:`error`,error:Error(`Hosted registration returned an invalid wallet id`)});return}this.complete({kind:`registered`,authMenuSessionId:this.identity.authMenuSessionId,walletId:n.value,method:`passkey`})}completeLoginResult(e){let n=e.result;if(!n.success){this.fail(e.cancelledByUser?{kind:`dismissed`}:{kind:`error`,error:Error(n.error)});return}let r=t(String(n.walletId));if(!r.ok){this.fail({kind:`error`,error:Error(`Hosted login returned an invalid wallet id`)});return}this.complete({kind:`authenticated`,authMenuSessionId:this.identity.authMenuSessionId,walletId:r.value,method:`passkey`})}completeAccountSyncResult(e){if(!e.success){this.fail({kind:`error`,error:Error(e.error)});return}let n=t(String(e.walletId));if(!n.ok){this.fail({kind:`error`,error:Error(`Hosted account sync returned an invalid wallet id`)});return}this.complete({kind:`account_synced`,authMenuSessionId:this.identity.authMenuSessionId,walletId:n.value})}failPreparedPasskey(e,t){if(!(this.stateValue.kind!==`performing`||this.stateValue.prepared!==e)){if(this.preparationCancellation?.signal.aborted){this.fail({kind:`dismissed`});return}if(l(t)){this.fail({kind:`dismissed`});return}this.fail({kind:`error`,error:t})}}fail(e){if(this.stateValue.kind!==`performing`)return;let t=this.stateValue.viewModel;if(G(this.stateValue.prepared),this.prepared=null,t.kind===`recovery`){let n=this.recoveryReturnState;if(!n)return;this.recoveryLoginPrepared=null,this.stateValue={kind:`recovery`,stage:`sign_in_ready`,returnState:n,viewModel:X({base:t,walletId:Z(t),stage:`sign_in_ready`,target:Q(t),status:e.kind===`dismissed`?{kind:`idle`,interaction:`actionable`}:h(Y(e.error))})},this.updateElement();return}if(e.kind===`dismissed`){this.invalidatePreparation(),this.stateValue={kind:`preparing`,viewModel:{...t,status:{kind:`idle`,interaction:`arming`}}},this.updateElement(),this.startPasskeyPreparation();return}this.stateValue={kind:`preparing`,viewModel:{...t,status:h(Y(e.error))}},this.updateElement()}};function xn(e){throw Error(`Unhandled auth-menu intent: ${String(e)}`)}function Sn(e){throw Error(`Unhandled link-device flow outcome: ${String(e)}`)}function Cn(e){throw Error(`Unhandled linked-device target-factor activation: ${String(e)}`)}function wn(e){throw Error(`Unhandled hosted passkey preparation: ${String(e)}`)}function Tn(e){throw Error(`Unhandled hosted external-auth evidence: ${String(e)}`)}function En(e,t){e.inert=!0,e.classList.add(`seams-auth-card-leaving`);let n={left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,margin:`0px`};return e.animate([{...n,opacity:1},{...n,opacity:0}],{duration:150,easing:`ease-out`,fill:`both`})}function Dn(e,t){return t.walletId===e&&t.authMethod===`voiceid`}function On(e){return`${e.walletId}:${e.authMethod}`}function kn(e,t){let n=String(e.walletId);switch(e.authMethod){case`passkey`:return{walletId:n,authMethod:`passkey`};case`email_otp`:return{walletId:n,authMethod:`email_otp`,emailAddress:e.emailAddress??(t?.authMethod===`email_otp`?t.emailAddress:null)}}}function An(e,t=[]){let n=new Map;for(let t of e?.accounts??[]){if(t.authMethod!==S.passkey&&t.authMethod!==S.emailOtp)continue;let e=String(t.walletId||``).trim();if(!e)continue;let r=t.authMethod===S.passkey?{walletId:e,authMethod:`passkey`}:{walletId:e,authMethod:`email_otp`,emailAddress:null};n.set(On(r),r)}for(let e of t){let t=String(e.walletId||``).trim();if(!t)continue;let r=`${t}:${e.authMethod}`,i=kn(e,n.get(r));n.set(r,i)}return[...n.values()]}function jn(e,t){let n=e?.lastUsedAccount;if(n?.authMethod===S.passkey||n?.authMethod===S.emailOtp||n?.authMethod===`voiceid`){let e=String(n.walletId||``).trim(),r=t.find(t=>t.walletId===e&&t.authMethod===n.authMethod);if(r)return r;let i=t.find(Nn.bind(null,e));if(i)return i}return t[0]??null}function Mn(e){let t=e?.lastUsedAccount;return!t||t.authMethod!==S.passkey&&t.authMethod!==`linked_device`?null:String(t.walletId||``).trim()||null}function Nn(e,t){return t.walletId===e}async function Pn(e){let t=await import(`./recovery-entrypoint-DJbMDC_m.js`),n=e();return t.createHostedRecoveryPort({context:n.getContext(),relayUrl:String(n.configs.network.relayer.url)})}var Fn=class{portPromise=null;constructor(e){this.getWalletRuntime=e}targetFor(t){if(t===`google_email_otp`)return{kind:t,googleProvider:`google`};let n=e(this.getWalletRuntime().getContext().signingEngine.getRpId());if(!n.ok)throw Error(`wallet recovery RP ID ${n.error.message}`);return{kind:t,rpId:n.value}}async prepare(e){return await(await this.port()).prepare(e)}async createPasskey(e){return await(await this.port()).createPasskey(e)}async verifyGoogle(e,t){return await(await this.port()).verifyGoogle(e,t)}async verifyEmailOtp(e,t){return await(await this.port()).verifyEmailOtp(e,t)}async finalize(e){return await(await this.port()).finalize(e)}async cancel(e){await(await this.port()).cancel(e)}port(){return this.portPromise??=Pn(this.getWalletRuntime),this.portPromise}};function In(){try{let e=document.referrer.trim();if(e){let t=new URL(e).hostname.trim();if(t)return t}}catch{}return window.location.hostname||`Wallet`}function Ln(e){switch(e.kind){case`discoverable`:return null;case`wallet`:case`wallet_sync`:return String(e.walletId)}}function Rn(e){window.setTimeout(e,0)}function zn(){return new Promise(Rn)}function Bn(e,t){return new Promise(n=>{let r=window.setTimeout(()=>n(null),t);e.then(e=>{window.clearTimeout(r),n(e)},()=>{window.clearTimeout(r),n(null)})})}var Vn=class{sessions=new Map;constructor(e){this.deps=e}async open(e){if(!e.requestId)throw Error(`Hosted auth-menu open request requires requestId`);let t=c(e.requestId);if(this.sessions.has(e.request.authMenuSessionId))throw Error(`Hosted auth-menu session is already active`);let n=new bn({request:e.request,requestId:t,appearance:this.deps.getAppearance(),hostname:In(),beginGoogleEmailOtp:async({idToken:e,authTarget:t,signal:n})=>await this.beginGoogleEmailOtp({idToken:e,authTarget:t,signal:n}),startDeviceLinking:this.startDeviceLinking,cancelDeviceLinking:this.cancelDeviceLinking,recoveryPort:new Fn(this.deps.getWalletRuntime),prepareRecoveredLogin:this.prepareRecoveredLogin.bind(this,t,e.request.authMenuSessionId),sendToParent:this.deps.send}),r=n.waitForOutcome(),i=Ln(e.request.loginTarget),a=this.readLoginAccounts();this.sessions.set(e.request.authMenuSessionId,n);try{let o=await Bn(a,50);return n.state.kind===`complete`?await r:(o&&this.applyLoginAccounts(n,t,e.request.loginTarget,o),n.mount(),await zn(),n.setRegistrationPreparation((r,i,a)=>this.prepareRegistration(e.request,t,n.identity.authMenuSessionId,r,i,a)),!o&&i?await this.bootstrapLoginAccounts(n,t,e.request.loginTarget,a):o||(n.setLoginPreparation({accountOptions:[],selectedAccount:null,prepare:(r,i)=>this.prepareLogin(t,n.identity.authMenuSessionId,i,r,null,e.request.loginTarget)}),this.bootstrapLoginAccounts(n,t,e.request.loginTarget,a)),await r)}finally{n.cleanup(),this.sessions.delete(e.request.authMenuSessionId)}}async readLoginAccounts(){let[e,t]=await Promise.all([this.deps.getWalletRuntime().auth.getRecentUnlocks().catch(()=>null),E().catch(()=>[])]),n=[],r=this.deps.getWalletRuntime();if(r.configs.authMethods.some(Hn))try{for(let e of await De.listWalletSelectionWalletIds())try{let t=await r.registration.getAuthMethodAvailability({walletId:e,method:`voiceid`});t.kind===`enabled`&&n.push({walletId:e,authMethod:`voiceid`,walletAuthMethodId:t.walletAuthMethodId})}catch{}}catch{}return{recentUnlocks:e,localAuthMethods:t,voiceAccounts:n}}async bootstrapLoginAccounts(e,t,n,r){this.applyLoginAccounts(e,t,n,await r)}applyLoginAccounts(e,t,n,{recentUnlocks:r,localAuthMethods:i,voiceAccounts:a}){if(e.state.kind===`complete`)return;let o=Ln(n),s=[...An(r,i),...a],c=o?s.filter(e=>e.walletId===o):s,l=c.length>0||!o?c:[{walletId:o,authMethod:S.passkey}];e.setVoiceLogin(this.deps.getWalletRuntime().auth.unlockWithAuthMethod),e.setLoginPreparation({accountOptions:l,selectedAccount:o?l[0]??null:jn(r,l),prepare:(i,a)=>this.prepareLogin(t,e.identity.authMenuSessionId,a,i,r,n)}),i.length>0&&e.defaultToLoginForDetectedLocalWallet()}async prepareLogin(e,t,n,r,i,a){let o=Ut(this.deps.getWalletRuntime().getContext()),s=i??await this.deps.getWalletRuntime().auth.getRecentUnlocks().catch(()=>null),c=(await E().catch(()=>[])).find(e=>e.authMethod===S.passkey),l=r||Mn(s)||c?.walletId||null;return a.kind===`wallet_sync`?await U({context:o,walletId:String(a.walletId),authMenuSessionId:t,requestId:e,cancellation:n}):l?await Yt({context:o,walletId:l,authMenuSessionId:t,requestId:e,cancellation:n}):await U({context:o,walletId:l,authMenuSessionId:t,requestId:e,cancellation:n})}async prepareRecoveredLogin(e,t,n,r){return await Yt({context:Ut(this.deps.getWalletRuntime().getContext()),walletId:String(n),authMenuSessionId:t,requestId:e,cancellation:r})}async beginGoogleEmailOtp(e){if(e.signal.aborted)throw Error(`Google sign-in was cancelled`);let t=await this.deps.getWalletRuntime().auth.startGoogleSignIn({idToken:e.idToken,...e.authTarget});if(!t.ok)throw Error(t.error.message);let n=t.value;if(e.signal.aborted)throw await n.cancel().catch(()=>{}),Error(`Google sign-in was cancelled`);return n}startDeviceLinking=async(e,t)=>await this.deps.getWalletRuntime().devices.startLinking({...e,options:t});cancelDeviceLinking=async()=>await this.deps.getWalletRuntime().devices.cancelLinking();async prepareRegistration(t,n,r,i,a,o){let s=this.deps.getWalletRuntime().getContext(),c=e(String(s.signingEngine.getRpId()||``));if(!c.ok)throw Error(c.error.message);let l={kind:`provided`,walletId:be(i)},u=Ae({configs:s.configs,wallet:l,preference:t.registrationAccountInput===`sponsored_named_near_account`?{kind:`relayer_named_subaccount`}:{kind:`implicit_account`}});return await Pe({context:s,wallet:l,signerSelection:Ne({configs:s.configs,accountProvisioning:u,options:{}}),authMethod:{kind:`passkey`,rpId:c.value},authMenuSessionId:r,requestId:n,cancellation:a,options:{onEvent:o}})}cancel(e){let t=this.sessions.get(e.authMenuSessionId);return!t||t.identity.requestId!==e.requestId?!1:(t.cancel(e.reason),!0)}resolveExternalAuth(e){let t=this.sessions.get(e.authMenuSessionId);return!t||t.identity.requestId!==e.requestId?!1:t.acceptExternalAuthResolution(e)}};function Hn(e){return e.kind===`voiceid`}function Un(e,t=new Vn({getWalletRuntime:e.getWalletRuntime,getAppearance:()=>e.getWalletRuntime().configs.ui.appearance,send:e.post})){return{PM_OPEN_AUTH_MENU:async n=>{let r=a(n.payload);if(!r)throw Error(`Hosted auth-menu open request is invalid`);let i=await t.open({request:r,requestId:n.requestId});(i.kind===`authenticated`||i.kind===`registered`||i.kind===`account_synced`)&&await e.publishCurrentSession(),!e.respondIfCancelled(n.requestId)&&k(e,n.requestId,i)},PM_CANCEL_AUTH_MENU:async n=>{let r=s(n.payload);if(!r)throw Error(`Hosted auth-menu cancellation is invalid`);let i=t.cancel(r);k(e,n.requestId,{cancelled:i})},PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH:async n=>{let r=i(n.payload);if(!r)throw Error(`Hosted auth-menu external-auth resolution is invalid`);let a=t.resolveExternalAuth(r);k(e,n.requestId,{accepted:a})}}}function Wn(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.options&&typeof t.options==`object`&&!Array.isArray(t.options)?t.options:null,r=n?.ecdsaKeyFactsInventory&&typeof n.ecdsaKeyFactsInventory==`object`&&!Array.isArray(n.ecdsaKeyFactsInventory)?n.ecdsaKeyFactsInventory:null,i=r?.value&&typeof r.value==`object`&&!Array.isArray(r.value)?r.value:null;if(i&&(Object.prototype.hasOwnProperty.call(i,`walletSessionToken`)||Object.prototype.hasOwnProperty.call(i,`operationCredential`)))throw Error(`wallet iframe unlock requests must not carry a Wallet Session bearer`)}function Gn(e,t){let n=e.ecdsaKeyFactsInventory,{ecdsaKeyFactsInventory:r,...i}=e;if(!n)return i;if(n.mode===`webauthn`)return{...i,ecdsaKeyFactsInventory:n};let a=Qe(t);if(!a)throw Error(`Hosted-wallet Wallet Session is required for opaque key-facts lookup`);return{...i,ecdsaKeyFactsInventory:{mode:`wallet_session_operation_credential_v1`,operationCredential:a}}}function Kn(e,t){return String(t?.walletId||``).trim()||String(e.preferences.getCurrentWalletId()||``).trim()||void 0}function qn(e){console.warn(`[WalletIframeHost] Restored-session presignature prefill failed:`,e)}function Jn(e,t,n,r,i){e.respondIfCancelled(n)||(k(e,n,i),r.authenticationRead===`restore`&&t.prefillRestoredWalletSession(i.state).catch(qn))}function Yn(e){return{...Un(e),PM_UNLOCK_AUTH_METHOD:async t=>{let n=e.getWalletRuntime();if(!t.payload)throw Error(`Plugin unlock payload is required.`);if(e.respondIfCancelled(t.requestId))return;let r=await n.auth.unlockWithAuthMethod(t.payload,Xn.bind(null,e,t.requestId));e.respondIfCancelled(t.requestId)||(await e.publishCurrentSession(),k(e,t.requestId,r))},PM_UNLOCK:async t=>{let n=e.getWalletRuntime();Wn(t.payload);let r=ut(t.payload),i=Gn(dt(r),n.configs.network.relayer.url);if(e.respondIfCancelled(t.requestId))return;let a=await n.auth.unlock(r.walletId,rt(e,t.requestId,i));e.respondIfCancelled(t.requestId)||(a.success||D(),await e.publishCurrentSession(),!e.respondIfCancelled(t.requestId)&&k(e,t.requestId,a))},PM_LOCK:async t=>{let n=e.getWalletRuntime();D(),await n.auth.lock(),it(e,t.requestId)},PM_LOCK_EXACT_WALLET_SESSION:async t=>{let n=e.getWalletRuntime(),r=Ve(t.payload),i=await qe(n,{authenticationRead:`current`,wallet:{kind:`current`}},new Oe);if(i.kind!==`active_session`&&i.kind!==`expired_session`||!Ke(i,r)){k(e,t.requestId,{kind:`stale_session`,expected:r,current:i});return}D(),await n.auth.lock(),k(e,t.requestId,{kind:`locked`,identity:r})},...at(e),PM_GET_WALLET_SESSION:async t=>{let n=e.getWalletRuntime(),r=Kn(n,t.payload),i=await n.auth.getSession(r);k(e,t.requestId,i)},PM_GET_EXACT_WALLET_SESSION_STATE:async t=>{let n=e.getWalletRuntime(),r=t.payload;if(!r||r.authenticationRead!==`restore`&&r.authenticationRead!==`current`||!r.wallet||r.wallet.kind!==`current`&&r.wallet.kind!==`exact`||r.authenticationRead===`restore`&&r.wallet.kind!==`current`)throw Error(`Wallet iframe exact session read mode is invalid`);await e.observeSession(r,Jn.bind(null,e,n,t.requestId,r))},PM_GET_RECENT_UNLOCKS:async t=>{let n=await e.getWalletRuntime().auth.getRecentUnlocks();k(e,t.requestId,n)}}}function Xn(e,t){if(e.isCancelled(t))throw Error(`Wallet unlock was cancelled.`)}async function Zn(e){await Je(e,Yn)}export{Zn as handleWalletHostRuntimeRequest};
@@ -0,0 +1 @@
1
+ import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import{c as e,l as t}from"./sessionObservationRevision-JOvVF4Hf.js";import"./capabilityKinds-DVlGMspk.js";import"./errors-BJBDbwHk.js";import"./csp-stylesheet-DUSqfXvZ.js";import"./signerDomain-BAsLT3XN.js";import"./registrationIntent-Do1tD1V7.js";import"./presignatures-BCeq56DG.js";import"./accountIds-CW2BP-d9.js";import{W as n,_ as r,h as i,m as a}from"./device-linking-DiCNt3iA.js";import"./walletAuthority-BTGAuOi8.js";import"./digestEncoding-CqNXPZY9.js";import"./walletAuthMethodRecord-DLBB5fez.js";import"./signerSlot-D2RZnb27.js";import{c as o}from"./sdkSentEvents-DjOlKtdW.js";import"./indexedDB-C4SDsyOG.js";import"./keccak-mS0Mejjx.js";import"./registrationSignerPlan-DK2b3N_p.js";import"./walletCapabilityBindings-D5YYB7nN.js";import"./emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js";import"./nearEd25519YaoMaterialActivation-BfXmy3Jr.js";import"./wallet-recovery-BZB2Vu3X.js";import"./signNear-DMpJFkwF.js";import"./appearance-token-vars-BJydfWT_.js";import{handleWalletHostRuntimeRequestWithHandlers as s}from"./runtimeContext-5JcewRo3.js";import{n as c,r as l,t as u}from"./shared-CkHhXgFB.js";function d(e,t,n,r){return n?(e.get(n)?.reject(Error(`A newer Email OTP method selection is required`)),new Promise((i,a)=>{let o=setTimeout(()=>f(e,n,Error(`Email OTP method selection timed out`)),9e5);e.set(n,{choices:r,resolve:e=>{clearTimeout(o),i(e)},reject:e=>{clearTimeout(o),a(e instanceof Error?e:Error(String(e)))}}),t.postProgress(n,{event:`wallet_device_link_email_otp_base_factor_selection_required_v1`,choices:r})})):Promise.reject(Error(`Device-link request id is required`))}function f(e,t,n){if(!t)return;let r=e.get(t);r&&(e.delete(t),r.reject(n))}function p(e,t){let n=e.get(t.scanRequestId);if(!n)throw Error(`Email OTP method selection is unavailable`);switch(t.action.kind){case`cancel`:e.delete(t.scanRequestId),n.reject(Error(`Device linking was cancelled`));return;case`select`:{let r=t.action.baseWalletAuthMethodId;if(!n.choices.some(e=>e.baseWalletAuthMethodId===r))throw Error(`The selected Email OTP method is unavailable for this linked device`);e.delete(t.scanRequestId),n.resolve(r);return}default:throw t.action,Error(`Unsupported Email OTP method selection action`)}}function m(e){switch(e.activation.kind){case`linked_device_target_passkey_activation_v1`:return{event:`wallet_device_link_target_factor_activation_v1`,activationId:e.activationId,activation:{kind:e.activation.kind}};case`linked_device_target_email_otp_activation_v1`:return{event:`wallet_device_link_target_factor_activation_v1`,activationId:e.activationId,activation:{kind:e.activation.kind,state:e.activation.state}};default:throw e.activation,Error(`Unsupported linked-device target-factor activation`)}}async function h(e){switch(e.action.kind){case`create_passkey`:if(e.active.activation.kind!==`linked_device_target_passkey_activation_v1`)throw Error(`linked-device Passkey activation is unavailable`);await e.active.activation.createPasskey();return;case`send_email_otp`:if(e.active.activation.kind!==`linked_device_target_email_otp_activation_v1`)throw Error(`linked-device Email OTP activation is unavailable`);await e.active.activation.sendCode();return;case`resend_email_otp`:if(e.active.activation.kind!==`linked_device_target_email_otp_activation_v1`)throw Error(`linked-device Email OTP activation is unavailable`);await e.active.activation.resendCode();return;case`submit_email_otp`:if(e.active.activation.kind!==`linked_device_target_email_otp_activation_v1`)throw Error(`linked-device Email OTP activation is unavailable`);await e.active.activation.submitCode(e.action.otpCode);return;default:throw e.action,Error(`Unsupported linked-device target-factor action`)}}function g(e,t,n,r,i){e.current={activationId:r,activation:i},t.postProgress(n,m(e.current))}function _(e,t,n,r){t.postProgress(n,r);let i=o(r);(i.kind===`active`||i.kind===`failed`||i.kind===`invalid_active`||i.kind===`cancelled`)&&(e.current=null)}function v(o){let s={current:null},m=new Map;return{PM_START_DEVICE2_LINKING_FLOW:async e=>{let t=o.getWalletRuntime(),n=e.payload;if(!n)throw Error(`PM_START_DEVICE2_LINKING_FLOW requires a payload`);let{ui:r,cameraId:i,options:a}=n,l;if(n.targetFactor.kind===`email_otp`){if(typeof n.targetEmail!=`string`)throw Error(`PM_START_DEVICE2_LINKING_FLOW requires targetEmail for Email OTP`);l={targetFactor:n.targetFactor,targetEmail:n.targetEmail}}else l={targetFactor:n.targetFactor};if(o.respondIfCancelled(e.requestId))return;let u=String(e.requestId||``).trim();if(!u)throw Error(`Device-link target-factor activation id is required`);let d=await t.devices.startLinking({...l,...r?{ui:r}:{},...i?{cameraId:i}:{},options:{...a||{},onEvent:_.bind(null,s,o,e.requestId),onTargetFactorRequired:g.bind(null,s,o,e.requestId,u)}});o.respondIfCancelled(e.requestId)||c(o,e.requestId,d)},PM_DEVICE_LINK_TARGET_FACTOR_ACTION:async e=>{let n=t(e.payload);if(!n)throw Error(`PM_DEVICE_LINK_TARGET_FACTOR_ACTION payload is invalid`);let r=s.current;if(!r||r.activationId!==n.activationId)throw Error(`linked-device target-factor activation is unavailable`);await h({active:r,action:n.action}),u(o,e.requestId)},PM_DEVICE_LINK_EMAIL_OTP_BASE_FACTOR_ACTION:async t=>{let n=e(t.payload);if(!n)throw Error(`Email OTP method selection payload is invalid`);p(m,n),u(o,t.requestId)},PM_CANCEL_DEVICE_LINKING:async e=>{let t=o.getWalletRuntime();if(!o.respondIfCancelled(e.requestId)){await t.devices.cancelLinking(),s.current=null;for(let e of[...m.keys()])f(m,e,Error(`Device linking was cancelled`));o.respondIfCancelled(e.requestId)||u(o,e.requestId)}},PM_SCAN_AND_LINK_DEVICE:async e=>{let t=o.getWalletRuntime(),{qrData:r,options:i}=e.payload;if(!o.respondIfCancelled(e.requestId))try{let a=await t.devices.approveLinking(n(r),{...l(o,e.requestId,i||{}),onEmailOtpBaseFactorRequired:t=>d(m,o,e.requestId,t)});if(o.respondIfCancelled(e.requestId))return;c(o,e.requestId,a)}finally{f(m,e.requestId,Error(`Device-link request ended before Email OTP method selection completed`))}},PM_HAS_PASSKEY:async e=>{let t=o.getWalletRuntime(),{walletId:n}=e.payload,r=await t.auth.hasPasskey(n);c(o,e.requestId,r)},PM_LIST_LINKED_DEVICES:async e=>{let t=o.getWalletRuntime(),n=e.payload;if(!n)throw Error(`PM_LIST_LINKED_DEVICES requires a payload`);let r=a({kind:`linked_device_list_request_v1`,walletId:n.walletId,limit:n.limit,cursor:n.cursor}),s=await t.devices.list({walletId:String(r.walletId),limit:r.limit,cursor:r.cursor});c(o,e.requestId,i(s))},PM_REVOKE_LINKED_DEVICE:async e=>{let t=o.getWalletRuntime(),n=e.payload;if(!n)throw Error(`PM_REVOKE_LINKED_DEVICE requires a payload`);if(o.respondIfCancelled(e.requestId))return;let i=await t.devices.remove({walletId:n.walletId,walletAuthMethodId:n.walletAuthMethodId});o.respondIfCancelled(e.requestId)||c(o,e.requestId,r(i))}}}async function y(e){await s(e,v)}export{y as handleWalletHostRuntimeRequest};
@@ -0,0 +1 @@
1
+ import"./walletDbName-Ca0rCq5r.js";import"./activeWalletSession-BJ4B-nJo.js";import"./signingSessionSeal-BFOBKj-J.js";import"./capabilityKinds-DVlGMspk.js";import"./errors-BJBDbwHk.js";import"./csp-stylesheet-DUSqfXvZ.js";import"./signerDomain-BAsLT3XN.js";import"./registrationIntent-Do1tD1V7.js";import"./presignatures-BCeq56DG.js";import"./accountIds-CW2BP-d9.js";import"./device-linking-DiCNt3iA.js";import"./walletAuthority-BTGAuOi8.js";import"./digestEncoding-CqNXPZY9.js";import"./walletAuthMethodRecord-DLBB5fez.js";import"./signerSlot-D2RZnb27.js";import"./indexedDB-C4SDsyOG.js";import"./keccak-mS0Mejjx.js";import"./registrationSignerPlan-DK2b3N_p.js";import"./walletCapabilityBindings-D5YYB7nN.js";import"./emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js";import"./nearEd25519YaoMaterialActivation-BfXmy3Jr.js";import"./wallet-recovery-BZB2Vu3X.js";import"./signNear-DMpJFkwF.js";import"./appearance-token-vars-BJydfWT_.js";import{handleWalletHostRuntimeRequestWithHandlers as e,t}from"./runtimeContext-5JcewRo3.js";import{n,t as r}from"./shared-CkHhXgFB.js";function i(e){return{PM_SIGN_TEMPO:async r=>{let i=e.getWalletRuntime(),{walletSession:a,request:o,chainTarget:s,options:c}=r.payload;if(e.respondIfCancelled(r.requestId))return;let l={confirmationConfig:c?.confirmationConfig,shouldAbort:()=>e.isCancelled(r.requestId),onEvent:t=>{e.postProgress(r.requestId,t)}},u;switch(r.payload.operationKind){case`tempo_transaction`:if(o.chain!==`tempo`)throw Error(`[wallet-iframe] Tempo operation requires a Tempo request`);if(s.kind!==`tempo`)throw Error(`[wallet-iframe] Tempo request requires a Tempo target`);u=await i.tempo.signTransaction({walletSession:a,request:o,chainTarget:s,options:l});break;case`evm_transaction`:if(o.chain!==`evm`)throw Error(`[wallet-iframe] EVM operation requires an EVM request`);if(s.kind!==`evm`)throw Error(`[wallet-iframe] EVM request requires an EVM target`);u=await i.evm.signTransaction({walletSession:a,request:o,chainTarget:s,options:l});break;case`tempo_fee_token_preference`:{if(o.chain!==`evm`||s.kind!==`tempo`)throw Error(`[wallet-iframe] Tempo fee-token operation requires an EVM request and Tempo target`);let e=t({request:o,chainTarget:s});u=await i.signTempoFeeTokenPreferenceInternal({walletSession:a,request:e,chainTarget:s,confirmationConfigOverride:l.confirmationConfig,shouldAbort:l.shouldAbort,onEvent:l.onEvent});break}default:throw Error(`[wallet-iframe] unsupported EVM-family signing operation`)}e.respondIfCancelled(r.requestId)||n(e,r.requestId,u)},PM_REPORT_TEMPO_BROADCAST_ACCEPTED:async t=>{let n=e.getWalletRuntime(),{walletSession:i,signedResult:a,txHash:o}=t.payload;e.respondIfCancelled(t.requestId)||(await n.tempo.advanced.reportBroadcastAccepted({walletSession:i,signedResult:a,txHash:o,options:{onEvent:n=>e.postProgress(t.requestId,n)}}),!e.respondIfCancelled(t.requestId)&&r(e,t.requestId))},PM_REPORT_TEMPO_BROADCAST_REJECTED:async t=>{let n=e.getWalletRuntime(),{walletSession:i,signedResult:a,error:o}=t.payload;e.respondIfCancelled(t.requestId)||(await n.tempo.advanced.reportBroadcastRejected({walletSession:i,signedResult:a,...o?{error:o}:{},options:{onEvent:n=>e.postProgress(t.requestId,n)}}),!e.respondIfCancelled(t.requestId)&&r(e,t.requestId))},PM_REPORT_TEMPO_FINALIZED:async t=>{let n=e.getWalletRuntime(),{walletSession:i,signedResult:a,txHash:o,receiptStatus:s}=t.payload;e.respondIfCancelled(t.requestId)||(await n.tempo.advanced.reportFinalized({walletSession:i,signedResult:a,...o?{txHash:o}:{},...s?{receiptStatus:s}:{},options:{onEvent:n=>e.postProgress(t.requestId,n)}}),!e.respondIfCancelled(t.requestId)&&r(e,t.requestId))},PM_REPORT_TEMPO_DROPPED_OR_REPLACED:async t=>{let n=e.getWalletRuntime(),{walletSession:i,signedResult:a,reason:o,txHash:s}=t.payload;e.respondIfCancelled(t.requestId)||(await n.tempo.advanced.reportDroppedOrReplaced({walletSession:i,signedResult:a,reason:o,...s?{txHash:s}:{},options:{onEvent:n=>e.postProgress(t.requestId,n)}}),!e.respondIfCancelled(t.requestId)&&r(e,t.requestId))},PM_RECONCILE_TEMPO_NONCE_LANE:async t=>{let r=e.getWalletRuntime(),{walletSession:i,signedResult:a}=t.payload;if(e.respondIfCancelled(t.requestId))return;let o=await r.tempo.advanced.reconcileNonceLane({walletSession:i,signedResult:a,options:{onEvent:n=>e.postProgress(t.requestId,n)}});e.respondIfCancelled(t.requestId)||n(e,t.requestId,o)}}}async function a(t){await e(t,i)}export{a as handleWalletHostRuntimeRequest};