@seams/wallet 0.23.0 → 0.24.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 (601) hide show
  1. package/README.md +19 -2
  2. package/THIRD_PARTY_NOTICES.md +182 -5
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +1 -0
  5. package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +3 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/authMenuAnchor.js +44 -0
  7. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +4 -6
  8. package/dist/esm/SeamsWeb/walletIframe/client/registrationCommands.js +12 -0
  9. package/dist/esm/SeamsWeb/walletIframe/client/router.js +67 -31
  10. package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +4 -0
  11. package/dist/esm/SeamsWeb/walletIframe/client/surface/geometry.js +2 -2
  12. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +2 -2
  13. package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +22 -3
  14. package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +6 -2
  15. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -3
  16. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +81 -19
  17. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +1 -4
  18. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +7 -11
  19. package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +86 -0
  20. package/dist/esm/SeamsWeb/walletIframe/shared/configuration.js +23 -1
  21. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
  22. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +7 -1
  23. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +20 -1
  24. package/dist/esm/core/authMethods/availability.js +28 -0
  25. package/dist/esm/core/authMethods/availabilityTypes.js +29 -0
  26. package/dist/esm/core/authMethods/plugins.js +17 -0
  27. package/dist/esm/core/config/configBuilder.js +2 -0
  28. package/dist/esm/core/config/defaultConfigs.js +1 -0
  29. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +41 -2
  30. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +3 -0
  31. package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +1 -1
  32. package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +1 -1
  33. package/dist/esm/core/signingEngine/flows/signEvmFamily/authPlanning.js +2 -1
  34. package/dist/esm/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +29 -12
  35. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -0
  36. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +2 -1
  37. package/dist/esm/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +1 -0
  38. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +1 -1
  39. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +5 -0
  40. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +16 -12
  41. package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +2 -3
  42. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +16 -1
  43. package/dist/esm/core/signingEngine/session/identity/signingLaneAuthBinding.js +6 -0
  44. package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +3 -0
  45. package/dist/esm/core/signingEngine/session/operationState/lanes.js +21 -4
  46. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +94 -0
  47. package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +1 -0
  48. package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +19 -2
  49. package/dist/esm/core/signingEngine/uiConfirm/ui/confirmation-model.js +3 -1
  50. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +6 -0
  51. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +59 -23
  52. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +13 -0
  53. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +48 -16
  54. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +146 -9
  55. package/dist/esm/core/signingEngine/walletCustody/ceremonyStepRunner.js +8 -0
  56. package/dist/esm/core/signingEngine/walletCustody/resealedEnvelopeResult.js +24 -0
  57. package/dist/esm/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +74 -0
  58. package/dist/esm/core/signingEngine/workerManager/workerDeferred.js +25 -0
  59. package/dist/esm/core/ui/messages.js +15 -4
  60. package/dist/esm/externalNear/controller.js +36 -0
  61. package/dist/esm/externalNear/hot.js +1 -0
  62. package/dist/esm/externalNear/intear.js +1 -0
  63. package/dist/esm/externalNear/message.js +60 -0
  64. package/dist/esm/externalNear/meteor.js +12 -0
  65. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +10 -22
  66. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +2 -2
  67. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +7 -4
  68. package/dist/esm/react/components/AccountMenuButton/AddEvmAccount.js +124 -0
  69. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +41 -23
  70. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +220 -164
  71. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +7 -5
  72. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +142 -36
  73. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +11 -2
  74. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +12 -10
  75. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +1 -1
  76. package/dist/esm/react/components/AccountMenuButton/VoiceIdAvailabilityControl.js +186 -0
  77. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +10 -8
  78. package/dist/esm/react/components/AccountMenuButton/icons/ChevronRightIcon.js +8 -0
  79. package/dist/esm/react/components/AccountMenuButton/icons/WalletIcon.js +8 -0
  80. package/dist/esm/react/components/AccountMenuButton/index.js +35 -13
  81. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +8 -4
  82. package/dist/esm/react/context/useLoginStateRefresher.js +10 -2
  83. package/dist/esm/react/index.js +2 -4
  84. package/dist/esm/react/styles/styles.css +22 -332
  85. package/dist/esm/react/styles.css +0 -1
  86. package/dist/esm/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  87. package/dist/esm/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  88. package/dist/esm/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  89. package/dist/esm/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  90. package/dist/esm/sdk/actions-GYsSR2Q2.js +1 -0
  91. package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  92. package/dist/esm/sdk/adapters-D5MZ5NG5.js +2 -0
  93. package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  94. package/dist/esm/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  95. package/dist/esm/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  96. package/dist/esm/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  97. package/dist/esm/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  98. package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  99. package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  100. package/dist/esm/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  101. package/dist/esm/sdk/configBuilder-DrxXNUpV.js +1 -0
  102. package/dist/esm/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  103. package/dist/esm/sdk/configuration-CAqANpTI.js +1 -0
  104. package/dist/esm/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  105. package/dist/esm/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  106. package/dist/esm/sdk/domainIds-t1lp25yU.js +1 -0
  107. package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  108. package/dist/esm/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  109. package/dist/esm/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  110. package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  111. package/dist/esm/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  112. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  113. package/dist/esm/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  114. package/dist/esm/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  115. package/dist/esm/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  116. package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  117. package/dist/esm/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
  118. package/dist/esm/sdk/host-C0Is56lU.js +1 -0
  119. package/dist/esm/sdk/icons-DyndJzSh.js +1 -0
  120. package/dist/esm/sdk/indexedDB-C1odKEC6.js +1 -0
  121. package/dist/esm/sdk/intentDigest-BMXki7yB.js +1 -0
  122. package/dist/esm/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  123. package/dist/esm/sdk/lanes-C7OvAK_L.js +1 -0
  124. package/dist/esm/sdk/localOnly-BB3Rx3J6.js +1 -0
  125. package/dist/esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  126. package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  127. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  128. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  129. package/dist/esm/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  130. package/dist/esm/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  131. package/dist/esm/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  132. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  133. package/dist/esm/sdk/presignaturePool-CultzkOG.js +1 -0
  134. package/dist/esm/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  135. package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  136. package/dist/esm/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  137. package/dist/esm/sdk/registration-CM5a7WYO.js +1 -0
  138. package/dist/esm/sdk/registration-Hv0xi7-L.js +1 -0
  139. package/dist/esm/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  140. package/dist/esm/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  141. package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +1 -0
  142. package/dist/esm/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  143. package/dist/esm/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
  144. package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  145. package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  146. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  147. package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +1 -0
  148. package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  149. package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  150. package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  151. package/dist/esm/sdk/runtime-export-upMPrZ4V.js +1 -0
  152. package/dist/esm/sdk/runtime-near-B64Hn3nc.js +1 -0
  153. package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +1 -0
  154. package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +1 -0
  155. package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  156. package/dist/esm/sdk/runtimeContext-CNFJjcns.js +6 -0
  157. package/dist/{public/sdk/sdkSentEvents-BzMVO1AR.js → esm/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  158. package/dist/{public/sdk/secp256k1-CYu8ENjP.js → esm/sdk/secp256k1-BGVlx50C.js} +1 -1
  159. package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  160. package/dist/esm/sdk/shared-DcHtE-D-.js +1 -0
  161. package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  162. package/dist/{public/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → esm/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  163. package/dist/esm/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  164. package/dist/esm/sdk/signNear-r8VCOoTh.js +1 -0
  165. package/dist/esm/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  166. package/dist/esm/sdk/signerDomain-D-EUTlLK.js +1 -0
  167. package/dist/esm/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  168. package/dist/{public/sdk/signingFlow-Co_QtuHK.js → esm/sdk/signingFlow-BVvteILM.js} +1 -1
  169. package/dist/{public/sdk/signingQueue-Cj9sCJLj.js → esm/sdk/signingQueue-BJzOrwDq.js} +1 -1
  170. package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  171. package/dist/{public/sdk/thresholdEcdsa-LvkD6z8-.js → esm/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  172. package/dist/esm/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  173. package/dist/esm/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  174. package/dist/esm/sdk/transactionReview-DSGnpreN.js +1 -0
  175. package/dist/esm/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  176. package/dist/{public/sdk/transactionState-BaFSiA9t.js → esm/sdk/transactionState-BS1VLT7B.js} +1 -1
  177. package/dist/esm/sdk/tx-confirm-ui.js +418 -109
  178. package/dist/esm/sdk/types-DdzuHlAQ.js +1 -0
  179. package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  180. package/dist/esm/sdk/voiceid-host.js +1 -0
  181. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  182. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  183. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  184. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  185. package/dist/esm/sdk/wallet-recovery-BjIQdOha.js +1 -0
  186. package/dist/esm/sdk/wallet-ui.css +1 -1
  187. package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  188. package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  189. package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  190. package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  191. package/dist/esm/sdk/walletDbName-DDJXrgA5.js +1 -0
  192. package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  193. package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  194. package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  195. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  196. package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  197. package/dist/{public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → esm/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  198. package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  199. package/dist/esm/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  200. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +4 -1
  201. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +11 -2
  202. package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +110 -0
  203. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +1 -0
  204. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +1 -0
  205. package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +17 -9
  206. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +62 -3
  207. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
  208. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +5 -2
  209. package/dist/esm/shared-ts/src/utils/domainIds.js +14 -1
  210. package/dist/esm/shared-ts/src/utils/signerDomain.js +4 -2
  211. package/dist/esm/shared-ts/src/utils/validation.js +4 -1
  212. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +46 -2
  213. package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +116 -6
  214. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +39 -1
  215. package/dist/esm/voiceid-host.js +47 -0
  216. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  217. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  218. package/dist/public/headers.manifest.json +1 -1
  219. package/dist/public/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  220. package/dist/public/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  221. package/dist/public/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  222. package/dist/public/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  223. package/dist/public/sdk/actions-GYsSR2Q2.js +1 -0
  224. package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  225. package/dist/public/sdk/adapters-D5MZ5NG5.js +2 -0
  226. package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  227. package/dist/public/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  228. package/dist/public/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  229. package/dist/public/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  230. package/dist/public/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  231. package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  232. package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  233. package/dist/public/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  234. package/dist/public/sdk/configBuilder-DrxXNUpV.js +1 -0
  235. package/dist/public/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  236. package/dist/public/sdk/configuration-CAqANpTI.js +1 -0
  237. package/dist/public/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  238. package/dist/public/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  239. package/dist/public/sdk/domainIds-t1lp25yU.js +1 -0
  240. package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  241. package/dist/public/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  242. package/dist/public/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  243. package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  244. package/dist/public/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  245. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  246. package/dist/public/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  247. package/dist/public/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  248. package/dist/public/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  249. package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  250. package/dist/public/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
  251. package/dist/public/sdk/host-C0Is56lU.js +1 -0
  252. package/dist/public/sdk/icons-DyndJzSh.js +1 -0
  253. package/dist/public/sdk/indexedDB-C1odKEC6.js +1 -0
  254. package/dist/public/sdk/intentDigest-BMXki7yB.js +1 -0
  255. package/dist/public/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  256. package/dist/public/sdk/lanes-C7OvAK_L.js +1 -0
  257. package/dist/public/sdk/localOnly-BB3Rx3J6.js +1 -0
  258. package/dist/public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  259. package/dist/public/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  260. package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  261. package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  262. package/dist/public/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  263. package/dist/public/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  264. package/dist/public/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  265. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  266. package/dist/public/sdk/presignaturePool-CultzkOG.js +1 -0
  267. package/dist/public/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  268. package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  269. package/dist/public/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  270. package/dist/public/sdk/registration-CM5a7WYO.js +1 -0
  271. package/dist/public/sdk/registration-Hv0xi7-L.js +1 -0
  272. package/dist/public/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  273. package/dist/public/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  274. package/dist/public/sdk/registrationIntent-DTs2SR9E.js +1 -0
  275. package/dist/public/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  276. package/dist/public/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
  277. package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  278. package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  279. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  280. package/dist/public/sdk/runtime-auth-CVw1KoVD.js +1 -0
  281. package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  282. package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  283. package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  284. package/dist/public/sdk/runtime-export-upMPrZ4V.js +1 -0
  285. package/dist/public/sdk/runtime-near-B64Hn3nc.js +1 -0
  286. package/dist/public/sdk/runtime-preferences-CULdHkbg.js +1 -0
  287. package/dist/public/sdk/runtime-recovery-D2saBaJy.js +1 -0
  288. package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  289. package/dist/public/sdk/runtimeContext-CNFJjcns.js +6 -0
  290. package/dist/{esm/sdk/sdkSentEvents-BzMVO1AR.js → public/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  291. package/dist/{esm/sdk/secp256k1-CYu8ENjP.js → public/sdk/secp256k1-BGVlx50C.js} +1 -1
  292. package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  293. package/dist/public/sdk/shared-DcHtE-D-.js +1 -0
  294. package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  295. package/dist/{esm/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → public/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  296. package/dist/public/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  297. package/dist/public/sdk/signNear-r8VCOoTh.js +1 -0
  298. package/dist/public/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  299. package/dist/public/sdk/signerDomain-D-EUTlLK.js +1 -0
  300. package/dist/public/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  301. package/dist/{esm/sdk/signingFlow-Co_QtuHK.js → public/sdk/signingFlow-BVvteILM.js} +1 -1
  302. package/dist/{esm/sdk/signingQueue-Cj9sCJLj.js → public/sdk/signingQueue-BJzOrwDq.js} +1 -1
  303. package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  304. package/dist/{esm/sdk/thresholdEcdsa-LvkD6z8-.js → public/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  305. package/dist/public/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  306. package/dist/public/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  307. package/dist/public/sdk/transactionReview-DSGnpreN.js +1 -0
  308. package/dist/public/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  309. package/dist/{esm/sdk/transactionState-BaFSiA9t.js → public/sdk/transactionState-BS1VLT7B.js} +1 -1
  310. package/dist/public/sdk/tx-confirm-ui.js +418 -109
  311. package/dist/public/sdk/types-DdzuHlAQ.js +1 -0
  312. package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  313. package/dist/public/sdk/voiceid-host.js +1 -0
  314. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  315. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  316. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  317. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  318. package/dist/public/sdk/wallet-recovery-BjIQdOha.js +1 -0
  319. package/dist/public/sdk/wallet-ui.css +1 -1
  320. package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  321. package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  322. package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  323. package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  324. package/dist/public/sdk/walletDbName-DDJXrgA5.js +1 -0
  325. package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  326. package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  327. package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  328. package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  329. package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  330. package/dist/{esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → public/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  331. package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  332. package/dist/public/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  333. package/dist/public/sdk/workers/device-linking-key.worker.js +93 -5
  334. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +67 -65
  335. package/dist/public/sdk/workers/email-otp.worker.js +93 -4
  336. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +21 -2
  337. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  338. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +20 -2
  339. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  340. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  341. package/dist/public/wallet-assets.manifest.json +503 -239
  342. package/dist/public/wallet-service/index.html +4 -4
  343. package/dist/types/shared-ts/src/authorization/voiceIdDeviceAssertion.d.ts +32 -0
  344. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -1
  345. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -0
  346. package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +4 -4
  347. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +29 -0
  348. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -0
  349. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -2
  350. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +2 -1
  351. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +10 -2
  352. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +2 -2
  353. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +9 -0
  354. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +3 -3
  355. package/dist/types/shared-ts/src/utils/domainIds.d.ts +4 -5
  356. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +0 -1
  357. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -0
  358. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +32 -2
  359. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +15 -1
  360. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +20 -0
  361. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.d.ts +2 -2
  362. package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
  363. package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -1
  364. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +22 -0
  365. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -0
  366. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +2 -0
  367. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/authMenuAnchor.d.ts +17 -0
  368. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +4 -0
  369. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/geometry.d.ts +0 -1
  370. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +2 -1
  371. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  372. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +15 -0
  373. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +2 -1
  374. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +7 -2
  375. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
  376. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +3 -0
  377. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -0
  378. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +0 -1
  379. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +2 -2
  380. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +2 -0
  381. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +15 -4
  382. package/dist/types/wallet/src/core/authMethods/availability.d.ts +13 -0
  383. package/dist/types/wallet/src/core/authMethods/availabilityTypes.d.ts +13 -0
  384. package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +82 -0
  385. package/dist/types/wallet/src/core/authMethods/hostRegistry.d.ts +5 -0
  386. package/dist/types/wallet/src/core/authMethods/installSession.d.ts +15 -0
  387. package/dist/types/wallet/src/core/authMethods/plugins.d.ts +7 -0
  388. package/dist/types/wallet/src/core/authMethods/prepareEcdsaSession.d.ts +6 -0
  389. package/dist/types/wallet/src/core/authMethods/prepareNearSession.d.ts +18 -0
  390. package/dist/types/wallet/src/core/authMethods/sessionIdentity.d.ts +53 -0
  391. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +11 -1
  392. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +53 -2
  393. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  394. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -1
  395. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportMaterial.d.ts +6 -3
  396. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.d.ts +8 -2
  397. package/dist/types/wallet/src/core/signingEngine/session/availability/availableSigningLanes.d.ts +10 -10
  398. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +1 -1
  399. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +3 -1
  400. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +16 -4
  401. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +13 -4
  402. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +15 -6
  403. package/dist/types/wallet/src/core/signingEngine/session/operationState/lanes.d.ts +11 -4
  404. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +3 -3
  405. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.d.ts +6 -0
  406. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodSelection.d.ts +1 -1
  407. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -1
  408. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +6 -0
  409. package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +11 -1
  410. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirm-ui-types.d.ts +2 -0
  411. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirmation-model.d.ts +1 -1
  412. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +1 -0
  413. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +4 -0
  414. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +1 -1
  415. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +2 -2
  416. package/dist/types/wallet/src/core/signingEngine/walletCustody/resealedEnvelopeResult.d.ts +10 -0
  417. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -1
  418. package/dist/types/wallet/src/core/types/seams.d.ts +4 -0
  419. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  420. package/dist/types/wallet/src/externalNear/controller.d.ts +2 -1
  421. package/dist/types/wallet/src/externalNear/hot.d.ts +3 -2
  422. package/dist/types/wallet/src/externalNear/index.d.ts +1 -1
  423. package/dist/types/wallet/src/externalNear/intear.d.ts +3 -2
  424. package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
  425. package/dist/types/wallet/src/externalNear/meteor.d.ts +5 -2
  426. package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +1 -1
  427. package/dist/types/wallet/src/externalNear/types.d.ts +22 -2
  428. package/dist/types/wallet/src/index.d.ts +1 -0
  429. package/dist/types/wallet/src/react/components/AccountMenuButton/AddEvmAccount.d.ts +29 -0
  430. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +8 -3
  431. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +1 -2
  432. package/dist/types/wallet/src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.d.ts +19 -0
  433. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ChevronRightIcon.d.ts +2 -0
  434. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/WalletIcon.d.ts +2 -0
  435. package/dist/types/wallet/src/react/index.d.ts +1 -4
  436. package/dist/types/wallet/src/voiceid-host.d.ts +52 -0
  437. package/dist/workers/device-linking-key.worker.js +93 -5
  438. package/dist/workers/ecdsa-derivation-client.worker.js +67 -65
  439. package/dist/workers/email-otp.worker.js +93 -4
  440. package/dist/workers/passkey-mpc-export.worker.js +21 -2
  441. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  442. package/dist/workers/wallet-custody-ceremony.worker.js +20 -2
  443. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  444. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  445. package/package.json +8 -3
  446. package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +0 -8
  447. package/dist/esm/react/components/VoiceAssistantCard.css +0 -313
  448. package/dist/esm/react/components/VoiceAssistantCard.js +0 -150
  449. package/dist/esm/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  450. package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +0 -1
  451. package/dist/esm/sdk/adapters-CgJpSAxH.js +0 -2
  452. package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  453. package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  454. package/dist/esm/sdk/configBuilder-BMNShuOu.js +0 -1
  455. package/dist/esm/sdk/domainIds-C3fUa33Q.js +0 -1
  456. package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  457. package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  458. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  459. package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  460. package/dist/esm/sdk/host-C5KYWEcs.js +0 -1
  461. package/dist/esm/sdk/intentDigest--FZ63NBy.js +0 -1
  462. package/dist/esm/sdk/lanes-l274pbT5.js +0 -1
  463. package/dist/esm/sdk/localOnly-CvFSZFUy.js +0 -1
  464. package/dist/esm/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  465. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  466. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  467. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  468. package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +0 -1
  469. package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  470. package/dist/esm/sdk/registration-CIxJvbTo.js +0 -1
  471. package/dist/esm/sdk/registration-CeOmKyCG.js +0 -1
  472. package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +0 -1
  473. package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  474. package/dist/esm/sdk/runtime-auth-C0V-5znH.js +0 -1
  475. package/dist/esm/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  476. package/dist/esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  477. package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  478. package/dist/esm/sdk/runtime-export-Ba12ChDI.js +0 -1
  479. package/dist/esm/sdk/runtime-near-DRrdWzmr.js +0 -1
  480. package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  481. package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  482. package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  483. package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  484. package/dist/esm/sdk/shared-B95wnpoD.js +0 -6
  485. package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +0 -1
  486. package/dist/esm/sdk/signNear-B_UcqMRf.js +0 -1
  487. package/dist/esm/sdk/signerDomain-YEHkugWX.js +0 -1
  488. package/dist/esm/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  489. package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  490. package/dist/esm/sdk/types-BrEW276O.js +0 -1
  491. package/dist/esm/sdk/wallet-recovery-BEui57xM.js +0 -1
  492. package/dist/esm/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  493. package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  494. package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  495. package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  496. package/dist/esm/sdk/walletDbName-BVZhb4xF.js +0 -1
  497. package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  498. package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  499. package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  500. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  501. package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  502. package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  503. package/dist/public/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  504. package/dist/public/sdk/activeWalletSession-BtEHhe99.js +0 -1
  505. package/dist/public/sdk/adapters-CgJpSAxH.js +0 -2
  506. package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  507. package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  508. package/dist/public/sdk/configBuilder-BMNShuOu.js +0 -1
  509. package/dist/public/sdk/domainIds-C3fUa33Q.js +0 -1
  510. package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  511. package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  512. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  513. package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  514. package/dist/public/sdk/host-C5KYWEcs.js +0 -1
  515. package/dist/public/sdk/intentDigest--FZ63NBy.js +0 -1
  516. package/dist/public/sdk/lanes-l274pbT5.js +0 -1
  517. package/dist/public/sdk/localOnly-CvFSZFUy.js +0 -1
  518. package/dist/public/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  519. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  520. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  521. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  522. package/dist/public/sdk/presignaturePool-DNiA3sgr.js +0 -1
  523. package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  524. package/dist/public/sdk/registration-CIxJvbTo.js +0 -1
  525. package/dist/public/sdk/registration-CeOmKyCG.js +0 -1
  526. package/dist/public/sdk/registrationIntent-DW_kKWlx.js +0 -1
  527. package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  528. package/dist/public/sdk/runtime-auth-C0V-5znH.js +0 -1
  529. package/dist/public/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  530. package/dist/public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  531. package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  532. package/dist/public/sdk/runtime-export-Ba12ChDI.js +0 -1
  533. package/dist/public/sdk/runtime-near-DRrdWzmr.js +0 -1
  534. package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  535. package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  536. package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  537. package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  538. package/dist/public/sdk/shared-B95wnpoD.js +0 -6
  539. package/dist/public/sdk/signEvmFamily-C4XMiSue.js +0 -1
  540. package/dist/public/sdk/signNear-B_UcqMRf.js +0 -1
  541. package/dist/public/sdk/signerDomain-YEHkugWX.js +0 -1
  542. package/dist/public/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  543. package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  544. package/dist/public/sdk/types-BrEW276O.js +0 -1
  545. package/dist/public/sdk/wallet-recovery-BEui57xM.js +0 -1
  546. package/dist/public/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  547. package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  548. package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  549. package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  550. package/dist/public/sdk/walletDbName-BVZhb4xF.js +0 -1
  551. package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  552. package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  553. package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  554. package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  555. package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  556. package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  557. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +0 -2
  558. package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -37
  559. package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +0 -2
  560. /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  561. /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  562. /package/dist/esm/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  563. /package/dist/esm/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  564. /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  565. /package/dist/esm/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  566. /package/dist/esm/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  567. /package/dist/esm/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  568. /package/dist/esm/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  569. /package/dist/esm/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  570. /package/dist/esm/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  571. /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  572. /package/dist/esm/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  573. /package/dist/esm/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  574. /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  575. /package/dist/esm/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  576. /package/dist/esm/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  577. /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  578. /package/dist/esm/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  579. /package/dist/esm/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  580. /package/dist/esm/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
  581. /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  582. /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  583. /package/dist/public/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  584. /package/dist/public/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  585. /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  586. /package/dist/public/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  587. /package/dist/public/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  588. /package/dist/public/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  589. /package/dist/public/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  590. /package/dist/public/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  591. /package/dist/public/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  592. /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  593. /package/dist/public/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  594. /package/dist/public/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  595. /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  596. /package/dist/public/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  597. /package/dist/public/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  598. /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  599. /package/dist/public/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  600. /package/dist/public/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  601. /package/dist/public/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
@@ -1,6 +0,0 @@
1
- import{r as e}from"./chunk-dVx5-UGu.js";import{B as t,C as n,D as r,M as i,N as a,O as o,S as s,T as c,V as l,b as u,c as d,d as f,h as p,j as m,k as h,l as g,m as _,n as v,p as y,r as b,t as x,u as S,v as C,w,x as T}from"./domainIds-C3fUa33Q.js";import{C as E,D,S as O,T as ee,c as k,d as A,j,k as M,m as te,o as ne,p as re,s as N,t as ie,u as ae,y as oe}from"./chains-CPmd4s9f.js";import{$ as se,A as ce,D as le,E as ue,F as de,J as fe,K as pe,L as me,M as he,N as ge,O as _e,P as ve,Q as ye,X as be,Y as xe,Z as Se,a as Ce,at as we,et as Te,h as Ee,i as De,it as Oe,j as ke,k as Ae,nt as je,ot as Me,r as Ne,t as Pe,tt as Fe}from"./activeWalletSession-BtEHhe99.js";import{n as Ie}from"./configBuilder-BMNShuOu.js";import{t as Le}from"./theme-os0Salmo.js";import{i as P,n as Re,r as F}from"./base64-BmKR3UqU.js";import{n as ze,r as Be}from"./secureRandomId-8LSc91aN.js";import{a as Ve,c as He,i as Ue,n as We,o as Ge,s as Ke}from"./walletDbName-BVZhb4xF.js";import{n as qe,t as Je}from"./configHelpers-D50F_Txb.js";import{a as Ye,c as Xe,d as Ze,n as Qe,s as $e,t as et}from"./signingSessionSeal-DqbjG8c8.js";import{_ as tt,b as nt,f as rt,h as it,m as at,n as ot,p as st,t as ct}from"./sessionObservationRevision-abErAhd6.js";import{r as lt}from"./transactionReviewAdmission-CNNho8IG.js";import{a as ut,d as dt,g as ft,h as pt,i as mt,l as ht,m as gt,n as _t,o as vt,r as yt,t as bt}from"./capabilityKinds-CqHVzVsJ.js";import{a as xt,r as St}from"./canonicalPrimitives-D_1HyEuJ.js";import{t as Ct}from"./walletIframeIdentity-DJ0KOBHg.js";import{i as wt,n as Tt,o as I,t as L}from"./errors-CI1xdN0d.js";import{t as Et}from"./signer-worker-Bh_5foqX.js";import{$ as Dt,$t as Ot,A as kt,At,B as jt,Bt as Mt,C as Nt,Ct as Pt,D as Ft,Dt as It,E as Lt,Et as Rt,F as zt,Ft as Bt,G as Vt,Gt as Ht,H as Ut,Ht as Wt,I as Gt,It as Kt,J as qt,Jt,K as Yt,Kt as Xt,L as Zt,Lt as Qt,M as $t,Mt as en,N as tn,Nt as nn,O as rn,Ot as an,P as on,Pt as sn,Q as cn,Qt as ln,R as un,Rt as dn,S as fn,St as pn,T as mn,Tt as hn,U as gn,Ut as _n,V as vn,Vt as yn,W as bn,Wt as xn,X as Sn,Xt as Cn,Y as wn,Yt as Tn,Z as En,Zt as Dn,_ as On,_t as kn,a as An,at as jn,b as Mn,bt as Nn,c as Pn,ct as Fn,d as In,dt as Ln,et as Rn,f as zn,ft as Bn,g as Vn,gt as Hn,h as Un,ht as Wn,it as Gn,j as Kn,jt as qn,k as Jn,kt as Yn,l as Xn,lt as Zn,m as Qn,mt as $n,nn as er,nt as tr,ot as nr,p as rr,pt as ir,q as ar,qt as or,rt as sr,st as cr,t as lr,tn as ur,tt as dr,u as fr,ut as pr,v as mr,vt as hr,w as gr,wt as _r,x as vr,xt as yr,y as br,yt as xr,z as Sr,zt as Cr}from"./registration-CeOmKyCG.js";import{a as wr,d as Tr,i as Er,r as Dr,t as Or}from"./accountIds-BzZs7YoX.js";import{c as kr,t as Ar}from"./registrationSignerPlan-B66FjqIp.js";import{a as jr,c as R,i as Mr,n as Nr,o as z,s as Pr,t as Fr,u as Ir}from"./ecdsaChainTarget-svSlzhze.js";import{a as B,d as Lr,f as Rr,i as zr,l as Br,m as Vr,n as V,o as Hr,p as Ur,r as Wr,s as Gr,u as Kr}from"./signerDomain-YEHkugWX.js";import{$ as qr,A as Jr,At as Yr,B as Xr,C as Zr,Ct as Qr,D as $r,Dt as ei,Et as ti,F as ni,G as ri,H as ii,I as ai,J as oi,K as si,L as ci,N as li,Ot as ui,P as di,Q as fi,R as pi,S as mi,St as hi,T as gi,Tt as _i,U as vi,V as yi,W as bi,X as xi,Z as Si,_t as Ci,at as wi,b as Ti,bt as Ei,ct as Di,dt as Oi,et as ki,ft as Ai,gt as ji,ht as Mi,it as Ni,j as Pi,jt as Fi,kt as Ii,lt as Li,mt as Ri,nt as zi,ot as Bi,pt as Vi,q as Hi,r as Ui,rt as Wi,st as Gi,tt as Ki,ut as qi,vt as Ji,w as Yi,x as Xi,xt as Zi,yt as Qi,z as $i}from"./registrationIntent-DW_kKWlx.js";import{n as ea,t as ta}from"./presignatures-DGLNs29C.js";import{s as na,t as ra}from"./normalization-Ctkj80dW.js";import{$ as ia,D as aa,H as oa,I as sa,L as ca,N as la,O as ua,Q as da,S as fa,V as pa,Z as ma,a as ha,d as ga,dt as _a,et as va,f as ya,g as ba,h as xa,it as Sa,k as Ca,l as wa,o as Ta,ot as Ea,s as Da,t as Oa,tt as ka,u as Aa,ut as ja,x as Ma,z as Na}from"./walletCapabilityBindings-CKOK39sP.js";import{$ as Pa,A as Fa,Bt as H,C as Ia,Ct as La,Dt as Ra,Ft as za,Nt as Ba,O as Va,Ot as Ha,Pt as Ua,Rt as Wa,S as Ga,St as Ka,T as qa,Tt as Ja,Y as Ya,_ as Xa,an as Za,c as Qa,ct as $a,d as eo,dn as to,et as no,f as ro,h as io,in as ao,j as oo,k as so,kt as co,l as lo,ln as uo,m as fo,mt as po,nn as mo,o as ho,rn as go,s as _o,tn as vo,un as yo,v as bo,wt as xo,x as So,zt as Co}from"./emailOtpEcdsaDerivationIdentity-DreNrM6n.js";import{n as wo,r as To,t as Eo}from"./walletAuthMethodRecord-Cv_MYpxt.js";import{a as Do,i as Oo,o as ko,t as Ao}from"./signerSlot-CpyIfl3J.js";import{C as jo,D as Mo,E as No,I as Po,M as Fo,N as Io,P as Lo,R as Ro,T as zo,V as Bo,j as Vo,k as Ho,w as Uo,z as Wo}from"./ecdsaCapabilityManifest-B3u6J5gn.js";import{d as Go,f as Ko,g as qo,h as Jo,l as Yo,m as Xo,o as U,r as Zo,s as W,t as Qo}from"./sdkSentEvents-BzMVO1AR.js";import{C as $o,L as es,R as ts,S as ns,c as rs,d as is,g as as,h as os,i as ss,j as cs,l as G,m as ls,o as us,p as ds,r as fs,s as ps,t as ms,u as hs}from"./wallet-recovery-BEui57xM.js";import{n as gs}from"./authenticatorOptions-BB_sU4uA.js";import{i as _s,n as vs}from"./walletOwnershipGeneration-CQzaodhB.js";import{c as ys,n as bs,r as xs,s as Ss}from"./types-BrEW276O.js";import{o as K,t as Cs}from"./walletSessionAuthorizationStore-DYRMCkiT.js";import{c as ws,l as Ts,o as Es,s as Ds,u as Os}from"./helpers-BXezXx19.js";import{i as ks}from"./profileAccountProjection-C1z9sKHa.js";import{A as As,C as js,D as Ms,E as Ns,F as Ps,I as Fs,M as Is,O as Ls,S as Rs,T as zs,_ as Bs,a as Vs,b as Hs,c as Us,g as Ws,i as Gs,k as Ks,l as qs,n as Js,o as Ys,r as Xs,s as Zs,t as Qs,v as $s,w as ec,x as tc,y as nc}from"./accountLifecycle-CXTlwnAS.js";import{a as rc,i as ic,l as ac,n as oc,o as sc,s as cc,t as lc}from"./walletCustodyEcdsaContinuity-5XsLsT8D.js";import{A as uc,C as dc,E as fc,O as pc,_ as mc,a as hc,g as gc,h as _c,i as vc,l as q,n as yc,o as bc,p as xc,r as Sc,t as Cc}from"./nearEd25519YaoMaterialActivation-BK8_DxHs.js";import{C as wc,D as Tc,M as Ec,N as Dc,O as Oc,P as kc,_ as Ac,a as jc,c as Mc,d as Nc,f as Pc,h as Fc,i as Ic,j as Lc,k as Rc,l as zc,m as Bc,n as Vc,p as Hc,r as Uc,s as Wc,t as Gc,u as Kc,v as qc,w as Jc}from"./nearEd25519YaoSigningPreparation-BgCxoh9S.js";import{a as Yc,i as Xc,o as Zc,r as Qc,t as $c}from"./pendingWalletRecoveryCodeBackup-LbstFwcY.js";import{n as el,t as J}from"./walletSessionAuthorizationStatus-_KtCVFYW.js";import{t as tl}from"./walletCustodyOperation-BO_tSfGY.js";import{n as nl,t as rl}from"./prfCache-D25ZCg5n.js";import{u as il}from"./trace-CWTzEALZ.js";import{i as al,n as ol,o as sl,r as cl,u as ll}from"./intentDigest--FZ63NBy.js";import{C as ul,E as dl,S as fl,_ as pl,b as ml,c as hl,d as gl,f as _l,g as vl,h as yl,l as bl,m as xl,n as Sl,o as Cl,p as wl,r as Tl,s as El,t as Dl,u as Ol,v as kl,w as Al,x as jl,y as Ml}from"./adapters-CgJpSAxH.js";import{_ as Nl,a as Pl,c as Fl,d as Il,f as Ll,g as Rl,h as zl,i as Bl,l as Vl,m as Hl,n as Ul,o as Wl,p as Gl,s as Kl,u as ql,y as Jl}from"./ecdsaDerivationExport-DrFESeRP.js";import{r as Yl,t as Xl}from"./walletSessionAuthorizationProjection-UdGeS6x3.js";import{i as Zl}from"./walletRecoveryCommit-B_e4k5Pa.js";import{t as Ql}from"./NonceCoordinator-Do23iTzQ.js";import{t as $l}from"./executeWorkerOperation-S6glYwAs.js";import{A as eu,C as tu,D as nu,E as ru,F as iu,I as au,L as ou,M as su,N as cu,O as lu,P as uu,R as du,S as fu,T as pu,_ as mu,b as hu,c as gu,f as _u,g as vu,h as yu,j as bu,k as xu,l as Su,m as Cu,o as wu,p as Tu,r as Eu,s as Du,t as Ou,v as ku,w as Au,y as ju}from"./ecdsaDerivationClientWasm-D1HzwUgV.js";import{a as Mu,n as Nu,o as Pu,r as Fu,s as Iu,t as Lu}from"./presignaturePool-DNiA3sgr.js";import{i as Ru,t as zu}from"./walletSessionFailure-Ct412mDZ.js";import{_ as Bu,a as Vu,b as Hu,c as Uu,d as Wu,f as Gu,g as Ku,h as qu,i as Ju,l as Yu,m as Xu,n as Zu,o as Qu,p as $u,r as ed,t as td,u as nd,v as rd,y as id}from"./signEvmFamily-C4XMiSue.js";import{a as ad,c as od,d as sd,f as cd,i as ld,l as ud,o as dd,s as fd,t as pd,u as md}from"./signingQueue-Cj9sCJLj.js";import{_ as hd,c as gd,d as _d,g as vd,h as yd,i as bd,o as xd,r as Sd,s as Cd,t as wd,u as Td,v as Ed}from"./clientSessionPersistenceState-DFGHXoKK.js";import{_ as Dd,a as Od,c as kd,d as Ad,f as jd,g as Md,h as Nd,i as Pd,m as Fd,o as Id,p as Ld,r as Rd,s as zd,t as Bd,u as Vd}from"./signNear-B_UcqMRf.js";import{i as Hd,t as Ud}from"./collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js";import{c as Wd,d as Gd,f as Kd,i as qd,o as Jd,s as Yd,t as Xd}from"./signingFlow-Co_QtuHK.js";import{t as Zd}from"./types-BNUuaUtl.js";import{S as Qd,_ as $d,d as ef,f as tf,m as nf,p as rf}from"./requireStepUpAuth-DsNLml1i.js";import{t as af}from"./commitQueue-BQPOhyGl.js";import{a as of,c as sf,i as cf,l as lf,n as uf,o as df,r as ff,s as pf,t as mf,u as hf}from"./walletRecoveryAdminProof-CtH8_lph.js";import{i as Y,r as gf}from"./appearance-ZGVLwA4N.js";import{i as _f,n as vf,r as yf,t as bf}from"./transaction-activity-CpDMkSPm.js";import{i as xf,r as Sf}from"./appearance-token-vars-BA3KQyEE.js";import{t as Cf}from"./registration-CIxJvbTo.js";function wf(){let e=typeof window<`u`&&window.location?.origin?window.location.origin:``;try{let t=window?.__SEAMS_WALLET_SDK_BASE__;if(t){let n=new URL(t,e||`https://invalid.local`).origin;if(n===e)return n}}catch{}return e}function Tf(e,t){let n=t.worker,r=t.baseOrigin||wf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`;try{let t=typeof window<`u`?window:{},i;switch(n){case`signer`:i=t.__SEAMS_SIGNER_WORKER_URL__;break;case`ecdsaDerivationClient`:i=t.__SEAMS_ECDSA_DERIVATION_CLIENT_WORKER_URL__;break;case`ecdsaPresignClient`:i=t.__SEAMS_ECDSA_PRESIGN_CLIENT_WORKER_URL__;break;case`ecdsaOnlineClient`:i=t.__SEAMS_ECDSA_ONLINE_CLIENT_WORKER_URL__;break;case`touchConfirm`:i=t.__SEAMS_TOUCH_CONFIRM_WORKER_URL__;break;case`passkeyMpcExport`:i=t.__SEAMS_PASSKEY_MPC_EXPORT_WORKER_URL__;break;case`passkeyMpcSession`:i=t.__SEAMS_PASSKEY_MPC_SESSION_WORKER_URL__;break;case`deviceLinking`:i=t.__SEAMS_DEVICE_LINKING_WORKER_URL__;break;default:}let a=typeof i==`string`&&i?i:e||Df(n);return Ef(/^https?:\/\//i.test(a)?new URL(a):new URL(a,r),i).toString()}catch{try{return new URL(e||Df(n),r).toString()}catch{}return e||Df(n)}}function Ef(e,t){if(typeof t==`string`&&t.length>0)return e;let n=st(),r=at();if(!n||!r||e.searchParams.has(`v`))return e;try{let t=new URL(r);if(e.origin!==t.origin||!e.pathname.startsWith(t.pathname))return e;e.searchParams.set(`v`,n)}catch{}return e}function Df(e){switch(e){case`signer`:return`/sdk/workers/near-signer.worker.js`;case`ecdsaDerivationClient`:return`/sdk/workers/ecdsa-derivation-client.worker.js`;case`ecdsaPresignClient`:return`/sdk/workers/ecdsa-presign-client.worker.js`;case`ecdsaOnlineClient`:return`/sdk/workers/ecdsa-online-client.worker.js`;case`touchConfirm`:return`/sdk/workers/passkey-confirm.worker.js`;case`passkeyMpcExport`:return`/sdk/workers/passkey-mpc-export.worker.js`;case`passkeyMpcSession`:return`/sdk/workers/passkey-mpc-session.worker.js`;case`deviceLinking`:return`/sdk/workers/device-linking-key.worker.js`;default:throw Error(`Unsupported dedicated worker kind`)}}var X=class extends Error{name=`DeviceLinkingError`;constructor(e,t,n){super(e),this.code=t,this.phase=n}};let Z=function(e){return e.INVALID_QR_DATA=`INVALID_QR_DATA`,e.ACCOUNT_NOT_OWNED=`ACCOUNT_NOT_OWNED`,e.AUTHORIZATION_TIMEOUT=`AUTHORIZATION_TIMEOUT`,e.INSUFFICIENT_BALANCE=`INSUFFICIENT_BALANCE`,e.REGISTRATION_FAILED=`REGISTRATION_FAILED`,e.WALLET_UNLOCK_REQUIRED=`WALLET_UNLOCK_REQUIRED`,e.DELIVERY_RECOVERY_REQUIRED=`DELIVERY_RECOVERY_REQUIRED`,e.SESSION_EXPIRED=`SESSION_EXPIRED`,e.UNSUPPORTED=`UNSUPPORTED`,e}({});function Of(e){let t=w(e);if(!t.ok)throw Error(`Device-link target email address is invalid: ${t.error.message}`);return t.value}function kf(e){try{return Of(e),!0}catch{return!1}}async function Af(e,t){let n=Mf(e,t);if(n===null)return;let r=await G.resolveSelectedWalletAuthority(n);if(r.kind!==`resolved`)return;let i=await K.readExactWithOperationCredential({walletId:n,authorityId:r.authority.authorityId,authMethodId:r.authMethod.walletAuthMethodId});i.kind===`found`&&await vs(n,i.operationCredential.ownershipGeneration)}function jf(e){let t=o(e);if(!t.ok)throw Error(`Wallet mutation identity is invalid`);return t.value}function Mf(e,t){switch(e.type){case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`: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 jf(e.payload?.walletId);case`PM_SIGN_TEMPO`:case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return jf(e.payload?.walletSession.walletId);case`PM_SYNC_ACCOUNT_FLOW`:{let n=e.payload?.walletId??t;return n===null?null:jf(n)}case`PM_SCAN_AND_LINK_DEVICE`:return t===null?null:jf(t);case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:case`PING`: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_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`)}}async function Nf(e,t){return Pf(e,t,3)}async function Pf(e,t,n){let{walletId:r}=e;if(n===0)return Gf(r,`superseded`);let i;try{i=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return Gf(e.walletId,`unavailable`)}switch(i.kind){case`missing_selection`:return{kind:`wallet_locked`};case`missing_auth_method`:case`missing_authority`:case`integrity_error`:return Gf(e.walletId,`invalid`);case`resolved`:break}let{selection:a,authMethod:o,authority:s}=i;if(a.walletId!==e.walletId||a.walletAuthMethodId!==o.walletAuthMethodId||o.walletId!==e.walletId||o.walletAuthorityId!==s.authorityId||s.walletId!==e.walletId)return Gf(e.walletId,`invalid`);if(a.lockState===`locked`)return{kind:`wallet_locked`};if(o.status!==`active`||s.state!==`active`)return Gf(e.walletId,`invalid`);let c=await Lf(t,{walletId:e.walletId,authorityId:s.authorityId,authMethodId:o.walletAuthMethodId});switch(c.kind){case`missing`:return Gf(e.walletId,`absent`);case`corrupt`:return Gf(e.walletId,`invalid`);case`persistence_unavailable`:return Gf(e.walletId,`unavailable`);case`upgrade_required`:return Gf(e.walletId,`upgrade_required`);case`found`:break}let{record:l,operationCredential:u}=c;if(!If({walletId:e.walletId,authorization:l,operationCredential:u,selected:i}))return Gf(e.walletId,`invalid`);let d=t.nowMs();if(l.expiresAtMs<=d)return zf(e.walletId,o.kind,l,u);let f;try{f=await t.readStatus({authorization:l,operationCredential:u})}catch{return Gf(e.walletId,`unavailable`)}let p;try{p=await t.resolveSelectedWalletAuthority(e.walletId)}catch{return Gf(e.walletId,`unavailable`)}if(p.kind!==`resolved`||p.selection.lockState!==`unlocked`||p.selection.lockGeneration!==a.lockGeneration||p.selection.walletAuthMethodId!==a.walletAuthMethodId||p.authMethod.status!==`active`||p.authMethod.kind!==o.kind||p.authority.state!==`active`||!If({walletId:r,authorization:l,operationCredential:u,selected:p}))return Pf(e,t,n-1);let m=await Lf(t,{walletId:r,authorityId:s.authorityId,authMethodId:o.walletAuthMethodId});return m.kind!==`found`||!Pe(m.record,l)||m.operationCredential.walletSessionId!==u.walletSessionId||m.operationCredential.token!==u.token?Pf(e,t,n-1):l.expiresAtMs<=t.nowMs()?zf(r,o.kind,l,u):Bf(f,l,u)?Vf({walletId:e.walletId,authMethod:o.kind,authorization:l,operationCredential:u,status:f}):Gf(e.walletId,`invalid`)}function Ff(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Wallet iframe exact session identity must be an object`);return Uf(e)}function If(e){let{authorization:t,operationCredential:n,selected:r}=e;return t.walletId===e.walletId&&t.authorityId===r.authority.authorityId&&t.authMethodId===r.authMethod.walletAuthMethodId&&t.authorityDigestB64u===r.authority.authorityDigestB64u&&t.authorityRevocationEpoch===r.authority.revocationEpoch&&n.kind===`opaque_wallet_session_operation_credential_v1`&&n.token.trim().length>0&&String(t.authorizationId)!==String(n.walletSessionId)}async function Lf(e,t){try{return await e.readExactActiveForWallet(t)}catch{return{kind:`persistence_unavailable`}}}function Rf(e,t,n,r){return{walletId:e,authorizationId:n.authorizationId,walletSessionId:r.walletSessionId,authMethod:t,expiresAtMs:n.expiresAtMs}}function zf(e,t,n,r){return{kind:`expired_session`,...Rf(e,t,n,r)}}function Bf(e,t,n){if(e.walletSessionId!==n.walletSessionId||e.quotaId!==t.quotaId)return!1;switch(e.status){case`missing`:case`invalid`:return!0;case`active`:case`exhausted`:case`expired`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return e.expiresAtMs===t.expiresAtMs&&Pe(e.authorization,t)}}function Vf(e){switch(e.status.status){case`active`:return e.status.remainingUses<=0?Gf(e.walletId,`invalid`):{kind:`active_session`,status:`active`,...Rf(e.walletId,e.authMethod,e.authorization,e.operationCredential)};case`exhausted`:return Gf(e.walletId,`exhausted`);case`expired`:return zf(e.walletId,e.authMethod,e.authorization,e.operationCredential);case`missing`:return{kind:`wallet_unlocked_without_signing_session`,walletId:e.walletId,reason:`not_found`,authorizationId:e.authorization.authorizationId,walletSessionId:e.operationCredential.walletSessionId,authMethod:e.authMethod};case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return Gf(e.walletId,`superseded`);case`invalid`:return Gf(e.walletId,`invalid`)}}function Hf(e,t){return e.walletId===t.walletId&&e.authorizationId===t.authorizationId&&e.walletSessionId===t.walletSessionId}function Uf(e){let t=pt(Reflect.get(e,`walletSessionId`));if(!t.ok)throw Error(`Wallet iframe walletSessionId is invalid`);let n=Reflect.get(e,`expiresAtMs`);if(!qf(n))throw Error(`Wallet iframe expiresAtMs is invalid`);let r=Kf(Reflect.get(e,`walletId`)),i=gt(Reflect.get(e,`authorizationId`));if(!i.ok)throw Error(`Wallet iframe authorizationId is invalid`);let a=Reflect.get(e,`authMethod`);if(!Hr(a))throw Error(`Wallet iframe authMethod is invalid`);return Wf(i.value,t.value),{walletId:r,authorizationId:i.value,walletSessionId:t.value,authMethod:a,expiresAtMs:n}}function Wf(e,t){if(String(e)===String(t))throw Error(`Wallet iframe authorization and Wallet Session IDs must be distinct`)}function Gf(e,t){return{kind:`wallet_unlocked_without_signing_session`,walletId:e,reason:t}}function Kf(e){let t=o(e);if(!t.ok)throw Error(`Wallet iframe walletId is invalid`);return t.value}function qf(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}async function Jf(e,t){let n;try{n=await t.resolveSelectedWalletAuthority(String(e.walletId))}catch{return{kind:`failed`,reason:`unavailable`}}let r=Yf(e.walletId,n);if(r.kind!==`context`)return r;let i;try{i=await t.listWalletAuthMethodsV2ForWallet(String(e.walletId))}catch{return{kind:`failed`,reason:`unavailable`}}let a=new Set;for(let e of i){let n=await Xf({context:r,method:e,seenMethodIds:a},t);if(n.kind===`failed`)return n}return{kind:`reconciled`}}function Yf(e,t){switch(t.kind){case`missing_selection`:return{kind:`skipped`};case`missing_auth_method`:case`missing_authority`:case`integrity_error`:return{kind:`failed`,reason:`invalid`};case`resolved`:break}return t.selection.walletId!==e||t.authMethod.walletId!==e||t.authority.walletId!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.walletAuthorityId!==t.authority.authorityId?{kind:`failed`,reason:`invalid`}:t.selection.lockState===`locked`?{kind:`skipped`}:t.authMethod.status!==`active`||t.authority.state!==`active`?{kind:`failed`,reason:`invalid`}:{kind:`context`,walletId:e,selected:t}}async function Xf(e,t){let{context:n,method:r,seenMethodIds:i}=e,a=String(r.walletAuthMethodId);if(i.has(a)||(i.add(a),r.walletId!==n.walletId))return{kind:`failed`,reason:`invalid`};if(r.walletAuthorityId!==n.selected.authority.authorityId||r.status!==`active`)return{kind:`skipped`};let o;try{o=await t.resolveWalletAuthorityForMethod(String(n.walletId),a)}catch{return{kind:`failed`,reason:`unavailable`}}if(o.kind!==`resolved`||!Zf(o,n,r))return{kind:`failed`,reason:`invalid`};let s;try{s=await t.readExactActiveForWallet({walletId:n.walletId,authorityId:o.authority.authorityId,authMethodId:o.authMethod.walletAuthMethodId})}catch{return{kind:`failed`,reason:`unavailable`}}switch(s.kind){case`missing`:return{kind:`skipped`};case`upgrade_required`:case`corrupt`:return{kind:`failed`,reason:`invalid`};case`persistence_unavailable`:return{kind:`failed`,reason:`unavailable`};case`found`:break}if(!Qf(s.record,s.operationCredential,o))return{kind:`failed`,reason:`invalid`};let c;try{c=await t.readStatus({authorization:s.record,operationCredential:s.operationCredential})}catch{return{kind:`failed`,reason:`unavailable`}}let l=$f(c,s.record,s.operationCredential);if(l.kind===`failed`||l.kind===`skipped`)return l;if(!Pe(l.authorization,s.record)){try{if(await t.refreshExactWithOperationCredential({expected:s.record,record:l.authorization,operationCredential:s.operationCredential})===`superseded`)return{kind:`skipped`}}catch{return{kind:`failed`,reason:`unavailable`}}return{kind:`reconciled`}}return{kind:`reconciled`}}function Zf(e,t,n){return e.selection.walletId===t.walletId&&e.authMethod.walletAuthMethodId===n.walletAuthMethodId&&e.authMethod.walletId===t.walletId&&e.authMethod.walletAuthorityId===t.selected.authority.authorityId&&e.authMethod.status===`active`&&e.authority.authorityId===t.selected.authority.authorityId&&e.authority.walletId===t.walletId&&e.authority.state===`active`&&e.authority.authorityDigestB64u===t.selected.authority.authorityDigestB64u&&e.authority.revocationEpoch===t.selected.authority.revocationEpoch}function Qf(e,t,n){try{return De(t),e.walletId===n.authority.walletId&&e.authorityId===n.authority.authorityId&&e.authMethodId===n.authMethod.walletAuthMethodId}catch{return!1}}function $f(e,t,n){if(e.walletSessionId!==n.walletSessionId||e.quotaId!==t.quotaId)return{kind:`failed`,reason:`invalid`};switch(e.status){case`missing`:return{kind:`skipped`};case`invalid`:return{kind:`failed`,reason:`invalid`};case`active`:if(e.remainingUses<=0||e.quotaLifecycle!==`active`)return{kind:`failed`,reason:`invalid`};break;case`exhausted`:if(e.remainingUses!==0||e.quotaLifecycle!==`exhausted`)return{kind:`failed`,reason:`invalid`};break;case`expired`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:break}return e.authorization.walletId!==t.walletId||e.authorization.authorityId!==t.authorityId||e.authorization.authMethodId!==t.authMethodId||e.authorization.authorizationId!==t.authorizationId||e.authorization.quotaId!==t.quotaId||e.authorization.issuedAtMs!==t.issuedAtMs||e.authorization.expiresAtMs!==t.expiresAtMs||e.expiresAtMs!==e.authorization.expiresAtMs?{kind:`failed`,reason:`invalid`}:{kind:`reconciled`,authorization:e.authorization}}async function ep(e,t,n){let r=String(e||``).trim();if(!r)throw Error(`Wallet iframe relayer URL is required`);return await t.read({relayerUrl:r,operationCredential:n.operationCredential},{walletSessionId:n.operationCredential.walletSessionId,quotaId:n.authorization.quotaId})}function tp(e,t){return{resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),listWalletAuthMethodsV2ForWallet:G.listWalletAuthMethodsV2ForWallet.bind(G),resolveWalletAuthorityForMethod:G.resolveWalletAuthorityForMethod.bind(G),readExactActiveForWallet:K.readExactActiveForWallet.bind(K),readStatus:ep.bind(null,e,t),refreshExactWithOperationCredential:K.refreshExactWithOperationCredential.bind(K),nowMs:Date.now}}function np(e){e.changed=!0}async function rp(e){let t=String(e.preferences.getCurrentWalletId()||``).trim();if(t)return t;let n={changed:!1},r=e.preferences.onCurrentWalletChange(np.bind(null,n));try{let t=await e.auth.getRecentUnlocks();if(n.changed)return e.preferences.getCurrentWalletId()??void 0;let r=String(t.lastUsedAccount?.walletId||``).trim(),i=t.walletIds.map(e=>String(e).trim()).filter(Boolean),a=r||(i.length===1?i[0]:void 0);return a&&e.preferences.setCurrentWallet(R(a)),a}finally{r()}}async function ip(e,t,n){let r;switch(t.wallet.kind){case`current`:r=t.authenticationRead===`restore`?await rp(e):e.preferences.getCurrentWalletId()??void 0;break;case`exact`:if(r=t.wallet.walletId.trim(),!r)throw Error(`Wallet iframe exact session walletId is invalid`);break}if(!r)return{kind:`wallet_locked`};let i=tp(e.configs.network.relayer.url,n),a=await Jf({walletId:R(r)},i);return a.kind===`failed`?{kind:`wallet_unlocked_without_signing_session`,walletId:R(r),reason:a.reason}:await Nf({walletId:R(r)},i)}var ap=class{lifecycle=`active`;refresh={kind:`idle`};invalidationRevision=0;activeOperations=0;pendingObservations=new Map;unsubscribeAuthority;unsubscribeSelection;constructor(e,t,n,r){this.runtime=e,this.post=t,this.expiredSessions=n,this.readSession=r,this.unsubscribeAuthority=ea.onWalletAuthorityChange(this.invalidate.bind(this)),this.unsubscribeSelection=e.preferences.onCurrentWalletChange(this.invalidate.bind(this))}dispose(){this.lifecycle=`disposed`,this.unsubscribeAuthority(),this.unsubscribeSelection()}beginOperation(){this.assertActive(),this.activeOperations+=1}endOperation(){--this.activeOperations,this.lifecycle===`active`&&this.activeOperations===0&&this.refresh.kind===`pending`&&this.requestRefresh()}onLifecycleEvent(e){if(this.lifecycle===`disposed`)return;let t=ct();e.event===`signing_session.expired`&&(this.invalidationRevision+=1),this.post({type:`SDK_LIFECYCLE_EVENT`,payload:{revision:t,event:e}}),e.event===`signing_session.expired`&&this.requestRefresh()}publishCurrentSession(){return this.observe({authenticationRead:`current`,wallet:{kind:`current`}},this.publishSnapshot.bind(this))}async observe(e,t){for(let n=0;n<3;n+=1){this.assertActive();let n=this.invalidationRevision,r=ea.getWalletAuthorityRevision(),i={changed:!1},a=this.runtime.preferences.onCurrentWalletChange(np.bind(null,i));try{let{revision:a,state:o,session:s}=await this.readObservation(e,r);if(this.assertActive(),i.changed&&this.runtime.preferences.getCurrentWalletId()===null){t({revision:ct(),walletId:null,state:{kind:`wallet_locked`},session:ot()});return}if(i.changed||n!==this.invalidationRevision||r!==ea.getWalletAuthorityRevision())continue;t({revision:a,walletId:e.wallet.kind===`exact`?R(e.wallet.walletId):this.runtime.preferences.getCurrentWalletId(),state:this.projectExpiry(o),session:s});return}finally{a()}}throw Error(`Wallet authority changed repeatedly during session observation`)}readObservation(e,t){let n=this.runtime.preferences.getCurrentWalletId(),r=e.wallet.kind===`exact`?e.wallet.walletId:n,i=JSON.stringify([e.authenticationRead,r,n,t,this.invalidationRevision]),a=this.pendingObservations.get(i);if(a)return a;let o=this.resolveObservation(e).finally(this.finishObservation.bind(this,i));return this.pendingObservations.set(i,o),o}async resolveObservation(e){let t=ct(),n=J.forHostObservation(),r=await ip(this.runtime,e,n);return{revision:t,state:r,session:r.kind===`wallet_locked`?ot():await this.readSession(r.walletId,n)}}finishObservation(e){this.pendingObservations.delete(e)}projectExpiry(e){return e.kind!==`active_session`||!this.expiredSessions.get(e.walletId)?.has(e.walletSessionId)?e:{kind:`expired_session`,walletId:e.walletId,authorizationId:e.authorizationId,walletSessionId:e.walletSessionId,authMethod:e.authMethod,expiresAtMs:e.expiresAtMs}}assertActive(){if(this.lifecycle===`disposed`)throw Error(`Wallet session observer is disposed`)}invalidate(){this.lifecycle!==`disposed`&&(this.invalidationRevision+=1,this.requestRefresh())}requestRefresh(){if(this.refresh.kind===`running`){this.refresh.pending=!0;return}if(this.activeOperations>0){this.refresh={kind:`pending`};return}this.refresh={kind:`running`,pending:!1},this.refreshSession().catch(this.reportRefreshFailure.bind(this))}async refreshSession(){try{do{if(this.refresh.kind!==`running`)return;this.refresh.pending=!1;try{await this.publishCurrentSession()}catch(e){this.reportRefreshFailure(e)}}while(this.lifecycle===`active`&&this.refresh.kind===`running`&&this.refresh.pending)}finally{this.refresh={kind:`idle`}}}publishSnapshot(e){this.assertActive(),this.refresh.kind===`running`?this.refresh.pending=!1:this.refresh.kind===`pending`&&(this.refresh={kind:`idle`}),this.post({type:`SESSION_CHANGED`,payload:e})}reportRefreshFailure(e){this.lifecycle===`active`&&console.warn(`[WalletIframeHost] Session refresh failed:`,e)}};function op(e){let t=e.override?.ttlMs??e.defaults.ttlMs,n=typeof t==`number`?Math.floor(t):Math.floor(Number(t)||0),r=He({requestedRemainingUses:e.override?.remainingUses??e.defaults.remainingUses??Ue});return!(n>0)||r===null?{kind:`disabled`,ttlMs:0,unlockRemainingUses:null}:{kind:`enabled`,ttlMs:n,unlockRemainingUses:r}}async function sp(e){try{let t=e.runtime.activationReceipt.normalSigning.scope,n=Hu({routerAbState:e.runtime.activationReceipt.normalSigning}),r=await fo({ecdsaThresholdKeyId:t.ecdsa_threshold_key_id,signingRootId:t.signing_root_id,signingRootVersion:t.signing_root_version});if(cd(e.runtime)!==e.runtime)return;let i=Fu({relayerUrl:e.relayerUrl,keyHandle:Wo(r),ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,clientVerifyingShareB64u:n.clientVerifier33B64u,clientSigningMaterial:Iu(e.runtime.holderHandleId),thresholdEcdsaPublicKeyB64u:n.thresholdVerifier33B64u,relayerVerifyingShareB64u:n.serverVerifier33B64u,credential:{kind:`wallet_session_opaque`,walletSessionToken:e.operationCredential.token,home:e.operationCredential.home,ownershipGeneration:e.operationCredential.ownershipGeneration},authorization:{kind:`reusable_wallet_session`,wallet_session_id:e.operationCredential.walletSessionId},materialActivation:yo(e.runtime.materialActivation),routerAbEcdsaDerivationPoolFill:{kind:`router_ab_ecdsa_derivation_signing_worker_pool`,scope:t,ceremonyExpiresAtMs:e.expiresAtMs,materialExpiresAtMs:Date.now()+ta},workerCtx:e.workerCtx});il(`evm-family`,{event:`ecdsa_linked_device_prefill`,scheduled:i.scheduled,reason:i.reason,depth:i.depth,targetDepth:i.targetDepth})}catch{il(`evm-family`,{event:`ecdsa_linked_device_prefill`,scheduled:!1,reason:`unexpected_error`})}}var cp=class extends Error{constructor(e){super(`[OwnerLaneScope] ${e}`),this.name=`OwnerLaneScopeIntegrityError`}};function lp(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}function up(e){let t=String(e.providerSubjectId||``).trim();if(!t)throw new cp(`active Email OTP method has no exact local factor`);let n=za({walletId:e.authMethod.walletId,factor:{kind:`email_otp`,provider:t.startsWith(`google:`)?`google`:`email`,providerUserId:t},verifier:{kind:`email_otp_wallet_auth_method`,emailHashHex:e.authMethod.emailHashHex},bindingId:e.authMethod.walletAuthMethodId});if(!n)throw new cp(`active Email OTP method has no exact local factor`);return n}function dp(e){let t=e.localMethods.filter(t=>t.kind===`email_otp`&&t.status===`active`&&t.walletId===e.authMethod.walletId&&t.emailHashHex===e.authMethod.emailHashHex),n=t[0],r=n?za(n.authority):null;if(t.length!==1||!r||r.walletId!==e.authMethod.walletId||r.bindingId!==e.authMethod.walletAuthMethodId||r.verifier.emailHashHex!==e.authMethod.emailHashHex)throw new cp(`active Email OTP method has no exact local factor`);return r}async function fp(e){let t=String(e.authMethod.walletId);try{return dp({authMethod:e.authMethod,localMethods:await e.stores.listWalletAuthMethodsForWallet(t)})}catch(n){if(!e.stores.readEmailOtpProviderSubjectForWallet)throw n;let r=await e.stores.readEmailOtpProviderSubjectForWallet(t);if(!r)throw n;return up({authMethod:e.authMethod,providerSubjectId:r})}}function pp(e){if(e.authority.walletId!==e.authMethod.walletId||e.authority.bindingId!==e.authMethod.walletAuthMethodId)throw new cp(`active wallet auth method does not have an exact factor authority binding`);return e.authority}async function mp(e){return e.authMethod.kind===`passkey`?pp({authMethod:e.authMethod,authority:lp(e.authMethod)}):pp({authMethod:e.authMethod,authority:await fp({authMethod:e.authMethod,stores:e.stores})})}function hp(e){return{auth:{kind:`passkey`,rpId:qa(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},signerSlot:e.signerSlot}}function gp(e){return{auth:{kind:`passkey`,rpId:qa(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},keyFamily:`ecdsa`}}function _p(e){if(e.factorAuthority.walletId!==e.authMethod.walletId||e.factorAuthority.bindingId!==e.authMethod.walletAuthMethodId||e.factorAuthority.verifier.emailHashHex!==e.authMethod.emailHashHex||e.authorityRef.walletId!==e.authMethod.walletId||e.authorityRef.walletAuthMethodId!==e.authMethod.walletAuthMethodId)throw new cp(`linked Email OTP authority does not match the selected V2 method`);return{auth:{kind:`email_otp`,providerSubjectId:String(e.factorAuthority.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:e.authorityRef.walletAuthMethodId,authorityDigest:e.authorityRef.authorityDigest}}}async function vp(e){let t=await e.stores.getWalletPasskeyAuthenticator({walletId:String(e.authMethod.walletId),credentialId:e.authMethod.credentialIdB64u});if(!t||t.credentialId!==e.authMethod.credentialIdB64u)throw new cp(`active Passkey auth method has no exact local authenticator`);let n=Ao(t.signerSlot,{min:1});if(n===null)throw new cp(`local authenticator signer slot is invalid`);return hp({authMethod:e.authMethod,signerSlot:n})}async function yp(e){if(e.authMethod.kind===`passkey`)return await vp({authMethod:e.authMethod,stores:e.stores});let t=await fp({authMethod:e.authMethod,stores:e.stores}),n=await H({authority:t});return{auth:{kind:`email_otp`,providerSubjectId:String(t.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:n.walletAuthMethodId,authorityDigest:n.authorityDigest}}}function bp(e){let t=e.available.capability,n=t.manifest.signer;if(!n.scope.targetMemberships.some(t=>z(t)===z(e.chainTarget)))return null;let r=n.registeredPublicFacts,i={capability:t,key:ho({walletId:n.walletId,ecdsaThresholdKeyId:t.manifest.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:r.participantIds,thresholdOwnerAddress:r.thresholdOwnerAddress}),materialActivation:t.manifest.activation.materialActivation,publicFacts:r,curve:`ecdsa`,chainTarget:e.chainTarget,source:`canonical_capability`},a=e.available.kind===`authorized_evm_family_ecdsa_signing_capability`?e.available.authorization:null;if(Ua(t.authority)){let e={kind:`passkey`,rpId:qa(t.authority.verifier.rpId),credentialIdB64u:t.authority.factor.credentialIdB64u},o=ro({walletId:n.walletId,publicFacts:r,authBinding:eo(e)});return a?{...i,auth:e,resolvedKey:o,state:`ready`,authorization:a,remainingUses:a.runtime.remainingUses,expiresAtMs:a.runtime.expiresAtMs}:{...i,auth:e,resolvedKey:o,state:`deferred`}}if(!Ba(t.authority))return null;let o={kind:`email_otp`,providerSubjectId:t.authority.factor.providerUserId};return a?{...i,auth:o,state:`ready`,authorization:a,remainingUses:a.runtime.remainingUses,expiresAtMs:a.runtime.expiresAtMs}:{...i,auth:o,state:`deferred`}}function xp(e){throw Error(`Unsupported persisted Ed25519 auth method: ${String(e)}`)}async function Sp(e,t,n,r){return await Op(e,{...t,ecdsaChainTargets:n,requiredEcdsaCapability:`sign`},r,`all`)}async function Cp(e,t,n){return await Op(e,{walletId:t.walletId,authMethod:ys(t.ownerScope.auth),ownerScope:t.ownerScope,ecdsaChainTargets:t.ecdsaChainTargets,requiredEcdsaCapability:t.requiredEcdsaCapability,...t.nowMs===void 0?{}:{nowMs:t.nowMs}},n,`all`)}async function wp(e,t,n){if(t.curve===`ecdsa`){let{curve:r,...i}=t,a=new Map;for(let e of[...t.ecdsaChainTargets,...n])a.set(z(e),e);return await Op(e,{...i,ecdsaChainTargets:[...a.values()],requiredEcdsaCapability:`sign`},new J,`ecdsa`)}let{curve:r,...i}=t;return await Sp(e,i,[],new J)}function Tp(e){return String(e.thresholdSessionIds?.ed25519||``).trim().length>0}function Ep(e,t){let n=e.ecdsaRestore?.chainTarget;if(!n)return!1;let r=z(n);for(let e of t)if(r===z(e))return!0;return!1}function Dp(e,t){let n=[];for(let r of e)`recordKind`in r||Tp(r)&&(t.length>0&&!Ep(r,t)||n.push(r));return n}async function Op(e,t,n,r){let i=String(R(t.walletId)).trim();return await vd({...t,walletId:i,ecdsaChainTargets:t.ecdsaChainTargets},{listPublicCapabilityReferences:r===`all`&&e.ed25519YaoPublicCapabilityLanes?e.ed25519YaoPublicCapabilityLanes.listLanes.bind(e.ed25519YaoPublicCapabilityLanes):void 0,isPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:r===`all`?e.readActiveWalletSessionAuthorization?.bind(null,n):void 0,listSealedRecordsForWallet:async({walletId:e,filter:n})=>{if(r===`ecdsa`)return[];let i=async n=>{let r=await Yn({walletId:e,filter:{authMethod:n,curve:`ed25519`}});switch(n){case V.passkey:return r;case V.emailOtp:{let n=Dp(await an({walletId:e,filter:{authMethod:V.emailOtp,curve:`ecdsa`}}),t.ecdsaChainTargets);return[...r,...n]}default:return xp(n)}};if(n.authMethod)return await i(n.authMethod);let[a,o]=await Promise.all([i(V.emailOtp),i(V.passkey)]);return[...a,...o]},listCanonicalEcdsaLanesForWallet:async({walletId:r})=>{let i=[],a=new Set,o=await e.listEcdsaSigningCapabilitiesForWallet({walletId:r,chainTargets:t.ecdsaChainTargets,...t.authMethod?{authMethod:t.authMethod}:{}},n);for(let e of o)for(let n of t.ecdsaChainTargets){let t=bp({available:e,chainTarget:n});if(!t)continue;let r=_d(t);!r||a.has(r)||(a.add(r),i.push(t))}return i},listActiveWalletAuthorityEcdsaLanesForWallet:async({walletId:n,chainTargets:r})=>(await Promise.all(r.map(async r=>{let i=await fd({ports:e.activeWalletAuthorityEcdsaRuntimeReadPorts,input:{walletId:R(n),chainTarget:r,requiredCapability:t.requiredEcdsaCapability}});return i.kind===`resolved`&&i.lane?i.lane:null}))).filter(e=>e!==null).map(xd)})}function kp(e,t){let n=String(e||``).trim();if(!n)throw Error(`[WalletSessionStatus] ${t} is required`);return n}function Ap(e){let t=pt(e.walletSessionId),n=dt(e.quotaId);return!t.ok||!n.ok?null:{walletSessionId:t.value,quotaId:n.value}}function jp(e){let t=Ap(e.authorization);if(!t)throw Error(`[WalletSessionStatus] canonical Wallet Session identity is invalid`);return{kind:`wallet_session_status_check`,owner:e.owner,authorization:t}}function Mp(e){return{curve:`ed25519`,walletId:R(e)}}function Np(e){return e.walletId}function Pp(e){return`${e.curve}:${Np(e)}`}function Fp(e){return`${e.walletSessionId}:${e.quotaId}`}function Ip(e){let t=String(e.walletSessionId);switch(e.status){case`active`:return{sessionId:t,status:`active`,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};case`exhausted`:return{sessionId:t,status:`exhausted`,remainingUses:0,expiresAtMs:e.expiresAtMs};case`expired`:return{sessionId:t,status:`expired`,expiresAtMs:e.expiresAtMs};case`missing`:case`superseded`:return{sessionId:t,status:`not_found`,statusCode:e.status};case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:return{sessionId:t,status:`unavailable`,statusCode:e.status,expiresAtMs:e.expiresAtMs};case`invalid`:return{sessionId:t,status:`status_unknown`,statusCode:`invalid_wallet_session_status`};default:throw Error(`[WalletSessionStatus] unsupported canonical status`)}}async function Lp(e,t){return await e.getAvailableStatus(t).catch(()=>null)}function Rp(e,t){if(!t||t.status===`status_unknown`)return e;if(t.status!==`active`)return{...e,...t,sessionId:e.sessionId};let n=Math.max(0,Math.floor(Number(t.remainingUses)||0)),r=Math.floor(Number(e.expiresAtMs)||0),i=Math.floor(Number(t.expiresAtMs)||0);return{...e,status:`active`,remainingUses:n,expiresAtMs:r>0&&i>0?Math.min(r,i):r||i,...t.authMethod?{authMethod:t.authMethod}:{},...t.retention?{retention:t.retention}:{}}}function zp(e){return jp(e)}function Bp(e){return async t=>{let n=t.authorization,r=await e.readAuthorization(t.owner.walletId);switch(r.kind){case`missing`:case`corrupt`:case`persistence_unavailable`:case`upgrade_required`:return null;case`found`:break;default:return r}if(!Vp(n,t.owner.walletId,r))return null;let i=String(e.relayerUrl||``).trim();if(!i)return null;let a=await el({relayerUrl:i,operationCredential:r.operationCredential}).read(n).catch(()=>null);return a?Ip(a):null}}function Vp(e,t,n){return n.record.walletId===t&&n.record.quotaId===e.quotaId&&n.operationCredential.walletSessionId===e.walletSessionId}function Hp(e,t,n){let r=String(e||``).trim();if(!r)throw Error(`[signer-core-command] ${t} is required`);if(F(r).length!==n)throw Error(`[signer-core-command] ${t} must decode to ${n} bytes`);return r}function Up(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`[signer-core-command] ${t} must be an object`);return e}function Wp(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(`[signer-core-command] ${n} fields are invalid`)}function Gp(e,t){if(typeof e!=`string`)throw Error(`[signer-core-command] ${t} must be a string`);let n=e.trim();if(!n)throw Error(`[signer-core-command] ${t} is required`);return n}function Kp(e){return Hp(e,`derivationClientSharePublicKey33B64u`,33)}function qp(e){return Hp(e,`relayerPublicKey33B64u`,33)}function Jp(e,t){return Hp(e,t,33)}function Yp(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw Error(`[signer-core-command] ethereumAddress must be 0x-prefixed 20-byte hex`);return t}function Xp(e){let t=Up(e,`ECDSA pending state blob`);if(Wp(t,[`kind`,`curve`,`encoding`,`producer`,`stateBlobB64u`],`ECDSA pending state blob`),Reflect.get(t,`kind`)!==`ecdsa_role_local_pending_state_blob_v1`||Reflect.get(t,`curve`)!==`secp256k1`||Reflect.get(t,`encoding`)!==`base64url`||Reflect.get(t,`producer`)!==`signer_core`)throw Error(`[signer-core-command] invalid ECDSA pending state blob envelope`);return{kind:`ecdsa_role_local_pending_state_blob_v1`,curve:`secp256k1`,encoding:`base64url`,producer:`signer_core`,stateBlobB64u:Gp(Reflect.get(t,`stateBlobB64u`),`pendingStateBlob.stateBlobB64u`)}}function Zp(e){if(e.kind!==`ecdsa_role_local_state_blob_v1`||e.curve!==`secp256k1`||e.encoding!==`base64url`||e.producer!==`signer_core`)throw Error(`[signer-core-command] invalid ECDSA ready state blob envelope`);return e}function Qp(e){return{kind:e.kind,algorithm:e.algorithm,context:{applicationBindingDigestB64u:e.context.applicationBindingDigestB64u},participants:{clientParticipantId:e.participants.clientParticipantId,relayerParticipantId:e.participants.relayerParticipantId,participantIds:[...e.participants.participantIds]},secretSource:{kind:`threshold_prf_x_client_base`,xClientBaseB64u:Hp(e.secretSource.xClientBaseB64u,`secretSource.xClientBaseB64u`,32)}}}function $p(e){if(e.clientBootstrap.participantId!==1)throw Error(`[signer-core-command] ECDSA client bootstrap participantId must be 1`);let t=Kp(e.clientBootstrap.derivationClientSharePublicKey33B64u);return{pendingStateBlob:Xp(e.pendingStateBlob),clientBootstrap:{contextBinding32B64u:Hp(e.clientBootstrap.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:t,clientShareRetryCounter:e.clientBootstrap.clientShareRetryCounter,participantId:1},publicFacts:{derivationClientSharePublicKey33B64u:Kp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Jp(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`)}}}function em(e){return{kind:e.kind,pendingStateBlob:e.pendingStateBlob,relayerPublicIdentity:{relayerKeyId:e.relayerPublicIdentity.relayerKeyId,relayerPublicKey33B64u:e.relayerPublicIdentity.relayerPublicKey33B64u,groupPublicKey33B64u:e.relayerPublicIdentity.groupPublicKey33B64u,ethereumAddress:e.relayerPublicIdentity.ethereumAddress,relayerShareRetryCounter:e.relayerPublicIdentity.relayerShareRetryCounter}}}function tm(e){return{stateBlob:Zp(e.stateBlob),publicFacts:{contextBinding32B64u:Hp(e.publicFacts.contextBinding32B64u,`contextBinding32B64u`,32),derivationClientSharePublicKey33B64u:Kp(e.publicFacts.derivationClientSharePublicKey33B64u),clientVerifyingShareB64u:Jp(e.publicFacts.clientVerifyingShareB64u,`clientVerifyingShareB64u`),relayerPublicKey33B64u:qp(e.publicFacts.relayerPublicKey33B64u),groupPublicKey33B64u:Jp(e.publicFacts.groupPublicKey33B64u,`groupPublicKey33B64u`),ethereumAddress:Yp(e.publicFacts.ethereumAddress)}}}function nm(e){return{ok:!1,code:`unavailable`,message:e}}function rm(e,t){return{ok:!1,failure:`invocation`,code:e,message:t}}function im(e,t){return{ok:!1,failure:`command`,code:e,message:t}}function am(e){let t=F(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}function om(e){return{challenge:am(e.challengeB64u),rp:{id:e.rpId,name:e.rpId},user:{id:am(e.user.idB64u),name:e.user.name,displayName:e.user.displayName},pubKeyCredParams:e.pubKeyCredParams.map(e=>({type:e.type,alg:e.alg})),authenticatorSelection:e.authenticatorSelection,timeout:e.timeoutMs,attestation:e.attestation,excludeCredentials:e.excludeCredentials.map(e=>({type:e.type,id:am(e.id)})),extensions:{prf:{eval:{first:F(e.extensions.prf.eval.firstB64u),second:F(e.extensions.prf.eval.secondB64u)}}}}}function sm(e){return/wasm (initialization|initialize|instantiation)|webassembly|module_or_path|failed to (load|compile|instantiate) wasm|derivation client wasm initialization failed/i.test(e)}function cm(e){let t=du(e),n=ou(e),r=L(e);if(n===`ECDSA_DERIVATION_WASM_INIT_FAILURE`||sm(r))return rm(`native_binding_failure`,r);switch(t){case`TIMEOUT`:return rm(`timeout`,r);case`WORKER_POSTMESSAGE_ERROR`:case`WORKER_PROTOCOL_ERROR`:case`WORKER_RUNTIME_ERROR`:return rm(`worker_transport_failure`,r);default:break}return/timed out/i.test(r)?rm(`timeout`,r):/postMessage|worker runtime|worker response|worker protocol|Malformed worker|Unknown worker/i.test(r)?rm(`worker_transport_failure`,r):null}function lm(e){let t=L(e);return/relayer|public identity|group public key|ethereum address|threshold public key/i.test(t)?im(`public_identity_mismatch`,t):im(`invalid_pending_state`,t)}function um(e){return{kind:`durable_record_store`,async loadEcdsaRoleLocalReadyRecord(t){let n=zo(t);try{let r=await e.getAppState(n);if(r!=null){let e=Mo(r);return Uo({record:e,input:t})?{ok:!0,value:{kind:`found`,record:e}}:{ok:!0,value:{kind:`malformed`,cleanup:{...t,reason:`Stored ECDSA role-local record identity does not match lookup input`},message:`Stored ECDSA role-local record identity does not match lookup input`}}}return{ok:!0,value:{kind:`not_found`}}}catch(e){let n=L(e);return{ok:!0,value:{kind:`malformed`,cleanup:{...t,reason:n},message:n}}}},async persistEcdsaRoleLocalReadyRecord(t){try{let n=Mo(t.record);return Uo({record:n,input:t.storageKeyFacts})?(await e.setAppState(zo(t.storageKeyFacts),Ho(n)),{ok:!0,value:{kind:`persisted`}}):{ok:!1,code:`invalid_record`,message:`ECDSA role-local ready record identity does not match storageKeyFacts`}}catch(e){return{ok:!1,code:`invalid_record`,message:L(e)}}},async cleanupMalformedEcdsaRoleLocalRecord(t){try{return await e.setAppState(zo(t),null),{ok:!0,value:{kind:`deleted`}}}catch(e){return{ok:!1,code:`unavailable`,message:L(e)}}}}}function dm(){return{kind:`secure_secret_store`,async seal(){return nm(`Browser secure secret store is not wired yet`)},async unseal(){return nm(`Browser secure secret store is not wired yet`)},async delete(){return nm(`Browser secure secret store is not wired yet`)}}}function fm(e){return e instanceof DOMException?e.name===`NotAllowedError`?{ok:!1,code:`not_allowed`,message:e.message||`Passkey operation was not allowed`}:{ok:!1,code:`platform_error`,message:e.message||e.name}:{ok:!1,code:`platform_error`,message:e instanceof Error?e.message:String(e)}}function pm(){return{prf:{eval:{first:et,second:Qe}}}}function mm(){return{ok:!1,code:`prf_unavailable`,message:`Required passkey PRF.first output is unavailable`}}function hm(e){return/Missing PRF/i.test(L(e))?mm():null}function gm(e){return!!(e&&typeof e==`object`&&`rawId`in e&&`response`in e&&typeof e.getClientExtensionResults==`function`)}async function _m(e,t,n){return e===`create`?n.create({publicKey:t}):n.get({publicKey:t})}function vm(e){return{kind:`authenticator`,async run(t){if(!e)return{ok:!1,code:`unavailable`,message:`navigator.credentials is unavailable`};try{switch(t.kind){case`create_passkey`:{let n=t.registrationOptions,r=await _m(`create`,om(n),e);if(!gm(r))return{ok:!1,code:`invalid_credential`,message:`Passkey creation returned an invalid credential`};let i;try{i=ws({credential:r})}catch(e){if(t.requirePrfFirst){let t=hm(e);if(t)return t}throw e}let a=Ts(i);if(t.requirePrfFirst&&!a)return mm();if(t.requirePrfFirst){let e=a||``;return{ok:!0,operation:`create_passkey`,requirePrfFirst:!0,credential:i,credentialIdB64u:i.rawId,rawIdB64u:i.rawId,rpId:qa(n.rpId),prf:{kind:`required`,prfFirstB64u:e}}}return{ok:!0,operation:`create_passkey`,requirePrfFirst:!1,credential:i,credentialIdB64u:i.rawId,rawIdB64u:i.rawId,rpId:qa(n.rpId),prf:a?{kind:`available_without_requirement`,prfFirstB64u:a}:{kind:`not_requested_or_unavailable`}}}case`get_passkey`:{let n=await _m(`get`,{rpId:t.rpId,challenge:am(t.challengeB64u),allowCredentials:[{type:`public-key`,id:am(t.credentialIdB64u)}],userVerification:`preferred`,extensions:pm()},e);if(!gm(n))return{ok:!1,code:`invalid_credential`,message:`Passkey assertion returned an invalid credential`};let r;try{r=Ds({credential:n})}catch(e){if(t.requirePrfFirst){let t=hm(e);if(t)return t}throw e}let i=Ts(r);if(t.requirePrfFirst&&!i)return mm();if(t.requirePrfFirst){let e=i||``;return{ok:!0,operation:`get_passkey`,requirePrfFirst:!0,credential:r,credentialIdB64u:r.rawId,rawIdB64u:r.rawId,rpId:t.rpId,prf:{kind:`required`,prfFirstB64u:e}}}return{ok:!0,operation:`get_passkey`,requirePrfFirst:!1,credential:r,credentialIdB64u:r.rawId,rawIdB64u:r.rawId,rpId:t.rpId,prf:i?{kind:`available_without_requirement`,prfFirstB64u:i}:{kind:`not_requested_or_unavailable`}}}}}catch(e){return fm(e)}}}}function ym(e){return{kind:`signer_crypto`,async createRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return wu({command:t,workerCtx:e})},async verifyRouterAbEcdsaRegistrationClientProofs(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return bu({command:t,workerCtx:e})},async persistInitialCanonicalEcdsaActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Cu({command:t,workerCtx:e})},async finalizeRouterAbEcdsaRegistrationActivation(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return _u({command:t,workerCtx:e})},async closeRouterAbEcdsaRegistrationCeremony(t){if(!e)throw Error(`ECDSA derivation client worker context is unavailable`);return Eu({command:t,workerCtx:e})},async prepareEcdsaClientBootstrap(t){if(!e)return rm(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:$p(await yu({command:Qp(t),workerCtx:e}))}}catch(e){let t=L(e);return t.includes(`unsupported ECDSA bootstrap secret source`)?im(`unsupported_secret_source`,t):cm(e)||im(`crypto_failure`,t)}},async finalizeEcdsaClientBootstrap(t){if(t.pendingStateBlob.kind!==`ecdsa_role_local_pending_state_blob_v1`||t.pendingStateBlob.curve!==`secp256k1`||t.pendingStateBlob.encoding!==`base64url`||t.pendingStateBlob.producer!==`signer_core`)return im(`invalid_pending_state`,`ECDSA client bootstrap pending blob envelope is invalid`);if(!e)return rm(`unavailable`,`ECDSA client bootstrap worker context is unavailable`);try{return{ok:!0,value:tm(await Su({command:em(t),workerCtx:e}))}}catch(e){return cm(e)||lm(e)}},async storeEcdsaRoleLocalSigningMaterial(t){if(t.stateBlob.kind!==`ecdsa_role_local_state_blob_v1`||t.stateBlob.curve!==`secp256k1`||t.stateBlob.encoding!==`base64url`||t.stateBlob.producer!==`signer_core`)return im(`invalid_ready_state`,`ECDSA role-local ready blob envelope is invalid`);if(!e)return rm(`unavailable`,`ECDSA role-local material worker context is unavailable`);try{let n=await ju({materialHandle:t.handle.materialHandle,bindingDigest:t.handle.bindingDigest,stateBlob:t.stateBlob,workerCtx:e});return{ok:!0,value:{handle:{kind:`ecdsa_role_local_worker_handle_v1`,materialHandle:Io(n.materialHandle),durableMaterialRef:Fo(n.materialHandle),bindingDigest:Vo(n.bindingDigest)}}}}catch(e){return cm(e)||im(`crypto_failure`,L(e))}}}}function bm(e){return{kind:`http_transport`,async request(t){if(!e)return{ok:!1,code:`network_error`,message:`fetch is unavailable`};let n=new AbortController,r=t.timeoutMs&&t.timeoutMs>0?setTimeout(()=>n.abort(),t.timeoutMs):null;try{let r=await e(t.url,{method:t.method,headers:t.headers,body:t.body==null?void 0:JSON.stringify(t.body),signal:n.signal}),i=(r.headers.get(`content-type`)||``).includes(`application/json`)?await r.json().catch(()=>null):await r.text().catch(()=>``);return{ok:!0,value:{status:r.status,body:i}}}catch(e){return{ok:!1,code:n.signal.aborted?`timeout`:`network_error`,message:e instanceof Error?e.message:String(e)}}finally{r&&clearTimeout(r)}}}}function xm(e){return{kind:`clock`,nowMs:e||(()=>Date.now())}}function Sm(e){return{kind:`random_source`,randomBytes(t){if(!e?.getRandomValues)throw Error(`Browser crypto.getRandomValues is unavailable`);let n=new Uint8Array(t);return e.getRandomValues(n),n}}}function Cm(e={}){return{kind:`browser`,storage:um(e.indexedDB||G),secrets:dm(),authenticator:vm(e.credentials||globalThis.navigator?.credentials),signerCrypto:ym(e.workerCtx),http:bm(e.fetch||globalThis.fetch?.bind(globalThis)),clock:xm(e.nowMs),random:Sm(e.crypto||globalThis.crypto)}}function wm(e){throw Error(`[threshold-ed25519] unsupported wallet auth factor kind: ${String(e)}`)}function Tm(e){return Ua(e.authority)?e.authority:Ba(e.authority)?null:(e.authority,wm(e.authority))}async function Em(e){let t=Tm(e.authority),n=t?String(t.verifier.rpId||``).trim():``;if(t&&!n)return{ok:!1,code:`invalid_args`,message:`Missing rpId for WebAuthn`};let{policy:r,sessionPolicyDigest32:i}=await Ve({nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,authority:e.authority,relayerKeyId:e.relayerKeyId,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},routerAbNormalSigning:e.routerAbNormalSigning,participantIds:e.participantIds,thresholdSessionId:e.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses}),a=e.auth;if(!a){if(!t)return{ok:!1,code:`invalid_args`,message:`Email OTP Ed25519 session mint requires explicit route authorization`};a={kind:`threshold_session_policy_webauthn`,policySecretSource:Ld({credential:await Ud({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,nearAccountId:e.nearAccountId,challengeB64u:i}),rpId:n})}}let o=Fd(a);if(!o)return{ok:!1,code:`unsupported`,message:`Missing PRF.first output from credential (requires a PRF-enabled passkey)`};let s=await Nd({relayerUrl:e.relayerUrl,sessionKind:`opaque`,relayerKeyId:e.relayerKeyId,sessionPolicy:r,auth:a,projectEnvironmentId:e.runtimeScopeBootstrap?.projectEnvironmentId,publishableKey:e.runtimeScopeBootstrap?.publishableKey,...e.existingOperationCredential?{existingOperationCredential:e.existingOperationCredential}:{}});if(!s.ok)return s.code===`already_committed`?s:{ok:!1,code:s.code,message:s.message};let c=r.thresholdSessionId,l=s.thresholdSessionId||c,u=s.expiresAtMs,d=s.remainingUses,f=s.runtimePolicyScope;if(!l||!s.authorizationId||!s.walletSessionId||!s.quotaId||!f)return{ok:!1,code:`invalid_response`,message:`Threshold Ed25519 session mint returned incomplete lifecycle metadata`};let p={ok:!0,thresholdSessionId:xs.thresholdEd25519Session(l),authorizationId:s.authorizationId,walletSessionId:s.walletSessionId,quotaId:s.quotaId,expiresAtMs:u,remainingUses:d,runtimePolicyScope:f,routerAbNormalSigning:e.routerAbNormalSigning,passkeyPrfFirstB64u:o};switch(s.sessionKind){case`issued_exact_wallet_session`:return s.operationCredential.walletSessionId===s.walletSessionId?{...p,sessionKind:s.sessionKind,operationCredential:s.operationCredential}:{ok:!1,code:`invalid_response`,message:`Threshold Ed25519 session mint credential does not identify its session`};case`already_committed_exact_wallet_session`:return{...p,sessionKind:s.sessionKind};default:return Dm(s)}}function Dm(e){throw Error(`[threshold-ed25519] unsupported Wallet Session mint kind: ${String(e)}`)}function Om(e){return{curve:`ed25519`,authMethod:`passkey`,walletId:e.walletId,relayerUrl:e.relayerUrl,walletSessionToken:e.walletSessionToken,ed25519Restore:e.ed25519Restore}}function km(e){let t=String(e.authority.factor.credentialIdB64u||``).trim();if(!t)throw Error(`[threshold-ed25519] passkey authority credential id is required`);return t}function Am(e){switch(e.kind){case`fresh_ed25519_provisioning`:return{kind:`fresh`,walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,thresholdSessionId:xs.thresholdEd25519Session(nl(`threshold-ed25519`))};case`exact_ed25519_provisioning`:{let t=Ec(e.laneIdentity,`exact Ed25519 capability provisioning`);return{kind:`exact`,walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:String(t.nearEd25519SigningKeyId),signerSlot:t.signerSlot,thresholdSessionId:e.laneIdentity.thresholdSessionId,walletSessionId:e.laneIdentity.walletSessionId,quotaId:e.laneIdentity.quotaId}}}throw Error(`[threshold-ed25519] unsupported Ed25519 provisioning kind`)}function jm(e){switch(e.requested.kind){case`fresh`:return!1;case`exact`:return e.returnedThresholdSessionId!==e.requested.thresholdSessionId||e.returnedWalletSessionId!==e.requested.walletSessionId||e.returnedQuotaId!==e.requested.quotaId}throw e.requested,Error(`[threshold-ed25519] unsupported resolved provisioning identity`)}function Mm(e){switch(e.connected.sessionKind){case`issued_exact_wallet_session`:return e.connected.operationCredential.walletSessionId===e.connected.walletSessionId?{ok:!0,operationCredential:e.connected.operationCredential}:{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 session mint credential does not identify its session`};case`already_committed_exact_wallet_session`:{if(e.protocol.kind!==`exact`||!e.existingOperationCredential)return{ok:!1,code:`unlock_exact_method`,message:`Threshold Ed25519 session reuse returned no credential; exact-method unlock is required`};let t=e.existingOperationCredential;return t.walletSessionId===e.connected.walletSessionId?{ok:!0,operationCredential:t}:{ok:!1,code:`unlock_exact_method`,message:`Threshold Ed25519 reused session credential identifies another session`}}default:return Nm(e.connected)}}function Nm(e){throw Error(`[threshold-ed25519] unsupported connected session kind: ${String(e)}`)}async function Pm(e,t){let n=Am(t);if(t.kind===`exact_ed25519_provisioning`&&t.operationCredential.walletSessionId!==t.laneIdentity.walletSessionId)return{ok:!1,code:`invalid_args`,message:`Threshold Ed25519 exact credential identifies another Wallet Session`};let r=Or(n.nearAccountId),i=String(t.relayerUrl||e.defaultRelayerUrl||``).trim(),a=se(t.participantIds);if(!i)throw Error(`Missing relayer url (configs.network.relayer.url)`);if(!a)throw Error(`Missing participantIds for threshold Ed25519 session provision`);let o=e.getSignerWorkerContext(),s=await Em({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,relayerUrl:i,relayerKeyId:t.relayerKeyId,nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,authority:t.authority,...t.auth?{auth:t.auth}:{},...t.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:{},routerAbNormalSigning:t.routerAbNormalSigning,...t.runtimeScopeBootstrap?{runtimeScopeBootstrap:t.runtimeScopeBootstrap}:{},nearAccountId:r,participantIds:a,thresholdSessionId:n.thresholdSessionId,ttlMs:t.ttlMs,remainingUses:t.remainingUses,workerCtx:o,...t.kind===`exact_ed25519_provisioning`?{existingOperationCredential:t.operationCredential}:{}});if(!s.ok)return{ok:!1,code:String(s.code||`worker_error`).trim()||`worker_error`,message:String(s.message||``).trim()||`Threshold Ed25519 session mint failed`};let c=s.thresholdSessionId||n.thresholdSessionId,l=Number(s.expiresAtMs),u=Number(s.remainingUses),d=String(s.passkeyPrfFirstB64u||``).trim(),f=s.runtimePolicyScope;if(!c||!s.walletSessionId||!s.authorizationId||!s.quotaId||!Number.isFinite(l)||!Number.isFinite(u))return{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 session mint returned incomplete public session metadata`};if(jm({requested:n,returnedThresholdSessionId:c,returnedWalletSessionId:s.walletSessionId,returnedQuotaId:s.quotaId}))return{ok:!1,code:`invalid_result`,message:`Threshold Ed25519 exact provisioning returned a different lifecycle identity`};let p=Mm({connected:s,protocol:n,existingOperationCredential:t.kind===`exact_ed25519_provisioning`?t.operationCredential:void 0});if(!p.ok)return p;let{operationCredential:m}=p,h=m.token,g={kind:`minted_ed25519_wallet_session_authority`,thresholdSessionId:c,walletSessionId:s.walletSessionId,authorizationId:s.authorizationId,quotaId:s.quotaId,expiresAtMs:l,remainingUses:u,runtimePolicyScope:f,operationCredential:m},_=e.touchIdPrompt.getRpId();if(d&&t.source===`email_otp`)return{ok:!1,code:`invalid_result`,message:`Passkey PRF material cannot seal an Email OTP Ed25519 session`};if(await t.onWalletSessionAuthorityReady?.(g),d&&t.source!==`email_otp`){let o=km(t.authority),s=yn({rpId:_,nearAccountId:String(r),nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,relayerKeyId:t.relayerKeyId,participantIds:a,runtimePolicyScope:f,signerSlot:n.signerSlot,routerAbNormalSigning:t.routerAbNormalSigning,credentialIdB64u:o,materialActivation:t.materialActivation}),p=Om({walletId:n.walletId,relayerUrl:i,walletSessionToken:h,ed25519Restore:s});try{await rl(e.touchConfirm,{thresholdSessionId:String(c),prfFirstB64u:d,expiresAtMs:l,remainingUses:u,transport:p})}catch(e){return{ok:!1,code:`warm_session_cache_failed`,message:String(e&&typeof e==`object`&&`message`in e?e.message:e||``).trim()||`Threshold Ed25519 session material could not be cached`}}}return{ok:!0,sessionKind:s.sessionKind,thresholdSessionId:c,walletSessionId:s.walletSessionId,authorizationId:s.authorizationId,quotaId:s.quotaId,expiresAtMs:l,remainingUses:u,runtimePolicyScope:f,operationCredential:m}}function Fm(e){if(!e)return null;switch(e.materialKind){case`role_local_worker_handle`:return e.roleLocalMaterialRef;case`role_local_durable_sealed_ref`:return e.roleLocalMaterialRef;case`role_local_durable_public_anchor`:case`role_local_ready_state_blob`:case`metadata_only`:return null}}function Im(e){let t=e.bootstrap.thresholdEcdsaKeyRef,n=t.keyHandle,r=t.ecdsaThresholdKeyId,i=t.backendBinding?.ecdsaRoleLocalReadyRecord,a=t.backendBinding?.materialKind===`role_local_worker_handle`?t.backendBinding.publicFacts:i?.publicFacts;if(!a)throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide role-local public facts`);let o=So({record:{signingRootId:a.signingRootId,signingRootVersion:a.signingRootVersion}}),s=String(o.signingRootId),c=String(o.signingRootVersion),l=ra(t.ethereumAddress);if(!l)throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide a threshold owner address`);let u=t.thresholdEcdsaPublicKeyB64u,d=t.backendBinding.relayerKeyId,f=t.relayerVerifyingShareB64u,p=t.participantIds,m=na(e.chainTarget),h=Fm(t.backendBinding),g={accountModel:`threshold-ecdsa`,accountAddress:l,ownerAddress:l,thresholdOwnerAddress:l,keyScope:`evm-family`,keyHandle:n,walletId:e.walletId,ecdsaThresholdKeyId:r,signingRootId:s,signingRootVersion:c,relayerKeyId:d,relayerVerifyingShareB64u:f,thresholdEcdsaPublicKeyB64u:u,participantIds:p,publicCapability:a.publicCapability,ecdsaRoleLocalPublicFacts:a,chainTarget:e.chainTarget,targetMembership:{targetKey:m,chainTarget:e.chainTarget},sharedEvmFamilyKey:{walletId:e.walletId,keyScope:`evm-family`,keyHandle:n,ecdsaThresholdKeyId:r,signingRootId:s,signingRootVersion:c,participantIds:p,thresholdOwnerAddress:l,thresholdEcdsaPublicKeyB64u:u},chainId:e.chainTarget.chainId};return h&&(g.roleLocalMaterialRef=h),{account:{profileId:e.walletId,chainIdKey:m,accountAddress:l,accountModel:`threshold-ecdsa`},signer:{signerId:l,signerType:`threshold`,signerKind:Wr.thresholdEcdsa,signerAuthMethod:e.signerAuth.authMethod,signerSource:e.signerAuth.signerSource,metadata:g},activationPolicy:{mode:`allocate_next_free`},preferredSlot:1,selectAsActive:!1,mutation:{routeThroughOutbox:!1}}}async function Lm(e){let t=R(e.walletId);await e.bootstrapStore.upsertProfile({profileId:t}),await e.bootstrapStore.activateAccountSigner(Im({walletId:t,chainTarget:e.chainTarget,bootstrap:e.bootstrap,signerAuth:e.signerAuth}))}function Rm(e){let t=String(e.operationId||``).trim(),n=String(e.operationFingerprint||``).trim();if(!t)throw Error(`[SigningEngine] signingOperationId is required`);if(!n)throw Error(`[SigningEngine] operation fingerprint is required`);let r=e.state.callerProvidedOperationFingerprintsById,i=r.get(t);if(i&&i!==n)throw Error(`[SigningEngine] caller-provided signingOperationId reused for a different operation: ${t}`);r.set(t,n),Bm(r)}var zm=class{state={callerProvidedOperationFingerprintsById:new Map};bindCallerProvidedOperationIdToFingerprint(e){Rm({state:this.state,operationId:e.operationId,operationFingerprint:e.operationFingerprint})}};function Bm(e){for(;e.size>1024;){let t=e.keys().next().value;if(!t)return;e.delete(t)}}function Vm(e){let t=re(e);if(!t)return null;if(t.kind===`all`)return{kind:`all`};if(t.kind!==`session`)return null;let r=n(t.thresholdSessionId);return r.ok?{kind:`session`,thresholdSessionId:r.value}:null}function Hm(e){let t=re(e);if(!t||t.kind!==`clear_volatile_warm_material`||t.durableRecord!=null||t.resolvedIdentity!=null||t.deleteReason!=null)return null;let n=Vm(t.scope);return n?{kind:`clear_volatile_warm_material`,scope:n}:null}function Um(e){return{kind:`clear_volatile_warm_material`,scope:{kind:`session`,thresholdSessionId:e}}}function Wm(){return{kind:`clear_volatile_warm_material`,scope:{kind:`all`}}}async function Gm(e){let{authMethod:t,authority:n}=e.selected;if(n.state!==`active`)return{kind:`rejected`,reason:{kind:`authority_not_active`}};if(t.status!==`active`)return{kind:`rejected`,reason:{kind:`auth_method_not_active`}};if(n.walletId!==t.walletId)return{kind:`rejected`,reason:{kind:`wallet_id_mismatch`}};if(n.authorityId!==t.walletAuthorityId)return{kind:`rejected`,reason:{kind:`authority_id_mismatch`}};if(await ga(n.signerActivations)!==n.signerActivationSetDigestB64u)return{kind:`rejected`,reason:{kind:`authority_activation_set_digest_mismatch`}};if(await Aa(n)!==n.authorityDigestB64u)return{kind:`rejected`,reason:{kind:`authority_digest_mismatch`}};let r=Km(e.operation);if(!n.permissions.includes(r))return{kind:`rejected`,reason:{kind:`permission_missing`}};switch(e.operation.kind){case`near_sign`:case`near_export`:return qm(n,t);case`evm_sign`:case`evm_export`:return Jm(n,t);default:return Zm(e.operation)}}function Km(e){switch(e.kind){case`near_sign`:case`evm_sign`:return`sign`;case`near_export`:case`evm_export`:return`export_keys`;default:return Zm(e)}}function qm(e,t){let n=Ym(e.signerActivations);return n===null?{kind:`rejected`,reason:{kind:`signer_family_unavailable`}}:n.signer.walletId===e.walletId?{kind:`resolved`,value:{kind:`resolved`,keyFamily:`ed25519`,walletId:e.walletId,authorityId:e.authorityId,authMethodId:t.walletAuthMethodId,materialActivation:n.materialActivation,registeredPublicKeyB64u:n.signer.registeredPublicKeyB64u}}:{kind:`rejected`,reason:{kind:`signer_wallet_id_mismatch`}}}function Jm(e,t){let n=Xm(e.signerActivations);return n===null?{kind:`rejected`,reason:{kind:`signer_family_unavailable`}}:n.signer.walletId===e.walletId?{kind:`resolved`,value:{kind:`resolved`,keyFamily:`ecdsa_secp256k1`,walletId:e.walletId,authorityId:e.authorityId,authMethodId:t.walletAuthMethodId,materialActivation:n.materialActivation,thresholdPublicKey33B64u:n.signer.thresholdPublicKey33B64u,evmAddress:n.signer.evmAddress}}:{kind:`rejected`,reason:{kind:`signer_wallet_id_mismatch`}}}function Ym(e){return e.keyFamilies[0]!==`ed25519`||e.ed25519===void 0?null:e.ed25519}function Xm(e){return e.keyFamilies[0]!==`ecdsa_secp256k1`&&e.keyFamilies.length!==2||e.ecdsa===void 0?null:e.ecdsa}function Zm(e){throw Error(`unsupported wallet authority operation: ${String(e)}`)}const Qm={listed:0,discovered:0,truncated:0};async function $m(e,t){let n=R(t.walletId);switch(t.authMethod){case V.emailOtp:return await e.discovery.emailOtp({...t,walletId:n,authMethod:V.emailOtp});case V.passkey:return await e.discovery.passkey?.({...t,walletId:n,authMethod:V.passkey})??Qm;default:throw t.authMethod,Error(`Unsupported signer auth method`)}}async function eh(e,t,n){return await Sp(e.availableLanes,t,e.getConfiguredEcdsaChainTargets(),n)}async function th(e,t,n){return await Cp(e.availableLanes,{walletId:t.walletId,ownerScope:t.ownerScope,ecdsaChainTargets:e.getConfiguredEcdsaChainTargets(),requiredEcdsaCapability:`sign`},n)}function nh(e){let t=typeof e?.getWarmSessionStatus==`function`?t=>e.getWarmSessionStatus(t):null,n=typeof e?.getWarmSessionStatuses==`function`?t=>e.getWarmSessionStatuses(t):null;return t&&n?{statusPort:`single_and_batch`,getWarmSessionStatus:t,getWarmSessionStatuses:n}:t?{statusPort:`single`,getWarmSessionStatus:t}:n?{statusPort:`batch`,getWarmSessionStatuses:n}:null}function rh(e){console.warn(`[WarmSessionStore] warm-session availability failure`,{operation:e.operation,thresholdSessionId:e.thresholdSessionId,code:String(e.code||`worker_error`).trim()||`worker_error`})}async function ih(e,t){let n=String(t||``).trim();return!e||!n||e.statusPort===`batch`?null:ah({thresholdSessionId:n,status:await e.getWarmSessionStatus({thresholdSessionId:n}).catch(()=>({ok:!1,code:`worker_error`,message:`worker_error`}))})}function ah(e){let t=String(e.thresholdSessionId||``).trim();return e.status.ok?{state:`warm`,thresholdSessionId:t,expiresAtMs:e.status.expiresAtMs,remainingUses:e.status.remainingUses}:e.status.code===`expired`?{state:`expired`,thresholdSessionId:t}:e.status.code===`exhausted`?{state:`exhausted`,thresholdSessionId:t}:e.status.code===`not_found`?{state:`missing`,thresholdSessionId:t}:(rh({operation:`status_read`,thresholdSessionId:t,code:e.status.code}),{state:`unavailable`,thresholdSessionId:t,code:String(e.status.code||`worker_error`).trim()||`worker_error`})}function oh(e){if(!e.auth||String(e.auth.session.walletId)!==String(e.runtime.walletId)||e.auth.selectedAuthMethod.kind!==e.runtime.factor.kind||e.auth.status.remainingUses<=0||e.auth.status.quotaId!==e.auth.session.quotaId||!jc({session:e.auth.session,materialActivation:e.runtime.sealedRecord.ed25519Restore.materialActivation})||e.runtime.factor.kind===`passkey`&&(e.auth.selectedAuthMethod.kind!==`passkey`||String(e.auth.selectedAuthMethod.rpId)!==String(e.runtime.factor.rpId)||e.auth.selectedAuthMethod.credentialIdB64u!==e.runtime.factor.credentialIdB64u||e.auth.selectedFactorAuthority.factor.kind!==`passkey`||e.auth.selectedFactorAuthority.factor.credentialIdB64u!==e.runtime.factor.credentialIdB64u)||e.runtime.factor.kind===`email_otp`&&(e.auth.selectedAuthMethod.kind!==`email_otp`||e.auth.selectedFactorAuthority.factor.kind!==`email_otp`||e.auth.selectedFactorAuthority.factor.providerUserId!==e.runtime.factor.providerSubjectId||e.auth.selectedFactorAuthority.verifier.kind!==`email_otp_wallet_auth_method`||e.auth.selectedFactorAuthority.verifier.emailHashHex!==e.runtime.factor.emailHashHex))return`authorization_required`;let t=Ac({remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs});if(t===`expired`||t===`exhausted`)return`authorization_required`;if(!e.prfClaim)return`prf_missing`;switch(e.prfClaim.state){case`unavailable`:return`prf_unavailable`;case`warm`:return`ready`;case`missing`:case`expired`:case`exhausted`:return`prf_missing`}}function sh(e){if(!e.auth)return`authorization_required`;let t=Ac({remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs});if(t===`expired`||t===`exhausted`)return`authorization_required`;let n=e.emailOtpAuthContext;return n&&Hc(n)===`single_use`&&Number(zc(n))>0||!e.prfClaim?`prf_missing`:e.prfClaim.state===`unavailable`?`prf_unavailable`:e.prfClaim.state===`warm`?`ready`:`prf_missing`}function ch(e){let t=String(e.sessionId||``).trim(),n=e.claim,r={...e.authMethod?{authMethod:e.authMethod}:{},...e.retention?{retention:e.retention}:{}};return n?n.state===`unavailable`?{sessionId:t,status:`unavailable`,statusCode:n.code,...r}:n.state===`warm`?{sessionId:t,status:`active`,...r,remainingUses:n.remainingUses,expiresAtMs:n.expiresAtMs}:{sessionId:t,...r,status:n.state===`expired`?`expired`:n.state===`exhausted`?`exhausted`:`not_found`}:{sessionId:t,status:`not_found`,...r}}function lh(e){if(!e.auth?.operationCredential.token||!String(e.runtime.relayerUrl||``).trim())return null;let t=String(e.groupId||``).trim();return{curve:`ecdsa`,...e.signingSessionSealKeyVersion?{signingSessionSealKeyVersion:e.signingSessionSealKeyVersion}:{},...t?{groupId:t}:{}}}function uh(e){return String(e||``).trim()}function dh(e){let t=uh(e.thresholdSessionId),n=Math.max(0,Math.floor(Number(e.remainingUses)||0)),r=Math.floor(Number(e.expiresAtMs)||0);return r<=Date.now()?{state:`expired`,thresholdSessionId:t}:n<=0?{state:`exhausted`,thresholdSessionId:t}:{state:`warm`,thresholdSessionId:t,remainingUses:n,expiresAtMs:r}}function fh(e){switch(e.factor.kind){case`email_otp`:return V.emailOtp;case`passkey`:return V.passkey}}function ph(e){for(let t of e){let e=t.source;switch(e){case V.emailOtp:return V.emailOtp;case V.passkey:break;default:return mh(e)}}return null}function mh(e){throw Error(`Unsupported signing session lane auth method: ${String(e)}`)}function hh(e){return Mp(e.walletId)}function gh(e,t){t&&(!t.thresholdSessionId||!t.walletSessionId||e.push(t))}function _h(e,t,n){return{curve:`ed25519`,chain:`near`,source:fh(e),thresholdSessionId:e.thresholdSessionId,walletSessionId:t,quotaId:n,materialActivation:e.sealedRecord.ed25519Restore.materialActivation,backing:`record_policy`,runtime:e}}async function vh(e,t){return await xh(e,t,e.exactWalletSessionReadPorts)}function yh(e,t){return e.capabilitySubjects.some(e=>e.kind===`sign`&&e.keyFamily===`ed25519`&&b(e.materialActivation,t))}function bh(e){switch(e.runtime.factor.kind){case`passkey`:return e.authMethod.kind===`passkey`&&String(e.authMethod.rpId)===String(e.runtime.factor.rpId)&&String(e.authMethod.credentialIdB64u)===String(e.runtime.factor.credentialIdB64u);case`email_otp`:return e.authMethod.kind===`email_otp`&&e.authMethod.emailHashHex===e.runtime.factor.emailHashHex}}async function xh(e,t,n){let r=e.listExactSealedSessionsForWallet??Yn,i=(await Promise.all([r({walletId:t,filter:{authMethod:V.passkey,curve:`ed25519`}}),r({walletId:t,filter:{authMethod:V.emailOtp,curve:`ed25519`}})])).flat(),a;try{a=await n.resolveSelectedWalletAuthority(String(t))}catch{return[]}if(a.kind!==`resolved`)return[];let{selection:o,authMethod:s,authority:c}=a;if(o.lockState!==`unlocked`||o.walletId!==t||o.walletAuthMethodId!==s.walletAuthMethodId||s.status!==`active`||s.walletId!==t||s.walletAuthorityId!==c.authorityId||c.state!==`active`||c.walletId!==t)return[];let l;try{l=await Gm({selected:{authMethod:s,authority:c},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}})}catch{return[]}if(l.kind!==`resolved`||l.value.walletId!==t||l.value.authorityId!==c.authorityId||l.value.authMethodId!==s.walletAuthMethodId)return[];let u;try{u=await n.readExactWithOperationCredential({walletId:t,authorityId:c.authorityId,authMethodId:s.walletAuthMethodId})}catch{return[]}if(u.kind!==`found`)return[];let d=u.record,f=u.operationCredential;if(d.walletId!==t||d.authorityId!==c.authorityId||d.authMethodId!==s.walletAuthMethodId||d.authorityDigestB64u!==c.authorityDigestB64u||d.authorityRevocationEpoch!==c.revocationEpoch||d.expiresAtMs<=Date.now()||f.walletSessionId.length===0||f.token.trim().length===0||!yh(d,l.value.materialActivation))return[];let p=[],m=new Set;for(let e of i){if(e.curve!==`ed25519`)continue;let n=pn(e);!n||n.walletId!==t||!bh({runtime:n,authMethod:s})||!b(n.sealedRecord.ed25519Restore.materialActivation,l.value.materialActivation)||m.has(n.thresholdSessionId)||(m.add(n.thresholdSessionId),gh(p,_h(n,f.walletSessionId,d.quotaId)))}return p}async function Sh(e){let t=kp(e.walletSessionId,`walletSessionId`);return(await vh(e.deps,e.walletId)).filter(n=>n.walletSessionId===t&&n.quotaId===e.quotaId)}function Ch(e){let t=new Map;for(let n of e.lanes){let e=Fp({walletSessionId:n.walletSessionId,quotaId:n.quotaId}),r=t.get(e)||[];r.push(n),t.set(e,r)}let n=new Map;for(let r of t.values()){let t=r[0];if(!t)continue;let i=t.walletSessionId,a=t.quotaId,o=wh({walletSessionId:i,quotaId:a,lanes:r,claimsByThresholdSessionId:e.claimsByThresholdSessionId,statusOverrides:e.statusOverrides}),s=r.map(t=>({lane:t,claim:e.claimsByThresholdSessionId.get(t.thresholdSessionId)||null})),c=e=>{if(!e.length)return;let t=e.find(e=>e.claim?.state===`expired`)?.claim||e.find(e=>e.claim?.state===`exhausted`)?.claim||null,r=e.map(e=>e.claim).filter(e=>e?.state===`warm`),i=r.length?Math.min(...r.map(e=>Math.floor(Number(e.remainingUses)||0))):void 0,a=r.length?Math.min(...r.map(e=>Math.floor(Number(e.expiresAtMs)||0))):void 0;for(let r of e){if(t){n.set(r.lane.thresholdSessionId,Ah(t,r.lane.thresholdSessionId));continue}if(r.claim?.state===`warm`){n.set(r.lane.thresholdSessionId,{state:`warm`,thresholdSessionId:r.lane.thresholdSessionId,remainingUses:i??r.claim.remainingUses,expiresAtMs:a??r.claim.expiresAtMs});continue}n.set(r.lane.thresholdSessionId,r.claim)}};if(o){let e=Oh(o),t=s.filter(e=>o.thresholdSessionIds.has(uh(e.lane.thresholdSessionId))),r=s.filter(e=>!o.thresholdSessionIds.has(uh(e.lane.thresholdSessionId)));if(t.length===s.length){for(let t of s)n.set(t.lane.thresholdSessionId,e?Ah(e,t.lane.thresholdSessionId):null);continue}for(let r of t)n.set(r.lane.thresholdSessionId,e?Ah(e,r.lane.thresholdSessionId):null);c(r);continue}c(s)}return n}function wh(e){let t=e.statusOverrides;if(!t)return null;for(let n of Th(e.lanes)){let r=t.get(Eh(n,e.walletSessionId,e.quotaId));if(!r)continue;let i=Dh({override:r,lanes:e.lanes,claimsByThresholdSessionId:e.claimsByThresholdSessionId,statusOverrides:t});if(i)return i}return null}function Th(e){let t=new Map;for(let n of e){let e=hh(n.runtime);t.set(Pp(e),e)}return[...t.values()]}function Eh(e,t,n){return`${Pp(e)}:${Fp({walletSessionId:t,quotaId:n})}`}function Dh(e){if(!e.lanes.length)return null;if(e.lanes.find(t=>{let n=uh(t.thresholdSessionId);return e.override.thresholdSessionIds.has(n)||t.runtime.sealedRecord.updatedAtMs<=e.override.updatedAtMs?!1:(e.claimsByThresholdSessionId.get(n)||null)?.state===`warm`})){for(let t of e.lanes)e.statusOverrides?.delete(Eh(hh(t.runtime),e.override.walletSessionId,e.override.quotaId));return null}return e.override}function Oh(e){let t=e.status;if(t.status===`active`){if(typeof t.remainingUses!=`number`||typeof t.expiresAtMs!=`number`)return{state:`unavailable`,code:`invalid_wallet_budget_status`};let e=Math.max(0,Math.floor(Number(t.remainingUses)||0)),n=Math.floor(Number(t.expiresAtMs)||0);return n<=Date.now()?{state:`expired`}:e<=0?{state:`exhausted`}:{state:`warm`,remainingUses:e,expiresAtMs:n}}return t.status===`expired`?{state:`expired`}:t.status===`exhausted`?{state:`exhausted`}:t.status===`unavailable`?{state:`unavailable`,code:String(t.statusCode||`wallet_budget_status_override`)}:null}async function kh(e){let t=new Map;for(let n of e.lanes)t.set(n.thresholdSessionId,dh({thresholdSessionId:n.thresholdSessionId,remainingUses:n.runtime.remainingUses,expiresAtMs:n.runtime.expiresAtMs}));return t}function Ah(e,t){switch(e.state){case`warm`:return{state:`warm`,thresholdSessionId:t,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};case`unavailable`:return{state:`unavailable`,thresholdSessionId:t,code:e.code};case`missing`:return{state:`missing`,thresholdSessionId:t};case`expired`:return{state:`expired`,thresholdSessionId:t};case`exhausted`:return{state:`exhausted`,thresholdSessionId:t}}}async function jh(e){let t=await vh(e.deps,e.walletId);return Mh({deps:e.deps,lanes:t,statusOverrides:e.statusOverrides})}async function Mh(e){let t=await kh({deps:e.deps,lanes:e.lanes});return Ch({lanes:e.lanes,claimsByThresholdSessionId:t,statusOverrides:e.statusOverrides})}async function Nh(e){let t=e.walletSessionId,n=Array.from(new Set([...e.targetThresholdSessionIds||[]].map(uh).filter(Boolean)));if(!n.length)return null;let r=nh(e.deps.touchConfirm),i=await Promise.all(n.map(e=>ih(r,e)));return ch({sessionId:t,claim:i.find(e=>e?.state===`expired`)||i.find(e=>e?.state===`exhausted`)||i.find(e=>e?.state===`unavailable`)||i.find(e=>e?.state===`warm`)||null})}function Ph(e){let t=e.lanes.some(e=>e.source===V.emailOtp);return ch({sessionId:e.walletSessionId,claim:e.claim,authMethod:ph(e.lanes),retention:t?`session`:null})}async function Fh(e){let t=await Sh({deps:e.deps,walletId:e.walletId,walletSessionId:e.walletSessionId,quotaId:e.quotaId});e.statusOverrides.delete(Eh(Mp(e.walletId),e.walletSessionId,e.quotaId));let n=new Set,r=new Set;for(let i of t){if(i.backing===`record_policy`)continue;let t=String(i.materialActivation.activationId);if(n.has(t))continue;if(n.add(t),i.backing===`email_otp_worker`){try{await e.deps.clearEmailOtpWarmSessionMaterial?.(i.thresholdSessionId)}catch{r.add(`email_otp_material`)}continue}let a=s(i.thresholdSessionId);if(a.ok)try{await e.deps.touchConfirm?.clearVolatileWarmSessionMaterial?.(Um(a.value))}catch{r.add(`touch_confirm_material`)}}return r.size>0?{kind:`unavailable`,failures:[...r]}:{kind:`cleared`}}function Ih(e){return`${String(e.walletId)}:wallet-session:${String(e.walletSessionId)}`}function Lh(e){let t=e.state;return{kind:`wallet_session_expired`,walletId:t.walletId,walletSessionId:e.walletSessionId,authMethod:t.authMethod,expiresAtMs:t.expiresAtMs,detectedAtMs:t.detectedAtMs}}async function Rh(e){let t=e.state.laneIdentity;if(!(`thresholdSessionId`in t))return{kind:`cleared`};try{return t.auth.kind===`email_otp`?await e.deps.readiness.clearEmailOtpWarmSessionMaterial(t.thresholdSessionId):await e.deps.readiness.touchConfirm.clearVolatileWarmSessionMaterial(Um(t.thresholdSessionId)),{kind:`cleared`}}catch{return{kind:`unavailable`,failures:[t.auth.kind===`email_otp`?`email_otp_material`:`touch_confirm_material`]}}}var zh=class{#e;#t=new Map;#n=new Set;constructor(e){this.#e=e}async invalidate(e){let t=e.state,n=Ih(t),r=this.#t.get(n);r||(r=Rh({deps:this.#e,state:t}),this.#t.set(n,r));let i=await r;return i.kind===`unavailable`?(this.#t.delete(n),{kind:`unavailable`,failures:i.failures,event:null}):this.#n.has(n)?{kind:`already_invalidated`,event:null}:(this.#n.add(n),{kind:`invalidated`,event:Lh(e)})}};function Bh(e){return e.lane.curve===`ed25519`&&e.readiness.curve===`ed25519`}function Vh(e){return e.lane.curve===`ecdsa`&&e.readiness.curve===`ecdsa`}var Hh=class{#e;#t;#n=!0;constructor(e){this.#e=e.listeners,this.#t=e.listener}unsubscribe(){this.#n&&(this.#n=!1,this.#e.delete(this.#t))}};function Uh(e){return Jo({walletId:e.event.walletId,walletSessionId:e.event.walletSessionId,authMethod:e.event.authMethod,expiresAtMs:e.event.expiresAtMs,detectedAtMs:e.event.detectedAtMs,source:e.source})}var Wh=class{onPlannerTrace;walletSessionStatusReader;walletSessionDeps;walletSessionState;operationIdBindings;walletSessionExpiryInvalidator;lifecycleListeners=new Set;walletSessionQuotaAdmissionRefreshQueues=new Map;exactWalletSessionReadPorts;constructor(e){this.exactWalletSessionReadPorts=e.exactWalletSessionReadPorts,this.onPlannerTrace=e.onPlannerTrace,this.walletSessionDeps=e,this.walletSessionState={statusOverrides:new Map},this.walletSessionExpiryInvalidator=new zh({readiness:{touchConfirm:e.touchConfirm,clearEmailOtpWarmSessionMaterial:e.clearEmailOtpWarmSessionMaterial},statusOverrides:this.walletSessionState.statusOverrides}),this.operationIdBindings=new zm,this.walletSessionStatusReader=e.getStatus}async resolveActiveAuthorizedRouterAbEd25519WalletSessionState(e){return await xr({state:e.state,nowMs:e.nowMs,ports:this.exactWalletSessionReadPorts})}subscribeLifecycle(e){return this.lifecycleListeners.add(e),new Hh({listeners:this.lifecycleListeners,listener:e})}async invalidateExpiredWalletSession(e){let t=await Mt({ports:this.exactWalletSessionReadPorts,input:{walletId:e.state.walletId,authMethod:e.state.authMethod,walletSessionId:e.state.walletSessionId,quotaId:e.state.quotaId,requiredSigningSubject:Cr(e.state.laneIdentity),expiry:{kind:`expired`,nowMs:e.state.detectedAtMs}}});if(t.kind!==`resolved`)return{kind:`unavailable`,failures:[`wallet_session_authorization`],event:null};let n=await this.walletSessionExpiryInvalidator.invalidate({state:e.state,walletSessionId:t.resolved.walletSessionId});if(n.kind!==`invalidated`)return n;let r=Uh({event:n.event,source:e.source});return this.emitLifecycleEvent(r),{kind:`invalidated`,event:r}}emitLifecycleEvent(e){for(let t of this.lifecycleListeners)try{t(e)}catch(e){console.error(`[SigningSessionCoordinator] lifecycle listener failed`,e)}}resolveAuthPlan(e,t){let n=jd(e),r=Ad(e,n);return t?.(r),t||this.onPlannerTrace?.(r),n}async resolveAuthPlanFromReadiness(e,t){if(Bh(e)){let n=e.readiness.status===`ready`||e.readiness.status===`exhausted`||e.readiness.status===`expired`?e.readiness.expiresAtMs:0,r=e.readiness.status===`ready`||e.readiness.status===`exhausted`?e.readiness.remainingUses:0;return{readiness:e.readiness,expiresAtMs:n,remainingUses:r,signingSessionPlan:this.resolveAuthPlan({lane:e.lane,readiness:e.readiness,forceFreshAuth:e.forceFreshAuth,sensitiveOperationPolicy:e.sensitiveOperationPolicy},t)}}if(Vh(e)){let n=e.readiness.status===`ready`||e.readiness.status===`exhausted`||e.readiness.status===`expired`?e.readiness.expiresAtMs:Math.floor(Number(e.expiresAtMs)||0),r=e.readiness.status===`ready`||e.readiness.status===`exhausted`?e.readiness.remainingUses:0;return{readiness:e.readiness,expiresAtMs:n,remainingUses:r,signingSessionPlan:this.resolveAuthPlan({lane:e.lane,readiness:e.readiness,forceFreshAuth:e.forceFreshAuth,sensitiveOperationPolicy:e.sensitiveOperationPolicy},t)}}throw Error(`[SigningSessionCoordinator] lane and readiness curves do not match`)}async getStatus(e){let t=R(e.walletId),n=e.walletSessionId,r=new Set((e.targetThresholdSessionIds||[]).map(uh).filter(Boolean)),i=r.size>0,a=async()=>i?await Nh({deps:this.walletSessionDeps,walletSessionId:n,targetThresholdSessionIds:r}):null,o=(await vh(this.walletSessionDeps,t)).filter(t=>t.walletSessionId===n&&t.quotaId===e.quotaId);if(!o.length)return await a();let s=i?o.filter(e=>r.has(e.thresholdSessionId)):o;if(i&&!s.length)return await a()||{sessionId:n,status:`not_found`};let c=Ch({lanes:s,claimsByThresholdSessionId:await kh({deps:this.walletSessionDeps,lanes:s}),statusOverrides:this.walletSessionState.statusOverrides}),l=s.map(e=>c.get(e.thresholdSessionId)||null).filter(Boolean);return Ph({walletSessionId:n,lanes:s,claim:l.find(e=>e?.state===`expired`)||l.find(e=>e?.state===`exhausted`)||l.find(e=>e?.state===`unavailable`)||l.find(e=>e?.state===`warm`)||null})}async getLaneClaimsForWallet(e){return await jh({deps:this.walletSessionDeps,walletId:R(e),statusOverrides:this.walletSessionState.statusOverrides})}async clear(e){await Fh({deps:this.walletSessionDeps,statusOverrides:this.walletSessionState.statusOverrides,walletId:R(e.walletId),walletSessionId:e.walletSessionId,quotaId:e.quotaId})}async getAvailableStatus(e){return this.walletSessionStatusReader?await this.walletSessionStatusReader(e):null}bindCallerProvidedOperationIdToFingerprint(e){this.operationIdBindings.bindCallerProvidedOperationIdToFingerprint(e)}async runWalletSessionQuotaAdmissionRetry(e){let t=String(e.queueKey),n=this.walletSessionQuotaAdmissionRefreshQueues.get(t);if(n)return await n.catch(()=>void 0),await e.retryAfterRefresh();let r=e.refresh(),i=r.catch(()=>void 0).then(()=>{this.walletSessionQuotaAdmissionRefreshQueues.get(t)===i&&this.walletSessionQuotaAdmissionRefreshQueues.delete(t)});return this.walletSessionQuotaAdmissionRefreshQueues.set(t,i),await r}};const Gh={resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),readExactWithOperationCredential:K.readExactWithOperationCredential.bind(K)};function Kh(e){return e.getEmailOtpWarmSessionStatus||(async t=>await e.passkeyMpcSession.getWarmSessionStatus({thresholdSessionId:t.thresholdSessionId}))}function qh(e){let{createArgs:t,getEmailOtpWarmSessionStatus:n}=e;return new Wh({exactWalletSessionReadPorts:Gh,getStatus:t.getWalletSessionStatus,touchConfirm:t.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>n({kind:`ecdsa`,thresholdSessionId:e}),clearEmailOtpWarmSessionMaterial:t.clearEmailOtpWarmSessionMaterial})}async function Jh(e){if(e.lane.auth.kind!==`email_otp`)return null;try{let t=await e.createArgs.resolveCanonicalEcdsaSigningCapability({walletId:e.lane.signer.walletId,chainTarget:e.lane.signer.chainTarget,materialActivation:e.lane.signer.materialActivation});if(!Ba(t.authority)||t.authority.factor.providerUserId!==e.lane.auth.providerSubjectId)return null;let n=await e.createArgs.resolveActiveEcdsaWalletSessionAuthorization({walletId:e.lane.signer.walletId,chainTarget:e.lane.signer.chainTarget,materialActivation:e.lane.signer.materialActivation},new J);if(!n)return null;let r=Xu({capability:t,authorization:n,nowMs:Date.now()}),i=r.authorization.runtime;return r.authorization.selectedAuthMethod.kind!==`email_otp`||i.authBinding.kind!==`email_otp`||!Co(t.authority,i.authBinding.emailOtpAuthority)||t.authority.factor.providerUserId!==e.lane.auth.providerSubjectId||i.walletId!==e.lane.signer.walletId||!Pr(i.chainTarget,e.lane.signer.chainTarget)||!b(i.materialActivation,e.lane.signer.materialActivation)?null:r.authorization}catch{return null}}function Yh(e){let{createArgs:t,signingSessionCoordinator:n,getEmailOtpWarmSessionStatus:r}=e;return{activeWalletAuthorityEcdsaRuntimeReadPorts:Gh,resolveOwnerLaneScope:t.resolveOwnerLaneScope,resolveCanonicalEcdsaSigningCapability:t.resolveCanonicalEcdsaSigningCapability,resolveAuthorizedEcdsaSigningCapability:t.resolveAuthorizedEcdsaSigningCapability,resolveActiveEcdsaWalletSessionAuthorization:t.resolveActiveEcdsaWalletSessionAuthorization,walletSignerStore:e.walletSignerStore,passkeyAuthenticatorStore:e.passkeyAuthenticatorStore,seamsWebConfigs:t.seamsWebConfigs,nonceCoordinator:t.nonceCoordinator,ensureSealedRefreshStartupParity:t.ensureSealedRefreshStartupParity,getSignerWorkerContext:()=>t.signerWorkerManager.getContext(),requestEmailOtpTransactionSigningChallenge:({walletSession:e,chain:n,authority:r,operationFingerprintDigest:i})=>t.requestEmailOtpTransactionSigningChallenge?.({walletSession:e,chain:n,authority:r,operationFingerprintDigest:i})||Promise.reject(Error(`Email OTP signing challenge is not configured`)),resolveDurableEmailOtpEcdsaSigningSessionAuthority:async({lane:e})=>await Jh({lane:e,createArgs:t}),restorePersistedSessionForSigning:e=>t.restorePersistedSessionForSigning(e),readAvailableSigningLanesForSigning:e=>t.readAvailableSigningLanesForSigning(e),signingSessionCoordinator:n,getEmailOtpWarmSessionStatus:e=>r({kind:`ecdsa`,thresholdSessionId:e}),provisionThresholdEcdsaSession:e=>t.provisionThresholdEcdsaSession(e),withThresholdEcdsaSigningQueue:e=>t.withThresholdEcdsaSigningQueue(e),touchConfirm:t.touchConfirm}}function Xh(e){let{createArgs:t,nearRpcUrl:n,signingSessionCoordinator:r}=e;return{nearRpcUrl:n,touchConfirm:t.touchConfirm,resolveOwnerLaneScope:t.resolveOwnerLaneScope,prepareNearEd25519YaoMaterialBoundary:t.prepareNearEd25519YaoMaterialBoundary,createSigningSessionId:e=>nl(e),getSignerWorkerContext:()=>t.signerWorkerManager.getContext(),readAvailableSigningLanesForSigning:e=>t.readAvailableSigningLanesForSigning(e),...t.requestEmailOtpEd25519SigningChallenge?{requestEmailOtpEd25519SigningChallenge:e=>t.requestEmailOtpEd25519SigningChallenge(e)}:{},signingSessionCoordinator:r,withThresholdEd25519CommitQueue:e=>t.withThresholdEd25519CommitQueue(e)}}function Zh(e){return{credentialStore:e.credentialStore,touchIdPrompt:e.createArgs.touchIdPrompt,getSignerWorkerContext:()=>e.createArgs.signerWorkerManager.getContext(),routerAbNormalSigning:e.createArgs.seamsWebConfigs.signing.routerAb.normalSigning,defaultRelayerUrl:e.createArgs.seamsWebConfigs.network.relayer?.url||``,persistThresholdEcdsaBootstrapForWalletTarget:e.createArgs.persistThresholdEcdsaBootstrapForWalletTarget}}function Qh(e){return{accountStore:e.accountStore,userPreferencesManager:e.createArgs.userPreferencesManager,nonceCoordinator:e.createArgs.nonceCoordinator}}var $h=class{async upsert(e){}async remove(e){}async list(){return[]}async upsertLane(e){}async removeLane(e){}async listLanes(){return[]}};function eg(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function tg(e){let t=e.materialActivation;return JSON.stringify([eg(e.walletId,`walletId`),eg(e.nearAccountId,`nearAccountId`),eg(t.activationId,`materialActivation.activationId`),eg(t.capability,`materialActivation.capability`),eg(t.materialOwner,`materialActivation.materialOwner`),eg(t.keyBinding,`materialActivation.keyBinding`),eg(t.lifecycleBinding,`materialActivation.lifecycleBinding`),eg(t.signingWorker,`materialActivation.signingWorker`)])}function ng(e){if(e.activeClient.status().kind!==`active`)throw Error(`Ed25519 Yao active Client registry rejects disposed state`);let t=e.activeClient.metadata(),n=e.facts,r=n.signer,i=r.account.wallet.walletId,a=r.account.nearAccountId,o=eg(n.thresholdSessionId,`material.facts.thresholdSessionId`),s=Cc(t);if(t.scope.threshold_session_id!==o||!to(t.scope.material_activation,yo(s))||t.scope.account_id!==String(i)||t.applicationBinding.wallet_id!==String(i)||t.applicationBinding.near_ed25519_signing_key_id!==String(r.nearEd25519SigningKeyId)||t.applicationBinding.signing_root_id!==n.signingRootId||t.scope.root_share_epoch!==n.signingRootVersion||t.applicationBinding.key_creation_signer_slot!==r.signerSlot||t.scope.signing_worker_id!==n.routerAbNormalSigning.signingWorkerId)throw Error(`Ed25519 Yao active Client registry subject identity mismatch`);if(t.participantIds[0]!==Se[0]||t.participantIds[1]!==Se[1])throw Error(`Ed25519 Yao active Client registry participant identity mismatch`);return{walletId:i,nearAccountId:a,materialActivation:s}}function rg(e,t){return String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&b(e.materialActivation,t.materialActivation)}var ig=class{entries=new Map;lifecycleGeneration=0;constructor(e=new $h){this.publicReferences=e}async activate(e){let t=ng(e),n=tg(t),r=this.lifecycleGeneration;for(let n of this.entries.values())if(n.material.activeClient===e.activeClient&&!rg(n.identity,t))throw Error(`Ed25519 Yao active Client state is already bound to another identity`);let i=this.entries.get(n);if(!i&&this.entries.size>=64)throw Error(`Ed25519 Yao active Client registry capacity is exhausted`);if(await this.publicReferences.upsert({walletId:t.walletId,nearAccountId:t.nearAccountId,thresholdSessionId:e.facts.thresholdSessionId,runtimePolicyScope:e.facts.runtimePolicyScope,materialActivation:t.materialActivation}),r!==this.lifecycleGeneration||e.activeClient.status().kind!==`active`)throw e.activeClient.dispose(),await this.publicReferences.remove(t),await this.publicReferences.removeLane(t),Error(`Ed25519 Yao active Client activation was interrupted`);return i&&i.material.activeClient!==e.activeClient&&i.material.activeClient.dispose(),this.entries.set(n,{identity:t,material:e}),t}resolve(e){let t=tg(e),n=this.entries.get(t);return n?n.material.activeClient.status().kind===`disposed`?(this.entries.delete(t),null):n.material:null}resolveExact(e){return this.resolve(e)}resolveForWalletAccount(e){let t=null;for(let n of this.entries.values())if(!(String(n.identity.walletId)!==String(e.walletId)||String(n.identity.nearAccountId)!==String(e.nearAccountId))&&n.material.activeClient.status().kind!==`disposed`){if(t)throw Error(`Ed25519 Yao active Client lookup scope is ambiguous`);t=n.material}return t}async rollbackActivation(e){this.lifecycleGeneration+=1;let t=tg(e),n=this.entries.get(t);return n&&(this.entries.delete(t),n.material.activeClient.dispose()),await this.publicReferences.remove(e),await this.publicReferences.removeLane(e),n!==void 0}disposeWallet(e){this.lifecycleGeneration+=1;let t=eg(e,`walletId`),n=0;for(let[e,r]of this.entries)String(r.identity.walletId)===t&&(this.entries.delete(e),r.material.activeClient.dispose(),n+=1);return n}dispose(){this.lifecycleGeneration+=1;for(let e of this.entries.values())e.material.activeClient.dispose();this.entries.clear()}};function ag(e,t){t.wrapKeySalt&&(e.wrapKeySalt=t.wrapKeySalt),t.payload&&(e.payload=t.payload),typeof t.timestamp==`number`&&(e.timestamp=t.timestamp),typeof t.schemaVersion==`number`&&(e.schemaVersion=t.schemaVersion)}function og(e,t){typeof t.timestamp==`number`&&(e.timestamp=t.timestamp),typeof t.schemaVersion==`number`&&(e.schemaVersion=t.schemaVersion)}function sg(e){let n=Er(t(e||``));return n.startsWith(`ed25519:`)?n:``}function cg(e){let n=sg(e.publicKey);if(n)return n;let r=Er(t(e.relayerKeyId||``));return r.startsWith(`ed25519:`)?r:``}function lg(e,t){if(e.role!==`relayer`)return e;let n={id:e.id,role:`relayer`,relayerKeyId:t};return e.relayerUrl&&(n.relayerUrl=e.relayerUrl),e.shareDerivation&&(n.shareDerivation=e.shareDerivation),n}function ug(e){let t=Te(e.participants),n=t?.some(e=>e.role===`relayer`)===!0;return!t||!n?ye({relayerKeyId:e.relayerKeyId,clientShareDerivation:`prf_first_v1`}):t.map(t=>lg(t,e.relayerKeyId))}function dg(e,n,r){if(!r)return null;let i=r.payload||{},a=sg(r.publicKey),o=cg({publicKey:a,relayerKeyId:i.relayerKeyId}),s=t(i.keyVersion||``);return!a||!o||!s?null:{nearAccountId:e,signerSlot:n,kind:`threshold_ed25519_v1`,publicKey:a,relayerKeyId:o,keyVersion:s,participants:ug({participants:i.participants,relayerKeyId:o}),timestamp:r.timestamp}}async function fg(e,t,n){return dg(t,n,await cc({deps:e,accountRefs:ks(t),signerSlot:n,keyKind:`threshold_share_v1`}))}async function pg(e,n){let r=t(n.nearAccountId||``).toLowerCase();if(!r)throw Error(`IndexedDBManager: Missing nearAccountId for key write`);if(!Number.isSafeInteger(n.signerSlot)||n.signerSlot<1)throw Error(`IndexedDBManager: Invalid signerSlot for key write`);let i=t(n.keyKind||``);if(!i)throw Error(`IndexedDBManager: Missing keyKind for key write`);let a=String(n.algorithm||`ed25519`).trim().toLowerCase(),o=t(n.publicKey||``);if(!o)throw Error(`IndexedDBManager: Missing publicKey for key write`);let s=t(n.signerId||``);if(!s)throw Error(`IndexedDBManager: Missing signerId for key write`);let c=t(n.chainIdKey||``).toLowerCase(),l=t(n.profileId||``),u=ks(r);if(l||c){if(!l||!c)throw Error(`IndexedDBManager: profileId and chainIdKey are required together for explicit NEAR key material writes`);let t={accountRefs:u,signerSlot:n.signerSlot,keyKind:i,algorithm:a,publicKey:o,signerId:s,explicitProfileId:l,explicitChainIdKey:c,explicitAccountAddress:r};ag(t,n),await ac(e,t);return}let d={accountRefs:u,signerSlot:n.signerSlot,keyKind:i,algorithm:a,publicKey:o,signerId:s};ag(d,n),await ac(e,d)}async function mg(e,n){let r=sg(n.publicKey);if(!r)throw Error(`IndexedDBManager: Missing Ed25519 publicKey for threshold key write`);let i=cg({publicKey:r,relayerKeyId:n.relayerKeyId}),a=t(n.keyVersion||``);if(!i||!a)throw Error(`IndexedDBManager: Missing threshold Ed25519 relayer metadata for key write`);let o={relayerKeyId:i,keyVersion:a,participants:ug({participants:n.participants,relayerKeyId:i})},s=t(n.profileId||``),c=t(n.chainIdKey||``).toLowerCase();if(s||c){if(!s||!c)throw Error(`IndexedDBManager: profileId and chainIdKey are required together for explicit NEAR threshold key writes`);let t={nearAccountId:n.nearAccountId,signerSlot:n.signerSlot,keyKind:`threshold_share_v1`,publicKey:r,signerId:n.signerId,payload:o,profileId:s,chainIdKey:c};og(t,n),await pg(e,t);return}let l={nearAccountId:n.nearAccountId,signerSlot:n.signerSlot,keyKind:`threshold_share_v1`,publicKey:r,signerId:n.signerId,payload:o};og(l,n),await pg(e,l)}function hg(e){return Math.max(0,Math.round(performance.now()-e))}async function gg(e){let t=performance.now();try{await e()}catch{}return hg(t)}async function _g(e,t){if(!e)return null;try{return await Vd(e,t)}catch{return null}}async function vg(e,t={kind:`none`}){let n=t.kind===`near_account_bound`?t.account:null,r=n?Or(n.nearAccountId):null,i=await _g(r,e.store);return{kind:`worker_resource_warmup_diagnostics_v1`,authenticatedWalletStateMs:n&&r&&i?await gg(()=>e.activateAuthenticatedWalletState({walletId:n.wallet.walletId,nearAccountId:r,signerSlot:i,nearClient:e.nearClient})):0,noncePrefetchMs:await gg(()=>e.nonceCoordinator.prefetchNearContext({kind:`initialized_state`,nearClient:e.nearClient})),keyMaterialReadMs:r&&i?await gg(async()=>{await fg({clientDB:e.store,keyMaterialStore:e.store},r,i).catch(()=>null)}):0,uiConfirmPrewarmMs:e.shouldPrewarmUiConfirmUi(e.workerBaseOrigin)?await gg(e.prewarmUiConfirmUi):0}}function yg(e){return N(e.seamsWebConfigs.network.chains)}function bg(e,t){return()=>({workerBaseOrigin:e.getWorkerBaseOrigin(),store:t.warmupStore,nearClient:e.nearClient,nonceCoordinator:e.nonceCoordinator,shouldPrewarmUiConfirmUi:e.shouldPrewarmUiConfirmUi,prewarmUiConfirmUi:async()=>{await Promise.all([e.touchConfirm.initialize(),e.passkeyMpcSession.prewarmShamir3Pass()])},activateAuthenticatedWalletState:e.activateAuthenticatedWalletState})}function xg(e){let{createArgs:t,getWorkerResourceWarmupDeps:n}=e;return()=>({signTempo:t.signTempo,warmCriticalResources:e=>vg(n(),e)})}function Sg(e){let t=new ig(e.ed25519YaoPublicCapabilityReferences),n=yg(e),r=Kh(e),i=qh({createArgs:e,getEmailOtpWarmSessionStatus:r}),a=bg(e,{warmupStore:e.stores.warmup.store});return{ed25519YaoActiveClients:t,nearSigningDeps:Xh({createArgs:e,nearRpcUrl:n,signingSessionCoordinator:i}),tempoSigningDeps:Yh({createArgs:e,walletSignerStore:e.stores.walletProfileAndSignerRecords.walletSignerStore,passkeyAuthenticatorStore:e.stores.walletProfileAndSignerRecords.passkeyAuthenticatorStore,signingSessionCoordinator:i,getEmailOtpWarmSessionStatus:r}),registrationAccountLifecycleDeps:Qh({createArgs:e,accountStore:e.stores.walletProfileAndSignerRecords.accountStore}),registrationSessionDeps:{touchConfirm:e.touchConfirm,touchIdPrompt:e.touchIdPrompt},walletSessionActivationDeps:Zh({createArgs:e,credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore}),signingSessionCoordinator:i,getWorkerResourceWarmupDeps:a,getManagerConveniencePorts:xg({createArgs:e,getWorkerResourceWarmupDeps:a})}}const Cg=[`kind`,`keyFamily`,`walletId`,`walletKeyId`,`walletKeyVersion`,`lifecycle`],wg=[...Cg,`nearEd25519SigningKeyId`,`keyCreationSignerSlot`,`registeredPublicKeyB64u`],Tg=[...Cg,`evmFamilySigningKeySlotId`,`thresholdPublicKey33B64u`,`evmAddress`],Eg=Array.from(new Set([...wg,...Tg])),Dg=[`state`,`activatedAtMs`,`retiredAtMs`,`compromisedAtMs`],Og=[...[`kind`,`walletId`,`walletKeyId`,`laneId`,`laneKind`,`laneShareEpoch`,`participantBindingDigestB64u`],`lifecycle`],kg=[...Og,`walletAuthMethodId`,`ownerParticipantContinuity`],Ag=[...Og,`ownerParticipantContinuity`],jg=[...Og,`holderParticipant`,`serverParticipant`],Mg=[...jg,`authorizationId`,`agentIdentityKeyId`,`custodyBindingId`,`authorizationBindingDigestB64u`],Ng=[...jg,`linkedDeviceId`],Pg=Array.from(new Set([...kg,...Ag,...Mg,...Ng])),Fg=[`state`,`revocationEpoch`,`startedAtMs`,`deliveryDigestB64u`,`activatedAtMs`,`activationReceiptDigestB64u`,`revokedAtMs`,`revokeReason`];function Ig(e){switch(e){case`owner_passkey`:case`owner_email_otp`:return kg;case`recovery`:case`break_glass`:return Ag;case`linked_device`:return Ng;case`delegated_execution`:return Mg}}function Lg(e,t){if(e==null)throw Error(`${t} is required`);if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=e.trim();if(!n)throw Error(`${t} is required`);if(v(n))throw Error(`${t} must not contain whitespace or control characters`);return n}function Rg(e,t){if(typeof e!=`string`)throw Error(`${t} must be a string`);let n=e.trim();if(!n)throw Error(`${t} is required`);if(v(n))throw Error(`${t} must not contain whitespace or control characters`);return n}function zg(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(`${t} must be a non-negative safe integer`);return e}function Bg(e,t=`walletKeyVersion`){return Lg(e,t)}function Vg(e,t){return Lg(e,t)}function Hg(e,t){return Lg(e,t)}function Ug(e,t){return Lg(e,t)}function Wg(e,t){switch(e){case`owner_passkey`:case`owner_email_otp`:case`linked_device`:case`delegated_execution`:case`recovery`:case`break_glass`:return e;default:throw Error(`${t} must be a known signing lane kind`)}}function Gg(e,t){let n=M(e,t);switch(pe(n,Dg,t,Dg),n.state){case`active`:if(n.retiredAtMs!==void 0||n.compromisedAtMs!==void 0)throw Error(`${t} cannot be active and carry a retired or compromised timestamp`);return Qg({activatedAtMs:ge(n.activatedAtMs,`${t}.activatedAtMs`)});case`retired`:if(n.activatedAtMs!==void 0||n.compromisedAtMs!==void 0)throw Error(`${t} cannot be retired and carry an active or compromised timestamp`);return $g({retiredAtMs:ge(n.retiredAtMs,`${t}.retiredAtMs`)});case`compromised`:if(n.activatedAtMs!==void 0||n.retiredAtMs!==void 0)throw Error(`${t} cannot be compromised and carry an active or retired timestamp`);return e_({compromisedAtMs:ge(n.compromisedAtMs,`${t}.compromisedAtMs`)});default:throw Error(`${t}.state must be active, retired, or compromised`)}}function Kg(e,t){let n=M(e,t);pe(n,Fg,t);let r=zg(n.revocationEpoch,`${t}.revocationEpoch`);switch(n.state){case`provisioning`:if(n.deliveryDigestB64u!==void 0||n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} provisioning state carries fields from another lifecycle state`);return i_({revocationEpoch:r,startedAtMs:ge(n.startedAtMs,`${t}.startedAtMs`)});case`pending_receipt`:if(n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} pending_receipt state carries fields from another lifecycle state`);return a_({revocationEpoch:r,startedAtMs:ge(n.startedAtMs,`${t}.startedAtMs`),deliveryDigestB64u:ue(n.deliveryDigestB64u,`${t}.deliveryDigestB64u`)});case`active`:if(n.startedAtMs!==void 0||n.deliveryDigestB64u!==void 0||n.revokedAtMs!==void 0||n.revokeReason!==void 0)throw Error(`${t} active state carries fields from another lifecycle state`);return o_({revocationEpoch:r,activatedAtMs:ge(n.activatedAtMs,`${t}.activatedAtMs`),activationReceiptDigestB64u:ue(n.activationReceiptDigestB64u,`${t}.activationReceiptDigestB64u`)});case`revoked`:{if(n.startedAtMs!==void 0||n.deliveryDigestB64u!==void 0||n.activatedAtMs!==void 0||n.activationReceiptDigestB64u!==void 0)throw Error(`${t} revoked state carries fields from another lifecycle state`);let e=n.revokeReason;if(e!==`user_revoked`&&e!==`device_compromise`&&e!==`agent_compromise`&&e!==`rotation`)throw Error(`${t}.revokeReason is invalid`);return s_({revocationEpoch:r,revokedAtMs:ge(n.revokedAtMs,`${t}.revokedAtMs`),revokeReason:e})}default:throw Error(`${t}.state must be provisioning, pending_receipt, active, or revoked`)}}function qg(e,t){if(e.kind!==`signing_lane_reference_v1`)throw Error(`${t}.kind must be signing_lane_reference_v1`);return r_({walletId:ve(o(e.walletId),`${t}.walletId`),walletKeyId:ve(h(e.walletKeyId),`${t}.walletKeyId`),laneId:ve(u(e.laneId),`${t}.laneId`),laneShareEpoch:ve(d(e.laneShareEpoch),`${t}.laneShareEpoch`),laneKind:Wg(e.laneKind,`${t}.laneKind`),participantBindingDigestB64u:ve(Fa(e.participantBindingDigestB64u),`${t}.participantBindingDigestB64u`)})}function Jg(e,t){let n=qg(e,t);return{walletId:n.walletId,walletKeyId:n.walletKeyId,laneId:n.laneId,laneShareEpoch:n.laneShareEpoch,participantBindingDigestB64u:n.participantBindingDigestB64u,lifecycle:Kg(e.lifecycle,`${t}.lifecycle`)}}function Yg(e,t){let n=Jg(e,t),r=c(e.walletAuthMethodId);return{...n,walletAuthMethodId:ve(r,`${t}.walletAuthMethodId`),ownerParticipantContinuity:Va(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function Xg(e,t){return{...Jg(e,t),ownerParticipantContinuity:Va(e.ownerParticipantContinuity,`${t}.ownerParticipantContinuity`)}}function Zg(e,t){return{...Jg(e,t),holderParticipant:so(e.holderParticipant,`${t}.holderParticipant`),serverParticipant:oo(e.serverParticipant,`${t}.serverParticipant`)}}function Qg(e){return{state:`active`,activatedAtMs:e.activatedAtMs}}function $g(e){return{state:`retired`,retiredAtMs:e.retiredAtMs}}function e_(e){return{state:`compromised`,compromisedAtMs:e.compromisedAtMs}}function t_(e){return{kind:`wallet_key_record_v1`,keyFamily:`ed25519`,walletId:e.walletId,walletKeyId:e.walletKeyId,walletKeyVersion:e.walletKeyVersion,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,keyCreationSignerSlot:e.keyCreationSignerSlot,registeredPublicKeyB64u:e.registeredPublicKeyB64u,lifecycle:e.lifecycle}}function n_(e){return{kind:`wallet_key_record_v1`,keyFamily:`ecdsa_secp256k1`,walletId:e.walletId,walletKeyId:e.walletKeyId,walletKeyVersion:e.walletKeyVersion,evmFamilySigningKeySlotId:e.evmFamilySigningKeySlotId,thresholdPublicKey33B64u:e.thresholdPublicKey33B64u,evmAddress:e.evmAddress,lifecycle:e.lifecycle}}function r_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:e.laneKind,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u}}function i_(e){return{state:`provisioning`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs}}function a_(e){return{state:`pending_receipt`,revocationEpoch:e.revocationEpoch,startedAtMs:e.startedAtMs,deliveryDigestB64u:e.deliveryDigestB64u}}function o_(e){return{state:`active`,revocationEpoch:e.revocationEpoch,activatedAtMs:e.activatedAtMs,activationReceiptDigestB64u:e.activationReceiptDigestB64u}}function s_(e){return{state:`revoked`,revocationEpoch:e.revocationEpoch,revokedAtMs:e.revokedAtMs,revokeReason:e.revokeReason}}function c_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`owner_passkey`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,walletAuthMethodId:e.walletAuthMethodId,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function l_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`owner_email_otp`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,walletAuthMethodId:e.walletAuthMethodId,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function u_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`linked_device`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,linkedDeviceId:e.linkedDeviceId}}function d_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`delegated_execution`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,authorizationId:e.authorizationId,agentIdentityKeyId:e.agentIdentityKeyId,custodyBindingId:e.custodyBindingId,authorizationBindingDigestB64u:e.authorizationBindingDigestB64u}}function f_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`recovery`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function p_(e){return{kind:`signing_lane_reference_v1`,walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneKind:`break_glass`,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,ownerParticipantContinuity:e.ownerParticipantContinuity,lifecycle:e.lifecycle}}function m_(e,t=`walletKeyRecord`){let n=M(e,t);if(n.kind!==`wallet_key_record_v1`)throw Error(`${t}.kind must be wallet_key_record_v1`);if(n.keyFamily===`ed25519`)return pe(n,wg,t,Eg),t_({walletId:ve(o(n.walletId),`${t}.walletId`),walletKeyId:ve(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Bg(n.walletKeyVersion,`${t}.walletKeyVersion`),nearEd25519SigningKeyId:Do(n.nearEd25519SigningKeyId),keyCreationSignerSlot:ke(n.keyCreationSignerSlot,`${t}.keyCreationSignerSlot`),registeredPublicKeyB64u:le(n.registeredPublicKeyB64u,`${t}.registeredPublicKeyB64u`),lifecycle:Gg(n.lifecycle,`${t}.lifecycle`)});if(n.keyFamily===`ecdsa_secp256k1`)return pe(n,Tg,t,Eg),n_({walletId:ve(o(n.walletId),`${t}.walletId`),walletKeyId:ve(h(n.walletKeyId),`${t}.walletKeyId`),walletKeyVersion:Bg(n.walletKeyVersion,`${t}.walletKeyVersion`),evmFamilySigningKeySlotId:Za(n.evmFamilySigningKeySlotId,`${t}.evmFamilySigningKeySlotId`),thresholdPublicKey33B64u:he(n.thresholdPublicKey33B64u,`${t}.thresholdPublicKey33B64u`),evmAddress:Rg(n.evmAddress,`${t}.evmAddress`),lifecycle:Gg(n.lifecycle,`${t}.lifecycle`)});throw Error(`${t}.keyFamily must be ed25519 or ecdsa_secp256k1`)}function h_(e,t=`signingLaneRecord`){let n=M(e,t);if(n.kind!==`signing_lane_reference_v1`)throw Error(`${t}.kind must be signing_lane_reference_v1`);let r=Wg(n.laneKind,`${t}.laneKind`);switch(pe(n,Ig(r),t,Pg),r){case`owner_passkey`:return c_(Yg(n,t));case`owner_email_otp`:return l_(Yg(n,t));case`linked_device`:{let e=Zg(n,t);return u_({walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,linkedDeviceId:ve(f(n.linkedDeviceId),`${t}.linkedDeviceId`)})}case`delegated_execution`:{let e=Zg(n,t);return d_({walletId:e.walletId,walletKeyId:e.walletKeyId,laneId:e.laneId,laneShareEpoch:e.laneShareEpoch,participantBindingDigestB64u:e.participantBindingDigestB64u,holderParticipant:e.holderParticipant,serverParticipant:e.serverParticipant,lifecycle:e.lifecycle,authorizationId:Ug(n.authorizationId,`${t}.authorizationId`),agentIdentityKeyId:Vg(n.agentIdentityKeyId,`${t}.agentIdentityKeyId`),custodyBindingId:Hg(n.custodyBindingId,`${t}.custodyBindingId`),authorizationBindingDigestB64u:ue(n.authorizationBindingDigestB64u,`${t}.authorizationBindingDigestB64u`)})}case`recovery`:return f_(Xg(n,t));case`break_glass`:return p_(Xg(n,t))}}async function g_(e){let t=await we(new Request(`${Me(e.relayerUrl)}/wallet/execution-lane/owner`,je({headers:Oe(e.operationCredential),body:{curve:e.curve,expectedMaterialActivation:e.expectedMaterialActivation}}))),n=await t.json().catch(()=>null);if(!t.ok){let e=y_(n);throw Error(e||`Owner execution-lane preflight returned HTTP ${t.status}`)}return __(n,e.curve)}function __(e,t){let n=v_(e,[`ok`,`projection`],`owner execution-lane response`);if(n.get(`ok`)!==!0)throw Error(`owner execution-lane response is unsuccessful`);let r=v_(n.get(`projection`),[`kind`,`walletKey`,`lane`,`materialActivation`,`verifiedActivationReceiptDigestB64u`],`owner execution-lane projection`);if(r.get(`kind`)!==`active_owner_wallet_execution_lane_projection_v1`)throw Error(`owner execution-lane projection kind is invalid`);let i=m_(r.get(`walletKey`)),a=h_(r.get(`lane`)),o=p(r.get(`materialActivation`));if(!o.ok)throw Error(o.error.message);if(i.keyFamily!==t||a.walletId!==i.walletId||a.walletKeyId!==i.walletKeyId||a.laneKind!==`owner_passkey`&&a.laneKind!==`owner_email_otp`)throw Error(`owner execution-lane projection identity is inconsistent`);return{kind:`active_owner_wallet_execution_lane_projection_v1`,walletKey:i,lane:a,materialActivation:o.value,verifiedActivationReceiptDigestB64u:St(r.get(`verifiedActivationReceiptDigestB64u`))}}function v_(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw Error(`${n} must be a JSON object`);let r=new Map(Object.entries(e)),i=new Set(t);if(r.size!==i.size||[...r.keys()].some(e=>!i.has(e)))throw Error(`${n} fields are invalid`);return r}function y_(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e));if(t.size===0||t.size>2||[...t.keys()].some(e=>e!==`code`&&e!==`message`))return null;let n=t.get(`message`);return typeof n==`string`&&n.trim()?n.trim():null}function b_(e){return fn(e)}function x_(e){return`selector`in e?e.selector.capability:e.capability}function S_(e){switch(e.kind){case`retired`:return vc({capability:e.manifest.signer.capability,reason:`replaced`});case`missing`:return e.subject===`capability`?vc({capability:null,reason:`missing_capability`}):vc({capability:x_(e),reason:`missing_material`});case`exact_binding_mismatch`:return vc({capability:x_(e),reason:`binding_mismatch`});case`exact_record_conflict`:return vc({capability:x_(e),reason:`exact_record_conflict`});case`corrupt`:return vc({capability:x_(e),reason:`corrupt`});case`persistence_unavailable`:return vc({capability:x_(e),reason:`persistence_unavailable`})}}function C_(e){let t=e.lookup.manifest.activation.materialActivation;if(!b(t,e.lookup.material.binding.materialActivation)||e.lookup.manifest.signer.materialOwner!==t.materialOwner)return vc({capability:e.lookup.manifest.signer.capability,reason:`binding_mismatch`});switch(e.runtime.kind){case`live`:return b(t,e.runtime.materialActivation)?bc({authority:e.lookup.manifest.signer.authority,runtime:e.runtime.runtime,materialActivation:t}):vc({capability:e.lookup.manifest.signer.capability,reason:`binding_mismatch`});case`absent`:return hc({authority:e.lookup.manifest.signer.authority,materialActivation:t,sealedMaterial:fn(e.lookup.material.binding.durableMaterialRef)})}}function w_(e){return e.lookup.kind===`active`?C_({lookup:e.lookup,runtime:e.runtime}):S_(e.lookup)}function T_(e){let t=d(e);if(!t.ok)throw Error(t.error.message);return t.value}function E_(e){return{walletKey:m_(e.walletKey),lane:h_(e.lane)}}function D_(e,t){return{kind:`wallet_execution_lane_refused_v1`,reason:e,walletId:t.walletKey.walletId,walletKeyId:t.walletKey.walletKeyId,laneId:t.lane.laneId}}function O_(){return{kind:`wallet_execution_lane_refused_v1`,reason:`invalid_boundary_record`}}function k_(e){if(e.lane.lifecycle.state!==`active`)throw Error(`active lane reference requires an active lane`);return{kind:`signing_lane_reference_v1`,walletId:e.lane.walletId,walletKeyId:e.lane.walletKeyId,laneId:e.lane.laneId,laneKind:e.lane.laneKind,laneShareEpoch:e.lane.laneShareEpoch,participantBindingDigestB64u:e.lane.participantBindingDigestB64u,lifecycle:e.lane.lifecycle,materialActivation:e.materialActivation}}function A_(e){switch(e.laneKind){case`owner_passkey`:case`owner_email_otp`:case`recovery`:case`break_glass`:return e.ownerParticipantContinuity;case`linked_device`:case`delegated_execution`:return null}}function j_(e,t){return t.length===e.participantIds.length&&t.every((t,n)=>t===e.participantIds[n])}function M_(e,t){let{walletKey:n,lane:r}=e;if(n.lifecycle.state!==`active`)return D_(`wallet_key_inactive`,e);if(r.lifecycle.state!==`active`)return D_(`lane_inactive`,e);if(String(n.walletId)!==String(r.walletId)||String(n.walletKeyId)!==String(r.walletKeyId))return D_(`wallet_key_mismatch`,e);if(n.keyFamily!==t.keyFamily)return D_(`key_family_mismatch`,e);if(r.laneKind===`linked_device`||r.laneKind===`delegated_execution`)return D_(`unsupported_lane_kind`,e);let i=A_(r);if(i===null)return O_();let a;try{a=T_(t.laneShareEpoch)}catch{return O_()}return String(a)===String(r.laneShareEpoch)?!String(r.participantBindingDigestB64u)||!String(i.signerId)||!String(i.signingWorkerId)||i.participantIds.length!==2?D_(`participant_binding_mismatch`,e):null:D_(`share_epoch_mismatch`,e)}function N_(e){return e.kind===`use_live_runtime`||e.kind===`rehydrate_material_activation`}function P_(e,t){let n=M_(e,t);if(n)return n;let r=e.walletKey,i=e.lane,a=A_(i);if(r.keyFamily!==`ecdsa_secp256k1`||i.lifecycle.state!==`active`)return D_(`key_family_mismatch`,e);if(a===null)return O_();let o=w_({lookup:t.lookup,runtime:t.runtime});if(!N_(o)||t.lookup.kind!==`active`)return D_(`hydration_blocked`,e);let s=t.lookup.manifest,c=s.durableMaterial,l=c.roleLocalPublicFacts,u=s.signer.registeredPublicFacts,d=s.activation.serverActivation.serverActivationReceipt,f=d.protocolReceipt.ecdsa_activation.public_identity,p=ao({walletId:l.walletId,signingRootId:l.signingRootId,signingRootVersion:l.signingRootVersion});if(!b(o.materialActivation,s.activation.materialActivation)||!b(o.materialActivation,c.materialActivation)||String(o.authority.walletId)!==String(r.walletId)||String(s.signer.walletId)!==String(r.walletId)||String(l.walletId)!==String(r.walletId)||String(r.evmFamilySigningKeySlotId)!==String(p)||String(r.thresholdPublicKey33B64u)!==String(l.groupPublicKey33B64u)||String(r.thresholdPublicKey33B64u)!==String(u.publicKeyB64u)||r.evmAddress.toLowerCase()!==String(l.ethereumAddress).toLowerCase()||r.evmAddress.toLowerCase()!==String(u.thresholdOwnerAddress).toLowerCase()||String(f.context_binding_b64u)!==String(c.bindingDigest)||String(f.derivation_client_share_public_key33_b64u)!==String(l.derivationClientSharePublicKey33B64u)||String(f.threshold_public_key33_b64u)!==String(r.thresholdPublicKey33B64u)||String(d.activationDigest)!==String(i.lifecycle.activationReceiptDigestB64u))return D_(`activation_receipt_mismatch`,e);if(String(a.signingWorkerId)!==String(o.materialActivation.signingWorker)||!j_(a,l.participantIds))return D_(`participant_binding_mismatch`,e);let m=o.materialActivation;return{kind:`active_wallet_execution_lane_v1`,keyFamily:`ecdsa_secp256k1`,walletKey:r,lane:k_({lane:i,materialActivation:m}),ownerParticipantContinuity:a,materialActivation:m,laneShareEpoch:i.laneShareEpoch,activationReceiptDigestB64u:i.lifecycle.activationReceiptDigestB64u,publicIdentity:{keyFamily:`ecdsa_secp256k1`,thresholdPublicKey33B64u:r.thresholdPublicKey33B64u,evmAddress:r.evmAddress,evmFamilySigningKeySlotId:r.evmFamilySigningKeySlotId}}}function F_(e){let t;try{t=E_(e)}catch{return O_()}try{return P_(t,e.material)}catch{return O_()}}function I_(e){let t=Fr(e.seamsWebConfigs.network.chains),n=e=>{if(e.ecdsaChainTargets.length===0)return e;let n=new Map;for(let r of[...e.ecdsaChainTargets,...t])n.set(z(r),r);return{...e,ecdsaChainTargets:[...n.values()]}};return{sessionLifecycle:e.sessionLifecycle,laneSelection:{readPersistedAvailableSigningLanesForTargets:t=>Op({activeWalletAuthorityEcdsaRuntimeReadPorts:Gh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},{...n(t),requiredEcdsaCapability:`export_keys`},new J,`all`),readOwnerScopedAvailableSigningLanesForTargets:async t=>await Cp({activeWalletAuthorityEcdsaRuntimeReadPorts:Gh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},{...n(t),requiredEcdsaCapability:`export_keys`,ownerScope:await e.resolveOwnerLaneScope(String(t.walletId))},new J)},ecdsa:{activeWalletAuthorityEcdsaRuntimeReadPorts:Gh,sessionStore:{...e.ecdsaSessions,resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,relayerUrl:String(e.relayerUrl).trim().replace(/\/+$/g,``)},touchConfirm:e.touchConfirm,emailOtp:{requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),exportEcdsaKeyWithDurableAuthorization:t=>e.emailOtpSessions.exportEcdsaKeyWithDurableAuthorization(t)},provisionPasskeyEcdsaExplicitExportSession:t=>e.provisionPasskeyEcdsaExplicitExportSession(t),getSignerWorkerContext:()=>e.signerWorkerManager.getContext(),withThresholdEcdsaSigningQueue:e.withThresholdEcdsaSigningQueue},ed25519Yao:{touchConfirm:e.touchConfirm,passkeyMpcExport:e.passkeyMpcExport,resolvePasskeyExportContext:e.resolvePasskeyEd25519YaoExportContext,withThresholdEd25519CommitQueue:e.withThresholdEd25519CommitQueue,emailOtp:{requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),resolveExportContext:t=>e.resolveEmailOtpEd25519YaoExportContext(t),exportSeedWithFreshAuthorization:t=>e.emailOtpSessions.exportEd25519YaoSeedWithFreshEmailOtpLane(t)}},getTheme:e.getTheme}}async function L_(e,t){let n=t.laneIdentity,r={kind:`ed25519`,laneIdentity:n},i=Rc(n),a;try{a=await e.resolveSelectedWalletAuthority(String(i))}catch{return wd({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}if(a.kind!==`resolved`)return wd({observation:a.kind===`integrity_error`?{kind:`invalid`,source:r}:{kind:`missing`,source:r},nowMs:t.nowMs});if(!R_(a,n))return wd({observation:{kind:`invalid`,source:r},nowMs:t.nowMs});let o;try{o=await e.readExactActiveForWallet({walletId:i,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId})}catch{return wd({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs})}switch(o.kind){case`missing`:return wd({observation:{kind:`missing`,source:r},nowMs:t.nowMs});case`corrupt`:case`upgrade_required`:return wd({observation:{kind:`invalid`,source:r},nowMs:t.nowMs});case`persistence_unavailable`:return wd({observation:{kind:`unavailable`,source:r},nowMs:t.nowMs});case`found`:break}return o.record.walletId!==i||o.record.authorityId!==a.authority.authorityId||o.record.authMethodId!==a.authMethod.walletAuthMethodId||o.operationCredential.walletSessionId!==n.walletSessionId||o.record.quotaId!==n.quotaId||o.record.authorityDigestB64u!==a.authority.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.authority.revocationEpoch?wd({observation:{kind:`invalid`,source:r},nowMs:t.nowMs}):wd({observation:{kind:`found`,source:r,expiresAtMs:o.record.expiresAtMs},nowMs:t.nowMs})}function R_(e,t){let n=Rc(t);if(e.selection.lockState!==`unlocked`||e.selection.walletId!==n||e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId||e.authMethod.walletId!==n||e.authMethod.walletAuthorityId!==e.authority.authorityId||e.authMethod.status!==`active`||e.authority.walletId!==n||e.authority.state!==`active`)return!1;switch(t.auth.kind){case`passkey`:return e.authMethod.kind===`passkey`&&String(e.authMethod.rpId)===String(t.auth.rpId)&&e.authMethod.credentialIdB64u===t.auth.credentialIdB64u;case`email_otp`:return e.authMethod.kind===`email_otp`}}function z_(e){return wd({observation:{kind:`found`,source:{kind:`ecdsa`,laneIdentity:e.laneIdentity,authorization:e.authorization},expiresAtMs:e.authorization.session.expiresAtMs},nowMs:e.nowMs})}async function B_(e,t){switch(t.kind){case`ed25519`:return await L_(e,t);case`ecdsa`:return z_(t)}}const V_={resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),readExactActiveForWallet:K.readExactActiveForWallet.bind(K)};async function H_(e){return await B_(V_,e)}function U_(e,t){return e.selection.lockState===`unlocked`&&e.selection.walletId===t&&e.selection.walletAuthMethodId===e.authMethod.walletAuthMethodId&&e.authMethod.status===`active`&&e.authMethod.walletId===t&&e.authMethod.walletAuthorityId===e.authority.authorityId&&e.authority.state===`active`&&e.authority.walletId===t}async function W_(e){let t;try{t=await G.resolveSelectedWalletAuthority(String(e))}catch{return{kind:`persistence_unavailable`}}if(t.kind!==`resolved`||!U_(t,e))return{kind:`missing`};try{return await K.readExactActiveForWallet({walletId:e,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId})}catch{return{kind:`persistence_unavailable`}}}function G_(e){let t=Bp({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:W_});return I_({resolveActiveEcdsaCapabilityRuntime:jv,seamsWebConfigs:e.seamsWebConfigs,signerWorkerManager:e.signerWorkerManager,getTheme:e.getTheme,withThresholdEcdsaSigningQueue:t=>pd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),withThresholdEd25519CommitQueue:t=>af({queueByKey:e.thresholdEd25519CommitQueueByKey,...t}),ecdsaSessions:e.warmSigning.ecdsaSessions,relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet,resolveOwnerLaneScope:e.resolveOwnerLaneScope,touchConfirm:e.touchConfirm,passkeyMpcSession:e.passkeyMpcSession,passkeyMpcExport:e.passkeyMpcExport,emailOtpSessions:{readWarmSessionStatusOnly:t=>e.emailOtpSessions.readWarmSessionStatusOnly(t),requestExportChallenge:t=>e.emailOtpSessions.requestExportChallenge(t),exportEcdsaKeyWithDurableAuthorization:t=>e.emailOtpSessions.exportEcdsaKeyWithDurableAuthorization(t),exportEd25519YaoSeedWithFreshEmailOtpLane:t=>e.emailOtpSessions.exportEd25519YaoSeedWithFreshEmailOtpLane(t)},provisionPasskeyEcdsaExplicitExportSession:t=>ql({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getWalletSessionActivationDeps(),persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),getWalletSessionStatus:e=>t(e),resolvePasskeyEd25519YaoExportContext:e.resolvePasskeyEd25519YaoExportContext,resolveEmailOtpEd25519YaoExportContext:e.resolveEmailOtpEd25519YaoExportContext,sessionLifecycle:{readAuthorization:H_,invalidateExpiredAuthorization:async t=>{if((await e.getSigningSessionCoordinator().invalidateExpiredWalletSession({state:t.state,source:t.source})).kind===`unavailable`)throw Error(`[SigningEngine][key-export] expired Wallet Session cleanup failed`)}}})}const K_=new as;function q_(e,t){return e.kind===t.kind&&e.walletId===t.walletId&&e.authorityId===t.authorityId&&e.authMethodId===t.authMethodId&&e.authorizationId===t.authorizationId&&e.quotaId===t.quotaId&&e.issuedAtMs===t.issuedAtMs&&e.expiresAtMs===t.expiresAtMs}function J_(e,t){return e.walletId===t.authority.walletId&&e.authorityId===t.authority.authorityId&&e.authMethodId===t.authMethod.walletAuthMethodId&&e.authorityDigestB64u===t.authority.authorityDigestB64u&&e.authorityRevocationEpoch===t.authority.revocationEpoch}function Y_(e){if(e.authMethod!==`passkey`)throw Error(`Passkey restore adapter received a non-Passkey request`);let{authMethod:t,...n}=e;return n}const X_={getWalletAuthMethodV2:G.getWalletAuthMethodV2.bind(G),listWalletAuthMethodsForWallet:G.listWalletAuthMethodsForWallet.bind(G),readEmailOtpProviderSubjectForWallet:os.bind(null,G)};async function Z_(){return null}async function Q_(e,t){let n=await t.getWalletAuthMethodV2(String(e.walletAuthMethodId));if(!n||n.status!==`active`||n.walletId!==e.walletId)throw Error(`Exact wallet authentication authority is unavailable`);let r;try{r=await mp({authMethod:n,stores:{...t,getWalletPasskeyAuthenticator:Z_}})}catch{throw Error(`Exact wallet authentication authority is unavailable`)}let i=await H({authority:r});if(i.walletId===e.walletId&&i.walletAuthMethodId===e.walletAuthMethodId&&i.authorityDigest===e.authorityDigest)return r;throw Error(`Exact wallet authentication authority is unavailable`)}function $_(e){return Bp({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),readAuthorization:W_})}function ev(e,t){return e.kind!==`resolved`||e.selection.lockState!==`unlocked`||e.selection.walletId!==t||e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId||e.authMethod.status!==`active`||e.authMethod.walletId!==t||e.authMethod.walletAuthorityId!==e.authority.authorityId||e.authority.state!==`active`||e.authority.walletId!==t?null:{kind:e.kind,selection:e.selection,authMethod:e.authMethod,authority:e.authority,signerMaterials:e.signerMaterials,exportRoot:e.exportRoot}}async function tv(e,t,n){let r=ev(await G.resolveSelectedWalletAuthority(String(e)),e),i=await W_(e);return!r||i.kind!==`found`||i.operationCredential.token!==n.token||!J_(i.record,r)||!q_(t,i.record)||t.authorityRevocationEpoch!==i.record.authorityRevocationEpoch||t.capabilitySubjects.length>=i.record.capabilitySubjects.length||!Ce(t,i.record)?null:{selected:r,session:i.record}}async function nv(e){return await mp({authMethod:e.authMethod,stores:{...X_,getWalletPasskeyAuthenticator:Z_}})}async function rv(e){let t;try{t=await G.resolveSelectedWalletAuthority(String(e.walletId))}catch{throw Error(`[SigningEngine][near] exact Passkey authority is unavailable`)}let n=ev(t,e.walletId);if(!n||n.authMethod.kind!==B.passkey)throw Error(`[SigningEngine][near] exact Passkey authority is unavailable`);if(e.runtime.walletId!==e.walletId||e.runtime.factor.kind!==B.passkey||String(e.runtime.factor.rpId)!==String(n.authMethod.rpId)||e.runtime.factor.credentialIdB64u!==n.authMethod.credentialIdB64u)throw Error(`[SigningEngine][near] exact Passkey authority changed`);let r;try{r=await yr({runtime:e.runtime,walletAuthMethodId:n.authMethod.walletAuthMethodId})}catch{throw Error(`[SigningEngine][near] exact Passkey authority changed`)}let i;try{i=await nv(n)}catch{throw Error(`[SigningEngine][near] exact Passkey authority changed`)}let a=await H({authority:i});if(a.walletId!==r.walletId||a.walletAuthMethodId!==r.walletAuthMethodId||a.authorityDigest!==r.authorityDigest)throw Error(`[SigningEngine][near] exact Passkey authority changed`);return a}async function iv(e){switch(e.authorizationRead.kind){case`expired`:case`exhausted`:return await rv(e);case`found`:{let t=e.authorizationRead.authorization;if(t.selectedAuthMethod.kind!==B.passkey||e.runtime.factor.kind!==B.passkey||String(e.runtime.factor.rpId)!==String(t.selectedAuthMethod.rpId)||e.runtime.factor.credentialIdB64u!==t.selectedAuthMethod.credentialIdB64u)throw Error(`[SigningEngine][near] exact Passkey authority changed`);let n=await yr({runtime:e.runtime,walletAuthMethodId:t.selectedAuthMethod.walletAuthMethodId}),r=await H({authority:t.selectedFactorAuthority});if(n.walletId!==r.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||n.authorityDigest!==r.authorityDigest)throw Error(`[SigningEngine][near] exact Passkey authority changed`);return n}default:throw e.authorizationRead,Error(`[SigningEngine][near] unsupported exact Passkey authorization read`)}}function av(e){switch(e.status){case`missing`:return{kind:`missing`};case`exhausted`:return{kind:`exhausted`};case`expired`:return{kind:`expired`};case`superseded`:return{kind:`superseded`};case`authority_unavailable`:return{kind:`authority_unavailable`};case`method_unavailable`:return{kind:`method_unavailable`};case`capability_unavailable`:return{kind:`capability_unavailable`};case`invalid`:return{kind:`unavailable`};case`active`:throw Error(`[SigningEngine][near] active status must be resolved as authorization`);default:throw Error(`[SigningEngine][near] unsupported Wallet Session status`)}}async function ov(e,t,n){let r=await W_(n);if(r.kind!==`found`)return r;let i=ev(await G.resolveSelectedWalletAuthority(String(n)),n);if(!i)return{kind:`missing`};if(r.record.expiresAtMs<=Date.now())return{kind:`expired`};let a=J.observationForConfirmation({relayerUrl:e,operationCredential:r.operationCredential},{walletSessionId:r.operationCredential.walletSessionId,quotaId:r.record.quotaId});if(!a||a.status.status===`active`&&(!Pe(a.status.authorization,r.record)||!J_(r.record,i)))return sv(e,t,n);let o=a.status;if(o.status!==`active`)return av(o);let s=await nv(i);return{kind:`found`,authorization:Gc({selectedAuthority:i.authority,selectedAuthMethod:i.authMethod,selectedFactorAuthority:s,session:r.record,operationCredential:r.operationCredential,status:o,nowMs:Date.now()})}}async function sv(e,t,n){let r=R(n),i;try{i=await G.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let a=ev(i,r);if(!a)return{kind:`missing`};let o;try{o=await K.readExactActiveForWallet({walletId:r,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId})}catch{return{kind:`persistence_unavailable`}}switch(o.kind){case`missing`:case`corrupt`:case`persistence_unavailable`:case`upgrade_required`:return o;case`found`:break;default:throw Error(`[SigningEngine][near] unsupported exact Wallet Session read result`)}let s=String(e||``).trim();if(!s)return{kind:`unavailable`};let c=Date.now();if(o.record.expiresAtMs<=c)return{kind:`expired`};let l;try{l=await t.read({relayerUrl:s,operationCredential:o.operationCredential},{walletSessionId:o.operationCredential.walletSessionId,quotaId:o.record.quotaId})}catch{return{kind:`unavailable`}}if(l.status!==`active`)return av(l);let u;try{u=await G.resolveSelectedWalletAuthority(String(r))}catch{return{kind:`persistence_unavailable`}}let d=ev(u,r);if(!d)return{kind:`missing`};let f=Date.now();if(l.authorization.expiresAtMs<=f)return{kind:`expired`};if(l.walletSessionId!==o.operationCredential.walletSessionId||l.quotaId!==o.record.quotaId||l.expiresAtMs!==l.authorization.expiresAtMs||!q_(l.authorization,o.record)||!J_(l.authorization,d))return{kind:`corrupt`};let p;try{p=await G.replaceExactActiveWalletSessionFromStatus({active:l.authorization,operationCredential:o.operationCredential})}catch{return{kind:`persistence_unavailable`}}if(p.kind===`superseded`)return il(`near`,{event:`wallet_session_status_superseded`,walletSessionId:o.operationCredential.walletSessionId}),{kind:`unavailable`};let m;try{m=await nv(d)}catch{return{kind:`unavailable`}}try{return{kind:`found`,authorization:Gc({selectedAuthority:d.authority,selectedAuthMethod:d.authMethod,selectedFactorAuthority:m,session:l.authorization,operationCredential:o.operationCredential,status:l,nowMs:f})}}catch{return{kind:`corrupt`}}}async function cv(e,t,n){let r=await sv(t,n,e);return r.kind===`found`?r.authorization:null}function lv(e){return e.curve===`ecdsa`}function uv(e){let{manifest:t,selected:n,walletId:r,chainTarget:i,materialActivation:a}=e;return t.signer.walletId===r&&t.signer.authority.walletId===r&&t.signer.authority.walletAuthMethodId===n.authMethod.walletAuthMethodId&&b(t.activation.materialActivation,a)&&t.signer.scope.targetMemberships.some(e=>z(e)===z(i))}async function dv(e){let t=(await kv(String(e.walletId))).filter(t=>uv({manifest:t,selected:e.selected,walletId:e.walletId,chainTarget:e.chainTarget,materialActivation:e.materialActivation}));if(t.length!==1)return{kind:`inactive`,reason:`Expected one exact ECDSA capability manifest; found ${t.length}`};let[n]=t;if(!n)return{kind:`inactive`,reason:`Exact ECDSA capability manifest is missing`};let r=await bv(n),i=await e.context.sealedSigningSessionStore.listExactSealedSessionsForWallet({walletId:String(e.walletId),filter:{authMethod:e.selected.authMethod.kind,curve:`ecdsa`,chainTarget:e.chainTarget}}),a=Wu({manifest:n,walletId:e.walletId,chainTarget:e.chainTarget,sealedRecords:i.filter(lv)}),o;if(a.kind===`resolved`){let t=a.runtime;o={kind:`exact_ecdsa_sealed_runtime_v1`,walletId:t.walletId,chainTarget:t.chainTarget,materialActivation:t.materialActivation,normalSigning:t.normalSigning,relayerUrl:t.relayerUrl,relayerKeyId:t.relayerKeyId,clientVerifyingPublicKey33B64u:t.clientVerifyingPublicKey33B64u,participantIds:t.participantIds,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,thresholdEcdsaPublicKeyB64u:t.thresholdEcdsaPublicKeyB64u,keyHandle:t.keyHandle,runtimePolicyScope:t.runtimePolicyScope,roleLocalMaterialRef:t.roleLocalMaterialRef,authBinding:t.authBinding,sealedRecord:t.sealedRecord,expiresAtMs:Math.min(t.expiresAtMs,e.status.expiresAtMs),remainingUses:e.status.remainingUses}}else{if(a.reason!==`missing_material`)return{kind:`inactive`,reason:`Exact sealed ECDSA runtime is ${a.reason}`};let t=await nd({manifest:n,chainTarget:e.chainTarget,relayerUrl:e.context.seamsWebConfigs.network.relayer?.url??``});if(t.kind!==`resolved`)return{kind:`inactive`,reason:`Exact durable ECDSA capability runtime is ${t.reason}`};try{o=Bu({runtime:t.runtime,authority:r.authority,status:e.status})}catch{return{kind:`inactive`,reason:`Exact durable ECDSA quota facts are invalid`}}}try{return{kind:`resolved`,capability:Ku({capability:r,selected:e.selected,session:e.session,operationCredential:e.operationCredential,runtime:o,nowMs:e.nowMs})}}catch(e){return{kind:`inactive`,reason:e instanceof Error?e.message:`Exact ECDSA Wallet Session authorization is invalid`}}}async function fv(e,t,n){let r=R(t.walletId),i=Date.now(),a=ev(await G.resolveSelectedWalletAuthority(String(r)),r);if(!a)return{kind:`inactive`,reason:`Selected wallet authentication authority is unavailable`};let o=String(e.seamsWebConfigs.network.relayer?.url||``).trim();if(!o)throw Error(`Exact Wallet Session status requires a relayer URL`);let s=await W_(r);if(s.kind!==`found`)return{kind:`inactive`,reason:`Exact Wallet Session authorization is ${s.kind}`};if(s.record.expiresAtMs<=i)return{kind:`inactive`,reason:`Exact Wallet Session authorization is expired`};let c=await n.read({relayerUrl:o,operationCredential:s.operationCredential},{walletSessionId:s.operationCredential.walletSessionId,quotaId:s.record.quotaId});if(c.status!==`active`&&c.status!==`exhausted`)return{kind:`inactive`,reason:`Exact Wallet Session is ${c.status}`};if(q_(c.authorization,s.record)&&!J_(c.authorization,a))try{await G.reconcilePendingNearRegistrationAuthority({walletSession:c.authorization,operationCredential:s.operationCredential})}catch{return{kind:`inactive`,reason:`NEAR authority reconciliation was superseded`}}let l=ev(await G.resolveSelectedWalletAuthority(String(r)),r);if(!l||c.walletSessionId!==s.operationCredential.walletSessionId||c.quotaId!==s.record.quotaId||c.expiresAtMs!==c.authorization.expiresAtMs||!q_(c.authorization,s.record))return{kind:`inactive`,reason:`Exact Wallet Session status identity is inconsistent`};let u=Date.now();if(c.authorization.expiresAtMs<=u)return{kind:`inactive`,reason:`Exact Wallet Session authorization is expired`};let d=J_(c.authorization,l),f=null;if(d){let e;try{e=await G.replaceExactActiveWalletSessionFromStatus({active:c.authorization,operationCredential:s.operationCredential})}catch{return{kind:`inactive`,reason:`Exact Wallet Session promotion reconciliation could not be persisted`}}e.kind===`replaced`?f={selected:l,session:c.authorization}:il(`evm-family`,{event:`wallet_session_status_superseded`,walletSessionId:s.operationCredential.walletSessionId})}if(f??=await tv(r,c.authorization,s.operationCredential),!f)return{kind:`inactive`,reason:d?`Exact Wallet Session status was superseded by a newer wallet authority`:`Exact Wallet Session status identity is inconsistent`};let p=await dv({context:e,walletId:r,selected:f.selected,session:f.session,operationCredential:s.operationCredential,status:c,chainTarget:t.chainTarget,materialActivation:t.materialActivation,nowMs:u});return p.kind===`resolved`?{kind:`active`,capability:p.capability}:p}async function pv(e,t,n){let r=await fv(e,t,n);if(r.kind===`inactive`)return r;let i=id(r.capability,Date.now());return i?{kind:`active`,authorization:i}:{kind:`inactive`,reason:`Exact Wallet Session signing quota is exhausted`}}async function mv(e,t,n){let r=await Ov({walletId:R(t.walletId),chainTargets:t.chainTargets}),i=[];for(let a of r)for(let r of t.chainTargets){let t=await fv(e,{walletId:a.manifest.signer.walletId,materialActivation:a.manifest.activation.materialActivation,chainTarget:r},n);if(t.kind===`active`){i.push(t.capability);break}}return i}function hv(e){return gv.bind(null,e)}async function gv(e,t,n){let r=await pv(e,t,n);return r.kind===`active`?r.authorization:null}async function _v(e){for(let t of e.subjects){let n=await K_.lookup(t);if(n.kind===`persistence_unavailable`)throw Error(`ECDSA capability persistence is unavailable`);if(n.kind!==`active`)continue;let r=n.manifest;if(r.signer.walletId===e.walletId&&r.signer.scope.targetMemberships.some(t=>z(t)===z(e.chainTarget)))return r}return null}async function vv(e){let t=await G.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`)throw Error(`ECDSA material activation is ambiguous and the wallet selection is ${t.kind}`);let n=e.authorities.find(e=>e.walletAuthMethodId===t.selection.walletAuthMethodId);if(!n)throw Error(`ECDSA material activation has no access projection for the selected wallet auth method`);return await K_.lookupByMaterialActivation({walletId:e.walletId,materialActivation:e.materialActivation,authority:n})}async function yv(e,t){let n=R(t.walletId),r=await K_.listActiveWalletCapabilitySubjects(n);if(r.kind!==`resolved`)throw Error(`ECDSA capability subjects are ${r.kind}`);let i=async e=>{let i=await _v({walletId:n,subjects:r.subjects,chainTarget:t.chainTarget});if(i)throw new Xd({kind:`superseded`,supersessionKind:`material_activation_replaced`,preparedMaterialActivation:t.materialActivation,currentMaterialActivation:i.activation.materialActivation});return e()},a=await K_.lookupByMaterialActivation({walletId:n,materialActivation:t.materialActivation});if(a.kind===`ambiguous_authority`&&(a=await vv({walletId:n,materialActivation:t.materialActivation,authorities:a.authorities})),a.kind===`persistence_unavailable`||a.kind===`exact_record_conflict`||a.kind===`corrupt`)throw Error(`ECDSA material activation is ${a.kind}`);if(a.kind!==`active`)return await i(()=>{throw Error(`ECDSA capability manifest is missing`)});let o=a.manifest;if(o.signer.walletId!==n||!o.signer.scope.targetMemberships.some(e=>z(e)===z(t.chainTarget)))throw Error(`ECDSA capability manifest does not match the requested signer`);return{capability:await bv(o),lookup:a}}async function bv(e){return await qu({authority:await Q_(e.signer.authority,{getWalletAuthMethodV2:e=>G.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>G.listWalletAuthMethodsForWallet(e),readEmailOtpProviderSubjectForWallet:e=>os(G,e)}),manifest:e,material:ld({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:e.durableMaterial.roleLocalPublicFacts})})}async function xv(e,t){return(await yv(e,t)).capability}async function Sv(e,t){let n=await pv(e,t,new J);if(n.kind!==`active`)throw Error(n.reason);let r=n.authorization,i=await yv(e,t),a=await g_({relayerUrl:String(e.seamsWebConfigs.network.relayer?.url||``).trim(),operationCredential:r.operationCredential,curve:`ecdsa_secp256k1`,expectedMaterialActivation:i.capability.manifest.activation.materialActivation}),o=F_({walletKey:a.walletKey,lane:a.lane,material:{keyFamily:`ecdsa_secp256k1`,laneShareEpoch:a.lane.laneShareEpoch,lookup:i.lookup,runtime:{kind:`absent`}}});if(o.kind!==`active_wallet_execution_lane_v1`)throw Error(`Owner ECDSA execution lane is ${o.reason}`);return Xu({capability:i.capability,authorization:r,nowMs:Date.now()})}async function Cv(e,t,n){let r=await Ov({walletId:R(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return await Promise.all(r.map(wv.bind(null,e,t.chainTargets,n)))}async function wv(e,t,n,r){let i=r.manifest,a=t.find(e=>i.signer.scope.targetMemberships.some(t=>z(e)===z(t)));if(!a)return{kind:`authorization_required`,capability:r};let o=await pv(e,{walletId:i.signer.walletId,chainTarget:a,materialActivation:i.activation.materialActivation},n);return o.kind===`active`?Tv(r,o.authorization):{kind:`authorization_required`,capability:r}}function Tv(e,t){try{return Xu({capability:e,authorization:t,nowMs:Date.now()})}catch{return{kind:`authorization_required`,capability:e}}}async function Ev(e,t,n,r){let i=r.manifest,a=i.signer.walletId,o=t.find(e=>i.signer.scope.targetMemberships.some(t=>z(e)===z(t)));if(!o)return{kind:`authorization_required`,capability:r};let s=ev(await G.resolveSelectedWalletAuthority(String(a)),a),c=await W_(a);if(!s||c.kind!==`found`||!J_(c.record,s))return{kind:`authorization_required`,capability:r};let l=J.observationForConfirmation({relayerUrl:e.seamsWebConfigs.network.relayer.url,operationCredential:c.operationCredential},{walletSessionId:c.operationCredential.walletSessionId,quotaId:c.record.quotaId});if(!l)return wv(e,t,n,r);let u=l.status;if(u.status!==`active`)return{kind:`authorization_required`,capability:r};if(!q_(u.authorization,c.record)||!J_(u.authorization,s))return wv(e,t,n,r);let d=await dv({context:e,walletId:a,selected:s,session:c.record,operationCredential:c.operationCredential,status:u,chainTarget:o,materialActivation:i.activation.materialActivation,nowMs:Date.now()});if(d.kind!==`resolved`)return{kind:`authorization_required`,capability:r};let f=id(d.capability,Date.now());return f?Tv(r,f):{kind:`authorization_required`,capability:r}}async function Dv(e,t,n){let r=await Ov({walletId:R(t.walletId),chainTargets:t.chainTargets,...t.authMethod?{authMethod:t.authMethod}:{}});return Promise.all(r.map(Ev.bind(null,e,t.chainTargets,n)))}async function Ov(e){let t=await K_.listActiveWalletCapabilitySubjects(e.walletId);if(t.kind!==`resolved`)return[];let n=[];for(let r of t.subjects){let t=await K_.lookup(r);if(t.kind!==`active`)continue;let i=t.manifest;if(!i.signer.scope.targetMemberships.some(t=>e.chainTargets.some(e=>z(e)===z(t))))continue;let a;try{a=await bv(i)}catch{continue}let o=Ua(a.authority)?`passkey`:Ba(a.authority)?`email_otp`:null;!o||e.authMethod&&o!==e.authMethod||n.push(a)}return n}async function kv(e){let t=R(e),n=await K_.listActiveWalletCapabilitySubjects(t);if(n.kind!==`resolved`)return[];let r=[];for(let e of n.subjects){let t=await K_.lookup(e);t.kind===`active`&&r.push(t.manifest)}return r}const Av={listActiveEcdsaCapabilityManifestsForWallet:kv,listExactSealedSessionsForWallet:Yn,resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G)},jv=Yu(Av),Mv=Uu(Av);async function Nv(e){let t=await W_(e);if(t.kind!==`found`||t.record.expiresAtMs<=Date.now())throw Error(`Email OTP step-up requires the exact unexpired Wallet Session`);return t.operationCredential}async function Pv(e){switch(e.authority.kind){case`live_session`:return await e.coordinator.requestTransactionSigningChallenge({kind:`wallet_session_challenge`,walletSession:e.walletSession,chain:e.chain,authLane:e.authority.authLane,operationFingerprintDigest:e.operationFingerprintDigest});case`capability_step_up`:return await e.coordinator.requestTransactionSigningChallenge({kind:`wallet_operation_challenge`,operationCredential:await Nv(e.walletSession.walletId),walletSession:e.walletSession,chain:e.chain,operationFingerprintDigest:e.operationFingerprintDigest})}}function Fv(e){let t=$_(e);return Sg({runtimePorts:e.runtimePorts,stores:e.stores,ed25519YaoPublicCapabilityReferences:e.ed25519YaoPublicCapabilityReferences,seamsWebConfigs:e.seamsWebConfigs,nearClient:e.nearClient,touchIdPrompt:e.touchIdPrompt,userPreferencesManager:e.userPreferencesManager,nonceCoordinator:e.nonceCoordinator,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,touchConfirm:e.touchConfirm,passkeyMpcSession:e.passkeyMpcSession,passkeyMpcExport:e.passkeyMpcExport,getEmailOtpWarmSessionStatus:t=>e.emailOtpSessions.readWarmSessionStatusOnly(t),consumeEmailOtpWarmSessionUses:t=>e.emailOtpSessions.consumeWarmSessionUses(t),clearEmailOtpWarmSessionMaterial:t=>e.emailOtpSessions.clearVolatileWarmSessionMaterial({kind:`ecdsa`,thresholdSessionId:t}),getWalletSessionStatus:e=>t(e),resolveCanonicalEcdsaSigningCapability:t=>xv(e,t),resolveAuthorizedEcdsaSigningCapability:t=>Sv(e,t),resolveActiveEcdsaWalletSessionAuthorization:hv(e),resolveOwnerLaneScope:e.resolveOwnerLaneScope,signerWorkerManager:e.signerWorkerManager,getWorkerBaseOrigin:e.getWorkerBaseOrigin,shouldPrewarmUiConfirmUi:e.shouldPrewarmUiConfirmUi,getTheme:e.getTheme,signTempo:t=>Qu(e.getEnginePorts().tempoSigningDeps,t),activateAuthenticatedWalletState:t=>Qs(e.getEnginePorts().registrationAccountLifecycleDeps,{walletId:t.walletId,nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,nearClient:t.nearClient}),persistThresholdEcdsaBootstrapForWalletTarget:t=>Lm({bootstrapStore:e.ecdsaBootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,signerAuth:t.signerAuth}),requestEmailOtpTransactionSigningChallenge:t=>Pv({coordinator:e.emailOtpSessions,walletSession:t.walletSession,chain:t.chain,authority:t.authority,operationFingerprintDigest:t.operationFingerprintDigest}),requestEmailOtpEd25519SigningChallenge:async({walletSession:t,operationFingerprintDigest:n})=>e.emailOtpSessions.requestTransactionSigningChallenge({kind:`wallet_operation_challenge`,operationCredential:await Nv(t.walletId),walletSession:t,chain:`near`,operationFingerprintDigest:n}),prepareNearEd25519YaoMaterialBoundary:e.prepareNearEd25519YaoMaterialBoundary,provisionThresholdEd25519Session:t=>Pm({credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore,touchIdPrompt:e.touchIdPrompt,touchConfirm:e.passkeyMpcSession,defaultRelayerUrl:e.seamsWebConfigs.network.relayer?.url||``,getSignerWorkerContext:()=>e.getEnginePorts().walletSessionActivationDeps.getSignerWorkerContext()},t),restorePersistedSessionForSigning:t=>t.authMethod===`passkey`?e.passkeyMpcSession.restorePersistedSessionForSigning(Y_(t)):e.emailOtpSessions.restorePersistedSessionForSigning(t),readAvailableSigningLanesForSigning:async t=>wp({activeWalletAuthorityEcdsaRuntimeReadPorts:{resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),readExactWithOperationCredential:K.readExactWithOperationCredential.bind(K)},ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:t=>{switch(t.auth.kind){case`email_otp`:return!0;case`passkey`:return e.getEnginePorts().ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:t.materialActivation})!==null}},readActiveWalletSessionAuthorization:ov.bind(null,e.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(t.curve===`ecdsa`?Dv:Cv).bind(null,e)},t,Fr(e.seamsWebConfigs.network.chains)),provisionThresholdEcdsaSession:t=>Il({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getEnginePorts().walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),withThresholdEcdsaSigningQueue:t=>pd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t,walletId:R(t.walletId)}),withThresholdEd25519CommitQueue:t=>af({queueByKey:e.thresholdEd25519CommitQueueByKey,...t})})}function Iv(e){throw Error(`Unexpected Router A/B normal-signing config branch: ${String(e)}`)}function Lv(e){let t=e.signing.routerAb.normalSigning;switch(t.mode){case`disabled`:throw Error(`[threshold-warm-session] Router A/B normal signing must be enabled for Ed25519 sessions`);case`enabled`:return{kind:Ye,signingWorkerId:t.signingWorkerId};default:return Iv(t)}}var Rv=class extends Error{code;details;constructor(e){super(`[WalletRuntimePostcondition] ${e.code} ${JSON.stringify(e.details)}`),this.name=`WalletRuntimePostconditionError`,this.code=e.code,this.details=e.details}};function zv(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:null}function Bv(e,t){let n=Math.floor(Number(e));return Number.isFinite(n)&&n>t?n:null}function Vv(e){return zv(e.remainingUses??e.policyHint?.remainingUses)}function Hv(e,t){return Bv(e.expiresAtMs??e.policyHint?.expiresAtMs,t)}function Uv(e){if(e.state===`missing`)return null;switch(e.source){case`durable_sealed_record`:case`public_capability_reference`:return{kind:e.source};default:return null}}function Wv(e){let t=e.lanes.lanes.ed25519.near;if(t.state===`missing`)return`ed25519_lane_missing`;if(gd(t)!==e.authMethod)return`auth_method_route_mismatch`;if(t.state!==`ready`&&t.state!==`restorable`)return`ed25519_lane_missing`;let n=Vv(t),r=Hv(t,e.nowMs);if(t.authorizationState!==`authorized`||!t.authorization.operationCredential.walletSessionId||!t.authorization.session.quotaId||!t.thresholdSessionId||!n||!r)return`lane_inventory_mismatch`;let i=Uv(t);if(!i)return`lane_material_missing`;let a={authMethod:e.authMethod,target:{curve:`ed25519`},walletSessionId:t.authorization.operationCredential.walletSessionId,quotaId:t.authorization.session.quotaId,thresholdSessionId:t.thresholdSessionId,remainingSignatureUses:n,expiresAtMs:r,material:i};return t.state===`restorable`?{...a,state:`restorable`}:{...a,state:`ready`}}function Gv(e){let t=z(e.chainTarget),n=e.lanes.ecdsa.lanesByTarget[t];if(!n||n.state===`missing`)return`ecdsa_lane_missing`;if(Cd(n)!==e.authMethod)return`auth_method_route_mismatch`;if(n.state!==`ready`)return`ecdsa_lane_missing`;let r=Vv(n),i=Hv(n,e.nowMs);return!n.authorization||!r||!i?`lane_inventory_mismatch`:{state:n.state,authMethod:e.authMethod,target:{curve:`ecdsa`,chainTarget:e.chainTarget},authorizationId:n.authorization.session.authorizationId,materialActivationId:String(n.materialActivation.activationId),remainingSignatureUses:r,expiresAtMs:i,material:{kind:`canonical_capability`}}}async function Kv(e){let t=String(e.walletId||``).trim();if(!t)return{ok:!1,code:`wallet_missing`,details:{source:e.source}};let n=ys(e.ownerScope.auth),r=await e.readOwnerScopedSigningLanes({walletId:t,ownerScope:e.ownerScope}),i=e.nowMs??Date.now(),a,o=new Map;for(let s of e.requiredTargets){if(s.curve===`ed25519`){let o=Wv({lanes:r,authMethod:n,nowMs:i});if(typeof o==`string`)return{ok:!1,code:o,details:{source:e.source,walletId:t,authMethod:n,curve:`ed25519`,state:r.lanes.ed25519.near.state,candidateCount:r.candidates.ed25519.near.length}};a=o;continue}let c=Gv({lanes:r,chainTarget:s.chainTarget,authMethod:n,nowMs:i});if(typeof c==`string`){let i=z(s.chainTarget);return{ok:!1,code:c,details:{source:e.source,walletId:t,authMethod:n,curve:`ecdsa`,targetKey:i,state:r.ecdsa.lanesByTarget[i]?.state||`missing`,candidateCount:r.ecdsa.candidatesByTarget[i]?.length||0}}}o.set(z(s.chainTarget),c)}return{ok:!0,inventory:{...a?{ed25519:a}:{},ecdsaByTarget:o}}}async function qv(e){let t=await Kv(e);if(!t.ok)throw new Rv(t);return t.inventory}function Jv(e){let{record:t,operationCredential:n,scope:r}=e;return t.walletId===r.walletId&&t.authorityId===r.authorityId&&t.authMethodId===r.authMethodId&&t.authorityDigestB64u===r.authorityDigestB64u&&t.authorityRevocationEpoch===r.authorityRevocationEpoch&&n.kind===`opaque_wallet_session_operation_credential_v1`&&n.token.trim().length>0}async function Yv(e){let{walletId:t,ports:n}=e,r=await n.resolveSelectedWalletAuthority(String(t));if(r.kind!==`resolved`)return{kind:`missing`};let{selection:i,authMethod:a,authority:o}=r;if(i.walletId!==t||i.walletAuthMethodId!==a.walletAuthMethodId||i.lockState!==`unlocked`||a.walletId!==t||a.walletAuthorityId!==o.authorityId||a.status!==`active`||o.walletId!==t||o.state!==`active`)return{kind:`missing`};let s=await n.readExactWithOperationCredential({walletId:t,authorityId:o.authorityId,authMethodId:a.walletAuthMethodId});switch(s.kind){case`found`:break;case`missing`:return{kind:`missing`};case`upgrade_required`:return{kind:`upgrade_required`}}return!Jv({record:s.record,operationCredential:s.operationCredential,scope:{walletId:t,authorityId:o.authorityId,authMethodId:a.walletAuthMethodId,authorityDigestB64u:o.authorityDigestB64u,authorityRevocationEpoch:o.revocationEpoch}})||s.record.expiresAtMs<=Date.now()?{kind:`missing`}:{kind:`authenticated`,state:{kind:`authenticated`,walletId:t,authMethod:a.kind},walletAuthMethodId:a.walletAuthMethodId}}function Xv(e,t){switch(e.kind){case`found`:return e;case`missing`:return null;case`upgrade_required`:throw new Cs(t)}}function Zv(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function Qv(e){return{kind:e.kind,scope:{lifecycle_id:e.scope.lifecycle_id,root_share_epoch:e.scope.root_share_epoch,account_id:e.scope.account_id,threshold_session_id:e.scope.threshold_session_id,signer_set_id:e.scope.signer_set_id,signing_worker_id:e.scope.signing_worker_id,material_activation:e.scope.material_activation},applicationBinding:{wallet_id:e.applicationBinding.wallet_id,near_ed25519_signing_key_id:e.applicationBinding.near_ed25519_signing_key_id,signing_root_id:e.applicationBinding.signing_root_id,key_creation_signer_slot:e.applicationBinding.key_creation_signer_slot},participantIds:[e.participantIds[0],e.participantIds[1]],registeredPublicKey:e.registeredPublicKey.slice(),signingWorkerVerifyingShare:e.signingWorkerVerifyingShare.slice(),stateEpoch:e.stateEpoch,transcript:e.transcript.slice(),activeCapabilityBinding:[...e.activeCapabilityBinding],materialActivation:e.materialActivation}}function $v(e){if(e.kind===`active`)return e.handle;throw Error(`Wallet custody Ed25519 active client is disposed`)}function ey(e){e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:e.handle}}}).catch(()=>void 0)}async function ty(e){return(await e.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`disposeEmailOtpEd25519YaoActiveClient`,payload:{activeClientHandle:Zv(e.activeClientHandle,`activeClientHandle`)}}})).removed}var ny=class{lifecycle;activeMetadata;constructor(e,t,n){this.workerContext=e,this.lifecycle={kind:`active`,handle:Zv(t,`activeClientHandle`)},this.activeMetadata=Qv(n)}async createSigningShare(e){return await this.workerContext.requestWorkerOperation({kind:`emailOtp`,request:{type:`createEmailOtpEd25519YaoSigningShare`,payload:{activeClientHandle:$v(this.lifecycle),input:e}}})}metadata(){return Qv(this.activeMetadata)}status(){return this.lifecycle.kind===`active`?{kind:`active`}:{kind:`disposed`}}dispose(){if(this.lifecycle.kind!==`active`)return;let e=this.lifecycle.handle;this.lifecycle={kind:`disposed`},ey({workerContext:this.workerContext,handle:e})}};function ry(e){switch(e.mode){case`ed25519_only`:return!1;case`ecdsa_only`:case`ed25519_and_ecdsa`:return!0}return!1}function iy(e){switch(e.reason){case`missing_chain_target`:case`missing_key_handle`:case`invalid_key_handle`:case`duplicate_key_handles`:return e.reason;case`invalid_chain_target`:return`invalid_signer_record`}return e.reason,`invalid_signer_record`}function ay(e){let t=e.signer,n=uc({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:e.signer}),r=typeof t.signerId==`string`&&t.signerId.trim()?t.signerId.trim():void 0;switch(n.kind){case`active_wallet_key`:return{kind:`active_ecdsa_signer_record`,targetKey:n.targetKey,chainTarget:n.chainTarget,walletKey:n.walletKey,publicCapability:n.publicCapability,source:`profile_continuity`,...r?{signerId:r}:{}};case`key_facts_inventory_required`:return{kind:`key_facts_inventory_required`,targetKey:n.targetKey,chainTarget:n.chainTarget,keyHandle:n.keyHandle,reason:n.reason,...r?{signerId:r}:{}};case`blocked`:return{kind:`blocked`,targetKey:n.targetKey,reason:iy(n),...r?{signerId:r}:{}};case`skipped`:return{kind:`skipped`}}return{kind:`skipped`}}function oy(e){let t=new Map;for(let n of e){let e=t.get(n.targetKey);if(!e){t.set(n.targetKey,n);continue}if(e.kind!==`active_ecdsa_signer_record`)continue;let r=io(bo(e.walletKey)),i=io(bo(n.walletKey));(String(e.walletKey.keyHandle)!==String(n.walletKey.keyHandle)||r!==i)&&t.set(n.targetKey,{kind:`blocked`,targetKey:n.targetKey,reason:`duplicate_key_handles`,...n.signerId?{signerId:n.signerId}:{}})}return t}function sy(e){let t=String(e.keyHandle||``).trim();if(!t)throw Error(`[login] configured-target ECDSA warm key requires keyHandle`);let n=String(e.passkeyCredentialIdB64u||``).trim();if(e.key&&e.publicCapability&&String(e.publicCapability.client_id)!==String(e.key.walletId))throw Error(`[login] configured-target ECDSA public capability wallet mismatch`);return{chainTarget:e.chainTarget,targetKey:z(e.chainTarget),keyHandle:t,...e.key?{key:e.key}:{},...n?{passkeyCredentialIdB64u:n}:{},...e.existingRoleLocalMaterial?{existingRoleLocalMaterial:e.existingRoleLocalMaterial}:{},publicCapability:e.publicCapability?{kind:`persisted_public_capability`,value:e.publicCapability}:{kind:`missing_public_capability`}}}function cy(e){let t=new Map;for(let n of e.keys){let r=z(n.chainTarget),i=String(n.keyHandle||``).trim();if(!i)continue;let a=t.get(r),o=String(a?.keyHandle||``).trim();if(o&&i&&o!==i)throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} key handles for ${r}`);if(a?.key&&n.key&&io(a.key)!==io(n.key))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} key fingerprints for ${r}`);let s=a?.publicCapability.kind===`persisted_public_capability`?a.publicCapability.value:null,c=n.publicCapability.kind===`persisted_public_capability`?n.publicCapability.value:null;if(s&&c&&!La(s,c))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} public capabilities for ${r}`);let l=c||s,u=String(n.passkeyCredentialIdB64u||a?.passkeyCredentialIdB64u||``).trim(),d=n.existingRoleLocalMaterial||a?.existingRoleLocalMaterial;if(n.existingRoleLocalMaterial&&a?.existingRoleLocalMaterial&&!b(n.existingRoleLocalMaterial.materialActivation,a.existingRoleLocalMaterial.materialActivation))throw Error(`[login] threshold ECDSA warm-up received ambiguous ${e.source} role-local material for ${r}`);t.set(r,{chainTarget:n.chainTarget,targetKey:r,keyHandle:i||o,...n.key||a?.key?{key:n.key||a?.key}:{},...u?{passkeyCredentialIdB64u:u}:{},...d?{existingRoleLocalMaterial:d}:{},publicCapability:l?{kind:`persisted_public_capability`,value:l}:{kind:`missing_public_capability`}})}return[...t.values()]}function ly(e,t){return{ecdsaKeys:cy({source:`stored/relay`,keys:[...e.ecdsaKeys,...t?.ecdsaKeys||[]]}),...t?.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}}}function uy(e){if(!e.configuredTargets.length)return{kind:`complete_configured_target_keys`,context:e.context};let t=new Map;for(let n of e.context.ecdsaKeys)t.set(n.targetKey,n);let n=e.configuredTargets.map(e=>z(e.chainTarget)).filter(e=>!t.has(e));if(n.length)return{kind:`missing_configured_target_keys`,missingTargets:n};let r={ecdsaKeys:cy({source:`configured ECDSA target completion`,keys:[...t.values()]}),...e.context.runtimePolicyScope?{runtimePolicyScope:e.context.runtimePolicyScope}:{}},i=e.configuredTargets.filter(e=>!r.ecdsaKeys.some(t=>t.targetKey===z(e.chainTarget)));return i.length?{kind:`missing_configured_target_keys`,missingTargets:i.map(e=>z(e.chainTarget))}:{kind:`complete_configured_target_keys`,context:r}}function dy(e){switch(e.completion.kind){case`complete_configured_target_keys`:return e.completion.context;case`missing_configured_target_keys`:throw Error(`[login] threshold ECDSA warm-up could not resolve configured target key facts from ${e.source} for ${e.completion.missingTargets.join(`, `)}`)}throw e.completion,Error(`[login] unsupported ECDSA warm-up key completion state`)}function fy(e){let t=new Map;for(let n of e){let e=`${n.targetKey}:${n.keyHandle}`;t.set(e,{keyHandle:n.keyHandle,chainTarget:n.chainTarget})}return[...t.values()]}function py(e){if(!ry(e.selection)||e.configuredTargets.length===0)return{kind:`no_configured_ecdsa_targets`};let t=[...e.blockedRecords||[]],n=oy(e.activeSignerRecords);for(let e of n.values())e.kind===`blocked`&&t.push(e);if(t.length)return{kind:`blocked`,blockedRecords:t};let r=new Map;for(let t of e.keyFactsInventoryRequiredRecords||[])r.set(t.targetKey,t);let i=[],a=[];for(let t of e.configuredTargets){let e=z(t),o=n.get(e);if(o?.kind===`active_ecdsa_signer_record`){a.push({targetKey:e,chainTarget:t,walletKey:o.walletKey,publicCapability:o.publicCapability});continue}let s=r.get(e);if(s){i.push(s);continue}i.push({kind:`key_facts_inventory_required`,targetKey:e,chainTarget:t,keyHandle:``,reason:`missing_key_facts`})}if(i.length===0)return{kind:`ready`,readyTargets:a};let o=i.filter(e=>String(e.keyHandle||``).trim()),s=e.runtimeConfig?.explicitKeyFactsInventoryMode??e.explicitKeyFactsInventoryMode,c=e.runtimeConfig?.allowAuthenticatedKeyFactsInventory??e.allowAuthenticatedKeyFactsInventory;return s===!0&&c===!0&&o.length===i.length?{kind:`awaiting_authenticated_key_facts_inventory`,keyFactsInventoryRequiredRecords:o,keyTargets:fy(o)}:{kind:`key_facts_inventory_required`,keyFactsInventoryRequiredRecords:i}}async function my(e){let t=e.authenticators.map(e=>{let t=String(e.credentialId||``).trim();return t?{id:t,type:`public-key`,transports:Array.isArray(e.transports)?e.transports:[]}:null}).filter(e=>!!e);e.onPromptStarted();let n=await e.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.subjectId,challengeB64u:e.challengeB64u,allowCredentials:t,includeSecondPrfOutput:!1});return e.onPromptSucceeded(),n}function hy(){if(typeof crypto>`u`||typeof crypto.getRandomValues!=`function`)throw Error(`Secure random is unavailable for passkey wallet unlock`);let e=new Uint8Array(32);return crypto.getRandomValues(e),P(e)}async function gy(e){if(!e.currentCredential)return await e.collectCredentialForChallenge(hy())}const _y=new as;async function vy(e){let t=await _y.listActiveWalletCapabilitySubjects(e);if(t.kind===`persistence_unavailable`)return{kind:`failed`,reason:`capability_subject_lookup_failed`};if(t.kind===`invalid_current_state`)return{kind:`failed`,reason:`invalid_capability_subject`};let n=[];for(let r of t.subjects)n.push({kind:`evm_family_ecdsa_wallet`,walletId:e,capability:r.capability,authority:r.authority,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId});return{kind:`resolved`,subjects:n}}async function yy(e){return await _y.listWalletActivationJournalSelectors(e)}function by(e,t){let n=e?.[t];if(typeof n!=`string`||!n.trim())throw Error(`wallet unlock signer metadata requires ${t}`);return n.trim()}function xy(e,t){try{let n=String(t.metadata?.walletId||``).trim();if(n&&n!==String(e))return{kind:`invalid`};let r=Ao(t.signerSlot);return r?{kind:`valid`,subject:{kind:`near_ed25519_wallet`,walletId:e,nearAccountId:Or(by(t.metadata,`nearAccountId`)),nearEd25519SigningKeyId:Do(by(t.metadata,`nearEd25519SigningKeyId`)),signerSlot:r}}:{kind:`invalid`}}catch{return{kind:`invalid`}}}async function Sy(e){let t=[],n;try{n=await G.listActiveWalletSigners({walletId:e,signerFamily:`ed25519`})}catch{return{kind:`failed`,reason:`capability_subject_lookup_failed`}}for(let r of n){let n=xy(e,r);if(n.kind!==`valid`)return{kind:`failed`,reason:`invalid_capability_subject`};t.push(n.subject)}return{kind:`resolved`,subjects:t}}function Cy(e){switch(e.kind){case`near_ed25519_wallet`:return[e.kind,e.walletId,e.nearAccountId,e.nearEd25519SigningKeyId,e.signerSlot].join(`\0`);case`evm_family_ecdsa_wallet`:return[e.kind,e.walletId,e.capability,e.authority.authorityDigest,e.ecdsaThresholdKeyId].join(`\0`)}return``}function wy(e,t){for(let n of e)if(Cy(n)===t)return!0;return!1}function Ty(e,t){wy(e,Cy(t))||e.push(t)}function Ey(e){return e.kind===`near_ed25519_wallet`}function Dy(e){let t=String(e||``).trim();if(!t)return null;try{return R(t)}catch{return null}}function Oy(e){return String(e||``).trim()||null}function ky(e){let t=Oy(e?.profileId);return t?{kind:`last_used_profile`,profileId:t}:{kind:`none`}}async function Ay(){return ky(await G.getLastProfileState().catch(()=>null))}async function jy(e){let t=Dy(e);return t?{kind:`explicit_wallet`,walletId:t}:e?{kind:`none`}:await Ay()}function My(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return R(t)}catch{return null}}function Ny(e){let t=[],n=new Set;for(let r of e){let e=My(r);if(!e)return{kind:`invalid`};let i=String(e);n.has(i)||(n.add(i),t.push(e))}return{kind:`resolved`,walletIds:t}}async function Py(e){let t;try{t=await G.getProfile(e)}catch{return{kind:`unresolvable_profile`,reason:`capability_subject_lookup_failed`}}if(!t)return{kind:`unresolvable_profile`,reason:`missing_wallet_profile`};let n;try{n=await G.listAccountSignersByProfile({profileId:e,status:`active`})}catch{return{kind:`unresolvable_profile`,reason:`capability_subject_lookup_failed`}}if(n.length===0)return{kind:`unresolvable_profile`,reason:`missing_requested_capability_subject`};let r=Ny(n);if(r.kind===`invalid`)return{kind:`unresolvable_profile`,reason:`invalid_wallet_profile`};let i=r.walletIds;return i.length===0?{kind:`unresolvable_profile`,reason:`invalid_wallet_profile`}:i.length>1?{kind:`unresolvable_profile`,reason:`ambiguous_wallet_profile`}:{kind:`resolved_wallet`,walletId:i[0]}}function Fy(e,t){let n=t[0];return n?{kind:`resolved`,subjectSet:{kind:`wallet_unlock_subject_set`,walletId:e,subjects:[n,...t.slice(1)]}}:{kind:`missing_requested_capability_subject`}}function Iy(e){return e.subjects.filter(Ey).length>1?`ambiguous_wallet_profile`:null}async function Ly(e){let t=R(e.walletId),n=[];switch(e.requestedCapabilityFamilies.kind){case`near_ed25519_only`:case`all_registered_mpc`:{let r=await Sy(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)Ty(n,e);if(e.requestedCapabilityFamilies.kind===`near_ed25519_only`)return Fy(t,n);break}case`evm_family_ecdsa_only`:break;default:e.requestedCapabilityFamilies}let r=await vy(t);if(r.kind===`failed`)return{kind:`capability_subject_resolution_failed`,reason:r.reason};for(let e of r.subjects)Ty(n,e);return Fy(t,n)}async function Ry(e){let t=await jy(e);if(t.kind===`none`)return{kind:`no_session_request`};let n,r;if(t.kind===`last_used_profile`){let e=await Py(t.profileId);if(e.kind===`unresolvable_profile`)return{kind:`unresolvable_profile`,profileId:t.profileId,reason:e.reason};n=e.walletId,r=`host_last_used_profile`}else n=t.walletId,r=`profile_projection`;let i=await Ly({walletId:String(n),requestedCapabilityFamilies:{kind:`all_registered_mpc`}});if(i.kind===`missing_requested_capability_subject`)return{kind:`no_session_for_wallet`,walletId:n,reason:`missing_requested_capability_subject`};if(i.kind===`capability_subject_resolution_failed`)return{kind:`unresolvable`,walletId:n,reason:i.reason};let a=i.subjectSet,o=Iy(a);return o?{kind:`unresolvable`,walletId:n,reason:o}:{kind:`resolved`,walletId:n,subjectSet:a,source:r}}function zy(e,t){return globalThis.fetch(e,t)}function By(e){switch(e?.mode){case`ed25519_only`:return{mode:`ed25519_only`,ed25519:!0};case`ecdsa_only`:return{mode:`ecdsa_only`,ecdsa:!0};case`ed25519_and_ecdsa`:case void 0:return{mode:`ed25519_and_ecdsa`,ed25519:!0,ecdsa:!0}}return Q(e)}function Vy(e){if(e.selection)return By(e.selection);let t=!1,n=!1;for(let r of e.subjectSet.subjects)switch(r.kind){case`near_ed25519_wallet`:t=!0;break;case`evm_family_ecdsa_wallet`:n=!0;break;default:return Q(r)}if(t&&n)return{mode:`ed25519_and_ecdsa`,ed25519:!0,ecdsa:!0};if(t)return{mode:`ed25519_only`,ed25519:!0};if(n)return{mode:`ecdsa_only`,ecdsa:!0};throw Error(`[login] wallet unlock subject set has no supported capability`)}function Hy(e){return e.kind===`near_ed25519_wallet`}function Uy(e){return e.kind===`evm_family_ecdsa_wallet`}function Wy(e){let t=e.subjects.filter(Hy);if(t.length===0)return null;if(t.length>1)throw Error(`[WalletSession] multiple NEAR Ed25519 subjects found for wallet session`);return t[0]||null}function Gy(e){let t=Wy(e.subjectSet),n=e.subjectSet.subjects.filter(Uy);for(let t of e.subjectSet.subjects)if(String(t.walletId)!==String(e.subjectSet.walletId))throw Error(`[login] wallet unlock subject belongs to a different wallet`);switch(e.selection.mode){case`ed25519_only`:if(!t||n.length!==0)throw Error(`[login] NEAR Ed25519 unlock requires one exact NEAR subject set`);return{kind:`near_ed25519_capable_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot};case`ecdsa_only`:{let[r,...i]=n;if(t||!r)throw Error(`[login] ECDSA-only unlock requires exact ECDSA subjects`);return{kind:`evm_family_ecdsa_only_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,ecdsaSubjects:[r,...i]}}case`ed25519_and_ecdsa`:if(!t||n.length===0)throw Error(`[login] combined unlock requires exact NEAR and ECDSA subjects`);return{kind:`near_ed25519_capable_wallet`,walletId:e.subjectSet.walletId,subjectSet:e.subjectSet,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot}}return Q(e.selection)}function Ky(e){if(e.kind===`near_ed25519_capable_wallet`)return e;throw Error(`[login] NEAR Ed25519 warm-up requires an exact NEAR subject`)}function qy(e){let t=new Set;for(let n of e.identity.subjectSet.subjects)n.kind===`evm_family_ecdsa_wallet`&&t.add(String(n.ecdsaThresholdKeyId));if(t.size===0)throw Error(`[login] ECDSA warm-up requires an exact ECDSA unlock subject`);for(let n of e.context.ecdsaKeys){let e=String(n.key?.ecdsaThresholdKeyId||``).trim();if(e&&!t.has(e))throw Error(`[login] ECDSA warm-up key does not match the unlock subject set`)}}function Jy(e){let t=[];for(let n of e.subjects)n.kind===`evm_family_ecdsa_wallet`&&t.push({capability:n.capability,authority:n.authority});return t}async function Yy(e){let t=!1,n=!1;for(let r of e.selectors){let i=await mu({workerCtx:e.workerCtx,command:{kind:`reconcile_canonical_ecdsa_activation_v1`,capability:r.capability,authority:r.authority}});switch(i.kind){case`canonical_ecdsa_activation_reconciliation_absent_v1`:break;case`canonical_ecdsa_activation_reconciliation_finalized_v1`:t=!0;break;case`canonical_ecdsa_activation_reconciliation_pending_v1`:n=!0;break;case`canonical_ecdsa_activation_reconciliation_failed_v1`:return{kind:`failed`,didFinalize:t,code:i.code};default:Q(i)}}return n?{kind:`pending`,didFinalize:t}:{kind:`settled`,didFinalize:t}}function Xy(e){switch(e.kind){case`settled`:return;case`pending`:console.warn(`[login] ECDSA activation remains prepared and requires confirmation`);return;case`failed`:console.warn(`[login] ECDSA activation reconciliation failed without changing active state`,{code:e.code});return}Q(e)}function Zy(e){let t=Da({walletId:e.walletId});switch(e.kind){case`passkey`:{let n=wa(e.rpId);return n.ok?Ta({walletAuthMethodId:e.walletAuthMethodId,scope:ha({wallet:t,rpId:n.value}),credentialIdB64u:e.credentialIdB64u}):null}case`email_otp`:return Oa({walletAuthMethodId:e.walletAuthMethodId,wallet:t,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId});default:return null}}function Qy(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}async function $y(e){return await H({authority:Qy(e)})}async function eb(e){let t=za({walletId:e.authMethod.walletId,factor:{kind:`email_otp`,provider:e.provider,providerUserId:e.providerSubjectId},verifier:{kind:`email_otp_wallet_auth_method`,emailHashHex:e.authMethod.emailHashHex},bindingId:e.authMethod.walletAuthMethodId});if(!t)throw Error(`[login] linked Email OTP provider identity does not match selected authority`);return t}async function tb(e){if(e.selection.authMethod.kind===`passkey`)return Qy(e.selection.authMethod);let t=e.providerIdentity;if(!t)throw Error(`[login] linked Email OTP authority provider identity is missing`);return await eb({authMethod:e.selection.authMethod,provider:t.provider,providerSubjectId:t.providerSubjectId})}async function nb(e){return await H({authority:await tb(e)})}function rb(e,t,n,r){let i=null;for(let a of e)if(!(a.authorityId!==t||a.walletAuthMethodId!==n||a.activationId!==r.activationId)){if(i)return null;i=a}return i}function ib(e){let t=[];return e.selection.walletId!==e.walletId&&t.push(`selection_wallet_id`),!e.allowUnselectedSibling&&e.selection.walletAuthMethodId!==e.authMethod.walletAuthMethodId&&t.push(`selection_auth_method_id`),e.authMethod.walletId!==e.walletId&&t.push(`auth_method_wallet_id`),e.authMethod.status!==`active`&&t.push(`auth_method_inactive`),e.expectedKind&&e.authMethod.kind!==e.expectedKind&&t.push(`auth_method_not_${e.expectedKind}`),e.authority.walletId!==e.walletId&&t.push(`authority_wallet_id`),e.authority.state!==`active`&&t.push(`authority_inactive`),e.authority.authorityId!==e.authMethod.walletAuthorityId&&t.push(`authority_auth_method_id`),t}async function ab(e){let t=o(e);if(!t.ok)return null;let n=t.value;try{let e=await G.resolveSelectedWalletAuthority(String(n));if(e.kind!==`resolved`)return null;let{selection:t,authMethod:r,authority:i}=e;return ib({walletId:n,selection:t,authMethod:r,authority:i,expectedKind:`passkey`}).length>0||r.status!==`active`||r.kind!==`passkey`||i.state!==`active`||i.provenance.kind!==`device_link`?null:{kind:`linked_device_passkey_authority_selection_v1`,walletId:n,selection:t,authMethod:r,authority:i,signerMaterials:e.signerMaterials,exportRoot:e.exportRoot}}catch{return null}}async function ob(e){let t=o(e.walletIdInput),n=String(e.emailHashHex||``).trim().toLowerCase(),r=String(e.providerSubjectId||``).trim();if(!t.ok||!n||!r)return{kind:`none`};let i=t.value,a;try{a=e.walletAuthMethodId?await G.resolveWalletAuthorityForMethod(String(i),e.walletAuthMethodId):await G.resolveSelectedWalletAuthority(String(i))}catch(e){return{kind:`rejected`,message:e instanceof Error?e.message:`Selected Email OTP authority is unavailable`}}if(a.kind===`missing_selection`)return{kind:`none`};if(a.kind!==`resolved`)return{kind:`rejected`,message:`Selected Email OTP authority is unavailable`};let{selection:s,authMethod:c,authority:l}=a;if(c.kind!==`email_otp`)return{kind:`none`};if(ib({walletId:i,selection:s,authMethod:c,authority:l,expectedKind:`email_otp`,allowUnselectedSibling:!!e.walletAuthMethodId}).length>0||c.emailHashHex.toLowerCase()!==n)return{kind:`rejected`,message:`Selected Email OTP authority is inactive or does not match the verified email`};if(c.status!==`active`||l.state!==`active`)return{kind:`rejected`,message:`Selected Email OTP authority is inactive`};try{await eb({authMethod:c,provider:e.provider,providerSubjectId:r})}catch(e){return{kind:`rejected`,message:e instanceof Error?e.message:`Selected Email OTP provider identity does not match the local authority`}}return l.provenance.kind===`device_link`&&a.signerMaterials.length===0?{kind:`rejected`,message:`Selected linked Email OTP authority has no signer material`}:a.signerMaterials.some(e=>e.kind!==`wallet_authority_linked_signer_material_v1`)?{kind:`rejected`,message:`Selected Email OTP authority has an invalid linked signer material set`}:{kind:`selected`,selection:{kind:`linked_device_email_otp_authority_selection_v1`,walletId:i,selection:s,authMethod:c,authority:l,signerMaterials:a.signerMaterials,exportRoot:a.exportRoot}}}function sb(e,t){let n=t.keyFamily===`ed25519`?e.signerActivations.ed25519:e.signerActivations.ecdsa;if(!n)throw Error(`[login] linked Wallet Session requested unavailable ${t.keyFamily} material`);if(!b(n.materialActivation,t.materialActivation))throw Error(`[login] linked Wallet Session material activation does not match authority`);return n.materialActivation}function cb(e,t){if(t.walletId!==e.walletId||t.authorityId!==e.authority.authorityId||t.authMethodId!==e.authMethod.walletAuthMethodId||t.authorityDigestB64u!==e.authority.authorityDigestB64u||t.authorityRevocationEpoch!==e.authority.revocationEpoch)throw Error(`[login] linked Wallet Session identity does not match selected authority`);for(let n of t.capabilitySubjects)switch(n.kind){case`sign`:case`export_keys`:{let t=sb(e.authority,n),r=rb(e.signerMaterials,e.authority.authorityId,e.authMethod.walletAuthMethodId,t);if(!r||r.keyFamily!==n.keyFamily)throw Error(`[login] linked Wallet Session signer material is unavailable`);if(!b(r.materialActivation,n.materialActivation))throw Error(`[login] linked Wallet Session signer material activation is invalid`);break}case`link_devices`:case`revoke_devices`:break;default:return Q(n)}}function lb(e,t){let n=e.targetFactor;if(n.kind!==`passkey`||n.walletAuthMethodId!==t.authMethod.walletAuthMethodId||n.rpId!==t.authMethod.rpId||n.credentialIdB64u!==t.authMethod.credentialIdB64u)throw Error(`[login] linked passkey signer material target factor does not match V2 auth`)}async function ub(e){let t=Yc(e.credential);if(!t)throw Error(`[login] linked passkey unlock requires WebAuthn PRF.first output`);let n;try{n=F(t)}catch{throw Error(`[login] linked passkey unlock returned an invalid PRF.first output`)}try{if(n.byteLength!==32)throw Error(`[login] linked passkey unlock requires a 32-byte PRF.first output`);return await db({selection:e.selection,factorSecret32:n})}finally{n.fill(0)}}async function db(e){if(e.factorSecret32.byteLength!==32)throw Error(`[login] linked signer material requires a 32-byte factor secret`);let t=e.factorSecret32.slice();try{let n=[];for(let r of e.selection.signerMaterials){if(r.kind!==`wallet_authority_linked_signer_material_v1`)throw Error(`[login] linked signer material is not a linked sealed record`);e.selection.kind===`linked_device_passkey_authority_selection_v1`?lb(r,e.selection):fb(r,e.selection);let i=await es({record:r,factorSecret:t,expected:{authorityId:e.selection.authority.authorityId,walletId:e.selection.walletId,walletAuthMethodId:e.selection.authMethod.walletAuthMethodId,packageSetDigestB64u:r.packageSetDigestB64u,targetFactor:r.targetFactor,materialActivation:r.materialActivation,keyFamily:r.keyFamily}});if(i.kind!==`opened_wallet_authority_linked_signer_material_v1`)throw Error(`[login] linked signer material open failed: ${i.reason}`);n.push(i)}let[r,...i]=n;if(!r)throw Error(`[login] linked signer material set is empty`);return[r,...i]}finally{t.fill(0)}}function fb(e,t){let n=e.targetFactor;if(n.kind!==`email_otp`||n.walletAuthMethodId!==t.authMethod.walletAuthMethodId||n.emailHashHex.toLowerCase()!==t.authMethod.emailHashHex.toLowerCase()||n.registrationAuthorityId!==t.authMethod.registrationAuthorityId)throw Error(`[login] linked Email OTP signer material target factor does not match V2 auth`)}async function pb(e){if(e.factorSecret32.byteLength!==32)throw Error(`[login] linked Email OTP unlock requires a 32-byte factor secret`);return await db({selection:e.selection,factorSecret32:e.factorSecret32})}function mb(e){let t=String(e.walletId||``).trim();if(!t)throw Error(`[login] recent unlock account is missing walletId`);let n=String(e.loginDisplayName||``).trim()||t;return{walletId:t,nearAccountId:e.nearAccountId,displayName:n,signerSlot:e.signerSlot,...typeof e.lastLogin==`number`?{lastLogin:e.lastLogin}:{},authMethod:e.authMethod||null}}async function hb(e){let t=await G.resolveSelectedWalletAuthority(String(e.walletId)).catch(()=>null);if(!t||t.kind!==`resolved`||t.selection.walletAuthMethodId!==e.walletAuthMethodId||t.authMethod.status!==`active`||t.authority.state!==`active`||t.authority.provenance.kind!==`device_link`)return null;let n=await $b({walletId:e.walletId,authMethod:t.authMethod,authority:t.authority,signerMaterials:t.signerMaterials});if(n.kind!==`resolved`)return null;let r;switch(t.authMethod.kind){case V.passkey:r=V.passkey;break;case V.emailOtp:r=V.emailOtp;break;default:return Q(t.authMethod)}return{walletId:String(e.walletId),nearAccountId:n.subject.nearAccountId,displayName:String(e.walletId),signerSlot:n.subject.signerSlot,lastLogin:e.updatedAtMs,authMethod:r}}function gb(e){return`${e.walletId}:${e.authMethod??``}`}function _b(e){let t=null;for(let n of e)(!t||(n.lastLogin??0)>(t.lastLogin??0))&&(t=n);return t}async function vb(e){return e?(await G.listWalletAuthMethodsV2ForWallet(String(e)).catch(()=>[])).filter(e=>e.status===`active`).map(Zy).filter(e=>!!e):[]}function yb(e){if(e.authMethod===V.passkey)return null;if(e.authMethod!==V.emailOtp)throw Error(`[login] unsupported wallet auth method for warm-up: ${e.authMethod}`);let t=e.authMethods.filter(e=>e.kind===`email_otp`);if(t.length!==1)throw Error(`[login] Email OTP warm-up requires one active wallet auth-method binding`);let n=t[0];if(String(n.wallet.walletId)!==String(e.walletId))throw Error(`[login] Email OTP warm-up auth-method binding wallet mismatch`);return n}async function bb(e){return yb({authMethods:await vb(e.walletId),authMethod:e.authMethod,walletId:e.walletId})}async function xb(e){let[t,n]=await Promise.all([G.listWalletPasskeyAuthenticators(String(e)),G.listWalletAuthMethodsV2ForWallet(String(e)).catch(()=>[])]),r=new Set;for(let e of n)e.kind===`passkey`&&e.status===`active`&&r.add(e.credentialIdB64u);return t.filter(e=>r.has(e.credentialId))}function Sb(e){return e?.status===`active`}function Cb(e){if(!e.request)return null;switch(e.request.mode){case`wallet_session_operation_credential_v1`:try{return{kind:`wallet_session_operation_credential_v1`,operationCredential:wb(e.request.operationCredential)}}catch{return null}case`webauthn`:return{kind:`webauthn`}}return null}function wb(e){if(e.kind===`opaque_wallet_session_operation_credential_v1`)return De(e);if(e.kind!==`opaque_hosted_wallet_session_operation_credential_v1`||!/^wsh_[A-Za-z0-9_-]{43}$/.test(e.token))throw Error(`Hosted Wallet Session operation credential is invalid`);let t=pt(e.walletSessionId);if(!t.ok)throw Error(`Hosted Wallet Session ID is invalid: ${t.error.message}`);return{kind:e.kind,home:Ne(e.home),token:e.token,walletSessionId:t.value}}function Tb(){return{kind:`none`}}function Eb(e){return String(e.authenticators.find(t=>t.signerSlot===e.signerSlot)?.credentialId||e.authenticators[0]?.credentialId||``).trim()}function Db(e){return co({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})}function Ob(e){if(!e.wantsEd25519Warmup)return{kind:`not_requested`};if(e.authMethod===V.passkey)return{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:Db({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.passkeyCredentialIdB64u})},source:`login`};throw e.authMethod===V.emailOtp?Error(`[login] Email OTP warm-up requires its proof-bound unlock flow`):Error(`[login] unsupported wallet auth method for Ed25519 warm-up: ${e.authMethod}`)}function kb(e){if(e.kind===`not_requested`)throw Error(`[login] threshold Ed25519 warm-up authority is missing`);return e}function Ab(e){return e.authority.kind===`email_otp`?e.authority:{kind:`passkey`,authority:{kind:`wallet_auth_authority`,authority:Db({walletId:e.walletId,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})},source:`login`}}function jb(e){switch(e.kind){case`passkey`:return{kind:`passkey`,rpId:qa(e.authority.authority.verifier.rpId),credentialIdB64u:String(e.authority.authority.factor.credentialIdB64u||``).trim()};case`email_otp`:return{kind:`email_otp`,providerSubjectId:String(e.authority.authority.factor.providerUserId||``).trim()}}throw Error(`[login] unsupported Ed25519 exact provision authority`)}function Mb(e){return Jc({signer:Lc({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:jb(e.authority),walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId})}function Nb(e){switch(e.mintPlan.kind){case`not_requested`:throw Error(`[login] threshold Ed25519 mint plan is missing`);case`wallet_custody`:return e.ecdsaMint?{kind:`exact_ed25519_provisioning`,operationCredential:e.ecdsaMint.operationCredential,laneIdentity:Mb({walletBinding:e.walletBinding,signerSlot:e.signerSlot,thresholdSessionId:e.mintPlan.thresholdSessionId,walletSessionId:e.ecdsaMint.operationCredential.walletSessionId,quotaId:e.ecdsaMint.quotaId,authority:e.authority})}:{kind:`fresh_ed25519_provisioning`,materialActivation:e.mintPlan.custody.ed25519.capability.materialActivation};case`fresh`:throw Error(`[login] fresh Ed25519 passkey provisioning requires canonical material activation`);case`ecdsa_authorized`:if(!e.ecdsaMint)throw Error(`[login] threshold Ed25519 warm-up requires the ECDSA bootstrap session minted during unlock`);return{kind:`exact_ed25519_provisioning`,operationCredential:e.ecdsaMint.operationCredential,laneIdentity:Mb({walletBinding:e.walletBinding,signerSlot:e.signerSlot,thresholdSessionId:e.mintPlan.thresholdSessionId,walletSessionId:e.ecdsaMint.operationCredential.walletSessionId,quotaId:e.ecdsaMint.quotaId,authority:e.authority})}}return Q(e.mintPlan)}function Pb(e,t){if(e.kind===`fresh_ed25519_provisioning`&&e.materialActivation)return e.materialActivation;if(t.kind===`wallet_custody`)return t.custody.ed25519.capability.materialActivation;throw Error(`[login] passkey Ed25519 warm-up requires a canonical material activation`)}function Fb(e){return e.mintPlan.kind===`wallet_custody`?{relayerKeyId:e.mintPlan.custody.ed25519.relayerKeyId,participantIds:e.mintPlan.custody.ed25519.participantIds,runtimePolicyScope:e.mintPlan.custody.ed25519.capability.runtimePolicyScope,routerAbNormalSigning:e.fallback.routerAbNormalSigning}:e.fallback}function Ib(e){let t=e.session,n=e.custody.ed25519,r=e.credential?Yc(e.credential):``;if(t.walletId!==String(e.walletBinding.walletId)||t.nearAccountId!==String(e.walletBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||n.signerSlot!==e.signerSlot||t.relayerKeyId!==e.provisionScope.relayerKeyId||t.thresholdSessionId!==n.capability.lifecycle.thresholdSessionId||t.remainingUses!==e.remainingUses||!Jx(t.participantIds,e.provisionScope.participantIds)||!e.provisionScope.runtimePolicyScope||!Xx(t.runtimePolicyScope,e.provisionScope.runtimePolicyScope)||!Yx(t.routerAbNormalSigning,e.provisionScope.routerAbNormalSigning)||!r)throw Error(`[login] verified unlock returned an invalid Ed25519 Wallet Session`);switch(t.sessionKind){case`issued_exact_wallet_session`:if(t.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[login] verified unlock returned a mismatched Ed25519 credential`);return{ok:!0,...t,passkeyPrfFirstB64u:r};case`already_committed_exact_wallet_session`:{let n=e.unlockAuthorization;if(!n)throw Error(`[login] verified unlock reused an Ed25519 Wallet Session without its authorization`);if(n.operationCredential.walletSessionId!==t.walletSessionId||n.record.walletId!==t.walletId||n.record.authorizationId!==t.authorizationId||n.record.quotaId!==t.quotaId||n.record.expiresAtMs!==t.expiresAtMs)throw Error(`[login] verified unlock reused a mismatched Ed25519 Wallet Session`);return{ok:!0,...t,operationCredential:n.operationCredential,passkeyPrfFirstB64u:r}}default:return Q(t)}}function Lb(e){return e.hasLoginCredential?{kind:`passkey_credential_already_collected`}:e.requiresLocalPasskeyUnlock?e.requireThresholdWarmup?{kind:`wallet_unlock_owns_passkey_credential`}:{kind:`local_unlock_passkey_assertion`}:{kind:`no_local_passkey_required`}}function Rb(e){if(e.warmupPlan.signersToWarm.includes(`ed25519`)&&e.requiresLocalPasskeyUnlock)return{kind:`wallet_custody`};if(e.hasLoginCredential)return{kind:`existing_passkey_credential`};if(e.routeAuthorization.kind,e.requiresLocalPasskeyUnlock)throw Error(`[login] passkey warm-up requires the verified wallet-unlock credential`);return{kind:`no_passkey_credential_required`}}function zb(e){if(!e.credentialIds)return e.authenticators;let t=new Set;for(let n of e.credentialIds)t.add(n.trim());let n=[];for(let r of e.authenticators)t.has(String(r.credentialId||``).trim())&&n.push(r);if(!n.length)throw Error(`[login] no local authenticator matches the required credential`);return n}function Bb(e){let t=[],n=new Set;for(let r of e){let e=String(r.credentialId||``).trim();!e||n.has(e)||(n.add(e),t.push(e))}return t}function Vb(e){if(!Array.isArray(e))return[];let t=[],n=new Set;for(let r of e){let e=typeof r==`string`?r.trim():``;!e||n.has(e)||(n.add(e),t.push(e))}return t}function Hb(e){let t=[];for(let n of e.authenticators)n.signerSlot===e.signerSlot&&t.push(n);let n=Bb(t.length>0?t:e.authenticators);if(n.length===0)throw Error(`[login] selected wallet has no local passkey credential ID`);if(e.serverCredentialIds.length===0)return n;let r=new Set(e.serverCredentialIds),i=[];for(let e of n)r.has(e)&&i.push(e);if(i.length===0)throw Error(`[login] server passkey allow-list does not match local wallet credentials`);return i}function Ub(e){let t=Gy({subjectSet:e.subjectSet,selection:e.selection});switch(e.selection.mode){case`ed25519_only`:return{kind:`near_ed25519_only`,wantsEd25519Warmup:!0,wantsEcdsaWarmup:!1};case`ecdsa_only`:if(t.kind!==`evm_family_ecdsa_only_wallet`)throw Error(`[login] ECDSA-only warm-up requires exact ECDSA subjects`);return{kind:`evm_family_ecdsa_only`,wantsEd25519Warmup:!1,wantsEcdsaWarmup:e.hasConfiguredEcdsaTargets};case`ed25519_and_ecdsa`:return{kind:`near_ed25519_and_evm_family_ecdsa`,wantsEd25519Warmup:!0,wantsEcdsaWarmup:e.hasConfiguredEcdsaTargets}}return Q(e.selection)}function Wb(e){let t=String(e.context.configs?.network.relayer?.url||``).trim();if(!t)throw Error(`[login] threshold warm session requires relayer.url to be configured`);let n=ur(e.context.configs.network.chains),r=Ub({subjectSet:e.subjectSet,selection:e.selection,hasConfiguredEcdsaTargets:n.length>0}),i=r.wantsEcdsaWarmup,a=r.wantsEd25519Warmup,o=String(e.context.signingEngine.getRpId()||``).trim();return{kind:`threshold_login_warmup_phase_input`,signerSlot:e.signerSlot,selection:e.selection,relayerUrl:t,rpId:o,configuredEcdsaTargets:n,selectedEcdsaTargets:i?n:[],wantsEd25519Warmup:a,wantsEcdsaWarmup:i,ed25519SessionAuthority:Ob({wantsEd25519Warmup:a,authMethod:e.authMethod,walletId:e.subjectSet.walletId,rpId:o,passkeyCredentialIdB64u:Eb({authenticators:e.authenticators,signerSlot:e.signerSlot}),routeAuthorization:e.routeAuthorization}),keyFactsInventoryAuthority:e.keyFactsInventoryAuthority,routeAuthorization:e.routeAuthorization}}async function Gb(e){let t=[...e.signersWarmed.includes(`ed25519`)?[{curve:`ed25519`}]:[],...e.signersWarmed.includes(`ecdsa`)?ur(e.context.configs.network.chains).map(e=>({curve:`ecdsa`,chainTarget:e.chainTarget})):[]],n=Xc(e.credential);if(!n)throw Error(`[login] runtime lane selection requires the authenticated credential`);let r=String(e.walletIdentity.walletId),i=await G.getWalletPasskeyAuthenticator({walletId:r,credentialId:n}),a=Ao(i?.signerSlot,{min:1});if(!i||a===null)throw Error(`[login] authenticated credential resolves no exact local authenticator for its signer slot`);let o={auth:{kind:`passkey`,rpId:qa(e.context.signingEngine.getRpId()),credentialIdB64u:n},signerSlot:a};t.length!==0&&await qv({source:`wallet_unlock`,walletId:String(e.walletIdentity.walletId),ownerScope:o,requiredTargets:t,readOwnerScopedSigningLanes:async t=>await e.context.signingEngine.readOwnerScopedSigningLanes(t,e.statusReads)})}async function Kb(e){let t=Xc(e.credential);if(!t)throw Error(`[login] successful Passkey unlock omitted its credential identity`);let n=await kt({walletId:e.walletIdentity.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:t});await e.context.signingEngine.markWalletSelectionUnlocked({walletId:e.walletIdentity.walletId,walletAuthMethodId:n.walletAuthMethodId})}function qb(e){if(e.userData&&String(e.userData.walletId)!==String(e.walletId))throw Error(`[login] NEAR account projection belongs to a different wallet`);let t=typeof e.userData?.operationalPublicKey==`string`?e.userData.operationalPublicKey.trim():``;return{kind:`near_wallet`,walletId:e.walletId,operationalPublicKey:t||null}}async function Jb(e){pr(e.onEvent,String(e.identity.nearAccountId),{phase:W.STEP_02_ACCOUNT_LOOKUP_STARTED,status:`running`,authMethod:`passkey`});let t=e.signerSlotHint===null?Promise.resolve(null):e.signingEngine.getUserBySignerSlot(e.identity.nearAccountId,e.signerSlotHint).catch(()=>null),[n,r,i,a]=await Promise.all([t,e.signingEngine.getLastUser().catch(()=>null),Fs(G,e.identity.nearAccountId).catch(()=>null),xb(e.identity.walletId)]);if(a.length===0)throw Error(`No authenticators found for account ${e.identity.nearAccountId}. Please register an account.`);let o=null;o=n&&n.nearAccountId===e.identity.nearAccountId?n:i&&i.nearAccountId===e.identity.nearAccountId?i:r&&r.nearAccountId===e.identity.nearAccountId?r:await e.signingEngine.getUserBySignerSlot(e.identity.nearAccountId,Number(e.identity.signerSlot)).catch(()=>null);let s=qb({userData:o,walletId:e.identity.walletId});return pr(e.onEvent,String(e.identity.nearAccountId),{phase:W.STEP_02_ACCOUNT_LOOKUP_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,data:{signerSlot:Number(e.identity.signerSlot),...s.operationalPublicKey?{operationalPublicKey:s.operationalPublicKey}:{walletKind:s.kind}}}),{kind:`login_unlock_account_phase_ready`,accountSubject:s,authenticators:a,baseSignerSlot:e.signerSlotHint??Number(e.identity.signerSlot),localUnlockAuthMethod:V.passkey,requiresLocalPasskeyUnlock:!0}}async function Yb(e){let t=String(e.identity.walletId);pr(e.onEvent,t,{phase:W.STEP_02_ACCOUNT_LOOKUP_STARTED,status:`running`,authMethod:`passkey`});let[n,r]=await Promise.all([G.getProfile(t),xb(e.identity.walletId)]);if(!n||r.length===0)throw Error(`[login] ECDSA wallet ${t} has no local passkey profile`);let i=Ao(n.defaultSignerSlot,{min:1}),a=e.signerSlotHint??i;if(a===null)throw Error(`[login] ECDSA wallet profile is missing its exact signerSlot`);return pr(e.onEvent,t,{phase:W.STEP_02_ACCOUNT_LOOKUP_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,data:{signerSlot:a,walletKind:`ecdsa_wallet_only`}}),{kind:`login_unlock_account_phase_ready`,accountSubject:{kind:`ecdsa_wallet_only`,walletId:e.identity.walletId,operationalPublicKey:null},authenticators:r,baseSignerSlot:a,localUnlockAuthMethod:V.passkey,requiresLocalPasskeyUnlock:!0}}async function Xb(e){switch(e.identity.kind){case`near_ed25519_capable_wallet`:return await Jb({signingEngine:e.signingEngine,identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent});case`evm_family_ecdsa_only_wallet`:return await Yb({identity:e.identity,signerSlotHint:e.signerSlotHint,onEvent:e.onEvent})}return Q(e.identity)}function Zb(e){switch(e.identity.kind){case`near_ed25519_capable_wallet`:if(e.accountSubject.kind!==`near_wallet`)throw Error(`[login] NEAR unlock returned an ECDSA-only account subject`);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.identity.walletId,loggedInNearAccountId:String(e.identity.nearAccountId),operationalPublicKey:e.accountSubject.operationalPublicKey,nearAccountId:e.identity.nearAccountId};case`evm_family_ecdsa_only_wallet`:if(e.accountSubject.kind!==`ecdsa_wallet_only`)throw Error(`[login] ECDSA-only unlock returned a NEAR account subject`);return{success:!0,kind:`ecdsa_wallet_unlocked`,walletId:e.identity.walletId}}return Q(e.identity)}async function Qb(e,t,n){return await Tx(e,t,n,{kind:`wallet_only`})}async function $b(e){let t=e.authority.signerActivations.ed25519;if(!t)return{kind:`absent`};let n=rb(e.signerMaterials,e.authority.authorityId,e.authMethod.walletAuthMethodId,t.materialActivation);if(!n||n.kind!==`wallet_authority_linked_signer_material_v1`||n.keyFamily!==`ed25519`||!b(n.materialActivation,t.materialActivation))return{kind:`invalid`};let r=n.publicFacts.applicationBinding;if(r.wallet_id!==String(e.walletId))return{kind:`invalid`};let i=null,a=await new ds(G).listLanes();for(let o of a){let a;switch(e.authMethod.kind){case V.passkey:a=o.auth.kind===V.passkey&&String(o.auth.rpId)===String(e.authMethod.rpId)&&String(o.auth.credentialIdB64u)===String(e.authMethod.credentialIdB64u);break;case V.emailOtp:a=o.auth.kind===V.emailOtp;break;default:return Q(e.authMethod)}if(!(!a||String(o.walletId)!==String(e.walletId)||o.signerSlot!==r.key_creation_signer_slot||String(o.nearEd25519SigningKeyId)!==r.near_ed25519_signing_key_id||String(o.thresholdSessionId)!==n.publicFacts.targetBinding.lifecycle.session_id||!b(o.materialActivation,t.materialActivation))){if(i)return{kind:`invalid`};i=o}}if(!i)return{kind:`invalid`};let o=Ao(i.signerSlot,{min:1});return o?{kind:`resolved`,subject:{kind:`near_ed25519_wallet`,walletId:e.walletId,nearAccountId:i.nearAccountId,nearEd25519SigningKeyId:i.nearEd25519SigningKeyId,signerSlot:o}}:{kind:`invalid`}}function ex(e){let t=Wa({kind:`wallet_auth_authority_ref`,walletId:e.authority.walletId,authorityDigest:e.authority.authorityDigestB64u,walletAuthMethodId:e.authMethod.walletAuthMethodId});if(!t)throw Error(`[login] linked device wallet authority reference is invalid`);return t}async function tx(e){let t=o(e);if(!t.ok)return null;let n=t.value;try{let e=await G.resolveSelectedWalletAuthority(String(n));if(e.kind!==`resolved`)return null;let{selection:t,authMethod:r,authority:i}=e;if(ib({walletId:n,selection:t,authMethod:r,authority:i}).length>0||r.status!==`active`||i.state!==`active`)return null;let a=[],o=await $b({walletId:n,authMethod:r,authority:i,signerMaterials:e.signerMaterials});if(o.kind===`invalid`)return null;o.kind===`resolved`&&a.push(o.subject);let s=i.signerActivations.ecdsa;if(s){let t=rb(e.signerMaterials,i.authorityId,r.walletAuthMethodId,s.materialActivation);if(!t||t.keyFamily!==`ecdsa_secp256k1`||!b(t.materialActivation,s.materialActivation))return null;let o;try{o=r.kind===V.passkey?await $y(r):ex({authority:i,authMethod:r})}catch{return null}a.push({kind:`evm_family_ecdsa_wallet`,walletId:n,capability:s.materialActivation.capability,authority:o,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId})}let c=a[0];return c?{kind:`wallet_unlock_subject_set`,walletId:n,subjects:[c,...a.slice(1)]}:null}catch{return null}}async function nx(e){let t=await zy(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:String(e.walletId),rpId:e.rpId})}),n=await t.json().catch(()=>({})),r=O(n)?n:{};if(!t.ok||r.ok!==!0)throw Error(typeof r.message==`string`?r.message:`wallet/unlock/challenge failed (HTTP ${t.status})`);let i=String(r.challengeId||``).trim(),o=String(r.challengeB64u||``).trim();if(!i||!o)throw Error(`[login] linked passkey challenge is incomplete`);return{challengeId:i,challengeB64u:o}}function rx(e){return{id:e,type:`public-key`,transports:[]}}function ix(e,t){return e.capabilitySubjects.some(e=>(e.kind===`sign`||e.kind===`export_keys`)&&e.keyFamily===(t===`ed25519`?`ed25519`:`ecdsa_secp256k1`))}function ax(e){let t=e.filter(e=>e.keyFamily===`ed25519`);if(t.length>1)throw Error(`[login] linked passkey has multiple active Ed25519 materials`);return t[0]??null}function ox(e){let t=e.filter(e=>e.keyFamily===`ecdsa_secp256k1`);if(t.length>1)throw Error(`[login] linked passkey has multiple active ECDSA materials`);return t[0]??null}async function sx(e){let t=cd({walletId:e.selection.walletId,materialActivation:e.material.materialActivation});if(t){let[n,r]=await Promise.all([H({authority:t.factorAuthority}),H({authority:e.factorAuthority})]);if(t.authorityId!==e.selection.authority.authorityId||t.walletAuthMethodId!==e.selection.authMethod.walletAuthMethodId||t.ecdsaThresholdKeyId!==e.material.publicFacts.ecdsaThresholdKeyId||n.authorityDigest!==r.authorityDigest)throw Error(`[login] linked ECDSA holder runtime conflicts with the selected authority`);return{runtime:t,installed:!1}}let n=Be(`linked-ecdsa-holder`);try{let t=await hu({holderHandleId:n,ownedSigningShare32:e.material.material.slice(),activationReceiptJson:JSON.stringify(e.material.publicFacts.activationReceipt),workerCtx:e.context.signingEngine.getSignerWorkerContext()}),r={kind:`linked_ecdsa_holder_runtime_v1`,walletId:e.selection.walletId,authorityId:e.selection.authority.authorityId,walletAuthMethodId:e.selection.authMethod.walletAuthMethodId,factorAuthority:e.factorAuthority,materialActivation:e.material.materialActivation,holderHandleId:t.holderHandleId,ecdsaThresholdKeyId:e.material.publicFacts.ecdsaThresholdKeyId,activationReceipt:e.material.publicFacts.activationReceipt};return ud(r),{runtime:r,installed:!0}}catch(t){throw await Du({holderHandleId:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()}).catch(()=>void 0),t}}async function cx(e){if(e.kind===`passkey`){let t=await ab(String(e.walletId));if(!t)throw Error(`[login] linked Passkey authority is unavailable after link`);return t}let t=await ob({walletIdInput:String(e.walletId),walletAuthMethodId:String(e.walletAuthMethodId),emailHashHex:e.emailHashHex,provider:e.providerIdentity.provider,providerSubjectId:e.providerIdentity.providerSubjectId});if(t.kind!==`selected`)throw Error(t.kind===`rejected`?t.message:`[login] linked Email OTP authority is unavailable after link`);return t.selection}async function lx(e){let t=dx(e.material),n=Dr(`ed25519:${Tr(t.registeredPublicKey)}`),r=Ea({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(e.selection.walletId),nearAccountId:n,nearEd25519SigningKeyId:t.applicationBinding.near_ed25519_signing_key_id,signerSlot:t.applicationBinding.key_creation_signer_slot,thresholdSessionId:t.scope.threshold_session_id,signingWorkerId:t.scope.signing_worker_id,participantIds:t.participantIds});if(!r.ok)throw Error(r.message);let i=await fetch(`${new URL(e.relayerUrl).origin}${oa}`,{method:`POST`,headers:{Authorization:`Bearer ${e.operationCredential.token}`,"Content-Type":`application/json`},body:JSON.stringify(r.value)}),a=await i.json().catch(()=>null);if(!i.ok||!O(a)){let e=O(a)?String(a.message||``).trim():``;throw Error(`[login] linked Ed25519 post-link bootstrap failed (HTTP ${i.status}): ${e||`invalid response`}`)}let o=s(a.thresholdSessionId),c=pt(a.walletSessionId),l=dt(a.quotaId),u=fe(a.runtimePolicyScope),d=Ze(a.routerAbNormalSigning),f=Array.isArray(a.participantIds)?a.participantIds:[];if(a.kind!==`router_ab_ed25519_yao_warm_recovery_bootstrap_v1`&&a.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`||String(a.walletId)!==String(e.selection.walletId)||String(a.nearAccountId)!==r.value.nearAccountId||String(a.nearEd25519SigningKeyId)!==r.value.nearEd25519SigningKeyId||String(a.signingWorkerId)!==r.value.signingWorkerId||!o.ok||!c.ok||!l.ok||!u||!d||f.length!==2||!Number.isSafeInteger(f[0])||!Number.isSafeInteger(f[1])||String(c.value)!==String(e.operationCredential.walletSessionId)||String(o.value)!==r.value.thresholdSessionId)throw Error(`[login] linked Ed25519 post-link bootstrap identity is invalid`);let p=Number(a.thresholdExpiresAtMs);if(!Number.isSafeInteger(p)||p<=Date.now())throw Error(`[login] linked Ed25519 post-link bootstrap is expired`);return{walletId:String(e.selection.walletId),nearAccountId:r.value.nearAccountId,nearEd25519SigningKeyId:r.value.nearEd25519SigningKeyId,relayerKeyId:r.value.signingWorkerId,participantIds:[f[0],f[1]],thresholdSessionId:o.value,authorizationId:e.walletSession.authorizationId,walletSessionId:c.value,quotaId:l.value,expiresAtMs:p,remainingUses:Ue,runtimePolicyScope:u,routerAbNormalSigning:d,operationCredential:e.operationCredential}}async function ux(e){let t=await cx(e.factor);cb(t,e.walletSession);let n=String(e.context.configs.network.relayer?.url||``).trim();if(!n)throw Error(`[login] linked post-link activation requires relayer.url`);await K.writeExactWithOperationCredential({record:e.walletSession,operationCredential:e.operationCredential});let r=await db({selection:t,factorSecret32:e.factorSecret32});try{let i=e.factor.kind===`email_otp`?e.factor.providerIdentity:void 0,a=await tb({selection:t,...i?{providerIdentity:i}:{}}),o=ox(r);if(o){let{runtime:r}=await sx({context:e.context,selection:t,factorAuthority:a,material:o});sp({runtime:r,operationCredential:e.operationCredential,expiresAtMs:e.walletSession.expiresAtMs,relayerUrl:n,workerCtx:e.context.signingEngine.getSignerWorkerContext()})}let s=ax(r);if(s){let r=await lx({relayerUrl:n,selection:t,walletSession:e.walletSession,operationCredential:e.operationCredential,material:s});await gx({context:e.context,selection:t,session:r,material:s,relayerUrl:n,...i?{providerIdentity:i}:{}})}t.exportRoot&&(e.factor.kind===`passkey`?await e.context.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:t.exportRoot.envelope,passkeyPrfFirstB64u:P(e.factorSecret32),walletId:String(t.walletId),walletAuthMethodId:String(t.authMethod.walletAuthMethodId),walletSessionId:String(e.operationCredential.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs}):(Pi(t.exportRoot.envelope.binding)||t.exportRoot.envelope.binding.kind===`ed25519_yao_client_root_v1`)&&await fr(Qn(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:t.exportRoot.envelope,existingFactorSecret:e.factorSecret32,walletId:String(t.walletId),walletAuthMethodId:String(t.authMethod.walletAuthMethodId),walletSessionId:String(e.operationCredential.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs})),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:t.walletId,walletAuthMethodId:t.authMethod.walletAuthMethodId})}finally{for(let e of r)e.material.fill(0)}}function dx(e){let t=e.publicFacts.targetBinding,n=e.publicFacts.activationReceipt;return{kind:or,scope:{lifecycle_id:t.lifecycle.lifecycle_id,root_share_epoch:t.lifecycle.root_share_epoch,account_id:t.lifecycle.account_id,threshold_session_id:t.lifecycle.session_id,signer_set_id:t.lifecycle.signer_set_id,signing_worker_id:t.lifecycle.selected_server_id,material_activation:t.material_activation},applicationBinding:e.publicFacts.applicationBinding,participantIds:e.publicFacts.participantIds,registeredPublicKey:Uint8Array.from(n.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(n.signing_worker_verifying_share),stateEpoch:BigInt(n.state_epoch),transcript:Uint8Array.from(n.transcript),activeCapabilityBinding:t.session_id,materialActivation:e.materialActivation}}function fx(e){let t=String(e?.providerSubjectId||``).trim();if(!t)throw Error(`[login] linked Email OTP lane provider identity is missing`);return t}function px(e){let t=e.session;if(t.walletSessionId!==e.operationCredential.walletSessionId||t.sessionKind===`issued_exact_wallet_session`&&t.operationCredential.walletSessionId!==e.operationCredential.walletSessionId)throw Error(`[login] linked Passkey Ed25519 credentials identify different sessions`);return{walletId:t.walletId,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,relayerKeyId:t.relayerKeyId,participantIds:t.participantIds,thresholdSessionId:t.thresholdSessionId,authorizationId:t.authorizationId,walletSessionId:t.walletSessionId,quotaId:t.quotaId,expiresAtMs:t.expiresAtMs,remainingUses:t.remainingUses,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:t.routerAbNormalSigning,operationCredential:e.operationCredential}}function mx(e){let t=e.session;if(t.authorityScope.kind!==`email_otp`||String(t.authorityScope.providerUserId)!==String(e.providerIdentity.providerSubjectId)){let n=[...t.authorityScope.kind===`email_otp`?[]:[`scope.kind`],...t.authorityScope.kind===`email_otp`&&String(t.authorityScope.providerUserId)!==String(e.providerIdentity.providerSubjectId)?[`scope.providerUserId`]:[]];throw Error(`[login] linked Email OTP Ed25519 session authority mismatch: ${n.join(`, `)}`)}let n=s(t.thresholdSessionId),r=gt(t.authorizationId),i=pt(t.walletSessionId),a=dt(t.quotaId);if(!n.ok||!r.ok||!i.ok||!a.ok)throw Error(`[login] linked Email OTP Ed25519 session identity is invalid`);if(e.operationCredential.walletSessionId!==i.value)throw Error(`[login] linked Email OTP Ed25519 credential identifies another session`);return{walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,relayerKeyId:t.routerAbNormalSigning.signingWorkerId,participantIds:t.participantIds,thresholdSessionId:n.value,authorizationId:r.value,walletSessionId:i.value,quotaId:a.value,expiresAtMs:t.expiresAtMs,remainingUses:t.remainingUses,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:t.routerAbNormalSigning,operationCredential:e.operationCredential}}function hx(e){let t=Or(e.session.nearAccountId),n={walletId:e.selection.walletId,nearAccountId:t,thresholdSessionId:e.session.thresholdSessionId,runtimePolicyScope:e.session.runtimePolicyScope,materialActivation:e.material.materialActivation,nearEd25519SigningKeyId:Oo(e.session.nearEd25519SigningKeyId),signerSlot:e.material.publicFacts.applicationBinding.key_creation_signer_slot};return e.selection.authMethod.kind===`passkey`?{...n,auth:{kind:`passkey`,rpId:qa(e.selection.authMethod.rpId),credentialIdB64u:e.selection.authMethod.credentialIdB64u}}:{...n,auth:{kind:`email_otp`,providerSubjectId:fx(e.providerIdentity)},remainingUses:e.session.remainingUses,expiresAtMs:e.session.expiresAtMs}}async function gx(e){let t=dx(e.material),n=t.applicationBinding,r=[];if(e.session.walletId!==String(e.selection.walletId)&&r.push(`walletId`),n.wallet_id!==String(e.selection.walletId)&&r.push(`application.walletId`),t.scope.account_id!==String(e.selection.walletId)&&r.push(`material.walletId`),e.session.nearEd25519SigningKeyId!==n.near_ed25519_signing_key_id&&r.push(`nearEd25519SigningKeyId`),e.session.thresholdSessionId!==t.scope.threshold_session_id&&r.push(`thresholdSessionId`),e.session.relayerKeyId!==t.scope.signing_worker_id&&r.push(`signingWorkerId`),r.length>0)throw Error(`[login] linked Ed25519 Wallet Session does not match local material: ${r.join(`, `)}`);let i=(await Jt.initializeBundled()).importLinkedMaterial({ownedClientScalarShare:e.material.material,publicReceipt:e.material.publicFacts.activationReceipt,metadata:t}),a=!1;try{let r=await e.context.signingEngine.activateVerifiedNearEd25519YaoMaterial({activeClient:i,facts:{thresholdSessionId:e.session.thresholdSessionId,signer:Lc({walletId:e.selection.walletId,nearAccountId:Or(e.session.nearAccountId),nearEd25519SigningKeyId:Oo(e.session.nearEd25519SigningKeyId),signerSlot:n.key_creation_signer_slot}),signingRootId:n.signing_root_id,signingRootVersion:t.scope.root_share_epoch,routerAbNormalSigning:e.session.routerAbNormalSigning,runtimePolicyScope:e.session.runtimePolicyScope,relayerUrl:e.relayerUrl}}),o=Or(e.session.nearAccountId);if(String(r.walletId)!==String(e.selection.walletId)||String(r.nearAccountId)!==String(o)||!b(r.materialActivation,e.material.materialActivation))throw Error(`[login] linked Ed25519 activation identity does not match the V2 session`);await ls(new ds(G),hx({selection:e.selection,session:e.session,material:e.material,...e.providerIdentity?{providerIdentity:e.providerIdentity}:{}})),a=!0}finally{a||i.dispose()}let o=Or(e.session.nearAccountId);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.selection.walletId,loggedInNearAccountId:String(o),operationalPublicKey:`ed25519:${Tr(t.registeredPublicKey)}`,nearAccountId:o}}function _x(e){let[t,...n]=e.signerMaterials;if(e.authority.provenance.kind===`device_link`){if(!t)throw Error(`[login] linked Email OTP authority has no signer material`);return{kind:`linked_device`,selection:e,signerMaterials:[t,...n]}}if(t)throw Error(`[login] owner Email OTP authority must not carry linked signer material`);return{kind:`owner_authority`,selection:e}}async function vx(e){let{source:t}=e;if(t.kind===`linked_device`){let e=t.signerMaterials.find(e=>e.kind===`wallet_authority_linked_signer_material_v1`&&e.keyFamily===`ed25519`);return e?{kind:`linked_device`,signerSlot:e.publicFacts.applicationBinding.key_creation_signer_slot,remainingUses:Ue}:{kind:`no_ed25519`}}return!t.selection.authority.signerActivations.ed25519||await yx(t.selection)?{kind:`no_ed25519`}:await e.context.signingEngine.resolveOwnerAuthorityEd25519UnlockRequestInternal({walletSession:{walletId:t.selection.walletId,walletSessionUserId:String(t.selection.walletId)},providerSubjectId:e.providerIdentity.providerSubjectId,walletAuthMethodId:String(t.selection.authMethod.walletAuthMethodId),remainingUses:Ue})??{kind:`no_ed25519`}}async function yx(e){let t=e.authority.signerActivations.ed25519?.materialActivation;return t?(await G.listPendingWalletRegistrationCommits()).some(bx.bind(void 0,e,t)):!1}function bx(e,t,n){return n.operation===`near_provisioning`&&n.phase===`joined`&&n.signerPlanKind===`near_ed25519_and_evm_family_ecdsa`&&n.walletId===e.walletId&&n.walletAuthMethodId===e.authMethod.walletAuthMethodId&&b(n.localMaterial.ed25519.metadata.materialActivation,t)}async function xx(e){let{selection:t,unlocked:n}=e,r=n.walletSession;if(r.walletId!==t.walletId||r.authorityId!==t.authority.authorityId||r.authMethodId!==t.authMethod.walletAuthMethodId||r.authorityDigestB64u!==t.authority.authorityDigestB64u||r.authorityRevocationEpoch!==t.authority.revocationEpoch)throw Error(`[login] owner Email OTP Wallet Session does not match the selected authority`);let i=t.authority.signerActivations.ed25519?.materialActivation;if(!i)return;if(n.ed25519Activation.kind!==`ed25519_activation_ready`){if(await yx(t))return;throw Error(`[login] owner Email OTP unlock built no Ed25519 runtime to install`)}let a=n.ed25519Activation;if(!b(a.bootstrap.capability.materialActivation,i))throw Error(`[login] owner Email OTP Ed25519 capability names another activation`);if(!b(a.metadata.materialActivation,i))throw Error(`[login] owner Email OTP Ed25519 runtime names another activation`);if(a.bootstrap.session.walletSessionId!==n.operationCredential.walletSessionId)throw Error(`[login] owner Email OTP Ed25519 session credential mismatch`);let o=await nb({selection:t,providerIdentity:e.providerIdentity});await e.context.signingEngine.activateOwnerAuthorityEd25519RuntimeInternal({walletSession:{walletId:t.walletId,walletSessionUserId:String(t.walletId)},providerSubjectId:e.providerIdentity.providerSubjectId,walletAuthMethodId:String(t.authMethod.walletAuthMethodId),emailHashHex:e.emailHashHex,authority:o,activeClientHandle:a.activeClientHandle,metadata:a.metadata,bootstrap:a.bootstrap})}function Sx(e){switch(e.walletCustodySeed.kind){case`owner_authority_seed_envelope`:return e.walletCustodySeed.existingEnvelope;case`linked_device_seed_unavailable`:throw Error(`[login] owner Email OTP unlock returned linked-device custody state`);default:return Q(e.walletCustodySeed)}}async function Cx(e){let t={provider:e.providerSubjectId.startsWith(`google:`)?`google`:`email`,providerSubjectId:e.providerSubjectId},n=await ob({walletIdInput:e.walletIdInput,emailHashHex:e.emailHashHex,provider:t.provider,providerSubjectId:t.providerSubjectId,walletAuthMethodId:e.walletAuthMethodId});if(n.kind===`none`)throw Error(`[login] linked Email OTP authority is unavailable`);if(n.kind===`rejected`)throw Error(n.message);let r=n.selection;if(String(r.authMethod.walletAuthMethodId)!==String(e.walletAuthMethodId))throw Error(`[login] linked Email OTP selected auth method changed during unlock`);let i=String(e.relayUrl||``).trim();if(!i)throw Error(`[login] linked Email OTP unlock requires relayer.url`);let a=_x(r),o=await vx({context:e.context,source:a,providerIdentity:t}),s=await Yt({relayUrl:i,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),challengeId:e.challengeId,otpCode:e.otpCode,ed25519:o,workerCtx:e.context.signingEngine.getSignerWorkerContext()}),c=s.factorSecret32,l=t,u=null,d=null,f=s.ed25519Activation.kind===`ed25519_activation_ready`?s.ed25519Activation.activeClientHandle:null;try{if(a.kind===`owner_authority`){if(await K.writeExactWithOperationCredential({record:s.walletSession,operationCredential:s.operationCredential}),await xx({context:e.context,selection:r,unlocked:s,providerIdentity:l,emailHashHex:e.emailHashHex}),f=null,!c)throw Error(`[login] owner Email OTP factor secret ownership was lost`);await fr(Qn(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:Sx(s),existingFactorSecret:c,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),walletSessionId:String(s.operationCredential.walletSessionId),expiresAtMs:s.walletSession.expiresAtMs}),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:r.walletId,walletAuthMethodId:r.authMethod.walletAuthMethodId}),e.context.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:r.walletId,authMethod:V.emailOtp}),hC({context:e.context,sessionAuthority:{record:s.walletSession,operationCredential:s.operationCredential},factor:{kind:`email_otp`,provider:t.provider,providerSubject:t.providerSubjectId,emailHashHex:e.emailHashHex},ownedFactorSecret:c.slice().buffer,custodyEnvelope:Sx(s)});return}if(cb(r,s.walletSession),!c)throw Error(`[login] linked Email OTP factor secret ownership was lost`);u=await pb({selection:r,factorSecret32:c});let n=ax(u),o=ox(u);if(ix(s.walletSession,`ed25519`)){if(!n||!s.ed25519Activation.bootstrap)throw Error(`[login] linked Email OTP Ed25519 runtime material or capability is missing`);if(!b(s.ed25519Activation.bootstrap.capability.materialActivation,n.materialActivation))throw Error(`[login] linked Email OTP Ed25519 capability activation is invalid`)}if(ix(s.walletSession,`ecdsa`)){if(!o)throw Error(`[login] linked Email OTP ECDSA runtime material is missing`);let t=await sx({context:e.context,selection:r,factorAuthority:await tb({selection:r,providerIdentity:l}),material:o});t.installed&&(d=t.runtime)}let p;if(n&&s.ed25519Activation.bootstrap){let t=mx({session:s.ed25519Activation.bootstrap.session,operationCredential:s.operationCredential,providerIdentity:l});if(t.walletSessionId!==s.operationCredential.walletSessionId)throw Error(`[login] linked Email OTP Ed25519 session credential mismatch`);p=await gx({context:e.context,selection:r,session:t,material:n,relayerUrl:i,providerIdentity:l})}else if(o)p={success:!0,kind:`ecdsa_wallet_unlocked`,walletId:r.walletId};else throw Error(`[login] linked Email OTP has no unlockable signing runtime`);await K.writeExactWithOperationCredential({record:s.walletSession,operationCredential:s.operationCredential}),r.exportRoot&&Pi(r.exportRoot.envelope.binding)&&await fr(Qn(e.context.signingEngine.getSignerWorkerContext()),{existingEnvelope:r.exportRoot.envelope,existingFactorSecret:c,walletId:String(r.walletId),walletAuthMethodId:String(r.authMethod.walletAuthMethodId),walletSessionId:String(s.operationCredential.walletSessionId),expiresAtMs:s.walletSession.expiresAtMs}),await e.context.signingEngine.markWalletSelectionUnlocked({walletId:r.walletId,walletAuthMethodId:r.authMethod.walletAuthMethodId}),e.context.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:p.walletId,authMethod:V.emailOtp})}catch(t){d&&(sd({walletId:d.walletId,materialActivation:d.materialActivation,holderHandleId:d.holderHandleId}),await Du({holderHandleId:d.holderHandleId,workerCtx:e.context.signingEngine.getSignerWorkerContext()}).catch(()=>void 0));let n=e.context.signingEngine.getSignerWorkerContext();throw n&&await Pn(Qn(n),{kind:`wallet_session`,walletSessionId:String(s.operationCredential.walletSessionId)}),await Promise.allSettled([e.context.signingEngine.clearVolatileWarmSigningMaterial(r.walletId),K.clearWallet(r.walletId)]),t}finally{if(f){let t=e.context.signingEngine.getSignerWorkerContext();t&&await ty({workerContext:t,activeClientHandle:f}).catch(()=>void 0),f=null}for(let e of u||[])e.material.fill(0);c?.fill(0)}}async function wx(e,t,n){let r=String(t).trim()||`linked-passkey`,{onEvent:i,onError:a,afterCall:o}=n||{};pr(i,r,{phase:W.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{let n=await ab(t);if(!n)throw Error(`[login] linked passkey authority is unavailable`);let a=String(e.configs.network.relayer?.url||``).trim();if(!a)throw Error(`[login] linked passkey unlock requires relayer.url`);pr(i,r,{phase:W.STEP_03_PASSKEY_CHALLENGE_STARTED,status:`running`,authMethod:`passkey`});let s=await nx({relayUrl:a,walletId:n.walletId,rpId:n.authMethod.rpId});pr(i,r,{phase:W.STEP_03_PASSKEY_PROMPT_STARTED,status:`running`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`}});let c=await e.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(n.walletId),challengeB64u:s.challengeB64u,allowCredentials:[rx(n.authMethod.credentialIdB64u)],includeSecondPrfOutput:!0});pr(i,r,{phase:W.STEP_03_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`}});let l=String(typeof window<`u`?window.location.origin:``).trim(),u={challengeId:s.challengeId,webauthn_authentication:c,ed25519SessionRequest:n.signerMaterials.some(e=>e.keyFamily===`ed25519`)?{kind:`requested`,remainingUses:Ue}:{kind:`not_requested`},...l?{expected_origin:l}:{}};pr(i,r,{phase:W.STEP_04_WALLET_UNLOCK_EXCHANGE_STARTED,status:`running`,authMethod:`passkey`});let d=await jt(a,u);if(!d.success)throw Error(d.error);cb(n,d.walletSession);let f=await ub({selection:n,credential:c}),p;try{let t=ax(f),r=ox(f);if(ix(d.walletSession,`ed25519`)&&(!t||!d.ed25519Session))throw Error(`[login] linked Ed25519 runtime material or Wallet Session is missing`);if(ix(d.walletSession,`ecdsa`)){if(!r)throw Error(`[login] linked ECDSA runtime material is missing`);await sx({context:e,selection:n,factorAuthority:await tb({selection:n}),material:r})}if(t&&d.ed25519Session)p=await gx({context:e,selection:n,session:px({session:d.ed25519Session,operationCredential:d.operationCredential}),material:t,relayerUrl:a});else if(r)p={success:!0,kind:`ecdsa_wallet_unlocked`,walletId:n.walletId};else throw Error(`[login] linked passkey has no unlockable signing runtime`);if(await K.writeExactWithOperationCredential({record:d.walletSession,operationCredential:d.operationCredential}),n.exportRoot){let t=Yc(c);if(!t)throw Error(`[login] linked export-root unlock requires WebAuthn PRF.first output`);await e.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:n.exportRoot.envelope,passkeyPrfFirstB64u:t,walletId:String(n.walletId),walletAuthMethodId:String(n.authMethod.walletAuthMethodId),walletSessionId:String(d.operationCredential.walletSessionId),expiresAtMs:d.walletSession.expiresAtMs})}await e.signingEngine.markWalletSelectionUnlocked({walletId:n.walletId,walletAuthMethodId:n.authMethod.walletAuthMethodId})}catch(t){throw await Promise.allSettled([e.signingEngine.clearVolatileWarmSigningMaterial(n.walletId),K.clearWallet(n.walletId)]),t}finally{for(let e of f)e.material.fill(0)}return pr(i,r,{phase:W.STEP_04_WALLET_UNLOCK_EXCHANGE_SUCCEEDED,status:`succeeded`,authMethod:`passkey`}),await Bn({context:e,authMethod:V.passkey,unlockSubjectId:r,loginResult:p,onEvent:i,afterCall:o})}catch(e){let t=I(e);return await Ln({unlockSubjectId:r,message:t.message,error:t,onEvent:i,onError:a,afterCall:o,cancelled:wt(t)})}}async function Tx(e,t,n,r){let{onEvent:i,onError:a,afterCall:o}=n||{},{signingEngine:s}=e,c=Vy({selection:n?.unlockSelection,subjectSet:t}),l=Gy({subjectSet:t,selection:c}),u=l.kind===`near_ed25519_capable_wallet`?String(l.nearAccountId):String(l.walletId),d;pr(i,u,{phase:W.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{if(s.assertSealedRefreshStartupParity().catch(e=>{console.warn(`[login] sealed refresh startup parity check failed during unlock; continuing to local passkey prompt`,e instanceof Error?e.message:String(e||`unknown error`))}),typeof window<`u`&&!window.isSecureContext){let e=`Passkey operations require a secure context (HTTPS or localhost).`;return await Ln({unlockSubjectId:u,message:e,error:Error(e),onEvent:i,onError:a,afterCall:o,callAfterCall:!1})}let{accountSubject:t,authenticators:r,baseSignerSlot:f,localUnlockAuthMethod:p,requiresLocalPasskeyUnlock:m}=await Xb({signingEngine:s,identity:l,signerSlotHint:Ao(n?.signerSlot,{min:1}),onEvent:i}),h=async e=>{let t=zb({authenticators:r,credentialIds:e.credentialIds}),n=await my({signingEngine:s,subjectId:u,challengeB64u:e.challengeB64u,authenticators:t,onPromptStarted:()=>{pr(i,u,{phase:W.STEP_03_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`}})},onPromptSucceeded:()=>{pr(i,u,{phase:W.STEP_03_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`}})}});return e.saveAsLoginCredential&&(d=n),n},g=async()=>{let e=await gy({currentCredential:d,collectCredentialForChallenge:async e=>await h({challengeB64u:e,saveAsLoginCredential:!0,credentialIds:Hb({authenticators:r,signerSlot:f,serverCredentialIds:[]})})});e&&(d=e)},_=op({defaults:e.configs.signing.sessionDefaults,override:n?.signingSession}),v=_.kind===`enabled`,y=v&&l.kind===`near_ed25519_capable_wallet`?fg({clientDB:G,keyMaterialStore:G},l.nearAccountId,f).catch(()=>null):Promise.resolve(null),b=null,x=null,S=null,C=null,w=Tb(),T=null,E=(e,t)=>{if(Sb(t))return t;let n=String(t?.status||`not_found`);throw Error(`[login] ${e} did not produce an active warm signing session (status=${n})`)},D=async t=>{pr(i,u,{phase:W.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,authMethod:d?`passkey`:`warm_session`});let a=t.wantsEd25519Warmup?Ky(l):null,o=$t(e.configs),c=!1,h=async()=>{c||(c=!0,await s.clearVolatileWarmSigningMaterial(l.walletId))};t.wantsEcdsaWarmup&&Xy(await Yy({workerCtx:s.getSignerWorkerContext(),selectors:Jy(l.subjectSet)}));let g=t.wantsEcdsaWarmup?await BS(e,l.walletId,{keyFactsInventoryAuthority:t.keyFactsInventoryAuthority,keyFactsInventoryRequested:!!n?.ecdsaKeyFactsInventory,relayerUrl:t.relayerUrl,rpId:t.rpId},p):{ecdsaKeys:[]},v=await y,w=v?.participants.map(e=>e.id)||[];t.wantsEcdsaWarmup&&qy({identity:l,context:g});let T=wS({selection:t.selection,selectedEcdsaTargets:t.selectedEcdsaTargets,storedCanonicalEcdsaContext:g,wantsEd25519Warmup:t.wantsEd25519Warmup}),D=b,O=!!(D&&T.signersToWarm.includes(`ecdsa`)),ee=O?T.signersToWarm.includes(`ed25519`):T.ed25519DependsOnEcdsa,k=O?!1:T.ecdsaDependsOnEd25519,j=Rb({requiresLocalPasskeyUnlock:m,hasLoginCredential:!!d,routeAuthorization:t.routeAuthorization,warmupPlan:T});await h();let M=TS(`threshold-login`),te=T.signersToWarm.includes(`ed25519`)?ee?{kind:`ecdsa_authorized`,thresholdSessionId:M}:{kind:`fresh`}:{kind:`not_requested`};switch(j.kind){case`existing_passkey_credential`:case`no_passkey_credential_required`:break;case`wallet_custody`:if(t.ed25519SessionAuthority.kind!==`passkey`)throw Error(`[login] wallet custody requires passkey wallet authority`);if(!C||C.ed25519.kind!==`active`)throw AS();te={kind:`wallet_custody`,thresholdSessionId:M,custody:{...C,ed25519:C.ed25519}};break;default:return Q(j)}if(a&&!v&&te.kind!==`wallet_custody`)throw Error(`[login] threshold warm-up requires threshold key material for ${a.nearAccountId} signer slot ${t.signerSlot}`);let ne=d?Xc(d):``,re=String(ne||r.find(e=>e.signerSlot===f)?.credentialId||r[0]?.credentialId||``).trim(),N=d?{kind:`available`,credential:d,localPasskeyCredentialIdB64u:re}:re?{kind:`credential_id_only`,localPasskeyCredentialIdB64u:re}:{kind:`unavailable`,localPasskeyCredentialIdB64u:``},ie=o?{kind:`available`,runtimeScopeBootstrap:o}:{kind:`unavailable`},ae=await pS({statusReads:A,context:e,signingEngine:s,walletIdentity:l,signerSlot:t.signerSlot,thresholdKeyMaterial:v,relayerUrl:t.relayerUrl,relayerKeyId:v?.relayerKeyId||``,participantIds:w,ttlMs:_.ttlMs,unlockRemainingUses:OS(_.unlockRemainingUses),ecdsaContext:T.ecdsaContext,credentialState:N,runtimeScopeBootstrapState:ie,signersToWarm:T.signersToWarm,ed25519DependsOnEcdsa:ee,ecdsaDependency:k?{kind:`ed25519_wallet_session_authority`}:{kind:`none`},ed25519MintPlan:te,ed25519SessionAuthority:t.ed25519SessionAuthority,routeAuthorization:t.routeAuthorization,passkeyExchangeEcdsaActivation:D,passkeyUnlockEd25519Session:x,passkeyUnlockWalletSessionAuthorization:S});if(T.signersToWarm.includes(`ed25519`)){let e=ae.ed25519Session;if(!e)throw Error(`[login] threshold warm-up omitted the Ed25519 session result`);let t=E(`threshold warm-up`,Ux({session:e,authMethod:p}));return pr(i,u,{phase:W.STEP_05_ED25519_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),T.signersToWarm.includes(`ecdsa`)&&pr(i,u,{phase:W.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),{kind:`threshold_login_warmup_ready`,signingSession:t,signersWarmed:T.signersToWarm}}if(T.signersToWarm.length!==1||T.signersToWarm[0]!==`ecdsa`)throw Error(`[login] threshold warm-up signer selection is invalid`);return pr(i,u,{phase:W.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,authMethod:`warm_session`}),{kind:`threshold_login_ecdsa_only_warmup_ready`,signersWarmed:[`ecdsa`]}},O=async n=>{await s.setLastUser(l.walletId,n),l.kind===`near_ed25519_capable_wallet`&&(t.kind===`near_wallet`&&t.operationalPublicKey===null||await s.activateAuthenticatedWalletState({walletId:l.walletId,nearAccountId:Or(l.nearAccountId),signerSlot:n,nearClient:e.nearClient}))},ee=async()=>{await s.getNonceCoordinator().recoverDurableLeases({walletId:l.walletId}).catch(e=>{console.warn(`[login] nonce lane durable recovery after unlock failed`,e)})},k=Lb({requiresLocalPasskeyUnlock:m,requireThresholdWarmup:v,hasLoginCredential:!!d});switch(k.kind){case`wallet_unlock_owns_passkey_credential`:case`passkey_credential_already_collected`:case`no_local_passkey_required`:break;case`local_unlock_passkey_assertion`:await g();break;default:return Q(k)}let A=new J;if(v&&p===V.passkey){let t=await Nx({context:e,walletIdentity:l,selection:c,ttlMs:_.ttlMs,remainingUses:OS(_.unlockRemainingUses)}),n=String(e.configs.network.relayer.url||``).trim(),a=String(s.getRpId()||``).trim();if(!n||!a)throw Error(`[login] passkey wallet unlock requires relayer URL and rpId`);let o=await zx({context:e,walletIdentity:l,unlockSubjectId:u,onEvent:i,authenticators:r,signerSlot:f,remainingUses:OS(_.unlockRemainingUses),relayUrl:n,rpId:a,expectedOrigin:void 0,activation:t,collectCredentialForChallenge:async e=>await h({challengeB64u:e.challengeB64u,saveAsLoginCredential:!0,credentialIds:e.credentialIds})},A);d=o.credential,b=o.activation,x=o.result.ed25519Session,S=o.result.walletSessionAuthorization??(o.activation?Ox(o.activation.sessionActivation):null),C=o.custody,await Mx({walletId:String(l.walletId),unlock:o}),w=Tb()}if(!d)throw Error(`[login] successful Passkey unlock omitted its credential`);if(await Kb({context:e,walletIdentity:l,credential:d}),v){let t=await bb({walletId:l.walletId,authMethod:p}),i=kx({completedActivation:b,request:n?.ecdsaKeyFactsInventory,routeAuthorization:w,wantsEcdsaWarmup:Ub({subjectSet:l.subjectSet,selection:c,hasConfiguredEcdsaTargets:ur(e.configs.network.chains).length>0}).wantsEcdsaWarmup});if(T=await D(Wb({context:e,signerSlot:f,authenticators:r,selection:c,subjectSet:l.subjectSet,authMethod:p,authMethodBinding:t,keyFactsInventoryAuthority:i,routeAuthorization:w})),p===V.passkey){let t=d;if(!t)throw Error(`[login] passkey threshold warm-up completed without a credential`);await Gb({context:e,statusReads:A,walletIdentity:l,signersWarmed:T.signersWarmed,credential:t})}}if(await O(f),ee(),S&&d&&C){let t=Yc(d);t&&hC({context:e,sessionAuthority:S,factor:{kind:`passkey`,rpId:s.getRpId(),credentialIdB64u:Xc(d),prfFirstB64u:t},ownedFactorSecret:F(t).slice().buffer,custodyEnvelope:C.envelope})}let j=Zb({identity:l,accountSubject:t}),M=T?{...j,...T.kind===`threshold_login_warmup_ready`?{signingSession:T.signingSession}:{}}:j;return pr(i,u,{phase:W.STEP_06_SESSION_READY,status:`succeeded`,authMethod:d?`passkey`:void 0}),await Bn({context:e,authMethod:p,unlockSubjectId:u,loginResult:M,onEvent:i,afterCall:o})}catch(t){return console.warn(`[login] unlock failed before active session commit`,{unlockSubjectId:u,message:t&&typeof t==`object`&&`message`in t?String(t.message||``):String(t||``)}),await Ex({context:e,walletId:l.walletId}),await Ln({unlockSubjectId:u,message:Tt(t,`login`)||`Login failed`,error:t,cancelled:wt(t),onEvent:i,onError:a,afterCall:o})}}async function Ex(e){await G.clearLastProfileSelection().catch(()=>void 0);try{e.context.signingEngine.getNonceCoordinator().clearAll()}catch{}try{await e.context.signingEngine.clearVolatileWarmSigningMaterial(e.walletId)}catch{}}function Dx(e){return Nl(e)?e.activation.session.threshold_session_id:e.session.threshold_session_id}function Ox(e){return Nl(e)?e.authorization:{record:e.session.wallet_session,operationCredential:e.session.operation_credential}}function kx(e){if(!e.wantsEcdsaWarmup)return null;if(e.completedActivation){let t;try{let n=e.completedActivation.sessionActivation;if(Nl(n))t=De(n.authorization.operationCredential);else{let n=e.completedActivation.response;if(n.kind!==`router_ab_ecdsa_post_registration_session_activated_v1`)throw Error(`completed ECDSA unlock activation branch is invalid`);t=De(n.session.operation_credential)}}catch{throw Error(`[login] completed ECDSA unlock omitted a valid Wallet Session operation credential`)}return{kind:`wallet_session_operation_credential_v1`,operationCredential:t}}let t=Cb({request:e.request??null,routeAuthorization:e.routeAuthorization});if(t?.kind===`webauthn`)throw Error(`[login] ECDSA warm-up requires the Wallet Session minted by the unlock assertion`);return t}function Ax(e){let t=e.continuity.signers.find(t=>z(t.chainTarget)===e.prepared.targetKey);if(!t)throw Error(`Passkey ECDSA custody continuity omitted the requested chain target`);let n=t.walletKey.publicCapability,r=t.activationReceipt,i=r.ecdsa_activation,a=e.response.normal_signing.scope;if(t.walletKey.walletId!==e.walletId||t.walletKey.keyHandle!==e.prepared.policy.key_handle||e.response.session.threshold_session_id!==e.prepared.policy.session_policy.threshold_session_id||!Xx(t.runtimePolicyScope,e.prepared.policy.session_policy.runtime_policy_scope)||!La(e.response.public_capability,n)||!Ja(e.activationReceipt,r)||n.context.application_binding_digest_b64u!==i.context.application_binding_digest_b64u||!xo(n.public_identity,i.public_identity)||!to(n.material_activation,i.material_activation)||!Ra(n.signer_set.selected_server,i.signing_worker)||n.activation_epoch!==i.activation_epoch||a.context.application_binding_digest_b64u!==i.context.application_binding_digest_b64u||!xo(a.public_identity,i.public_identity)||!to(a.material_activation,i.material_activation)||!Ra(a.signing_worker,i.signing_worker)||a.activation_epoch!==i.activation_epoch||a.wallet_id!==e.walletId||a.ecdsa_threshold_key_id!==t.walletKey.ecdsaThresholdKeyId||a.signing_root_id!==t.walletKey.signingRootId||a.signing_root_version!==t.walletKey.signingRootVersion)throw Error(`Passkey ECDSA session activation changed custody continuity`)}function jx(e){let t=e.signer.walletKey.publicCapability.public_identity;if(e.publicFacts.contextBinding32B64u!==t.context_binding_b64u||e.publicFacts.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.relayerPublicKey33B64u!==t.server_public_key33_b64u||e.publicFacts.groupPublicKey33B64u!==t.threshold_public_key33_b64u||e.publicFacts.ethereumAddress!==uS(t.ethereum_address20_b64u)||e.publicFacts.clientShareRetryCounter!==t.client_share_retry_counter||e.publicFacts.relayerShareRetryCounter!==t.server_share_retry_counter)throw Error(`Passkey ECDSA custody rejoin changed registered public identity`)}async function Mx(e){let t=String(e.unlock.credential.rawId||e.unlock.credential.id||``).trim();if(!t)throw Error(`[login] passkey assertion credential id is missing`);await rn({walletId:e.walletId,credentialIdB64u:t,envelope:e.unlock.custody.envelope})}async function Nx(e){let t=ur(e.context.configs.network.chains);if(!Ub({subjectSet:e.walletIdentity.subjectSet,selection:e.selection,hasConfiguredEcdsaTargets:t.length>0}).wantsEcdsaWarmup)return null;let n=t[0];if(!n)return null;let r=await BS(e.context,e.walletIdentity.walletId,void 0,`passkey`),i=z(n.chainTarget),a=r.ecdsaKeys.find(e=>e.targetKey===i);if(!a)throw kS(i);let o=r.runtimePolicyScope;if(!o)throw Error(`[login] passkey ECDSA activation requires runtime policy scope`);let s=ES(TS(`threshold-ecdsa-login`)),c=DS(TS(`wallet-session-mint`));return{targetKey:i,requiresCustodyRejoin:!a.existingRoleLocalMaterial,policy:{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:a.keyHandle,session_policy:{threshold_session_id:s,wallet_session_mint_id:c,ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:o}}}}function Px(e){switch(e.walletIdentity.kind){case`near_ed25519_capable_wallet`:return{kind:`requested`,remainingUses:e.remainingUses};case`evm_family_ecdsa_only_wallet`:return{kind:`not_requested`};default:return Q(e.walletIdentity)}}function Fx(e){return e.activation?{type:`passkey_assertion`,challengeId:e.challengeId,walletId:String(e.walletIdentity.walletId),webauthn_authentication:e.credential,ed25519SessionRequest:e.ed25519SessionRequest,expected_origin:e.expectedOrigin,ecdsaSessionPolicy:e.activation.policy}:{type:`passkey_assertion`,challengeId:e.challengeId,webauthn_authentication:e.credential,ed25519SessionRequest:e.ed25519SessionRequest,expected_origin:e.expectedOrigin}}async function Ix(e){let t=await G.getWalletAuthMethodV2(e.authorization.record.authMethodId);if(!t||t.kind!==`passkey`||t.status!==`active`||t.walletId!==e.walletId||t.walletAuthorityId!==e.authorization.record.authorityId)throw Error(`Passkey Wallet Session authorization changed auth-method identity`);let n=await G.getWalletAuthority(t.walletAuthorityId);if(!n||n.state!==`active`||n.walletId!==e.walletId||n.authorityId!==e.authorization.record.authorityId||n.authorityDigestB64u!==e.authorization.record.authorityDigestB64u||n.revocationEpoch!==e.authorization.record.authorityRevocationEpoch)throw Error(`Passkey Wallet Session authorization changed authority identity`);return{reference:await $y(t),identity:Xl({authority:n,walletAuthMethodId:t.walletAuthMethodId})}}async function Lx(e){let t=Xc(e.credential);if(!t)throw Error(`Passkey Wallet Session adoption requires WebAuthn credential identity`);let n=await Kn({walletId:e.walletIdentity.walletId,rpId:e.rpId,credentialIdB64u:t}),r=await Ix({walletId:e.walletIdentity.walletId,authorization:e.authorization});if(e.authorization.record.walletId!==e.walletIdentity.walletId||e.authorization.record.authMethodId!==n.walletAuthMethodId||e.authorization.record.authorityId!==n.walletAuthorityId||r.reference.walletId!==e.walletIdentity.walletId)throw Error(`Passkey Wallet Session authorization changed auth-method identity`);return r}function Rx(e,t){return{...e,session_policy:{...e.session_policy,wallet_session_mint_id:DS(t)}}}async function zx(e,t){pr(e.onEvent,e.unlockSubjectId,{phase:W.STEP_03_PASSKEY_CHALLENGE_STARTED,status:`running`,authMethod:`passkey`});let n=await fetch(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:String(e.walletIdentity.walletId),rpId:e.rpId})}),r=await n.json().catch(()=>({})),i=O(r)?r:{},o=typeof i.message==`string`?i.message:``;if(!n.ok||i.ok!==!0)throw Error(o||`wallet/unlock/challenge failed (HTTP ${n.status})`);let s=String(i.challengeId||``).trim(),c=String(i.challengeB64u||``).trim();if(!s||!c)throw Error(`wallet/unlock/challenge returned invalid challenge`);let l=e.activation?{...e.activation,policy:Rx(e.activation.policy,s)}:null,u=Hb({authenticators:e.authenticators,signerSlot:e.signerSlot,serverCredentialIds:Vb(i.credentialIds)}),d=await e.collectCredentialForChallenge({challengeB64u:c,credentialIds:u}),f=String(e.expectedOrigin??(typeof window<`u`?window.location.origin:``)).trim();if(!f)throw Error(`[login] passkey wallet unlock requires an expected origin`);let p=Fx({challengeId:s,credential:d,ed25519SessionRequest:Px({walletIdentity:e.walletIdentity,remainingUses:e.remainingUses}),expectedOrigin:f,walletIdentity:e.walletIdentity,activation:l}),m=await vn(e.relayUrl,p,t);if(!m.success)throw Error(m.error||`Passkey wallet unlock failed`);if(!m.walletCustody)throw Error(`Passkey wallet unlock omitted wallet custody continuity`);if(l&&(!m.ecdsaSession||!m.ecdsaActivationReceipt||!m.ecdsaCustody))throw Error(`Passkey wallet unlock omitted the requested ECDSA activation`);let h=m.walletSessionAuthorization??null,g=h?await Lx({walletIdentity:e.walletIdentity,rpId:e.rpId,credential:d,authorization:h}):null,_=null;if(l&&m.ecdsaSession&&m.ecdsaActivationReceipt&&m.ecdsaCustody&&m.ecdsaSession.kind===`router_ab_ecdsa_credential_free_session_activated_v1`){let e=m.walletSessionAuthorization;if(!e)throw Error(`Passkey credential-free activation omitted exact Wallet Session authority`);if(!g)throw Error(`Passkey credential-free activation omitted exact Passkey authority`);_={kind:`credential_free_ecdsa_session_activation_authorization_v1`,activation:m.ecdsaSession,authorization:e}}l&&m.ecdsaSession&&m.ecdsaActivationReceipt&&m.ecdsaCustody&&(Ax({walletId:String(e.walletIdentity.walletId),prepared:l,response:m.ecdsaSession,activationReceipt:m.ecdsaActivationReceipt,continuity:m.ecdsaCustody}),m.ecdsaSession.kind===`router_ab_ecdsa_post_registration_session_activated_v1`&&(_=m.ecdsaSession));let v=_?await Lx({walletIdentity:e.walletIdentity,rpId:e.rpId,credential:d,authorization:Ox(_)}):null;if(h&&await K.writeExactWithOperationCredential(h),l?.requiresCustodyRejoin){if(!(`ecdsaCustody`in m)||!m.ecdsaCustody)throw Error(`Passkey wallet unlock omitted ECDSA custody rejoin continuity`);let t=Yc(d);if(!t)throw Error(`Passkey ECDSA custody rejoin requires WebAuthn PRF.first`);let n=Xc(d),r=v?.reference??g?.reference??await kt({walletId:e.walletIdentity.walletId,rpId:e.rpId,credentialIdB64u:n});await fS({signingEngine:e.context.signingEngine,walletId:String(e.walletIdentity.walletId),custody:m.walletCustody,continuity:m.ecdsaCustody,authority:r,passkeyPrfFirstB64u:t})}return{credential:d,activation:l&&m.ecdsaSession&&_&&v?{...l,response:m.ecdsaSession,sessionActivation:_,authorizationIdentity:v.identity,activationReceipt:m.ecdsaActivationReceipt,continuity:m.ecdsaCustody}:null,custody:m.walletCustody,result:m}}var Bx=class{promise;resolvePromise;rejectPromise;settled=!1;constructor(){this.promise=new Promise(this.capturePromise.bind(this))}resolve(e){this.settled||(this.settled=!0,this.resolvePromise(e))}reject(e){this.settled||(this.settled=!0,this.rejectPromise(I(e)))}async wait(){return await this.promise}capturePromise(e,t){this.resolvePromise=e,this.rejectPromise=t}};async function Vx(e,t){e.sharedState.ed25519.thresholdSessionId=String(t.thresholdSessionId),e.sharedState.ed25519.authorizationId=t.authorizationId,e.sharedState.ed25519.walletSessionId=t.walletSessionId,e.sharedState.ed25519.quotaId=t.quotaId,e.sharedState.ed25519.operationCredential=t.operationCredential,e.sharedState.ed25519.expiresAtMs=t.expiresAtMs,e.sharedState.ed25519.remainingUses=t.remainingUses,e.sharedState.ed25519.runtimePolicyScope=t.runtimePolicyScope,e.authorityDeferred?.resolve(t)}function Hx(e,t){e?.reject(t)}function Ux(e){return{sessionId:String(e.session.thresholdSessionId),status:`active`,authMethod:e.authMethod,...e.authMethod===V.emailOtp?{retention:`session`}:{},remainingUses:e.session.remainingUses,expiresAtMs:e.session.expiresAtMs}}function Wx(e){return e?.kind===`opaque_wallet_session_operation_credential_v1`}function Gx(e){let t=e.thresholdEcdsaKeyRef.backendBinding;if(t)switch(t.materialKind){case`role_local_worker_handle`:case`role_local_durable_sealed_ref`:case`role_local_durable_public_anchor`:return t.publicFacts.publicCapability;case`role_local_ready_state_blob`:return t.ecdsaRoleLocalReadyRecord.publicFacts.publicCapability;case`metadata_only`:return}}function Kx(e){return JSON.stringify(e)}function qx(e){let t=Gx(e);if(!t)throw Error(`[login] ECDSA bootstrap is missing its public capability`);let n=e.session,r=e.thresholdEcdsaKeyRef.routerAbEcdsaDerivationNormalSigning;if(!r)throw Error(`[login] ECDSA bootstrap is missing normal-signing state`);return{kind:`router_ab_ecdsa_post_registration_session_activated_v1`,public_capability:t,session:{authorization_session_id:n.authorizationSessionId,authorization_id:n.authorizationId,threshold_session_id:ES(n.thresholdSessionId),wallet_session_id:n.walletSessionId,quota_id:n.quotaId,expires_at_ms:n.expiresAtMs,remaining_uses:n.remainingUses,wallet_session:n.walletSession,operation_credential:n.operationCredential},normal_signing:r}}function Jx(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Yx(e,t){return e.kind===t.kind&&e.signingWorkerId===t.signingWorkerId}function Xx(e,t){return e.orgId===t.orgId&&e.projectId===t.projectId&&e.envId===t.envId&&e.signingRootVersion===t.signingRootVersion}function Zx(e){if(e.current.runtimePolicyScope&&e.incoming.runtimePolicyScope&&!Xx(e.current.runtimePolicyScope,e.incoming.runtimePolicyScope))throw Error(`[login] threshold ECDSA ${e.source} has a conflicting runtime policy scope`);return ly(e.current,e.incoming)}async function Qx(e){if(e.targetEcdsaKey.publicCapability.kind===`persisted_public_capability`){let t=e.targetEcdsaKey.publicCapability.value;if(String(t.client_id)!==String(e.walletId))throw Error(`[login] threshold ECDSA persisted public capability wallet mismatch for ${z(e.chainTarget)}`);return t}let t=await jv({walletId:e.walletId,chainTarget:e.chainTarget});if(t.kind!==`resolved`)throw kS(z(e.chainTarget));let n=t.manifest.durableMaterial.roleLocalPublicFacts;if(String(n.keyHandle)!==String(e.targetEcdsaKey.keyHandle)||String(n.walletId)!==String(e.walletId))throw kS(z(e.chainTarget));return n.publicCapability}function $x(e){let t=[];for(let n of e)n!==`ed25519`&&n!==`ecdsa`||t.includes(n)||t.push(n);return t}async function eS(e){try{return await e.run(),{kind:`succeeded`,task:e}}catch(t){return e.onFailure?.(t),{kind:`failed`,task:e,error:I(t)}}}async function tS(e){let t=new Map;for(let n of e)t.set(n.signer,n);let n=new Set;for(;t.size>0;){let e=[];for(let r of t.values())r.dependencies.every(e=>n.has(e))&&e.push(r);if(e.length===0)throw Error(`[login] threshold warm-up task dependency graph is unsatisfied`);let r=await Promise.all(e.map(eS)),i=null;for(let e of r)switch(e.kind){case`succeeded`:n.add(e.task.signer),t.delete(e.task.signer);break;case`failed`:i??=e.error;break;default:return Q(e)}if(i)throw i}}function nS(e){if(e.routeAuthorization.kind,e.credentialState.kind===`available`)return{};throw Error(`[login] threshold ECDSA warm-up requires route authorization`)}function rS(e){return String((e&&typeof e==`object`&&`message`in e?e.message:e)||``)}function Q(e){throw Error(`[login] unexpected state: ${String(e)}`)}async function iS(e){switch(e.runtimeScopeBootstrapState.kind){case`available`:return await e.signingEngine.bootstrapEcdsaSession({...e.request,runtimeScopeBootstrap:e.runtimeScopeBootstrapState.runtimeScopeBootstrap});case`unavailable`:return await e.signingEngine.bootstrapEcdsaSession(e.request);default:return Q(e.runtimeScopeBootstrapState)}}function aS(e){if(`operationCredential`in e)return e.operationCredential;throw Error(`[login] wallet custody Ed25519 activation requires the exact issued operation credential`)}async function oS(e){let t=await e.signingEngine.getUserBySignerSlot(e.walletBinding.nearAccountId,e.signerSlot).catch(()=>null);if(t){if(t.walletId!==String(e.walletBinding.walletId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||t.signerSlot!==e.signerSlot)throw Error(`[login] local Ed25519 owner profile identity is invalid`);return}await e.signingEngine.storeUserData({walletId:String(e.walletBinding.walletId),nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),signerSlot:e.signerSlot,operationalPublicKey:`ed25519:${Tr(e.registeredPublicKey)}`,passkeyCredential:{id:e.credentialIdB64u,rawId:e.credentialIdB64u},lastUpdated:Date.now(),version:2})}function sS(e,t){let n=e.ed25519.capability,r=n.registrationContinuity;return{materialActivation:n.materialActivation,lifecycleId:n.lifecycle.lifecycleId,signingRootVersion:n.lifecycle.rootShareEpoch,signingRootId:n.applicationBinding.signing_root_id,signerSetId:n.lifecycle.signerSetId,thresholdSessionId:t,activationTranscriptB64u:P(Uint8Array.from(r.activationTranscript)),activationCapabilityBindingB64u:P(Uint8Array.from(n.activeCapabilityBinding))}}function cS(e){let t=e.custody.ed25519,n=t.capability;if(t.nearAccountId!==String(e.walletBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.walletBinding.nearEd25519SigningKeyId)||t.signerSlot!==e.signerSlot||n.applicationBinding.wallet_id!==String(e.walletBinding.walletId)||n.applicationBinding.near_ed25519_signing_key_id!==String(e.walletBinding.nearEd25519SigningKeyId)||n.applicationBinding.key_creation_signer_slot!==e.signerSlot||n.nearAccountId!==e.walletBinding.nearAccountId||n.lifecycle.accountId!==String(e.walletBinding.walletId)||n.lifecycle.signingWorkerId!==t.relayerKeyId)throw Error(`[login] wallet custody identity does not match the selected signing lane`)}async function lS(e){cS(e);let t=e.custody.ed25519.capability,n=await e.signingEngine.loadWalletCustodyEd25519Material({nearAccountId:String(e.walletBinding.nearAccountId),signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:P(Uint8Array.from(t.registeredPublicKey))}),r=s(e.walletSession.thresholdSessionId);if(!r.ok)throw Error(`[login] wallet custody returned an invalid threshold session identity`);let i=sS(e.custody,r.value),a=Xt(e.custody.envelope),o=null,c=null,l=null;try{if(n.kind===`found`)l=F(e.passkeyPrfFirstB64u),o=await xn({material:n.material,activation:i,envelope:a,ownedFactorSecret:l});else{let n=$n(e.custody.envelope);if(!n.ok)throw Error(n.reason);c=F(e.passkeyPrfFirstB64u),l=F(e.passkeyPrfFirstB64u);let r=await e.signingEngine.rejoinWalletCustodyNearEd25519KeySet({walletId:String(e.walletBinding.walletId),custodyJson:n.custodyJson,factorSecret:c.buffer,nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),recoveryBasis:t,routerOrigin:new URL(e.relayerUrl).origin,walletSessionToken:aS(e.walletSession).token}),i={kind:Is,applicationBindingDigestB64u:r.localMaterial.applicationBindingDigestB64u,registeredPublicKeyB64u:P(r.metadata.registeredPublicKey),participantIds:r.metadata.participantIds,stateEpoch:String(r.metadata.stateEpoch),walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),signerSlot:e.signerSlot,signingWorkerId:e.custody.ed25519.relayerKeyId,signingWorkerVerifyingShareB64u:P(r.metadata.signingWorkerVerifyingShare)},s={ciphertextB64u:r.localMaterial.b64u,nonceB64u:r.localMaterial.nonceB64u};try{await e.signingEngine.persistWalletCustodyEd25519Material({binding:i,sealed:s})}catch(e){console.warn(`[login] wallet custody cache write failed; continuing with verified material`,{error:e})}o=await xn({material:{binding:i,sealed:s},activation:Ht(r.metadata),envelope:a,ownedFactorSecret:l})}if(!o)throw Error(`[login] wallet custody produced no active client`);let r=s(o.metadata().scope.threshold_session_id);if(!r.ok)throw Error(`[login] wallet custody returned an invalid threshold session identity`);if(r.value!==e.walletSession.thresholdSessionId)throw Error(`[login] wallet custody changed the threshold session identity`);let u=e.custody.envelope.factor;if(u.kind!==`passkey`)throw Error(`[login] wallet custody returned a different factor authority`);await oS({signingEngine:e.signingEngine,walletBinding:e.walletBinding,signerSlot:e.signerSlot,credentialIdB64u:u.credentialIdB64u,registeredPublicKey:o.metadata().registeredPublicKey}),await br({store:G,activeClient:o,identity:{walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),thresholdSessionId:r.value,signerSlot:e.signerSlot,rpId:u.rpId,credentialIdB64u:u.credentialIdB64u,signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,signingWorkerId:e.custody.ed25519.relayerKeyId},stableServerScope:{relayerKeyId:e.custody.ed25519.relayerKeyId,participantIds:e.custody.ed25519.participantIds,runtimePolicyScope:t.runtimePolicyScope,routerAbNormalSigning:e.routerAbNormalSigning},passkeyPrfFirstB64u:e.passkeyPrfFirstB64u});let d=await e.signingEngine.activateVerifiedNearEd25519YaoMaterial({activeClient:o,facts:{thresholdSessionId:r.value,signer:Lc({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,routerAbNormalSigning:e.routerAbNormalSigning,runtimePolicyScope:t.runtimePolicyScope,relayerUrl:e.relayerUrl}}),f=dn({walletId:String(e.walletBinding.walletId),nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),walletSessionId:e.walletSession.walletSessionId,authorizationId:e.walletSession.authorizationId,quotaId:e.walletSession.quotaId,thresholdSessionId:r.value,remainingUses:e.walletSession.remainingUses,expiresAtMs:e.walletSession.expiresAtMs,runtimePolicyScope:e.walletSession.runtimePolicyScope,signingRootId:t.applicationBinding.signing_root_id,signingRootVersion:t.lifecycle.rootShareEpoch,routerAbNormalSigning:e.routerAbNormalSigning,walletSessionToken:aS(e.walletSession).token,home:aS(e.walletSession).home,nowMs:Math.min(Date.now(),e.walletSession.expiresAtMs-1)});if(!f.ok)throw Error(`[login] wallet custody returned an unusable Ed25519 Wallet Session: ${f.reason}`);let p=Hn({walletId:e.walletBinding.walletId,nearAccountId:e.walletBinding.nearAccountId,nearEd25519SigningKeyId:e.walletBinding.nearEd25519SigningKeyId,signerSlot:e.signerSlot,rpId:qa(u.rpId),credentialIdB64u:u.credentialIdB64u,relayerUrl:e.relayerUrl,authority:e.authority,signingWalletSession:f.value});await Wt({persistence:e.signingEngine,session:p,prfFirstB64u:e.passkeyPrfFirstB64u,ed25519Restore:yn({rpId:u.rpId,nearAccountId:String(e.walletBinding.nearAccountId),nearEd25519SigningKeyId:String(e.walletBinding.nearEd25519SigningKeyId),relayerKeyId:e.custody.ed25519.relayerKeyId,participantIds:e.custody.ed25519.participantIds,runtimePolicyScope:e.walletSession.runtimePolicyScope,signerSlot:e.signerSlot,routerAbNormalSigning:e.routerAbNormalSigning,credentialIdB64u:u.credentialIdB64u,materialActivation:d.materialActivation}),materialActivation:d.materialActivation}),await e.signingEngine.establishUnlockedWalletEd25519ExportRootCapabilityV1({existingEnvelope:e.custody.envelope,passkeyPrfFirstB64u:e.passkeyPrfFirstB64u,walletId:String(e.walletBinding.walletId),walletAuthMethodId:String(e.authority.walletAuthMethodId),walletSessionId:String(e.walletSession.walletSessionId),expiresAtMs:e.walletSession.expiresAtMs})}catch(e){throw o?.dispose(),e}finally{c?.fill(0),l?.fill(0)}}function uS(e){let t=F(e);if(t.length!==20)throw Error(`[login] ECDSA custody address is invalid`);let n=`0x`;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n}function dS(e){let[t,...n]=e;if(!t)throw Error(`[login] passkey ECDSA custody continuity is empty`);return[t.chainTarget,...n.map(e=>e.chainTarget)]}async function fS(e){let t=e.continuity.signers[0];if(!t)throw Error(`[login] passkey ECDSA custody continuity is empty`);if(t.walletKey.walletId!==e.walletId)throw Error(`[login] passkey ECDSA custody continuity changed wallet identity`);for(let n of e.continuity.signers)if(n.walletKey.walletId!==t.walletKey.walletId||n.walletKey.keyHandle!==t.walletKey.keyHandle||n.walletKey.ecdsaThresholdKeyId!==t.walletKey.ecdsaThresholdKeyId||n.walletKey.signingRootId!==t.walletKey.signingRootId||n.walletKey.signingRootVersion!==t.walletKey.signingRootVersion||n.walletKey.relayerKeyId!==t.walletKey.relayerKeyId||!La(n.walletKey.publicCapability,t.walletKey.publicCapability)||!Ja(n.activationReceipt,t.activationReceipt)||!Xx(n.runtimePolicyScope,t.runtimePolicyScope))throw Error(`[login] passkey ECDSA custody continuity conflicts across targets`);let n=$n(e.custody.envelope);if(!n.ok)throw Error(n.reason);let r=F(e.passkeyPrfFirstB64u);try{let i=await e.signingEngine.rejoinWalletCustodyEvmFamilyKeySet({walletId:e.walletId,custodyJson:n.custodyJson,factorSecret:r.buffer,evmFamilySigningKeySlotId:Xa({walletId:e.walletId,signingRootId:t.walletKey.signingRootId,signingRootVersion:t.walletKey.signingRootVersion}),applicationBindingDigestB64u:t.walletKey.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:t.walletKey.derivationClientSharePublicKey33B64u,relayerPublicIdentityJson:JSON.stringify({relayerKeyId:t.walletKey.relayerKeyId,relayerPublicKey33B64u:t.activationReceipt.ecdsa_activation.public_identity.server_public_key33_b64u,groupPublicKey33B64u:t.activationReceipt.ecdsa_activation.public_identity.threshold_public_key33_b64u,ethereumAddress:uS(t.activationReceipt.ecdsa_activation.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:t.activationReceipt.ecdsa_activation.public_identity.server_share_retry_counter})});jx({publicFacts:i.publicFacts,signer:t}),await e.signingEngine.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:dS(e.continuity.signers),walletId:t.walletKey.walletId,keyHandle:t.walletKey.keyHandle,ecdsaThresholdKeyId:t.walletKey.ecdsaThresholdKeyId,signingRootId:t.walletKey.signingRootId,signingRootVersion:t.walletKey.signingRootVersion,relayerKeyId:t.walletKey.relayerKeyId,participantIds:t.walletKey.participantIds,publicCapability:t.walletKey.publicCapability,activationReceipt:t.activationReceipt,runtimePolicyScope:t.runtimePolicyScope,readyStateBlobB64u:i.readyStateBlobB64u,publicFacts:i.publicFacts})}finally{r.fill(0)}}async function pS(e){let t=$x(e.signersToWarm),n=e.credentialState.kind===`available`?e.credentialState.credential:void 0,r=e.credentialState.localPasskeyCredentialIdB64u,i=e.runtimeScopeBootstrapState.kind===`available`?e.runtimeScopeBootstrapState.runtimeScopeBootstrap:null,a=e.ecdsaContext,o={activeCanonicalEcdsaContext:a,ed25519:{thresholdSessionId:``,authorizationId:null,walletSessionId:null,quotaId:null,operationCredential:null,expiresAtMs:0,remainingUses:0,runtimePolicyScope:null}},s=e.ecdsaDependency.kind===`ed25519_wallet_session_authority`?new Bx:null,c={generatedThresholdSessionId:e.passkeyExchangeEcdsaActivation?.policy.session_policy.threshold_session_id||``},l=e.unlockRemainingUses,u=[],d=null,f=null,p=[];return t.includes(`ed25519`)&&p.push({signer:`ed25519`,dependencies:e.ed25519DependsOnEcdsa?[`ecdsa`]:[],onFailure:s?Hx.bind(void 0,s):null,run:async()=>{let t=Ky(e.walletIdentity),c=f,u=Ab({authority:kb(e.ed25519SessionAuthority),walletId:t.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:r}),p=Nb({mintPlan:e.ed25519MintPlan,ecdsaMint:c,walletBinding:t,signerSlot:e.signerSlot,authority:u}),m=Fb({mintPlan:e.ed25519MintPlan,fallback:{relayerKeyId:e.relayerKeyId,participantIds:e.participantIds,runtimePolicyScope:a.runtimePolicyScope??null,routerAbNormalSigning:Lv(e.context.configs)}}),h={relayerUrl:e.relayerUrl,relayerKeyId:m.relayerKeyId,runtimePolicyScope:m.runtimePolicyScope||void 0,routerAbNormalSigning:m.routerAbNormalSigning,runtimeScopeBootstrap:i||void 0,participantIds:m.participantIds,ttlMs:e.ttlMs,remainingUses:l,onWalletSessionAuthorityReady:Vx.bind(void 0,{sharedState:o,authorityDeferred:s})},g=p.kind===`fresh_ed25519_provisioning`?{...p,walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:e.signerSlot,...h}:{...p,...h},_;switch(u.kind){case`email_otp`:_=await e.signingEngine.connectEd25519Session({...g,source:`email_otp`,authority:u.authority,emailOtpAuthContext:u.emailOtpAuthContext,materialActivation:void 0});break;case`passkey`:if(!e.passkeyUnlockEd25519Session)throw Error(`[login] verified wallet unlock omitted its Ed25519 Wallet Session`);if(e.ed25519MintPlan.kind!==`wallet_custody`)throw Error(`[login] verified unlock Ed25519 session requires wallet custody`);_=Ib({session:e.passkeyUnlockEd25519Session,walletBinding:t,signerSlot:e.signerSlot,custody:e.ed25519MintPlan.custody,provisionScope:m,credential:n,remainingUses:l,unlockAuthorization:e.passkeyUnlockWalletSessionAuthorization});break;default:return Q(u)}if(!_.ok){let e=String(_.message||_.code||`Failed to connect threshold Ed25519 session`);throw Error(`[login] threshold Ed25519 warm-up failed: ${e}`)}if(d=_,!_.thresholdSessionId)throw Error(`[login] threshold Ed25519 warm-up did not return a thresholdSessionId`);let v=u.kind===`passkey`?await kt({walletId:t.walletId,rpId:e.context.signingEngine.getRpId(),credentialIdB64u:Xc(n||void 0)||r}):await H({authority:u.authority.authority});if(e.ed25519MintPlan.kind===`wallet_custody`){if(u.kind!==`passkey`)throw Error(`[login] wallet custody requires passkey authority`);let r=Pb(p,e.ed25519MintPlan),i=n?Yc(n):``;if(!i)throw Error(`[login] wallet custody requires WebAuthn PRF.first`);await e.signingEngine.withExactEd25519MaterialOwner({materialActivation:r,nearAccountId:t.nearAccountId,task:lS.bind(void 0,{signingEngine:e.signingEngine,custody:e.ed25519MintPlan.custody,walletBinding:t,signerSlot:e.signerSlot,passkeyPrfFirstB64u:i,walletSession:_,authority:v,routerAbNormalSigning:m.routerAbNormalSigning,relayerUrl:e.relayerUrl})})}}}),t.includes(`ecdsa`)&&p.push({signer:`ecdsa`,dependencies:[],onFailure:null,run:async()=>{await s?.promise;let t=null,i=!1,a=new Map,d=ur(e.context.configs.network.chains),p=e=>{let t=uy({context:o.activeCanonicalEcdsaContext,configuredTargets:d});if(t.kind===`complete_configured_target_keys`){o.activeCanonicalEcdsaContext=t.context;return}t.kind!==`missing_configured_target_keys`&&dy({completion:t,source:e})},m=e=>{if(f)return;let t=e.session.operationCredential,i=n?Yc(n):``,a=Xc(n||void 0)||r;!t.token||!i||!a||(f={operationCredential:t,passkeyPrfFirstB64u:i,passkeyCredentialIdB64u:a,quotaId:e.session.quotaId})},h=()=>{if(o.ed25519.operationCredential)return{routeAuth:o.ed25519.operationCredential};let n=f?.operationCredential;return n?{routeAuth:n}:t||(t=nS({credentialState:e.credentialState,routeAuthorization:e.routeAuthorization}),t)},g=async(t,n)=>{if(!n.key)throw Error(`[login] threshold ECDSA warm-up requires configured target key identity`);let s=await Qx({walletId:e.walletIdentity.walletId,chainTarget:t.chainTarget,targetEcdsaKey:n}),u=a.get(Kx(s)),d=e.passkeyExchangeEcdsaActivation,f=d&&!i&&d.targetKey===z(t.chainTarget)?d:null,p=f?{sessionActivation:f.sessionActivation,authorizationIdentity:f.authorizationIdentity}:u??null,m=p?Dx(p.sessionActivation):jS({sharedState:c}),g=o.activeCanonicalEcdsaContext.runtimePolicyScope;if(!g)throw Error(`[login] ECDSA session lane requires runtimePolicyScope`);let _=Qa({chainTarget:t.chainTarget,thresholdSessionId:m,ttlMs:e.ttlMs,remainingUses:l,runtimePolicyScope:g}),v=n.existingRoleLocalMaterial;if(!v)throw kS(z(t.chainTarget));if(!r)throw Error(`[login] ECDSA role-local activation requires passkey identity`);let y=v.authority;if(p)return f&&(i=!0),await iS({signingEngine:e.signingEngine,runtimeScopeBootstrapState:e.runtimeScopeBootstrapState,request:{kind:`passkey_preauthorized_ecdsa_bootstrap`,source:`login`,relayerUrl:e.relayerUrl,keyHandle:Ia(n.keyHandle),key:n.key,lanePolicy:_,publicCapability:s,existingRoleLocalMaterial:v,authorizationAuthority:y,authorizationIdentity:p.authorizationIdentity,passkeyCredentialIdB64u:r,sessionActivation:p.sessionActivation}});let b=h().routeAuth;if(!Wx(b))throw Error(`[login] ECDSA role-local activation requires a verified Wallet Session`);return await iS({signingEngine:e.signingEngine,runtimeScopeBootstrapState:e.runtimeScopeBootstrapState,request:{kind:`wallet_session_reconnect_ecdsa_bootstrap`,source:`login`,relayerUrl:e.relayerUrl,keyHandle:Ia(n.keyHandle),key:n.key,lanePolicy:_,publicCapability:s,existingRoleLocalMaterial:v,authorizationAuthority:y,passkeyCredentialIdB64u:r,routeAuth:b}})},_=async()=>{p(`login ECDSA warm-up preflight`);let t=[],n=e.passkeyExchangeEcdsaActivation?.targetKey||null;if(n)for(let e of d)z(e.chainTarget)===n&&t.push(e);for(let e of d)z(e.chainTarget)!==n&&t.push(e);for(let n of t){let t=z(n.chainTarget),r=o.activeCanonicalEcdsaContext.ecdsaKeys.find(e=>e.targetKey===t),i=String(r?.keyHandle||``).trim();if(!r?.key||!i)throw kS(t);let s=await g(n,r);u.push(s),Gt({statusReads:e.statusReads,trigger:`unlock`,signingEngine:e.signingEngine,walletId:e.walletIdentity.walletId,chainTarget:n.chainTarget}),m(s);let c=qx(s),l=Kx(c.public_capability);if(!a.has(l)){let t=await Ix({walletId:e.walletIdentity.walletId,authorization:{record:s.session.walletSession,operationCredential:s.session.operationCredential}});a.set(l,{sessionActivation:c,authorizationIdentity:t.identity})}if(String(s.thresholdEcdsaKeyRef?.keyHandle||``).trim()!==r.keyHandle)throw Error(`[login] threshold ECDSA warm-up returned a different keyHandle for ${t}`)}if(e.passkeyExchangeEcdsaActivation&&!i)throw Error(`[login] passkey exchange ECDSA activation did not match a configured target`)};try{await _()}catch(e){let t=rS(e)||`Failed to bootstrap threshold ECDSA session`;throw Error(`[login] threshold ECDSA warm-up failed: ${t}`)}}}),await tS(p),{ecdsaBootstraps:u,ed25519Session:d}}async function mS(e,t,n){let r=e.signingEngine.readWalletAuthenticationState(),i=t??(r.kind===`signed_out`?void 0:r.walletId),a=null,s=null;if(i!==void 0){let e=o(String(i));if(e.ok){if(a=e.value,s=await Yv({walletId:e.value,ports:Gh}),s.kind===`upgrade_required`)throw new Cs(`[WalletSession] Wallet Session authorization requires a newer client`);s.kind===`missing`&&(r={kind:`signed_out`})}}let c=await Ry(i);if(c.kind===`no_session_for_wallet`){let e=await tx(String(c.walletId));e&&(c={kind:`resolved`,walletId:c.walletId,subjectSet:e,source:`local_wallet_authority`})}let l=!1;if(c.kind===`no_session_request`)return ot();if(c.kind===`no_session_for_wallet`){let t=await yy(c.walletId);if(t.kind!==`resolved`)return await _S({context:e,walletId:c.walletId,reason:`activation_reconciliation_failed`});if(t.selectors.length>0){l=!0;let n=await Yy({workerCtx:e.signingEngine.getSignerWorkerContext(),selectors:t.selectors});if(n.didFinalize&&(c=await Ry(c.walletId)),c.kind===`no_session_for_wallet`&&n.kind!==`settled`)return await _S({context:e,walletId:c.walletId,reason:n.kind===`pending`?`activation_reconciliation_pending`:`activation_reconciliation_failed`})}}if(c.kind===`no_session_for_wallet`)return await _S({context:e,walletId:c.walletId,reason:c.reason});if(c.kind===`no_session_request`)return ot();if(c.kind===`unresolvable_profile`)return console.warn(`[WalletSession] wallet session profile is unresolvable`,{profileId:c.profileId,reason:c.reason}),ot();if(c.kind===`unresolvable`)return console.warn(`[WalletSession] wallet session identity is unresolvable`,{walletId:String(c.walletId),reason:c.reason}),await _S({context:e,walletId:c.walletId,reason:c.reason});let u=Jy(c.subjectSet);!l&&u.length>0&&Xy(await Yy({workerCtx:e.signingEngine.getSignerWorkerContext(),selectors:u})),e.signingEngine.assertSealedRefreshStartupParity().catch(e=>{console.warn(`[WalletSession] sealed refresh startup parity check failed during session read; continuing with cached login state`,e instanceof Error?e.message:String(e||`unknown error`))});let[d,f]=await Promise.all([oC(e,c),vS(e,c.walletId,n)]),p=s&&a&&String(a)===String(c.walletId)?s:await Yv({walletId:c.walletId,ports:Gh}),m={kind:`signed_out`};switch(p.kind){case`authenticated`:await gS(e,p.state)&&(m=p.state);break;case`missing`:break;case`upgrade_required`:throw new Cs(`[WalletSession] Wallet Session authorization requires a newer client`)}let h=$S({subjectSet:m.kind===`authenticated`&&p.kind===`authenticated`?hS(c.subjectSet,p.walletAuthMethodId):c.subjectSet,availableLanes:f,configuredEcdsaTargets:ur(e.configs.network.chains).map(e=>e.chainTarget)});return{appIdentity:d,authentication:m,capabilityProjection:h,nonceDiagnostics:yS(e,d.nearAccountId)}}function hS(e,t){let[n,...r]=e.subjects.filter(e=>e.kind!==`evm_family_ecdsa_wallet`||String(e.authority.walletAuthMethodId)===String(t));return n?{...e,subjects:[n,...r]}:e}async function gS(e,t){let n=!1;try{let e=await G.resolveSelectedWalletAuthority(String(t.walletId));n=e.kind!==`resolved`||e.selection.lockState!==`unlocked`}catch{n=!0}return n?!1:(e.signingEngine.setWalletAuthenticated(t),!0)}async function _S(e){let[t,n]=await Promise.all([aC(e.context,e.walletId),Yv({walletId:e.walletId,ports:Gh})]),r={kind:`signed_out`};switch(n.kind){case`authenticated`:await gS(e.context,n.state)&&(r=n.state);break;case`missing`:break;case`upgrade_required`:throw new Cs(`[WalletSession] Wallet Session authorization requires a newer client`)}return{appIdentity:t,authentication:r,capabilityProjection:{kind:`unresolvable`,reason:e.reason},nonceDiagnostics:yS(e.context,t.nearAccountId)}}function vS(e,t,n){return e.signingEngine.readPersistedAvailableSigningLanes({walletId:t},n).then(e=>({kind:`available`,lanes:e})).catch(()=>({kind:`unavailable`}))}function yS(e,t){let n=String(t||``).trim();if(!n)return null;try{return e.signingEngine.getNonceCoordinator().getDiagnostics({accountId:n,emitMetrics:!0})}catch{return null}}function bS(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:``}async function xS(e,t){let n=ur(e.configs.network.chains).map(e=>e.chainTarget);if(!n.length)return[];let r=await G.listAccountSignersByProfile({profileId:String(t),status:`active`}).catch(()=>[]),i=[];for(let e of r){let r=ay({walletId:t,configuredTargets:n,signer:e});r.kind===`active_ecdsa_signer_record`&&i.push(r.walletKey)}return i}async function SS(e,t){let n=[...new Set((await xS(e,t)).map(e=>bS(e.keyFacts.thresholdOwnerAddress)).filter(Boolean))];return n.length===1?n[0]:(n.length>1&&console.warn(`[WalletSession] conflicting profile threshold ECDSA addresses`,{walletId:String(t),addresses:n}),null)}function CS(e){if(e.selection.mode===`ed25519_only`)return[`ed25519`];if(!e.configuredEcdsaTargets.length)return e.selection.mode===`ecdsa_only`?[]:[`ed25519`];let t=new Set((e.canonicalEcdsaContext?.ecdsaKeys||[]).map(e=>e.targetKey));if(t.size===0)throw Error(`[login] threshold ECDSA warm-up missing canonical key identity`);let n=e.configuredEcdsaTargets.map(e=>z(e.chainTarget)).filter(e=>!t.has(e));if(n.length)throw Error(`[login] threshold ECDSA warm-up missing configured-target key ids for ${n.join(`, `)}`);return e.selection.mode===`ecdsa_only`?[`ecdsa`]:[`ed25519`,`ecdsa`]}function wS(e){let t=uy({context:e.storedCanonicalEcdsaContext,configuredTargets:e.selectedEcdsaTargets}),n=dy({completion:t,source:`stored ECDSA key facts`}),r=CS({selection:e.selection,configuredEcdsaTargets:e.selectedEcdsaTargets,canonicalEcdsaContext:n});e.wantsEd25519Warmup&&!r.includes(`ed25519`)&&(r=[`ed25519`,...r]);let i=r.includes(`ed25519`)&&r.includes(`ecdsa`);if(!r.length)throw Error(`[login] ECDSA unlock requested with no configured ECDSA targets`);return{kind:`threshold_login_warmup_plan_ready`,storedCanonicalEcdsaContext:e.storedCanonicalEcdsaContext,configuredTargetKeyCompletion:t,ecdsaContext:n,signersToWarm:r,ed25519DependsOnEcdsa:!1,ecdsaDependsOnEd25519:i}}function TS(e){return Be(e,32,`threshold login warm session IDs`)}function ES(e){let t=T(e);if(!t.ok)throw Error(`[login] failed to create threshold ECDSA session identity`);return t.value}function DS(e){let t=ft(e);if(!t.ok)throw Error(`[login] failed to create Wallet Session mint identity`);return t.value}function OS(e){if(e==null||e<=0)throw Error(`[login] unlock warm-up requires positive unlock session uses`);return e}function kS(e){let t=Error(`[login] device_link_required: local threshold ECDSA material is unavailable for ${e}`);return t.code=`device_link_required`,t}function AS(){let e=Error(`[login] device_link_required: local threshold Ed25519 material is unavailable`);return e.code=`device_link_required`,e}function jS(e){let t=String(e.sharedState.generatedThresholdSessionId||``).trim();if(t)return t;let n=TS(`threshold-ecdsa-login`);return e.sharedState.generatedThresholdSessionId=n,n}async function MS(e){if(!e.collectCredential)throw Error(`[login] WebAuthn ECDSA key-facts inventory requires a credential collector`);let t=hy(),n=await cs({walletId:e.walletId,rpId:e.rpId,keyTargets:e.keyTargets,serverNonceB64u:t,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}}),r=await e.collectCredential(n);return await gc({relayerUrl:e.relayerUrl,walletId:e.walletId,rpId:e.rpId,credential:r,keyTargets:e.keyTargets,serverNonceB64u:t,expectedChallengeDigestB64u:n,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{}})}async function NS(e){let t=String(e.relayerUrl||``).trim(),n=String(e.rpId||``).trim();if(!t||!n)throw Error(`[login] threshold ECDSA key-facts inventory requires relayerUrl and rpId`);return e.authority?.kind===`wallet_session_operation_credential_v1`?await _c({relayerUrl:t,walletId:e.walletId,rpId:n,operationCredential:e.authority.operationCredential,keyTargets:e.keyTargets}):await MS({walletId:e.walletId,relayerUrl:t,rpId:n,keyTargets:e.keyTargets,...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},collectCredential:e.collectWebAuthnInventoryCredential})}function PS(e){let t=ay({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:e.signer});switch(t.kind){case`active_ecdsa_signer_record`:return t.targetKey===z(e.record.walletKey.chainTarget)&&String(t.walletKey.keyHandle)===String(e.record.walletKey.keyHandle);case`key_facts_inventory_required`:return t.targetKey===z(e.record.walletKey.chainTarget)&&t.keyHandle===String(e.record.walletKey.keyHandle);case`blocked`:case`skipped`:return!1}return!1}function FS(e){let t=e.record.walletKey,n=t.keyFacts,r=z(t.chainTarget);return{...e.signer.metadata||{},accountModel:`threshold-ecdsa`,accountAddress:e.record.accountAddress,ownerAddress:e.record.ownerAddress,thresholdOwnerAddress:n.thresholdOwnerAddress,keyScope:n.keyScope,keyHandle:t.keyHandle,walletId:t.walletId,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,publicCapability:e.record.publicCapability,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u,participantIds:[...n.participantIds],chainTarget:t.chainTarget,targetMembership:{targetKey:r,chainTarget:t.chainTarget},sharedEvmFamilyKey:{walletId:t.walletId,keyScope:n.keyScope,keyHandle:t.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:[...n.participantIds],thresholdOwnerAddress:n.thresholdOwnerAddress,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u},chainId:t.chainTarget.chainId}}async function IS(e){for(let t of e.records){let n=e.walletSigners.filter(n=>PS({walletId:e.walletId,configuredTargets:e.configuredTargets,signer:n,record:t}));if(n.length!==1)throw Error(`[login] authenticated ECDSA key inventory could not identify one profile signer for ${z(t.walletKey.chainTarget)}`);let r=n[0];if(String(t.walletKey.walletId)!==String(e.walletId)||t.accountAddress!==r.accountAddress||t.ownerAddress!==r.accountAddress||String(t.walletKey.keyFacts.thresholdOwnerAddress)!==r.accountAddress)throw Error(`[login] authenticated ECDSA key inventory profile identity mismatch for ${z(t.walletKey.chainTarget)}`);await e.store.activateAccountSigner({account:{profileId:r.profileId,chainIdKey:r.chainIdKey,accountAddress:r.accountAddress,accountModel:`threshold-ecdsa`},signer:{signerId:r.signerId,signerType:r.signerType,signerKind:r.signerKind,signerAuthMethod:r.signerAuthMethod,signerSource:r.signerSource,metadata:FS({signer:r,record:t})},activationPolicy:{mode:`allocate_next_free`},preferredSlot:r.signerSlot,selectAsActive:!1,mutation:{routeThroughOutbox:!1}})}}function LS(e,t){return t?{ecdsaKeys:e,runtimePolicyScope:t}:{ecdsaKeys:e}}function RS(e){let t=e.input?.keyFactsInventoryAuthority||null,n=e.input?.keyFactsInventoryRequested===!0,r=e.input?.relayerUrl||``,i=e.input?.rpId||``,a=e.input?.collectWebAuthnInventoryCredential;return e.runtimePolicyScope?{kind:`runtime_policy_scoped`,keyFactsInventoryAuthority:t,keyFactsInventoryRequested:n,relayerUrl:r,rpId:i,runtimePolicyScope:e.runtimePolicyScope,collectWebAuthnInventoryCredential:a}:{kind:`runtime_policy_unscoped`,keyFactsInventoryAuthority:t,keyFactsInventoryRequested:n,relayerUrl:r,rpId:i,collectWebAuthnInventoryCredential:a}}async function zS(e,t,n){let r=t.map(e=>e.chainTarget),i=await G.listAccountSignersByProfile({profileId:String(e),status:`active`}).catch(()=>[]),a=[],o=[],s=[];for(let t of i){let n=ay({walletId:e,configuredTargets:r,signer:t});switch(n.kind){case`active_ecdsa_signer_record`:a.push(n);break;case`key_facts_inventory_required`:o.push(n);break;case`blocked`:s.push(n);break;case`skipped`:break;default:}}if(!a.length&&!o.length&&!s.length)return[];let c=py({selection:{mode:`ecdsa_only`,ecdsa:!0},configuredTargets:r,activeSignerRecords:a,keyFactsInventoryRequiredRecords:o,blockedRecords:s,runtimeConfig:{explicitKeyFactsInventoryMode:n?.keyFactsInventoryRequested===!0,allowAuthenticatedKeyFactsInventory:!!n?.keyFactsInventoryAuthority}});switch(c.kind){case`ready`:{let t=c.readyTargets.filter(e=>e.publicCapability.kind===`missing_public_capability`),a=new Map,o=[];if(t.length){let r=await NS({walletId:e,relayerUrl:n?.relayerUrl||``,rpId:n?.rpId||``,keyTargets:t.map(e=>({keyHandle:e.walletKey.keyHandle,chainTarget:e.chainTarget})),authority:n?.keyFactsInventoryAuthority||null,...n?.runtimePolicyScope?{runtimePolicyScope:n.runtimePolicyScope}:{},collectWebAuthnInventoryCredential:n?.collectWebAuthnInventoryCredential});o=r.records;for(let e of r.records)a.set(z(e.walletKey.chainTarget),e.publicCapability)}let s=cy({source:`profile continuity`,keys:c.readyTargets.map(e=>sy({chainTarget:e.chainTarget,keyHandle:e.walletKey.keyHandle,key:bo(e.walletKey),publicCapability:e.publicCapability.kind===`persisted_public_capability`?e.publicCapability.value:a.get(e.targetKey)}))}),l=s.filter(e=>e.publicCapability.kind===`missing_public_capability`).map(e=>e.targetKey);if(l.length)throw Error(`[login] authenticated ECDSA key inventory did not return public capabilities for ${l.join(`, `)}`);return await IS({store:G,walletId:e,configuredTargets:r,walletSigners:i,records:o}),s}case`no_configured_ecdsa_targets`:return[];case`awaiting_authenticated_key_facts_inventory`:{let a=n?.keyFactsInventoryAuthority;if(!a)throw Error(`[login] threshold ECDSA key-facts inventory requires authenticated inventory authority`);let o=await NS({walletId:e,relayerUrl:n.relayerUrl,rpId:n.rpId,keyTargets:c.keyTargets,authority:a,...n.runtimePolicyScope?{runtimePolicyScope:n.runtimePolicyScope}:{},collectWebAuthnInventoryCredential:n.collectWebAuthnInventoryCredential}),s=uy({context:{ecdsaKeys:cy({source:`profile continuity inventory`,keys:o.records.map(e=>sy({chainTarget:e.walletKey.chainTarget,keyHandle:e.walletKey.keyHandle,key:bo(e.walletKey),publicCapability:e.publicCapability}))})},configuredTargets:t});if(s.kind!==`complete_configured_target_keys`)throw Error(`[login] threshold ECDSA key-facts inventory returned incomplete key facts`);return await IS({store:G,walletId:e,configuredTargets:r,walletSigners:i,records:o.records}),s.context.ecdsaKeys}case`key_facts_inventory_required`:{let e=c.keyFactsInventoryRequiredRecords.map(e=>e.targetKey).join(`, `);throw n?.keyFactsInventoryRequested?Error(`[login] threshold ECDSA key-facts inventory requires authenticated inventory authority for ${e}`):Error(`[login] threshold ECDSA warm-up requires complete local key facts for ${e}; run explicit authenticated ECDSA key-facts inventory before unlock`)}case`blocked`:{let e=c.blockedRecords.map(e=>`${e.targetKey||`unknown`}:${e.reason}`).join(`, `);throw Error(`[login] threshold ECDSA warm-up requires complete local key facts before unlock; run explicit authenticated ECDSA key-facts inventory before unlock; blocked profile signer records: ${e}`)}}return[]}async function BS(e,t,n,r){let i=ur(e.configs.network.chains),a=LS(cy({source:`stored`,keys:[]}),void 0),o=await Ov({walletId:t,chainTargets:i.map(e=>e.chainTarget),...r?{authMethod:r}:{}}),s=[],c;for(let e of o){let t=e.manifest;for(let{chainTarget:n}of i){if(!t.signer.scope.targetMemberships.some(e=>z(e)===z(n)))continue;let r=t.durableMaterial.roleLocalPublicFacts,i=String(r.keyHandle),a=r.publicCapability,o=e.material,l=t.durableMaterial.runtimePolicyScope,u=Ga({runtimePolicyScope:l});if(String(u.signingRootId)!==String(t.signer.signingRootId)||String(u.signingRootVersion)!==String(t.signer.signingRootVersion))throw Error(`[login] threshold ECDSA canonical runtime policy scope mismatch for ${z(n)}`);if(c&&l&&!Xx(c,l))throw Error(`[login] threshold ECDSA durable lanes have conflicting runtime policy scopes`);!c&&l&&(c=l),s.push(sy({chainTarget:n,keyHandle:i,key:ho({walletId:t.signer.walletId,ecdsaThresholdKeyId:t.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId,signingRootId:t.signer.signingRootId,signingRootVersion:t.signer.signingRootVersion,participantIds:t.signer.registeredPublicFacts.participantIds,thresholdOwnerAddress:t.signer.registeredPublicFacts.thresholdOwnerAddress}),publicCapability:a,existingRoleLocalMaterial:o}))}}let l=cy({source:`available lane`,keys:s});a=Zx({current:a,incoming:LS(l,c),source:`durable lanes`});let u=uy({context:a,configuredTargets:i});if(u.kind===`complete_configured_target_keys`)return u.context;let d=new Set(u.missingTargets),f=await zS(t,i.filter(e=>d.has(z(e.chainTarget))),RS({input:n,runtimePolicyScope:a.runtimePolicyScope}));return a=Zx({current:a,incoming:{ecdsaKeys:f},source:`profile continuity`}),a}async function VS(e,t){let n=[...new Set((await xS(e,t)).map(e=>String(e.keyFacts.thresholdEcdsaPublicKeyB64u||``).trim()).filter(Boolean))];return n.length===1?n[0]:(n.length>1&&console.warn(`[WalletSession] conflicting profile threshold ECDSA public keys`,{walletId:String(t),publicKeyCount:n.length}),null)}async function HS(e,t){let[n,r]=await Promise.all([SS(e,t),VS(e,t)]);if(n&&r)return{ethereumAddress:n,thresholdEcdsaPublicKeyB64u:r};let i=await Ov({walletId:t,chainTargets:ur(e.configs.network.chains).map(e=>e.chainTarget)}),a=new Set,o=new Set;for(let e of i){let t=e.manifest.signer.registeredPublicFacts;a.add(bS(t.thresholdOwnerAddress)),o.add(t.publicKeyB64u)}return{ethereumAddress:n??(a.size===1?[...a][0]:null),thresholdEcdsaPublicKeyB64u:r??(o.size===1?[...o][0]:null)}}function US(e){return{kind:`failed`,reason:e}}function WS(){return{kind:`failed`,reason:`persistence_unavailable`}}function GS(e){switch(e.state){case`ready`:return{kind:`ready`};case`restorable`:return{kind:`pending`,resume:`restore_material`};case`deferred`:return{kind:`pending`,resume:`resolve_deferred_state`};case`expired`:return{kind:`authorization_required`,requirement:`wallet_session_expired`};case`exhausted`:return{kind:`authorization_required`,requirement:`wallet_session_exhausted`}}throw Error(`[SeamsWeb] unsupported capability lane readiness`)}function KS(e,t){let n=e.diagnostics?.invalidLanes.find(e=>e.curve===t);return n?n.reason===`ambiguous_material`||n.reason===`conflicting_key_material`?`ambiguous_lane`:`malformed`:null}function qS(e,t){let n=z(t),r=e.diagnostics?.invalidLanes.find(e=>e.curve===`ecdsa`&&(e.targetKey===void 0||e.targetKey===n));return r?r.reason===`ambiguous_material`||r.reason===`conflicting_key_material`?`ambiguous_lane`:`malformed`:null}function JS(e,t){return String(t.walletId)===String(e.walletId)&&String(t.nearAccountId)===String(e.nearAccountId)&&String(t.nearEd25519SigningKeyId)===String(e.nearEd25519SigningKeyId)&&t.signerSlot===e.signerSlot}function YS(e,t){return String(t.key.walletId)===String(e.walletId)&&String(t.key.ecdsaThresholdKeyId)===String(e.ecdsaThresholdKeyId)}function XS(e){if(e.availableLanes.kind===`unavailable`)return{kind:`near_ed25519`,subject:e.subject,lane:WS()};let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return{kind:`near_ed25519`,subject:e.subject,lane:US(`identity_mismatch`)};let n=KS(t,`ed25519`);if(n)return{kind:`near_ed25519`,subject:e.subject,lane:US(n)};let r=t.lanes.ed25519.near;return yd(r)?{kind:`near_ed25519`,subject:e.subject,lane:JS(e.subject,r)?GS(r):US(`identity_mismatch`)}:{kind:`near_ed25519`,subject:e.subject,lane:US(`missing`)}}function ZS(e){if(e.availableLanes.kind===`unavailable`)return WS();let t=e.availableLanes.lanes;if(String(t.walletId)!==String(e.subject.walletId))return US(`identity_mismatch`);let n=qS(t,e.chainTarget);if(n)return US(n);let r=Td(t,e.chainTarget);return yd(r)?YS(e.subject,r)?r.source===`canonical_capability`&&!r.authorization?{kind:`authorization_required`,requirement:`same_method_step_up`}:GS(r):US(`identity_mismatch`):US(`missing`)}function QS(e){let[t,...n]=e.configuredTargets;return t?{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`configured_targets`,lanes:[{chainTarget:t,readiness:ZS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})},...n.map(t=>({chainTarget:t,readiness:ZS({subject:e.subject,availableLanes:e.availableLanes,chainTarget:t})}))]}}:{kind:`evm_family_ecdsa`,subject:e.subject,targets:{kind:`no_configured_target`}}}function $S(e){let t=e.subjectSet.subjects.map(t=>{switch(t.kind){case`near_ed25519_wallet`:return XS({subject:t,availableLanes:e.availableLanes});case`evm_family_ecdsa_wallet`:return QS({subject:t,availableLanes:e.availableLanes,configuredTargets:e.configuredEcdsaTargets})}return Q(t)}),n=t[0];if(!n)throw Error(`[WalletSession] resolved capability subjects must be non-empty`);return{kind:`resolved`,subjectSet:e.subjectSet,capabilities:[n,...t.slice(1)]}}function eC(e){return e?e.operationalPublicKey:null}function tC(e,t){return!!(e&&String(e.walletId)===String(t.walletId)&&String(e.nearAccountId)===String(t.nearAccountId)&&e.signerSlot===t.signerSlot)}async function nC(e,t){let n=await e.getLastUser().catch(()=>null);if(tC(n,t))return n;let r=await Fs(G,t.nearAccountId,t.signerSlot).catch(()=>null);if(tC(r,t))return r;let i=await e.getUserBySignerSlot(t.nearAccountId,t.signerSlot).catch(()=>null);return tC(i,t)?i:null}function rC(e,t){return e.walletId===t.walletId&&e.nearAccountId===t.nearAccountId&&e.nearEd25519SigningKeyId===t.nearEd25519SigningKeyId&&e.signerSlot===t.signerSlot}async function iC(e){let t=o(String(e.walletId));if(!t.ok)return null;let n=t.value,r;try{r=await G.resolveSelectedWalletAuthority(String(n))}catch{return null}if(r.kind!==`resolved`)return null;let{selection:i,authMethod:a,authority:s}=r;if(ib({walletId:n,selection:i,authMethod:a,authority:s}).length>0||a.status!==`active`||s.state!==`active`||s.provenance.kind!==`device_link`)return null;let c=await $b({walletId:n,authMethod:a,authority:s,signerMaterials:r.signerMaterials});if(c.kind!==`resolved`||!rC(c.subject,e))return null;let l=s.signerActivations.ed25519;return l?`ed25519:${Tr(F(l.signer.registeredPublicKeyB64u))}`:null}async function aC(e,t){let[n,r]=await Promise.all([vb(t),HS(e,t).catch(()=>({ethereumAddress:null,thresholdEcdsaPublicKeyB64u:null}))]);return{kind:`resolved`,walletId:t,nearAccountId:null,nearOperationalPublicKey:null,userData:null,authMethods:n,thresholdEcdsaEthereumAddress:r.ethereumAddress,thresholdEcdsaPublicKeyB64u:r.thresholdEcdsaPublicKeyB64u}}async function oC(e,t){let n=t.walletId,r=Wy(t.subjectSet),i=r?.nearAccountId||null,[a,o]=await Promise.all([r?nC(e.signingEngine,r):null,aC(e,n)]),s=eC(a)||(r?await iC(r):null);return{...o,nearAccountId:i,nearOperationalPublicKey:s,userData:a}}async function sC(e){let[t,n,r]=await Promise.all([e.signingEngine.getAllUsers(),G.listWalletSelections(),e.signingEngine.getLastUser()]),i=(await Promise.all(n.map(hb))).filter(e=>e!==null),a=new Map;for(let e of t){let t=mb(e);a.set(gb(t),t)}for(let e of i)a.set(gb(e),e);let o=[...a.values()],s=[...new Set([...o.map(e=>e.walletId),...n.map(e=>String(e.walletId))])],c=[...new Set(o.map(e=>e.nearAccountId))],l=r?mb(r):null;return{walletIds:s,accountIds:c,accounts:o,lastUsedAccount:_b([...i,...l?[l]:[]])}}function cC(e){if(e.record.status!==`active`)return null;switch(e.kind){case`passkey`:return{walletId:e.record.walletId,authMethod:`passkey`};case`email_otp`:{let t=e.presentation.email.kind===`verified`?String(e.presentation.email.address):null;return{walletId:e.record.walletId,authMethod:`email_otp`,emailAddress:t}}default:return Q(e)}}function lC(e){let t=[];for(let n of e){let e=cC(n);e&&t.push(e)}return t}async function uC(e){return lC(await fC(e,await G.listLocalWalletAuthMethodProjectionsV2ForWallet(e)))}function dC(e){return e.kind===`email_otp`&&e.record.status===`active`&&e.presentation.email.kind===`unavailable`}async function fC(e,t){let n=[];for(let e of t)dC(e)&&n.push(e);if(n.length===0)return[...t];let r=w(await os(G,e));if(!r.ok)return[...t];let i=!1;for(let t of n){let n=await G.retainVerifiedEmailOtpLocalPresentation({walletId:e,walletAuthMethodId:t.record.walletAuthMethodId,emailAddress:r.value});switch(n.kind){case`retained`:i=!0;break;case`not_retained`:break;default:Q(n)}}return i?await G.listLocalWalletAuthMethodProjectionsV2ForWallet(e):[...t]}async function pC(){let e=await G.listWalletSelectionWalletIds();return(await Promise.all([...new Set(e)].map(uC))).flat()}async function mC(e){let{signingEngine:t}=e,n=t.readWalletAuthenticationState(),r,i=!1,a=!1;if(n.kind===`authenticated`){try{await t.advanceWalletLockGeneration(n.walletId)}catch(e){r=e,i=!0}try{await t.retireActiveWalletSessionAuthorizationForLock(n.walletId)}catch(e){i||=(r=e,!0)}}try{a=t.clearWalletAuthenticationIfCurrent(n)}catch(e){i||=(r=e,!0)}if(a){try{t.getNonceCoordinator().clearAll()}catch{}try{t.clearThresholdEcdsaSigningQueue()}catch{}}try{await t.clearVolatileWarmSigningMaterial(n.kind===`authenticated`?n.walletId:void 0)}catch(e){i||=(r=e,!0)}if(i)throw r}async function hC(e){try{await(await import(`./registration-CeOmKyCG.js`).then(e=>e.o)).resumeNearRegistrationAfterUnlock(e)}catch(e){console.warn(`[login] NEAR continuation could not start`,e instanceof Error?e.message:`module unavailable`)}finally{new Uint8Array(e.ownedFactorSecret).fill(0)}}let gC=null,_C=null;function vC(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function yC(e,t){let n=e[t];if(typeof n!=`string`||n.length===0||n.trim()!==n)throw Error(`${t} must be a non-empty canonical string`);return n}function bC(e,t,n){if(Object.keys(e).length!==t.size)throw Error(`${n} fields are invalid`);for(let r of t)if(!Object.hasOwn(e,r))throw Error(`Missing ${n} field: ${r}`)}function xC(e,t){if(typeof e!=`string`||e.length===0||e.trim()!==e)throw Error(`${t} must be a canonical HTTP origin`);let n;try{n=new URL(e)}catch{throw Error(`${t} must be a canonical HTTP origin`)}if(n.protocol!==`https:`&&n.protocol!==`http:`||n.origin!==e||n.pathname!==`/`||n.search!==``||n.hash!==``)throw Error(`${t} must be a canonical HTTP origin`);return n.origin}function SC(e){if(typeof e!=`string`||e.length===0||e.trim()!==e)throw Error(`relayUrl must be a non-empty canonical string`);return l(e)}function CC(e){if(!Number.isSafeInteger(e)||Number(e)<=Date.now())throw Error(`hosted-wallet Wallet Session is expired or invalid`);return Number(e)}function wC(e,t){let n=vC(e);if(bC(n,new Set([`ok`,`code`,`message`]),`hosted-wallet exchange failure`),n.ok!==!1)throw Error(`hosted-wallet exchange failure is invalid`);let r=yC(n,`code`),i=yC(n,`message`),a=Error(i);return a.code=r,a.status=t,a}function TC(e){if(typeof e!=`string`||!/^wsh_[A-Za-z0-9_-]{43}$/.test(e))throw Error(`hosted-wallet operationCredential.token is invalid`);return e}function EC(e){let t=pt(e);if(!t.ok)throw Error(`walletSessionId is invalid: ${t.error.message}`);return t.value}function DC(e){let t=vC(e);if(bC(t,new Set([`kind`,`home`,`token`,`walletSessionId`]),`hosted-wallet operationCredential`),t.kind!==`opaque_hosted_wallet_session_operation_credential_v1`)throw Error(`hosted-wallet operationCredential.kind is invalid`);return{kind:t.kind,home:Ne(t.home),token:TC(t.token),walletSessionId:EC(t.walletSessionId)}}function OC(e){let t=vC(e);if(t.ok!==!0)throw wC(t,400);bC(t,new Set([`ok`,`walletSessionId`,`operationCredential`,`expiresAtMs`]),`hosted-wallet session redemption response`);let n=EC(t.walletSessionId),r=DC(t.operationCredential);if(r.walletSessionId!==n)throw Error(`hosted-wallet operationCredential does not identify its parent Wallet Session`);return{operationCredential:r,expiresAtMs:CC(t.expiresAtMs)}}async function kC(e){try{return await e.json()}catch{return null}}function AC(e){_C=xC(e,`adopted parent origin`)}function jC(e){let t=gC;if(t){if(t.expiresAtMs<=Date.now()||t.appOrigin!==_C||t.walletOrigin!==window.location.origin||e!==void 0&&t.relayUrl!==SC(e)){gC=null;return}return t.operationCredential}}function MC(){gC=null,_C=null}function NC(e){return JSON.stringify({exchangeCode:e.exchangeCode,nonce:e.nonce,appOrigin:e.appOrigin,walletOrigin:e.walletOrigin})}async function PC(e,t){let n=rt(e),r=SC(t);if(SC(n.relayUrl)!==r)throw Error(`Hosted-wallet redemption relayUrl does not match its request boundary`);if(n.walletOrigin!==window.location.origin)throw Error(`Hosted-wallet redemption walletOrigin does not match the wallet host`);if(_C===null||n.appOrigin!==_C)throw Error(`Hosted-wallet redemption appOrigin does not match the adopted iframe parent`);let i=await fetch(a(r,`/wallet/session/exchange/redeem`),{method:`POST`,headers:{"Content-Type":`application/json`,...n.home.kind===`regional`?{"X-Seams-Wallet-Region":n.home.region}:{}},body:NC(n)}),o=await kC(i);if(!i.ok)throw wC(o,i.status);let s=OC(o),c={kind:`active_hosted_wallet_seams_session`,operationCredential:s.operationCredential,expiresAtMs:s.expiresAtMs,relayUrl:r,appOrigin:n.appOrigin,walletOrigin:n.walletOrigin};return gC=c,c}async function FC(e,t){switch(t.state){case`unavailable`:return;case`settled`:await _s(e,t.generation);return;case`moving`:await _s(e,t.move.destinationGeneration);return;case`completed`:await _s(e,t.destinationGeneration);return;default:throw Error(`Unsupported wallet placement observation`)}}async function IC(e,t,n){let r=e.readAuthentication();if(await FC(t,n),r.kind!==`authenticated`||r.walletId!==t)return;let i=LC(n);if(i===null)return;let a=await G.resolveSelectedWalletAuthority(t);if(a.kind!==`resolved`)return;let o=await K.readExactWithOperationCredential({walletId:t,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId});o.kind===`found`&&o.operationCredential.ownershipGeneration<i&&e.readAuthentication()===r&&await e.lockWallet()}function LC(e){switch(e.state){case`unavailable`:return null;case`settled`:return e.generation;case`completed`:return e.destinationGeneration;case`moving`:return e.move.progress.availability===`active`?e.move.destinationGeneration:null;default:throw Error(`Unsupported wallet activation observation`)}}function RC(e){if(!zC(e))throw Error(`Wallet move identity is invalid`);return e}function zC(e){return typeof e==`string`&&/^wmove_[A-Za-z0-9_-]{43}$/u.test(e)}function BC(e){let t=M(e,`Wallet move request`),n=o(t.walletId);if(!n.ok||Object.keys(t).length!==4)throw Error(`Wallet move request is invalid`);return{walletId:n.value,moveId:RC(t.moveId),destinationRegion:HC(t.destinationRegion),expectedGeneration:UC(t.expectedGeneration)}}function VC(e){let t=M(e,`Wallet placement`);switch(t.state){case`settled`:if(Object.keys(t).length!==4)break;return{state:`settled`,region:HC(t.region),generation:UC(t.generation),nextMoveAtMs:Ee(t.nextMoveAtMs,`Next relocation time`)};case`unavailable`:if(Object.keys(t).length!==2||t.code!==`not_found`&&t.code!==`wallet_not_established`)break;return{state:`unavailable`,code:t.code};case`moving`:{if(Object.keys(t).length!==2)break;let e=M(t.move,`Wallet relocation`);if(Object.keys(e).length!==8)break;let{moveId:n,sourceRegion:r,destinationRegion:i,sourceGeneration:a,destinationGeneration:o,admittedAtMs:s}=qC(e),c=Ee(e.nextMoveAtMs,`Next relocation time`);if(c<s)break;return{state:`moving`,move:{moveId:n,sourceRegion:r,destinationRegion:i,sourceGeneration:a,destinationGeneration:o,admittedAtMs:s,nextMoveAtMs:c,progress:WC(e.progress)}}}}throw Error(`Wallet placement response is invalid`)}function HC(e){switch(e){case`US`:case`WEUR`:case`APAC`:case`OC`:return e;default:throw Error(`Wallet region is invalid`)}}function UC(e){let t=Ee(e,`Wallet placement generation or time`);if(t===0)throw Error(`Wallet placement generation or time must be positive`);return t}function WC(e){let t=M(e,`Wallet relocation progress`);if(Object.keys(t).length!==3)throw Error(`Wallet relocation progress fields are invalid`);let n=GC(t.execution);switch(t.state){case`freezing`:case`copying`:case`verified`:case`activating`:if(t.availability===`paused`)return{state:t.state,availability:`paused`,execution:n};break;case`cleanup`:if(t.availability===`active`)return{state:`cleanup`,availability:`active`,execution:n};break}throw Error(`Wallet relocation availability is invalid`)}function GC(e){let t=M(e,`Wallet relocation execution`);switch(t.state){case`ready`:case`running`:if(Object.keys(t).length===1)return{state:t.state};break;case`retry_wait`:if(Object.keys(t).length!==3)break;if(t.code===`transport_unavailable`||t.code===`authority_unavailable`)return{state:`retry_wait`,code:t.code,retryAtMs:UC(t.retryAtMs)};break;case`blocked`:if(Object.keys(t).length!==2)break;switch(t.code){case`transport_unavailable`:case`authority_unavailable`:case`identity_conflict`:case`receipt_conflict`:case`content_conflict`:return{state:`blocked`,code:t.code}}}throw Error(`Wallet relocation execution is invalid`)}function KC(e,t){let n=M(e,`Wallet move status`);if(n.state===`moving`){let e=VC(n);if(e.state!==`moving`||e.move.moveId!==t)throw Error(`Wallet move identity changed`);return e}if(n.state!==`completed`||Object.keys(n).length!==8)throw Error(`Wallet move status is invalid`);let{moveId:r,sourceRegion:i,destinationRegion:a,sourceGeneration:o,destinationGeneration:s,admittedAtMs:c}=qC(n),l=UC(n.completedAtMs);if(r!==t||l<c)throw Error(`Wallet move completion is invalid`);return{state:`completed`,moveId:r,sourceRegion:i,destinationRegion:a,sourceGeneration:o,destinationGeneration:s,admittedAtMs:c,completedAtMs:l}}function qC(e){let t=RC(e.moveId),n=HC(e.sourceRegion),r=HC(e.destinationRegion),i=UC(e.sourceGeneration),a=UC(e.destinationGeneration),o=UC(e.admittedAtMs);if(n===r||a!==i+1)throw Error(`Wallet move generations or regions are invalid`);return{moveId:t,sourceRegion:n,destinationRegion:r,sourceGeneration:i,destinationGeneration:a,admittedAtMs:o}}function JC(e){return`wallet_move_request:${e}`}async function YC(e){let t=await G.getAppState(JC(e));if(t===void 0)return null;let n=BC(t);if(n.walletId!==e)throw Error(`Stored wallet move identity is invalid`);return n}async function XC(e){await G.setAppState(JC(e.walletId),{walletId:e.walletId,moveId:e.moveId,destinationRegion:e.destinationRegion,expectedGeneration:e.expectedGeneration})}var ZC=class extends Error{constructor(e,t){super(`Owner Router request failed: ${t}`),this.code=e,this.name=`WalletHostOwnerRequestTransportError`}};function QC(e){let t=$C(e);return{ownerAuthorization:{authenticateOwnerForLinkingV1:async e=>await tw(t,e)},ownerRequest:{requestOwnerV1:async e=>await nw(t,e)},managementRequest:{request:async e=>await rw(t,e)}}}function $C(e){let t=String(e.relayerUrl||``).trim().replace(/\/+$/,``);if(!t)throw Error(`Wallet-host device linking requires a Router URL`);return{...e,baseUrl:t}}function ew(){return new X(`wallet_unlock_required`,Z.WALLET_UNLOCK_REQUIRED,`authorization`)}async function tw(e,t){let n=e.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw ew();await tn(n.walletId);let r=await iw(e,n.walletId),i=await aw(e,r,{method:`POST`,canonicalPath:`/wallet/device-linking/v1/owner-authorization`,body:Mi({payload:t.payload,requestedAtMs:t.requestedAtMs})});if(i.status<200||i.status>=300)throw Error(mw(i));let a=sw(i.body,r),o=me(t.payload.requestedPermission,`export_keys`)&&a.sourceSignerManifest.keyFamilies.some(e=>e===`ed25519`),s=o?e.readUnlockedEd25519ExportRootCapabilityV1(n.walletId):void 0;if(o&&(!s||s.walletId!==String(n.walletId)||s.walletSessionId!==String(r.operationCredential.walletSessionId)||s.expiresAtMs<=Date.now()))throw ew();if(o){if(!s)throw ew();return{...a,exportRootRequirement:`required`,ed25519ExportRootCapability:s}}return{...a,exportRootRequirement:`not_required`}}async function nw(e,t){if(t.authentication.source.kind!==`wallet_session`)throw Error(`Wallet-host device linking requires a reusable owner Wallet Session`);let n=e.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw ew();let r=await iw(e,n.walletId);if(t.authentication.source.walletSessionId!==r.operationCredential.walletSessionId||t.authentication.source.authorizationId!==r.record.authorizationId)throw Error(`Owner Wallet Session identity changed after authorization`);return await aw(e,r,t)}async function rw(e,t){return await aw(e,await iw(e,t.walletId),t)}async function iw(e,t){let n=await e.resolveSelectedWalletAuthority(t);if(n.kind!==`resolved`)throw ew();let{selection:r,authMethod:i,authority:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==i.walletAuthMethodId||i.walletId!==t||i.walletAuthorityId!==a.authorityId||i.status!==`active`||a.walletId!==t||a.state!==`active`)throw ew();let o=await e.walletSessions.readExactWithOperationCredential({walletId:t,authorityId:a.authorityId,authMethodId:i.walletAuthMethodId});switch(o.kind){case`found`:break;case`missing`:throw ew();case`upgrade_required`:throw new Cs(`Stored owner Wallet Session requires a newer client`);default:throw Error(`Unsupported owner Wallet Session read result`)}if(o.record.authorityDigestB64u!==a.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.revocationEpoch||o.record.expiresAtMs<=Date.now())throw ew();return o}async function aw(e,t,n){return await ow(e,t.operationCredential.token,n)}async function ow(e,t,n){let r=await e.http.request({method:n.method,url:`${e.baseUrl}${n.canonicalPath}`,headers:{authorization:`Bearer ${t}`},...n.body===void 0?{}:{body:n.body}});if(!r.ok)throw new ZC(r.code,r.message);return r.value}function sw(e,t){let n=uw(e),r=fw(n.authentication);if(r.kind!==`link_session_authenticated_request_v1`)throw Error(`Owner authorization authentication kind is invalid`);let i=ji(r.source),a=ji(n.ownerAuthorization);cw(i,t),lw(i,a);let s={kind:`link_session_authenticated_request_v1`,source:i,proofDigestB64u:St(r.proofDigestB64u)},c=o(n.walletId);if(!c.ok||c.value!==t.record.walletId)throw Error(`Owner authorization wallet identity changed`);return{authentication:s,walletId:c.value,ownerAuthorization:a,sourceSignerManifest:_a(n.sourceSignerManifest),expiresAtMs:_w(n.expiresAtMs,`expiresAtMs`)}}function cw(e,t){if(e.kind!==`wallet_session`)throw Error(`Owner authorization did not return a Wallet Session source`);if(e.walletSessionId!==t.operationCredential.walletSessionId)throw Error(`Owner authorization Wallet Session id changed`);if(e.authorizationId!==t.record.authorizationId)throw Error(`Owner authorization id changed`)}function lw(e,t){if(e.kind!==`wallet_session`||t.kind!==`wallet_session`||e.walletSessionId!==t.walletSessionId||e.authorizationId!==t.authorizationId)throw Error(`Owner authorization source changed`)}function uw(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!dw(e))throw Error(`Owner authorization response has unexpected fields`);return e}function dw(e){return Object.keys(e).sort().join(`|`)===`authentication|expiresAtMs|ownerAuthorization|sourceSignerManifest|walletId`}function fw(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Owner authorization response must be an object`);if(!pw(e))throw Error(`Owner authorization response has unexpected fields`);return e}function pw(e){return Object.keys(e).sort().join(`|`)===`kind|proofDigestB64u|source`}function mw(e){let t=hw(e.body);return t?`Owner authorization failed: ${t}`:`Owner authorization failed with HTTP ${e.status}`}function hw(e){return typeof e!=`object`||!e||Array.isArray(e)||!gw(e)||e.ok!==!1||typeof e.code!=`string`?null:typeof e.message==`string`&&e.message.trim()?e.message:null}function gw(e){return Object.keys(e).sort().join(`|`)===`code|message|ok`}function _w(e,t){if(!Number.isSafeInteger(e)||Number(e)<=0)throw Error(`${t} must be a positive safe integer`);return Number(e)}const vw=`/wallet/placement/v1/relocations`;function yw(e){if(e.host.readAuthentication()!==e.authentication)throw Error(`Wallet authentication changed during relocation approval`)}function bw(e,t){let n=M(e,`Wallet relocation challenge`);if(n.kind!==`challenge`||n.walletId!==t.walletId||n.moveId!==t.moveId||n.destinationRegion!==t.destinationRegion||n.expectedGeneration!==t.expectedGeneration||typeof n.requestDigest!=`string`||!/^[a-f0-9]{64}$/u.test(n.requestDigest)||typeof n.expiresAtMs!=`number`||!Number.isSafeInteger(n.expiresAtMs)||n.expiresAtMs<=Date.now())throw Error(`Wallet relocation challenge does not match the requested move`);let r=St(n.challengeB64u),i=M(n.factor,`Wallet relocation factor`);if(i.kind===`passkey`)return{challengeB64u:r,expiresAtMs:n.expiresAtMs,factor:{kind:`passkey`}};if(i.kind!==`email_otp`)throw Error(`Wallet relocation factor is unsupported`);let a=M(i.delivery,`Wallet relocation email delivery`);return{challengeB64u:r,expiresAtMs:n.expiresAtMs,factor:{kind:`email_otp`,challengeId:D(i.challengeId,`OTP challenge`),emailHint:D(a.emailHint,`Email hint`)}}}async function xw(e){yw(e);let t=await e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:`${vw}/challenge`,body:e.request});if(yw(e),t.status!==200)throw Error(`Wallet relocation challenge failed (${t.status})`);return bw(t.body,e.request)}async function Sw(e){let t=await xw(e);if(t.factor.kind!==`email_otp`)throw Error(`Wallet relocation factor changed`);return{challengeId:t.factor.challengeId,emailHint:t.factor.emailHint}}async function Cw(e,t){switch(t.factor.kind){case`passkey`:{let n=await G.resolveSelectedWalletAuthority(e.request.walletId);if(yw(e),n.kind!==`resolved`||n.authMethod.kind!==`passkey`)throw Error(`Wallet relocation requires the selected owner passkey`);return{kind:`passkey`,credential:Os(await e.host.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.request.walletId,challengeB64u:t.challengeB64u,allowCredentials:[{id:n.authMethod.credentialIdB64u,type:`public-key`,transports:[]}],includeSecondPrfOutput:!1}))}}case`email_otp`:{let n=await e.host.signingEngine.requestEmailOtpOwnerConfirmation({purpose:`move_wallet`,walletId:e.request.walletId,emailAddress:t.factor.emailHint,emailHint:t.factor.emailHint,challengeId:t.factor.challengeId,confirmerText:{title:`Move wallet region`,body:`Enter the code to move this wallet to ${e.request.destinationRegion}.`},onResend:Sw.bind(null,e)});return{kind:`email_otp`,challengeId:n.challengeId,otpCode:n.otpCode}}default:return ww(t.factor)}}function ww(e){throw Error(`Unsupported wallet relocation factor: ${String(e)}`)}async function Tw(e,t){return yw(e),e.host.managementRequest.request({walletId:e.request.walletId,method:`POST`,canonicalPath:vw,body:t})}async function Ew(e,t){let n=BC(t),r=e.readAuthentication();if(r.kind!==`authenticated`||r.walletId!==n.walletId)return{ok:!1,code:`wallet_unlock_required`};let i={host:e,request:n,authentication:r},a=await e.managementRequest.request({walletId:n.walletId,method:`GET`,canonicalPath:`${vw}/${encodeURIComponent(n.moveId)}?walletId=${encodeURIComponent(n.walletId)}`});if(yw(i),a.status===200)return Dw(a.body,i);if(a.status===401||a.status===403)return{ok:!1,code:`unauthorized`};if(a.status!==404)return{ok:!1,code:`transport_unavailable`};await XC(n),yw(i);let o=await Tw(i,{walletId:n.walletId,moveId:n.moveId,destinationRegion:n.destinationRegion,expectedGeneration:n.expectedGeneration,sourceProof:null});if(yw(i),o.status===200)return Dw(o.body,i);if(o.status===401||o.status===403)return{ok:!1,code:`unauthorized`};if(!Ow(o))return{ok:!1,code:`transport_unavailable`};let s=await xw(i),c=await Cw(i,s);if(yw(i),s.expiresAtMs<=Date.now())throw Error(`Wallet relocation approval expired`);let l={walletId:n.walletId,moveId:n.moveId,destinationRegion:n.destinationRegion,expectedGeneration:n.expectedGeneration,sourceProof:c},u;try{u=await Tw(i,l)}catch(e){if(!(e instanceof ZC)||e.code!==`network_error`)throw e;u=await Tw(i,l)}return yw(i),u.status===401||u.status===403?{ok:!1,code:`unauthorized`}:u.status===200?Dw(u.body,i):{ok:!1,code:`transport_unavailable`}}async function Dw(e,t){let n=t.request,r;try{r=KC(e,n.moveId);let t=r.state===`moving`?r.move:r;if(t.destinationRegion!==n.destinationRegion||t.sourceGeneration!==n.expectedGeneration)throw Error(`Wallet relocation conflicts with the request`)}catch{return{ok:!1,code:`invalid_response`}}return await IC(t.host,n.walletId,r),t.host.readAuthentication()===t.authentication?{ok:!0,status:r}:{ok:!1,code:`wallet_unlock_required`}}function Ow(e){if(e.status!==409)return!1;try{let t=M(e.body,`Wallet relocation approval result`);return t.ok===!1&&t.code===`owner_approval_required`}catch{return!1}}function kw(e){return{getLastMoveRequest:YC,move:Ew.bind(null,e),get:Aw.bind(null,e),getMove:Nw.bind(null,e)}}async function Aw(e,t){let n=e.readAuthentication(),r=await Pw(e,t,`/wallet/placement/v1?walletId=${encodeURIComponent(t)}`,jw);return r.ok&&await IC(e,t,r.placement),e.readAuthentication()===n?r:{ok:!1,code:`wallet_unlock_required`}}function jw(e){return{ok:!0,placement:VC(e)}}function Mw(e,t){return{ok:!0,status:KC(t,e)}}async function Nw(e,t,n){let r=e.readAuthentication(),i=await Pw(e,t,`/wallet/placement/v1/relocations/${encodeURIComponent(n)}?walletId=${encodeURIComponent(t)}`,Mw.bind(null,n));return i.ok&&await IC(e,t,i.status),e.readAuthentication()===r?i:{ok:!1,code:`wallet_unlock_required`}}async function Pw(e,t,n,r){let i=e.readAuthentication();if(i.kind!==`authenticated`||i.walletId!==t)return{ok:!1,code:`wallet_unlock_required`};let a;try{a=await e.managementRequest.request({walletId:t,method:`GET`,canonicalPath:n})}catch(t){return t instanceof X&&t.code===Z.WALLET_UNLOCK_REQUIRED||e.readAuthentication()!==i?{ok:!1,code:`wallet_unlock_required`}:{ok:!1,code:`transport_unavailable`}}if(e.readAuthentication()!==i)return{ok:!1,code:`wallet_unlock_required`};if(a.status===401||a.status===403)return{ok:!1,code:`unauthorized`};if(a.status!==200)return{ok:!1,code:`transport_unavailable`};try{return r(a.body)}catch{return{ok:!1,code:`invalid_response`}}}function Fw(e){let t;return()=>(t??=e().catch(e=>{throw t=void 0,e}),t)}function Iw(){return{ecdsaSessions:{exportArtifactsByLane:new Map}}}function Lw(e){let t=Fw(async()=>{let{createWarmSessionHydrationService:t}=await import(`./warmSessionHydration-CY9ofEGr.js`);return t({getWarmSessionMaterialWriter:e.ui.warmSessions.getWarmSessionMaterialWriter})}),n={hydrateSigningSession:async e=>(await t()).hydrateSigningSession(e)},r=Fw(async()=>{let{createRegistrationAccountsService:t}=await import(`./registrationAccounts-BfO6Ztye.js`);return t(e.registration.accountLifecycle)}),i={storeUserData:async e=>(await r()).storeUserData(e),getAllUsers:async()=>(await r()).getAllUsers(),getUserBySignerSlot:async(e,t)=>(await r()).getUserBySignerSlot(e,t),getLastUser:async()=>(await r()).getLastUser(),nearAuthenticatorsByAccount:async e=>(await r()).nearAuthenticatorsByAccount(e),setLastUser:async(e,t)=>(await r()).setLastUser(e,t),activateAuthenticatedWalletState:async e=>(await r()).activateAuthenticatedWalletState(e),setWalletNearProvisioningState:async e=>(await r()).setWalletNearProvisioningState(e),getWalletNearProvisioningState:async e=>(await r()).getWalletNearProvisioningState(e),storeAuthenticator:async e=>(await r()).storeAuthenticator(e),rollbackUserRegistration:async e=>(await r()).rollbackUserRegistration(e),hasPasskeyCredential:async e=>(await r()).hasPasskeyCredential(e),storeWalletEd25519RegistrationData:async e=>(await r()).storeWalletEd25519RegistrationData(e),storeWalletEd25519RecoveryRegistrationData:async e=>(await r()).storeWalletEd25519RecoveryRegistrationData(e),storeWalletEmailOtpEd25519RegistrationData:async e=>(await r()).storeWalletEmailOtpEd25519RegistrationData(e),storeWalletEmailOtpMixedRegistrationData:async e=>(await r()).storeWalletEmailOtpMixedRegistrationData(e),finalizeWalletEd25519SignerRegistration:async e=>(await r()).finalizeWalletEd25519SignerRegistration(e),rollbackWalletEd25519SignerRegistration:async e=>(await r()).rollbackWalletEd25519SignerRegistration(e)},a=Fw(async()=>{let{createEcdsaWalletRecordsService:t}=await import(`./ecdsaWalletRecords-BmhuJF1y.js`);return t({accountLifecycle:e.registration.accountLifecycle})}),o={storeWalletEcdsaSignerRecords:async e=>(await a()).storeWalletEcdsaSignerRecords(e),storeWalletEmailOtpEcdsaSignerRecords:async e=>(await a()).storeWalletEmailOtpEcdsaSignerRecords(e),storeWalletEcdsaRecoverySignerRecords:async e=>(await a()).storeWalletEcdsaRecoverySignerRecords(e),finalizeWalletEcdsaRegistration:async e=>(await a()).finalizeWalletEcdsaRegistration(e),storeWalletEmailOtpEcdsaRegistrationData:async e=>(await a()).storeWalletEmailOtpEcdsaRegistrationData(e)},s={signNear:async t=>{let{signNear:n}=await import(`./signNear-B_UcqMRf.js`).then(e=>e.n);return n(e.signing.near.getDeps(),t)}},c={signEvmFamily:async t=>{let{signEvmFamily:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastAccepted:async t=>{let{reportTempoBroadcastAccepted:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoBroadcastRejected:async t=>{let{reportTempoBroadcastRejected:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoFinalized:async t=>{let{reportTempoFinalized:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reportTempoDroppedOrReplaced:async t=>{let{reportTempoDroppedOrReplaced:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)},reconcileTempoNonceLane:async t=>{let{reconcileTempoNonceLane:n}=await import(`./signEvmFamily-C4XMiSue.js`).then(e=>e.s);return n(e.signing.evmFamily.getDeps(),t)}};return{...e,services:{warmSessions:n,registrationAccounts:i,nearSigning:s,evmFamilySigning:c,ecdsaWalletRecords:o}}}function Rw(e){return{network:e.network,registration:e.registration,signing:e.signing}}function zw(e){return Cm({indexedDB:G,workerCtx:e})}function Bw(e){let t=Iw(),n=Rw(e.config);return Lw({runtimePorts:zw(e.workerCtx),workers:{emailOtp:e.workerCtx},signing:{near:{getDeps:e.getNearSigningDeps},evmFamily:{getDeps:e.getEvmFamilySigningDeps}},registration:{accountLifecycle:e.accountLifecycle,ecdsaBootstrapStore:e.ecdsaBootstrapStore},ui:{warmSessions:{getWarmSessionMaterialWriter:e.getWarmSessionMaterialWriter}},config:n,state:t})}var Vw=class extends Error{code=`browser_capability_unavailable`;selection;constructor(e){super(`Browser capability ${e.operation.capabilityKind} is unavailable for ${e.operation.operationKind}: ${e.reason}`),this.name=`BrowserCapabilityUnavailableError`,this.selection=e}};function Hw(e){return{kind:`selected`,operation:e}}function Uw(e,t){return{kind:`disabled`,operation:e,reason:t}}function Ww(e,t){switch(t.operationKind){case yt.signTransaction:case yt.signDelegateAction:case yt.signNep413Message:{let n=ut(t.operationKind);return e.signing.routerAb.normalSigning.mode===`enabled`?Hw(n):Uw(n,`router_ab_normal_signing_disabled`)}case yt.exportKey:return Hw(ut(t.operationKind))}}function Gw(e,t){let n=Fr(e.network.chains).some(e=>Pr(e,t.chainTarget));switch(t.operationKind){case _t.signTransaction:case _t.exportKey:{let e=mt(t.operationKind);return n?Hw(e):Uw(e,`ecdsa_target_not_configured`)}}}function Kw(e,t){switch(t.capabilityKind){case bt.vaultAccess:return Uw(vt(t.operationKind),`capability_not_deployed`);case bt.nearEd25519MpcSigning:return Ww(e,t);case bt.evmEcdsaMpcSigning:return Gw(e,t)}}function qw(e,t){let n=Kw(e,t);switch(n.kind){case`selected`:return n.operation;case`disabled`:throw new Vw(n)}}function Jw(e){return typeof e==`object`&&!!e&&`kind`in e}function Yw(e,t){return typeof t==`string`?e.networkSlug===t:`chainId`in t?e.chainId===t.chainId:e.kind===t.family}function Xw(e){return typeof e==`string`?e:Jw(e)?z(e):`chainId`in e?`chainId ${e.chainId}`:`family ${e.family}`}function Zw(e,t){if(Jw(t))return jr(t);let n=Fr(e),r=n.filter(e=>Yw(e,t)),i=r[0];if(r.length===1&&i)return i;if(r.length>1)throw Error(`[threshold-ecdsa] ambiguous chain selector "${Xw(t)}": matched ${r.map(z).join(`, `)}. Name one exact network slug instead.`);let a=n.map(e=>e.networkSlug).join(`, `);throw Error(`[threshold-ecdsa] no configured ECDSA chain matches "${Xw(t)}". Configured chains: ${a||`(none)`}.`)}function Qw(e,t){let n=Zw(e,t);if(n.kind!==`tempo`)throw Error(`[threshold-ecdsa] expected a Tempo chain target, resolved ${z(n)}`);return n}function $w(e,t){let n=Zw(e,t);if(n.kind!==`evm`)throw Error(`[threshold-ecdsa] expected an EVM chain target, resolved ${z(n)}`);return n}function eT(e,t){switch(t.kind){case`ed25519`:qw(e,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.exportKey});return;case`ecdsa`:qw(e,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.exportKey,chainTarget:t.chainTarget});return}}function tT(e){return{exportKey:nT.bind(null,e)}}async function nT(e,t){let n=t.options??{};if(t.kind===`ed25519`){let r={kind:`ed25519`,...await e.currentWallet.nearSubject(t)};eT(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind!==`ed25519`)throw Error(`[key-export] expected an Ed25519 lane, received ${i.kind}`);return await e.domain.exportKeypairWithUI({...r,laneIdentity:i.laneIdentity,materialActivation:i.materialActivation,options:n}),{kind:`exported`}}let r={kind:`ecdsa`,walletSession:await e.currentWallet.walletSession(t.walletSession),chainTarget:Zw(e.configs.network.chains,t.chainTarget)};eT(e.configs,r);let i=await e.domain.resolveExactKeyExportLane(r);if(i.kind!==`ecdsa`)throw Error(`[key-export] expected an ECDSA lane, received ${i.kind}`);return await e.domain.exportKeypairWithUI({...r,laneIdentity:i.laneIdentity,options:n}),{kind:`exported`}}function rT(e,t,n){let r=String(e[t]||``).trim();if(!r)throw Error(`${n} returned missing ${t}`);return r}function iT(e,t){let n=typeof e==`number`?e:Number(e);if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} returned invalid signerSlot`);return Math.floor(n)}function aT(e,t){if(!O(e))throw Error(`${t} returned missing walletBinding`);let n=ko(rT(e,`walletId`,t)),r=Or(rT(e,`nearAccountId`,t)),i=Oo(rT(e,`nearEd25519SigningKeyId`,t)),a=rT(e,`rpId`,t),o=m(rT(e,`credentialIdB64u`,t));if(!o.ok)throw Error(`${t} returned invalid credentialIdB64u`);let s=iT(e.signerSlot,t);return{walletId:n,nearAccountId:r,nearEd25519SigningKeyId:i,rpId:a,credentialIdB64u:o.value,signerSlot:s}}function oT(e,t){return aT(O(e.walletBinding)?e.walletBinding:e,t)}function sT(e,t,n){if(String(e.walletId)!==String(t.walletId)||String(e.nearAccountId)!==String(t.nearAccountId)||String(e.nearEd25519SigningKeyId)!==String(t.nearEd25519SigningKeyId)||e.rpId!==t.rpId||e.signerSlot!==t.signerSlot)throw Error(`${n} returned mismatched wallet binding`)}function cT(e){return{success:!1,error:e}}function lT(e,t){return globalThis.fetch(e,t)}function uT(e){try{e.onEvent?.(Yo({flowId:e.flowId,...e.event}))}catch{}}function dT(e){let t=String(e.configs.network.relayer?.url||``).trim();if(!t)throw Error(`missing_relayer_url`);return t}function fT(e){let t=i(e.signingEngine.getRpId());if(!t.ok)throw Error(`missing_rp_id`);return t.value}function pT(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=typeof n==`string`?n.trim():``;e&&t.push(e)}return t}function mT(e,t){let n=String(e[t]||``).trim();if(!n)throw Error(`sync-account ${t} is required`);return n}function hT(e){if(!E(e))throw Error(`sync-account ECDSA chain target is invalid`);let t=Number(e.chainId);if(!Number.isSafeInteger(t)||t<=0)throw Error(`sync-account ECDSA chain id is invalid`);if(e.kind===`evm`&&e.namespace===`eip155`)return{kind:`evm`,namespace:`eip155`,chainId:t,networkSlug:String(e.networkSlug||``).trim()||`evm-${t}`};if(e.kind===`tempo`)return{kind:`tempo`,chainId:t,networkSlug:String(e.networkSlug||``).trim()||`tempo-${t}`};throw Error(`sync-account ECDSA chain family is invalid`)}function gT(e){if(!Array.isArray(e)||e.length!==2||e[0]!==1||e[1]!==2)throw Error(`sync-account ECDSA participant ids are invalid`);return[1,2]}function _T(e){return e.kind===`sign`&&e.keyFamily===`ecdsa_secp256k1`}function vT(e){for(let t of e)if(_T(t))return t;return null}function yT(e,t){let n=E(e)?e:{},r=n.ecdsaCustody;if(!E(r)||r.kind!==`wallet_custody_ecdsa_sync_continuity_v1`)throw Error(`sync-account ECDSA custody continuity is invalid`);if(!Array.isArray(r.signers))throw Error(`sync-account ECDSA custody signer list is invalid`);let i=[];for(let e of r.signers){if(!E(e)||!E(e.walletKey))throw Error(`sync-account ECDSA custody signer is invalid`);let n=e.walletKey,r=mT(n,`walletId`);if(r!==String(t.walletId))throw Error(`sync-account ECDSA custody signer changed the wallet identity`);i.push({chainTarget:hT(e.chainTarget),walletKey:{walletId:r,keyHandle:mT(n,`keyHandle`),ecdsaThresholdKeyId:mT(n,`ecdsaThresholdKeyId`),signingRootId:mT(n,`signingRootId`),signingRootVersion:mT(n,`signingRootVersion`),relayerKeyId:mT(n,`relayerKeyId`),contextBinding32B64u:mT(n,`contextBinding32B64u`),derivationClientSharePublicKey33B64u:mT(n,`derivationClientSharePublicKey33B64u`),participantIds:gT(n.participantIds),publicCapability:no(n.publicCapability)},activationReceipt:$a(e.activationReceipt),runtimePolicyScope:fe(e.runtimePolicyScope)})}let a=i[0];if(!a){if(n.ecdsaSession!==void 0||n.ecdsaActivationReceipt!==void 0)throw Error(`sync-account returned an ECDSA session without custody continuity`);return{kind:`wallet_custody_ecdsa_sync_continuity_v1`,state:`absent`,signers:[]}}let o=Ya(n.ecdsaSession),s=$a(n.ecdsaActivationReceipt),c=vT(t.walletSession.capabilitySubjects);if(!c||o.session.authorization_id!==t.walletSession.authorizationId||!La(o.public_capability,a.walletKey.publicCapability)||!Ja(s,a.activationReceipt)||!b(c.materialActivation,uo(o.public_capability.material_activation))||o.session.wallet_session_id!==t.session.walletSessionId||o.session.quota_id!==t.session.quotaId||o.session.expires_at_ms!==t.session.expiresAtMs||o.session.remaining_uses!==t.session.remainingUses)throw Error(`sync-account ECDSA session changed the Wallet Session or custody identity`);return{kind:`wallet_custody_ecdsa_sync_continuity_v1`,state:`activated`,signers:[a,...i.slice(1)],sessionActivation:o}}async function bT(e){try{return await e.json()}catch{return null}}async function xT(e){let t=await e.fetch(`${e.relayerUrl}/sync-account/options`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({rp_id:e.rpId,...e.walletId?{account_id:e.walletId}:{}})}),n=await bT(t);if(!t.ok||!E(n)||n.ok!==!0){let e=E(n)?String(n.message||n.code||``):``;throw Error(e||`sync-account/options failed (HTTP ${t.status})`)}let r=String(n.challengeId||``).trim(),i=String(n.challengeB64u||``).trim();if(!r||!i)throw Error(`sync-account/options returned an invalid challenge`);let a=E(n.walletBinding)?oT(n,`sync-account/options`):null,o=pT(n.credentialIds);if(e.walletId&&(!a||o.length===0))throw Error(`No passkey recovery capability found for wallet ${e.walletId}`);return{challengeId:r,challengeB64u:i,credentialIds:o,walletBinding:a}}async function ST(e,t){let n=t?ko(String(t)):null,r=dT(e),i=fT(e),a=await xT({relayerUrl:r,rpId:i,walletId:n?String(n):null,fetch:lT});return Object.freeze({walletId:n?String(n):null,relayerUrl:r,rpId:i,syncOptions:a})}function CT(e){let t=String(e.id||``).trim(),n=String(e.rawId||``).trim();if(!t||!n||t!==n)throw Error(`selected passkey credential identity is invalid`);let r=m(n);if(!r.ok)throw Error(`selected passkey credential identity is invalid`);return r.value}function wT(e,t){if(t===null)return e.credentialIds;if(!e.credentialIds.includes(t))throw Error(`replacement account-sync challenge changed the selected passkey`);return[t]}function TT(e,t){if(typeof e!=`string`||e.trim()!==e||!e)return null;let n=t(e);return n.ok?n.value:null}function ET(e){if(e.response.status!==409||!E(e.raw))return null;let t=e.raw;if(t.ok!==!1||t.code!==`already_committed`||t.kind!==`already_committed`||t.next!==`unlock_exact_method`||[`walletId`,`authorityId`,`walletAuthMethodId`,`mintId`,`authorizationId`,`walletSessionId`,`quotaId`].some(e=>{let n=t[e];return typeof n!=`string`||!n.trim()})||`walletSessionToken`in t||`walletSessionJwt`in t||`sessionKind`in t||`walletSession`in t||`operationCredential`in t||`credential`in t)return null;let n=TT(t.walletId,o),i=TT(t.authorityId,r),a=TT(t.walletAuthMethodId,c),s=TT(t.mintId,ft),l=TT(t.authorizationId,gt),u=TT(t.walletSessionId,pt),d=TT(t.quotaId,dt);return!n||!i||!a||!s||!l||!u||!d||e.expectedWalletId!==null&&n!==e.expectedWalletId?null:{walletId:n,walletAuthMethodId:a}}async function DT(e){let t=await e.fetch(`${e.relayerUrl}/sync-account/verify`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({challengeId:e.challengeId,webauthn_authentication:Os(e.credential)})}),n=await bT(t);if(!t.ok||!E(n)||n.ok!==!0||n.verified!==!0){let r=ET({response:t,raw:n,expectedWalletId:e.expectedWalletId});if(r)return{kind:`already_committed`,walletId:r.walletId,walletAuthMethodId:r.walletAuthMethodId,credentialIdB64u:e.selectedCredentialId};let i=E(n)?String(n.message||n.code||``):``;throw Error(i||`sync-account/verify failed (HTTP ${t.status})`)}let r=oT(n,`sync-account/verify`);e.onRelayVerifySucceeded?.(r);let i=bn(n);return{kind:`verified`,response:{verifiedBinding:r,parsedYaoResponse:i,ecdsaContinuity:yT(n,i)}}}function OT(e){throw Error(`Unexpected recovered capability ownership: ${String(e)}`)}async function kT(e){let t=e.ownership;switch(t.kind){case`caller_owned`:t.recovery.activeClient.dispose(),await e.context.signingEngine.clearVolatileWarmSigningMaterial(t.recovery.parsed.walletId);return;case`registry_owned`:await e.context.signingEngine.clearVolatileWarmSigningMaterial(t.recovery.parsed.walletId);return;case`empty`:case`committed`:return;default:return OT(t)}}function AT(e){e.optionsBinding&&sT(e.optionsBinding,e.verifiedBinding,`sync-account/verify`);let t=e.parsed;if(e.verifiedBinding.rpId!==e.rpId||e.requestedWalletId!==null&&e.requestedWalletId!==e.verifiedBinding.walletId||String(t.walletId)!==String(e.verifiedBinding.walletId)||String(t.nearAccountId)!==String(e.verifiedBinding.nearAccountId)||t.nearEd25519SigningKeyId!==String(e.verifiedBinding.nearEd25519SigningKeyId)||t.credentialIdB64u!==e.verifiedBinding.credentialIdB64u||t.credentialIdB64u!==e.selectedCredentialId||e.expectedWalletAuthMethodId!==null&&String(t.walletAuthMethodId)!==e.expectedWalletAuthMethodId||t.signerSlot!==e.verifiedBinding.signerSlot)throw Error(`recovered Yao capability does not match the verified wallet binding`)}function jT(e){let t=e.capability.registrationContinuity;return{materialActivation:e.capability.materialActivation,lifecycleId:e.capability.lifecycle.lifecycleId,signingRootVersion:e.capability.lifecycle.rootShareEpoch,signingRootId:e.capability.applicationBinding.signing_root_id,signerSetId:e.capability.lifecycle.signerSetId,thresholdSessionId:e.capability.lifecycle.thresholdSessionId,activationTranscriptB64u:P(Uint8Array.from(t.activationTranscript)),activationCapabilityBindingB64u:P(Uint8Array.from(e.capability.activeCapabilityBinding))}}async function MT(e){return await e.load({nearAccountId:String(e.parsed.nearAccountId),signerSlot:e.parsed.signerSlot,expectedRegisteredPublicKeyB64u:P(Uint8Array.from(e.parsed.capability.registeredPublicKey))})}function NT(e){return{kind:Is,applicationBindingDigestB64u:e.applicationBindingDigestB64u,registeredPublicKeyB64u:P(e.metadata.registeredPublicKey),participantIds:e.metadata.participantIds,stateEpoch:String(e.metadata.stateEpoch),walletId:String(e.parsed.walletId),nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:e.parsed.nearEd25519SigningKeyId,signerSlot:e.parsed.signerSlot,signingWorkerId:e.parsed.relayerKeyId,signingWorkerVerifyingShareB64u:P(e.metadata.signingWorkerVerifyingShare)}}function PT(e){return`sealLocalMaterial`in e&&typeof e.sealLocalMaterial==`function`}async function FT(e){let t=$n(e.parsed.walletCustody.envelope);if(!t.ok)throw Error(t.reason);let n=e.ownedFactorSecret.slice(),r=null,i=null,a=null;try{let o=Xt(e.parsed.walletCustody.envelope),c=jT(e.parsed),l=await _n({loadCachedMaterial:MT.bind(void 0,{load:e.loadWalletCustodyEd25519Material,parsed:e.parsed}),activation:c,envelope:o,ownedFactorSecret:n});if(l.kind===`opened`)a=l.activeClient;else{r=e.ownedFactorSecret.slice(),i=e.ownedFactorSecret.slice();let n=await e.rejoinWalletCustodyNearEd25519KeySet({walletId:String(e.parsed.walletId),custodyJson:t.custodyJson,factorSecret:r.buffer,nearEd25519SigningKeyId:e.parsed.nearEd25519SigningKeyId,recoveryBasis:e.parsed.capability,routerOrigin:new URL(e.relayerUrl).origin,walletSessionToken:e.parsed.operationCredential.token}),s=NT({parsed:e.parsed,applicationBindingDigestB64u:n.localMaterial.applicationBindingDigestB64u,metadata:n.metadata});await e.persistWalletCustodyEd25519Material({binding:s,sealed:{ciphertextB64u:n.localMaterial.b64u,nonceB64u:n.localMaterial.nonceB64u}}),a=await xn({material:{binding:s,sealed:{ciphertextB64u:n.localMaterial.b64u,nonceB64u:n.localMaterial.nonceB64u}},activation:Ht(n.metadata),envelope:o,ownedFactorSecret:i})}if(!a)throw Error(`Wallet custody recovery produced no active Ed25519 client`);if(!PT(a))throw Error(`Wallet custody recovery produced an unsealable Ed25519 client`);let u=s(a.metadata().scope.threshold_session_id);if(!u.ok)throw Error(`Wallet custody recovery returned an invalid threshold session identity`);let d=e.parsed.walletCustody.envelope.factor;if(d.kind!==`passkey`)throw Error(`Wallet custody recovery returned a different factor authority`);await br({store:G,activeClient:a,identity:{walletId:String(e.parsed.walletId),nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:String(e.parsed.nearEd25519SigningKeyId),thresholdSessionId:u.value,signerSlot:e.parsed.signerSlot,rpId:d.rpId,credentialIdB64u:d.credentialIdB64u,signingRootId:e.parsed.capability.applicationBinding.signing_root_id,signingRootVersion:e.parsed.capability.lifecycle.rootShareEpoch,signingWorkerId:e.parsed.relayerKeyId},stableServerScope:{relayerKeyId:e.parsed.relayerKeyId,participantIds:e.parsed.session.participantIds,runtimePolicyScope:e.parsed.capability.runtimePolicyScope,routerAbNormalSigning:e.parsed.session.routerAbNormalSigning},passkeyPrfFirstB64u:P(e.ownedFactorSecret)});let f=gn({parsed:e.parsed,relayerUrl:e.relayerUrl,rpId:e.rpId,thresholdSessionId:u.value}),p={activeClient:a,walletSessionState:f,parsed:e.parsed},m=Cc(p.activeClient.metadata());await Wt({persistence:e.sessionPersistence,session:p.walletSessionState,prfFirstB64u:P(e.ownedFactorSecret),ed25519Restore:yn({rpId:d.rpId,nearAccountId:String(e.parsed.nearAccountId),nearEd25519SigningKeyId:String(e.parsed.nearEd25519SigningKeyId),relayerKeyId:e.parsed.relayerKeyId,participantIds:e.parsed.session.participantIds,runtimePolicyScope:e.parsed.session.runtimePolicyScope,signerSlot:e.parsed.signerSlot,routerAbNormalSigning:e.parsed.session.routerAbNormalSigning,credentialIdB64u:d.credentialIdB64u,materialActivation:m}),materialActivation:m});let h=await e.activateCapability({activeClient:p.activeClient,facts:{thresholdSessionId:p.walletSessionState.thresholdSessionId,signer:p.walletSessionState.signingLane.identity.signer,signingRootId:p.walletSessionState.signingRootId,signingRootVersion:p.walletSessionState.signingRootVersion,routerAbNormalSigning:p.walletSessionState.routerAbNormalSigning,runtimePolicyScope:p.walletSessionState.runtimePolicyScope,relayerUrl:p.walletSessionState.relayerUrl}});if(!b(h.materialActivation,m))throw Error(`Passkey Ed25519 registry activation changed during recovery commit`);let g=await fa({authority:e.parsed.foundingAuthority,materialActivation:h.materialActivation,updatedAtMs:Date.now()});return await G.persistFoundingWalletAuthority({authority:g,authMethod:e.parsed.foundingAuthMethod}),await e.sessionPersistence.upsertEd25519YaoPublicCapabilityLaneReference(Vt({walletSessionState:p.walletSessionState,materialActivation:h.materialActivation})),p}catch(e){throw a?.dispose(),e}finally{n.fill(0),r?.fill(0),i?.fill(0)}}function IT(e){let t=F(e);if(t.length!==20)throw Error(`ECDSA custody address must contain 20 bytes`);let n=`0x`;for(let e of t)n+=e.toString(16).padStart(2,`0`);return n}function LT(e){if(e.state===`absent`)return null;let t=e.signers[0],n=new Set;for(let n of e.signers.slice(1))if(n.walletKey.keyHandle!==t.walletKey.keyHandle||!La(n.walletKey.publicCapability,t.walletKey.publicCapability)||!Ja(n.activationReceipt,t.activationReceipt)||!ir(n.runtimePolicyScope,t.runtimePolicyScope))throw Error(`sync-account returned conflicting ECDSA custody identities`);for(let t of e.signers){let e=z(t.chainTarget);if(n.has(e))throw Error(`sync-account returned duplicate ECDSA custody chain targets`);n.add(e)}return t}async function RT(e){let t=LT(e.continuity);if(!t)return;let n=$n(e.parsed.walletCustody.envelope);if(!n.ok)throw Error(n.reason);let r=t.walletKey,i=t.activationReceipt.ecdsa_activation.public_identity,a=e.ownedFactorSecret.slice(),[o,...s]=e.continuity.signers.map(e=>e.chainTarget);if(o)try{let c=await e.signingSurface.rejoinWalletCustodyEvmFamilyKeySet({walletId:r.walletId,custodyJson:n.custodyJson,factorSecret:a.buffer,evmFamilySigningKeySlotId:ao({walletId:r.walletId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion}),applicationBindingDigestB64u:r.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:r.derivationClientSharePublicKey33B64u,relayerPublicIdentityJson:JSON.stringify({relayerKeyId:r.relayerKeyId,relayerPublicKey33B64u:i.server_public_key33_b64u,groupPublicKey33B64u:i.threshold_public_key33_b64u,ethereumAddress:IT(i.ethereum_address20_b64u),relayerShareRetryCounter:i.server_share_retry_counter})});await e.signingSurface.restoreWalletCustodyEcdsaContinuity({authority:e.parsed.authority,chainTargets:[o,...s],walletId:r.walletId,keyHandle:r.keyHandle,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,relayerKeyId:r.relayerKeyId,participantIds:r.participantIds,publicCapability:r.publicCapability,activationReceipt:t.activationReceipt,runtimePolicyScope:t.runtimePolicyScope,readyStateBlobB64u:c.readyStateBlobB64u,publicFacts:c.publicFacts})}finally{a.fill(0)}}async function zT(e){let t=e.walletId===null?null:String(e.walletId).trim();if(e.walletId!==null&&!t)throw Error(`passkey Yao unlock recovery requires a valid walletId`);let n=t?ko(t):null,r=e.prepared??await xT({relayerUrl:e.relayerUrl,rpId:e.rpId,walletId:n?String(n):null,fetch:e.fetch});if(e.prepared&&!e.credential)throw Error(`prepared account-sync challenge requires a CTA credential`);let i=wT(r,e.expectedCredentialIdB64u);e.onPromptStarted?.();let a=e.credential?e.credential:await e.collectCredential({challengeB64u:r.challengeB64u,credentialIds:i});e.onPromptSucceeded?.();let o=CT(a);if(e.expectedCredentialIdB64u!==null&&o!==e.expectedCredentialIdB64u)throw Error(`replacement account-sync assertion changed the selected passkey`);let s=Ts(a);if(!s)throw Error(`selected passkey did not return PRF.first`);e.onRelayVerifyStarted?.();let c=await DT({relayerUrl:e.relayerUrl,challengeId:r.challengeId,expectedWalletId:n,selectedCredentialId:o,credential:a,fetch:e.fetch,onRelayVerifySucceeded:e.onRelayVerifySucceeded});if(c.kind===`already_committed`)return c;let{verifiedBinding:l,parsedYaoResponse:u,ecdsaContinuity:d}=c.response,f=F(s);try{AT({requestedWalletId:n,expectedWalletAuthMethodId:e.expectedWalletAuthMethodId,rpId:e.rpId,optionsBinding:r.walletBinding,verifiedBinding:l,parsed:u,selectedCredentialId:o}),await e.prepareLocalProfile(u,a);let t=await e.withExactEd25519MaterialOwner({materialActivation:u.capability.materialActivation,nearAccountId:u.nearAccountId,task:FT.bind(void 0,{parsed:u,ownedFactorSecret:f,relayerUrl:e.relayerUrl,rpId:e.rpId,sessionPersistence:e.sessionPersistence,activateCapability:e.activateCapability,rejoinWalletCustodyNearEd25519KeySet:e.rejoinWalletCustodyNearEd25519KeySet,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,persistWalletCustodyEd25519Material:e.persistWalletCustodyEd25519Material})});return await rn({walletId:String(u.walletId),credentialIdB64u:u.credentialIdB64u,envelope:u.walletCustody.envelope}),await RT({signingSurface:{rejoinWalletCustodyEvmFamilyKeySet:e.rejoinWalletCustodyEvmFamilyKeySet,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity},parsed:u,continuity:d,ownedFactorSecret:f}),{kind:`recovered`,recovery:t,verifiedBinding:l}}finally{f.fill(0)}}async function BT(e){let t=e.parsed,n=F(t.credentialPublicKeyB64u);await e.context.signingEngine.storeUserData({walletId:String(t.walletId),nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,operationalPublicKey:t.operationalPublicKey,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,lastUpdated:Date.now(),passkeyCredential:{id:String(e.credential.id||``),rawId:String(e.credential.rawId||``)},version:2}),await e.context.signingEngine.setWalletNearProvisioningState({walletId:t.walletId,status:`near_ready`,nearAccountId:t.nearAccountId});let r=(await G.listWalletPasskeyAuthenticators(String(t.walletId))).find(e=>e.credentialId===t.credentialIdB64u);if(r){if(r.signerSlot!==t.signerSlot||P(r.credentialPublicKey)!==t.credentialPublicKeyB64u)throw Error(`Stored linked passkey authenticator does not match account sync`)}else await e.context.signingEngine.storeAuthenticator({nearAccountId:t.nearAccountId,credentialId:t.credentialIdB64u,credentialPublicKey:n,transports:[],name:`Passkey for ${String(t.walletId)}`,registered:new Date().toISOString(),syncedAt:new Date().toISOString(),signerSlot:t.signerSlot});await G.persistFoundingWalletAuthority({authority:t.foundingAuthority,authMethod:t.foundingAuthMethod})}async function VT(e,t){await e.storeNearThresholdKeyMaterial({nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,publicKey:t.operationalPublicKey,relayerKeyId:t.relayerKeyId,keyVersion:t.keyVersion,participants:ye({clientParticipantId:t.session.participantIds[0],relayerParticipantId:t.session.participantIds[1],relayerKeyId:t.relayerKeyId,clientShareDerivation:`prf_first_v1`}),signerId:t.operationalPublicKey})}async function HT(e){await K.writeExactWithOperationCredential({record:e.walletSession,operationCredential:e.operationCredential})}async function UT(e,t,n){await BT({context:e,parsed:t,credential:n})}function WT(e){return{id:e,type:`public-key`,transports:[]}}async function GT(e,t){return await e.signingSurface.getAuthenticationCredentialsSerialized({subjectId:e.requestedWalletId||`account-sync`,challengeB64u:t.challengeB64u,allowCredentials:t.credentialIds.map(WT),includeSecondPrfOutput:!1})}function KT(e){uT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:Qo.STEP_02_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{},interaction:{kind:`passkey_assert`,overlay:`show`}}})}function qT(e){uT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:Qo.STEP_02_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{},interaction:{kind:`passkey_assert`,overlay:`hide`}}})}function JT(e){uT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:Qo.STEP_03_RELAY_VERIFY_STARTED,status:`started`,...e.requestedWalletId?{accountId:e.requestedWalletId}:{}}})}function YT(e,t){uT({onEvent:e.onEvent,flowId:e.flowId,event:{phase:Qo.STEP_03_RELAY_VERIFY_SUCCEEDED,status:`succeeded`,accountId:String(t.walletId)}})}async function XT(e,t,n,r,i,a){let o=t?ko(String(t)):null;if(n.kind===`replacement_after_committed`&&o!==n.walletId)throw Error(`replacement account-sync attempt changed the committed wallet`);if(i&&i.walletId!==(o?String(o):null))throw Error(`prepared account-sync challenge wallet binding changed`);let s=`account-sync:${String(o||`discovery`)}`,c={kind:`empty`};try{let t=i?.relayerUrl??dT(e),l=i?.rpId??fT(e);if(i&&(dT(e)!==t||fT(e)!==l))throw Error(`prepared account-sync challenge runtime binding changed`);uT({onEvent:r?.onEvent,flowId:s,event:{phase:Qo.STEP_01_STARTED,status:`started`,...o?{accountId:String(o)}:{}}});let u={signingSurface:e.signingEngine,requestedWalletId:o?String(o):null,onEvent:r?.onEvent,flowId:s},d=await zT({walletId:o?String(o):null,relayerUrl:t,rpId:l,fetch:lT,expectedCredentialIdB64u:n.kind===`replacement_after_committed`?n.credentialIdB64u:null,expectedWalletAuthMethodId:n.kind===`replacement_after_committed`?n.walletAuthMethodId:null,...i?{prepared:i.syncOptions,credential:a}:{},collectCredential:GT.bind(void 0,u),activateCapability:e.signingEngine.activateVerifiedNearEd25519YaoMaterial.bind(e.signingEngine),withExactEd25519MaterialOwner:e.signingEngine.withExactEd25519MaterialOwner.bind(e.signingEngine),sessionPersistence:e.signingEngine,rejoinWalletCustodyNearEd25519KeySet:e.signingEngine.rejoinWalletCustodyNearEd25519KeySet.bind(e.signingEngine),rejoinWalletCustodyEvmFamilyKeySet:e.signingEngine.rejoinWalletCustodyEvmFamilyKeySet.bind(e.signingEngine),restoreWalletCustodyEcdsaContinuity:e.signingEngine.restoreWalletCustodyEcdsaContinuity.bind(e.signingEngine),loadWalletCustodyEd25519Material:e.signingEngine.loadWalletCustodyEd25519Material.bind(e.signingEngine),persistWalletCustodyEd25519Material:e.signingEngine.persistWalletCustodyEd25519Material.bind(e.signingEngine),prepareLocalProfile:UT.bind(void 0,e),onPromptStarted:KT.bind(void 0,u),onPromptSucceeded:qT.bind(void 0,u),onRelayVerifyStarted:JT.bind(void 0,u),onRelayVerifySucceeded:YT.bind(void 0,u)});if(d.kind===`already_committed`){if(n.kind===`initial`)return await XT(e,d.walletId,{kind:`replacement_after_committed`,walletId:d.walletId,walletAuthMethodId:d.walletAuthMethodId,credentialIdB64u:d.credentialIdB64u},r);throw Error(`sync-account/verify remained already committed after one replacement attempt`)}let{recovery:f,verifiedBinding:p}=d;return c={kind:`registry_owned`,recovery:f},await HT(f.parsed),await VT(e.signingEngine,f.parsed),uT({onEvent:r?.onEvent,flowId:s,event:{phase:Qo.STEP_04_AUTHENTICATOR_SAVED,status:`succeeded`,accountId:String(p.walletId)}}),uT({onEvent:r?.onEvent,flowId:s,event:{phase:Qo.STEP_05_THRESHOLD_SESSION_READY,status:`succeeded`,accountId:String(p.walletId)}}),await e.signingEngine.activateAuthenticatedWalletState({walletId:p.walletId,nearAccountId:p.nearAccountId,signerSlot:p.signerSlot,nearClient:e.nearClient}),c={kind:`committed`},uT({onEvent:r?.onEvent,flowId:s,event:{phase:Qo.STEP_06_COMPLETED,status:`succeeded`,accountId:String(p.walletId)}}),{success:!0,accountId:String(p.walletId),walletId:String(p.walletId),nearAccountId:String(p.nearAccountId),nearEd25519SigningKeyId:String(p.nearEd25519SigningKeyId),publicKey:f.parsed.operationalPublicKey,message:`Account synced successfully`,loginState:{isLoggedIn:!0}}}catch(t){let n=L(t)||`syncAccount failed`;try{await kT({context:e,ownership:c})}catch(e){let t=L(e)||`recovered capability cleanup failed`;n=`${n}; ${t}`}return uT({onEvent:r?.onEvent,flowId:s,event:{phase:Qo.FAILED,status:`failed`,...o?{accountId:String(o)}:{},error:{message:n}}}),cT(n)}}async function ZT(e,t,n){return await XT(e,t,{kind:`initial`},n)}async function QT(e,t,n,r){return await XT(e,t.walletId,{kind:`initial`},r,t,n)}function $T(e,t,n){try{e?.(Xo({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function eE(e){let t=Nr(Or(e.nearAccountId));return{walletSession:Ir(e.walletSession),nearAccount:t}}function tE(e){let t=e.transaction,n=String(t.signerId||``).trim();if(!n)throw Error(`Signed transaction is missing signerId`);return n}function nE(e){let t=tE(e.signedTransaction);if(t!==String(e.nearAccountId))throw Error(`Signed transaction signerId ${t} does not match NEAR account ${String(e.nearAccountId)}`)}function rE(e){if(!(e.serverDispatch||e.nonceLease))throw Error(`near.sendTransaction requires an SDK-produced signed transaction with nonce readiness`)}function iE(e){let t=String(e||``).trim();if(!t)throw Error(`NEAR broadcast response is missing transaction hash`);return t}function aE(e){return!e.signedTransaction.serverDispatch&&!e.signedTransaction.nonceLease&&e.signingResult.nonceLease&&(e.signedTransaction.nonceLease=e.signingResult.nonceLease),e.signedTransaction}async function oE(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(e=>{window.requestAnimationFrame(()=>e())});return}await Promise.resolve()}async function sE(e){return uE({context:e.context,nearAccountId:e.nearAccountId,walletSession:e.walletSession,transactionInput:e.transactionInput,options:e.options,confirmationConfigOverride:e.options.confirmationConfig})}async function cE(e){try{return dE({context:e.context,nearAccountId:e.nearAccountId,walletSession:e.walletSession,transactionInput:e.transactionInput,options:e.options,confirmationConfigOverride:e.options.confirmationConfig})}catch(e){throw I(e)}}async function lE({context:e,nearAccountId:t,walletSession:n,signedTransaction:r,options:i}){let a=eE({nearAccountId:t,walletSession:n}).nearAccount.accountId;nE({signedTransaction:r,nearAccountId:a}),rE(r);let o=r.nonceLease;$T(i?.onEvent,a,{phase:U.STEP_12_BROADCAST_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let s,c;try{if(r.serverDispatch)return s=r.serverDispatch.rpcResult,c=iE(r.serverDispatch.transactionHash),o&&(await e.signingEngine.getNonceCoordinator().markBroadcastAccepted({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c}),await e.signingEngine.getNonceCoordinator().markFinalized({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c})),$T(i?.onEvent,a,{phase:U.STEP_12_BROADCAST_ACCEPTED,status:`succeeded`,message:`Transaction ${c} sent successfully`,interaction:{kind:`none`,overlay:`none`},data:{txId:c}}),$T(i?.onEvent,a,{phase:U.STEP_15_COMPLETED,status:`succeeded`,message:`Transaction ${c} completed`,interaction:{kind:`none`,overlay:`none`},data:{txId:c}}),{success:!0,transactionId:c,result:s};s=await e.nearClient.sendTransaction(r,i?.waitUntil),c=iE(s.transaction.hash),o&&(await e.signingEngine.getNonceCoordinator().markBroadcastAccepted({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,txHash:c}),await e.signingEngine.getNonceCoordinator().markFinalized({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,...c?{txHash:c}:{}})),$T(i?.onEvent,a,{phase:U.STEP_12_BROADCAST_ACCEPTED,status:`succeeded`,message:`Transaction ${c} sent successfully`,interaction:{kind:`none`,overlay:`none`},...c?{data:{txId:c}}:{}}),$T(i?.onEvent,a,{phase:U.STEP_15_COMPLETED,status:`succeeded`,message:`Transaction ${c} completed`,interaction:{kind:`none`,overlay:`none`},...c?{data:{txId:c}}:{}})}catch(t){let n=I(t);console.error(`[sendTransaction] failed:`,n);let r=n.details;r&&console.error(`[sendTransaction] RPC error details:`,r);try{o&&await e.signingEngine.getNonceCoordinator().markBroadcastRejected({leaseId:o.leaseId,operationId:o.operationId,operationFingerprint:o.operationFingerprint,error:n})}catch(e){console.warn(`[sendTransaction]: Failed to release nonce after failure:`,e)}throw $T(i?.onEvent,a,{phase:U.FAILED,status:`failed`,interaction:{kind:`none`,overlay:`hide`},error:{message:n.message}}),n}return{success:!0,transactionId:c,result:s}}async function uE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a}){try{let o=await dE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a});return await lE({context:e,nearAccountId:t,walletSession:n,signedTransaction:aE({signedTransaction:o.signedTransaction,signingResult:o}),options:{onEvent:i?.onEvent,waitUntil:i?.waitUntil}})}catch(e){let n=I(e),r=n.short||wr(n)||n.message;throw $T(i?.onEvent,t,{phase:U.FAILED,status:`failed`,message:`Action failed: ${r}`,interaction:{kind:`none`,overlay:`hide`},error:{message:r}}),i?.onError?.(n),n}}async function dE({context:e,nearAccountId:t,walletSession:n,transactionInput:r,options:i,confirmationConfigOverride:a}){let{onEvent:o,onError:s,waitUntil:c,confirmerText:l,signerSlot:u}=i||{};try{$T(o,t,{phase:U.STEP_01_STARTED,status:`started`,message:`Starting ${r.actions[0].type} action`,interaction:{kind:`none`,overlay:`none`}}),await fE(t,[r],{onEvent:o,onError:s,waitUntil:c}),await oE();let i={receiverId:r.receiverId,actions:r.actions.map(e=>ll(e))},d=await e.signingEngine.signNear({chain:`near`,kind:`transactionWithActions`,args:{commandSubject:eE({nearAccountId:t,walletSession:n}),transaction:i,rpcCall:{nearRpcUrl:N(e.configs.network.chains),nearAccountId:t},signerSlot:u,confirmationConfigOverride:a,title:l?.title,body:l?.body,onEvent:o}});if(!d?.signedTransaction)throw Error(`NEAR signing returned no signed transaction`);return d}catch(e){console.error(`[signTransaction] Error during execution:`,e);let n=I(e),r=n.short||wr(n)||n.message;throw s?.(n),$T(o,t,{phase:U.FAILED,status:`failed`,message:`Action failed: ${r}`,interaction:{kind:`none`,overlay:`hide`},error:{message:r}}),n}}async function fE(e,t,n){let{onEvent:r}=n||{};if(!e)throw Error(`User not logged in or NEAR account ID not set for direct action.`);if($T(r,e,{phase:U.STEP_02_REQUEST_PREPARED,status:`running`,message:`Validating inputs`,interaction:{kind:`none`,overlay:`none`}}),t.length===0)throw Error(`No payloads provided for signing`);if(t.length!==1)throw Error(`NEAR signing supports exactly one transaction per operation; received ${t.length}`);for(let e of t){if(!e.receiverId)throw Error(`Missing required parameter: receiverId`);for(let t of e.actions){if(t.type===sl.FunctionCall&&(!t.methodName||t.args===void 0))throw Error(`Missing required parameters for function call: methodName or args`);if(t.type===sl.Transfer&&!t.amount)throw Error(`Missing required parameter for transfer: amount`)}}}async function pE(){if(typeof window<`u`&&typeof window.requestAnimationFrame==`function`){await new Promise(hE);return}await Promise.resolve()}async function mE(e){let{context:t,delegate:n,options:r}=e,i=Or(String(e.nearAccountId)),a=r?.confirmerText?.title,o=r?.confirmerText?.body,s={...n,senderId:n.senderId||String(i)};$T(r?.onEvent,i,{phase:U.STEP_01_STARTED,status:`started`,message:`Preparing delegate action inputs`,interaction:{kind:`none`,overlay:`none`}}),await pE();try{let n=await t.signingEngine.signNear({chain:`near`,kind:`delegateAction`,args:{commandSubject:eE({nearAccountId:i,walletSession:e.walletSession}),delegate:s,rpcCall:{nearRpcUrl:N(t.configs.network.chains),nearAccountId:String(i)},signerSlot:r?.signerSlot,confirmationConfigOverride:r?.confirmationConfig,title:a,body:o,onEvent:r?.onEvent}}),c={hash:n.hash,signedDelegate:n.signedDelegate,nearAccountId:String(i),logs:n.logs};return $T(r?.onEvent,i,{phase:U.STEP_15_COMPLETED,status:`succeeded`,message:`Delegate action signed`,interaction:{kind:`none`,overlay:`none`},data:{hash:c.hash}}),await r?.afterCall?.(!0,c),c}catch(e){let t=I(e);throw r?.onError?.(t),await r?.afterCall?.(!1),$T(r?.onEvent,i,{phase:U.FAILED,status:`failed`,message:t.message,interaction:{kind:`none`,overlay:`hide`},error:{message:t.message}}),t}}function hE(e){window.requestAnimationFrame(e)}async function gE(e){let{context:t,nearAccountId:n,params:r,options:i}=e,a=i?.confirmerText,o=i?.confirmationConfig,{signingEngine:s}=t,c=i?.signerSlot,l=typeof c==`number`&&Number.isSafeInteger(c)&&c>=1;try{let u=r.callbackUrl===void 0?null:D(r.callbackUrl,`callbackUrl`),d=r.state===void 0?null:te(r.state,`state`);if($T(i?.onEvent,n,{phase:U.STEP_01_STARTED,status:`started`,message:`Preparing NEP-413 message signing`,interaction:{kind:`none`,overlay:`none`}}),c!==void 0&&!l)throw Error(`Invalid signerSlot for NEP-413 signing: ${c}`);let f=l?await s.getUserBySignerSlot(n,c):await s.getLastUser();if(!f||!f.operationalPublicKey)throw Error(`Operational NEAR key data not found for ${n}`);let p=new Uint8Array(32);if(typeof crypto>`u`||typeof crypto.getRandomValues!=`function`)throw Error(`Secure random not available to generate NEP-413 nonce`);crypto.getRandomValues(p);let m=Re(p);$T(i?.onEvent,n,{phase:U.STEP_10_COMMIT_STARTED,status:`running`,message:`Signing NEP-413 message`,interaction:{kind:`none`,overlay:`none`}});let h=await t.signingEngine.signNear({chain:`near`,kind:`nep413`,args:{commandSubject:eE({nearAccountId:n,walletSession:e.walletSession}),onEvent:i?.onEvent,message:r.message,recipient:r.recipient,nonce:m,callbackUrl:u,state:d,signerSlot:l?c:void 0,title:a?.title,body:a?.body,confirmationConfigOverride:o}});if(h.success)return $T(i?.onEvent,n,{phase:U.STEP_15_COMPLETED,status:`succeeded`,message:`NEP-413 message signed successfully`,interaction:{kind:`none`,overlay:`none`}}),{success:!0,accountId:h.accountId,publicKey:h.publicKey,signature:h.signature,nonce:m,...h.state===void 0?{}:{state:h.state}};throw Error(`NEP-413 signing failed: ${h.error||`Unknown error`}`)}catch(e){let t=e instanceof Error?e.message:`Unknown error`;return $T(i?.onEvent,n,{phase:U.FAILED,status:`failed`,message:`NEP-413 signing failed: ${t}`,interaction:{kind:`none`,overlay:`hide`},error:{message:t}}),i?.onError?.(e instanceof Error?e:Error(t)),{success:!1,error:t}}}function _E(e){let t=new vE(e);return{signAndSendTransaction:t.signAndSendTransaction.bind(t),signTransaction:t.signTransaction.bind(t),sendTransaction:t.sendTransaction.bind(t),signDelegateAction:t.signDelegateAction.bind(t),signMessage:t.signMessage.bind(t)}}var vE=class{constructor(e){this.getContext=e}async signAndSendTransaction(e){let t=e.nearAccount.accountId,n={receiverId:e.receiverId,actions:e.actions};try{return await sE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,transactionInput:n,options:e.options})}catch(t){let n=I(t);throw await e.options?.afterCall?.(!1,void 0,n),n}}async signTransaction(e){let t=e.nearAccount.accountId,{transaction:n,options:r}=e;try{return await cE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,transactionInput:n,options:r})}catch(e){let t=I(e);throw await r?.afterCall?.(!1,void 0,t),t}}async sendTransaction(e){let t=e.nearAccount.accountId;return await lE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,signedTransaction:e.signedTransaction,options:e.options})}async signDelegateAction(e){let t=e.nearAccount.accountId,{delegate:n,options:r}=e;return await mE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,delegate:n,options:r})}async signMessage(e){let t=e.nearAccount.accountId,n=await gE({context:this.getContext(),nearAccountId:t,walletSession:e.walletSession,params:e.params,options:e.options});if(n?.success)await e.options?.afterCall?.(!0,n);else{let t=I(n?.error||`NEP-413 signing failed`);await e.options?.afterCall?.(!1,void 0,t)}return n}};function yE(e){let t=new bE(e);return{signEvmFamily:t.signEvmFamily.bind(t),reportBroadcastAccepted:t.reportBroadcastAccepted.bind(t),reportBroadcastRejected:t.reportBroadcastRejected.bind(t),reportFinalized:t.reportFinalized.bind(t),reportDroppedOrReplaced:t.reportDroppedOrReplaced.bind(t),reconcileNonceLane:t.reconcileNonceLane.bind(t),onBroadcastStarted:t.onBroadcastStarted.bind(t)}}var bE=class{constructor(e){this.getContext=e}async signEvmFamily(e){let{chainTarget:t,walletSession:n}=e;return await this.getContext().signingEngine.signEvmFamily({walletSession:n,request:e.request,chainTarget:t,confirmationConfigOverride:e.options?.confirmationConfig,shouldAbort:e.options?.shouldAbort,onEvent:e.options?.onEvent})}async reportBroadcastAccepted(e){let t=R(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoBroadcastAccepted({walletId:t,signedResult:e.signedResult,txHash:e.txHash,onEvent:e.options?.onEvent})}async reportBroadcastRejected(e){let t=R(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoBroadcastRejected({walletId:t,signedResult:e.signedResult,...e.error===void 0?{}:{error:e.error},onEvent:e.options?.onEvent})}async reportFinalized(e){let t=R(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoFinalized({walletId:t,signedResult:e.signedResult,...e.txHash?{txHash:e.txHash}:{},...e.receiptStatus?{receiptStatus:e.receiptStatus}:{},onEvent:e.options?.onEvent})}async reportDroppedOrReplaced(e){let t=R(e.walletSession.walletId);await this.getContext().signingEngine.reportTempoDroppedOrReplaced({walletId:t,signedResult:e.signedResult,reason:e.reason,...e.txHash?{txHash:e.txHash}:{},onEvent:e.options?.onEvent})}async reconcileNonceLane(e){let t=R(e.walletSession.walletId);return await this.getContext().signingEngine.reconcileTempoNonceLane({walletId:t,signedResult:e.signedResult,onEvent:e.options?.onEvent})}onBroadcastStarted(e){}};const xE=/^0x[0-9a-fA-F]{40}$/,SE=`0xfeec000000000000000000000000000000000000`,CE=[{type:`function`,name:`setUserToken`,inputs:[{name:`token`,type:`address`}]}];function wE(e,t){let n=String(t||``).trim();if(!xE.test(n))throw Error(`[tempo] invalid ${e}: expected 20-byte 0x-prefixed address`);return n.toLowerCase()}function TE(e){return`0xe7897444${wE(`fee token address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function EE(e){let{request:t,chainTarget:n}=e;if(t.chain!==`evm`||t.kind!==`eip1559`||t.senderSignatureAlgorithm!==`secp256k1`)throw Error(`[tempo] fee-token request must use the EIP-1559 secp256k1 envelope`);if(t.tx.chainId!==n.chainId)throw Error(`[tempo] fee-token request chain id does not match the Tempo target`);if(t.tx.to?.toLowerCase()!==`0xfeec000000000000000000000000000000000000`)throw Error(`[tempo] fee-token request must call the Tempo FeeManager`);if(t.tx.value!==0n)throw Error(`[tempo] fee-token request must not transfer value`);let r=String(t.tx.data??``).toLowerCase(),i=r.slice(10);if(!r.startsWith(`0xe7897444`)||!/^0{24}[0-9a-f]{40}$/.test(i))throw Error(`[tempo] fee-token request must call FeeManager.setUserToken(address)`);if(t.tx.accessList&&t.tx.accessList.length!==0)throw Error(`[tempo] fee-token request must not carry an access list`);let a=wE(`fee token address`,`0x${i.slice(24)}`);return{...t,tx:{...t.tx,to:SE,value:0n,data:TE(a)}}}function DE(e){return`0xed498fa8${wE(`user address`,e).slice(2).toLowerCase().padStart(64,`0`)}`}function OE(e){let t=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]*$/.test(t))throw Error(`[tempo] invalid userTokens(address) result: expected 0x-prefixed hex`);let n=t.slice(2);if(n.length<64)throw Error(`[tempo] invalid userTokens(address) result: expected at least 32 bytes`);let r=n.slice(0,64).slice(24);if(!/^[0-9a-f]{40}$/.test(r))throw Error(`[tempo] invalid userTokens(address) result: malformed address word`);return/^0+$/.test(r)?null:`0x${r}`}function kE(e){let t=wE(`fee token address`,e.token);return{to:wE(`fee manager contract address`,e.feeManager??`0xfeec000000000000000000000000000000000000`),value:0n,input:TE(t),abi:CE}}function AE(e,t){let n=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]+$/.test(n))throw Error(`[tempo] invalid ${t} result: expected 0x-prefixed hex`);let r=n.slice(2);if(r.length<128)throw Error(`[tempo] invalid ${t} result: missing ABI string header`);let i=Number(BigInt(`0x${r.slice(0,64)}`));if(!Number.isSafeInteger(i))throw Error(`[tempo] invalid ${t} result: unsafe ABI offset`);let a=i*2,o=a+64;if(o>r.length)throw Error(`[tempo] invalid ${t} result: ABI offset out of bounds`);let s=Number(BigInt(`0x${r.slice(a,o)}`));if(!Number.isSafeInteger(s))throw Error(`[tempo] invalid ${t} result: unsafe ABI string length`);let c=o;if(c+s*2>r.length)throw Error(`[tempo] invalid ${t} result: ABI string out of bounds`);let l=new Uint8Array(s);for(let e=0;e<s;e+=1)l[e]=Number.parseInt(r.slice(c+e*2,c+e*2+2),16);return new TextDecoder().decode(l)}function jE(e,t){let n=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(n))throw Error(`[tempo] invalid ${t} result: expected one ABI word`);let r=BigInt(n);if(r!==0n&&r!==1n)throw Error(`[tempo] invalid ${t} result: expected boolean`);return r===1n}async function ME(e){let t=await Gd({rpcUrl:e.rpcUrl,...e.timeoutMs===void 0?{}:{requestTimeoutMs:e.timeoutMs}}).request({method:`eth_call`,params:[{to:e.to,data:e.data},`latest`],...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}});if(typeof t!=`string`)throw Error(`[tempo] invalid eth_call response: expected a hex string`);return t}async function NE(e){let t=wE(`account address`,e.account);return OE(await ME({rpcUrl:e.rpcUrl,to:SE,data:DE(t),...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}}))}async function PE(e){let t=wE(`fee token address`,e.feeToken),n={rpcUrl:e.rpcUrl,to:t,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},r=AE(await ME({...n,data:`0xe5a6b10f`}),`currency()`);return r===`USD`?jE(await ME({...n,data:`0x5c975abb`}),`paused()`)?{kind:`invalid`,feeToken:t,reason:`paused`,currency:`USD`}:{kind:`valid`,feeToken:t,currency:`USD`,paused:!1}:{kind:`invalid`,feeToken:t,reason:`unsupported_currency`,currency:r}}function FE(e){if(!Number.isSafeInteger(e.chainId)||e.chainId<=0)throw Error(`[tempo] chainId must be a positive safe integer`);if(e.maxPriorityFeePerGas<0n)throw Error(`[tempo] maxPriorityFeePerGas must be non-negative`);if(e.maxFeePerGas<e.maxPriorityFeePerGas)throw Error(`[tempo] maxFeePerGas must be at least maxPriorityFeePerGas`);if(e.gasLimit<=0n)throw Error(`[tempo] gasLimit must be positive`);let t=kE({token:e.feeToken});return{chain:`evm`,kind:`eip1559`,senderSignatureAlgorithm:`secp256k1`,tx:{chainId:e.chainId,maxPriorityFeePerGas:e.maxPriorityFeePerGas,maxFeePerGas:e.maxFeePerGas,gasLimit:e.gasLimit,to:t.to,value:0n,data:t.input??`0x`,abi:t.abi,accessList:[]}}}function IE(e){return{managerStores:{userPreferencesStore:e,nonceLaneCoordinationStore:is({indexedDB:e}),webauthnCredentialStore:e,passkeyAuthenticatorStore:e,nearKeyMaterialStore:e},signingEngineStores:{walletProfileAndSignerRecords:{accountStore:e,walletSignerStore:e,passkeyAuthenticatorStore:e,ecdsaBootstrapStore:e},recoveryAndDeviceLinking:{credentialStore:e},warmup:{store:e}},sealedSigningSessionStore:{writeExactSealedSession:Bt,readExactSealedSession:qn,listExactSealedSessionsForWallet:Yn,listEcdsaSealedSessionsForWallet:an,acquireSigningSessionRestoreLease:Rt,releaseSigningSessionRestoreLease:en,updateExactSealedSessionPolicy:sn},ed25519YaoPublicCapabilityReferences:new ds(e)}}function LE(){return wf()||(typeof window<`u`?window.location.origin:``)}function RE(e){e.setWorkerBaseOrigin(LE()),typeof window<`u`&&it(()=>{let t=LE();t!==e.getWorkerBaseOrigin()&&e.setWorkerBaseOrigin(t)}),e.userPreferencesManager.initFromIndexedDB().catch(()=>void 0)}async function zE(e){let t=ps(),n=new Uint8Array(e.factorSecret.slice(0));try{return await VE(e,t,t=>{let r=$n(e.custodyEnvelope);if(!r.ok)throw Error(r.reason);return e.worker.rotateRecoverySet({custodyJson:r.custodyJson,factorSecret:n.buffer.slice(0),recoveryCodesJson:HE(t)})})}finally{n.fill(0),t&&rs(t),t=null}}async function BE(e){let t=ps();try{return await VE(e,t,t=>e.worker.rotateRecoverySet({recoveryCodesJson:HE(t)}))}finally{t&&rs(t),t=null}}async function VE(e,t,n){let r={walletId:e.walletId,requestId:e.statusRequestId},i=await sf({relayUrl:e.relayUrl,walletId:e.walletId,requestId:e.statusRequestId,factorProof:await e.factorProof({operation:`recovery_status`,payload:r}),...e.fetchImpl?{fetchImpl:e.fetchImpl}:{}});if(i.kind!==`ready`)return i.kind===`unauthorized`?{kind:`transport_failed`,message:i.message}:i;let a=ss(await n(t.codeBytes));if(a.walletId!==e.walletId)throw Error(`Recovery rotation worker returned a different wallet`);let o=await UE(t.codeBytes,a.manifestKekWraps),s=await hf({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:await e.factorProof({operation:`recovery_rotate`,payload:{walletId:e.walletId,expectedStoreVersion:i.storeVersion,manifestKekWraps:a.manifestKekWraps,entries:[a.entry],recoveryCodeLocators:o}}),expectedStoreVersion:i.storeVersion,replacement:a,recoveryCodeLocators:o,...e.fetchImpl?{fetchImpl:e.fetchImpl}:{}});return s.kind===`rotated`?{kind:`rotated`,walletId:e.walletId,recoveryCodes:t.codes,issuedAtMs:s.issuedAtMs,storeVersion:s.storeVersion}:s}function HE(e){return JSON.stringify(e.map(e=>({codeBytesB64u:P(e)})))}async function UE(e,t){if(e.length!==t.length)throw Error(`Recovery code locators do not match the replacement wraps`);let n=await Promise.all(e.map(async(e,n)=>{let r=t[n];if(!r)throw Error(`Recovery code locators do not match the replacement wraps`);return{locatorB64u:await us(e),recoveryKeyId:r.recoveryKeyId}}));if(new Set(n.map(e=>e.locatorB64u)).size!==n.length)throw Error(`Recovery code locators must be unique`);return n}async function WE(e){let t=`${Me(e.relayUrl)}/wallets/custody/envelope`,n=e.fetchImpl||fetch,r;try{r=await n(t,je({body:{locator:e.locator,challengeId:e.challengeId,expectedOrigin:e.expectedOrigin,webauthnAuthentication:e.webauthnAuthentication}}))}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`custody envelope request failed`}}let i=await r.json().catch(()=>void 0);if(r.status===200&&YE(i))try{return{kind:`active`,envelope:KE(i).envelope}}catch{return{kind:`corrupt`,message:`custody envelope response was incomplete`}}let a=JE(i,`custody envelope response`),o=a.code??``,s=a.message??``;switch(r.status){case 404:return{kind:`missing`,message:s||`no custody envelope for this credential`};case 409:return{kind:`retired`,message:s||`this envelope was superseded`};case 401:case 403:return{kind:`credential_rejected`,message:s||`this credential does not open the wallet`};case 500:return o===`envelope_digest_mismatch`?{kind:`corrupt`,message:s||`stored custody envelope failed its digest`}:{kind:`transport_failed`,message:s||`custody envelope request failed (HTTP ${r.status})`};default:return{kind:`request_rejected`,message:s||`custody envelope request rejected (HTTP ${r.status})`}}}async function GE(e){let t=`${Me(e.relayUrl)}/wallets/${encodeURIComponent(e.walletId)}/custody/envelope/ownership`,n=e.fetchImpl||fetch,r;try{r=await n(t,je({body:{envelope:e.envelope},headers:Fe({token:e.walletSessionToken,missingMessage:`custody envelope upgrade needs an active Wallet Session`})}))}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`custody envelope upgrade failed`}}let i=await r.json().catch(()=>void 0);if(r.status===200)try{let e=qE(i);if(e.kind===`already_owned`)return e;let t=Number(e.envelopeRevision);if(!Number.isSafeInteger(t)||t<=0)throw Error(`invalid envelope revision`);return{kind:`upgraded`}}catch{return{kind:`rejected`,message:`custody envelope upgrade returned an invalid response`}}return{kind:`rejected`,message:JE(i,`custody envelope upgrade response`).message||`custody envelope upgrade rejected (HTTP ${r.status})`}}function KE(e){let t=ZE(e,[`ok`,`envelope`,`storeVersion`],`custody envelope response`);if(eD(t,`ok`)!==!0)throw Error(`custody envelope response did not succeed`);let n=tD(t,`storeVersion`);if(!n)throw Error(`custody envelope response is missing its store version`);return{envelope:$r(eD(t,`envelope`),`custody envelope response.envelope`),storeVersion:n}}function qE(e){let t=XE(e,`custody envelope upgrade response`),n=eD(t,`upgraded`);if(n===!0){if(ZE(t,[`ok`,`upgraded`,`envelopeRevision`],`custody envelope upgrade response`),eD(t,`ok`)!==!0)throw Error(`custody envelope upgrade response did not succeed`);return{kind:`upgraded`,envelopeRevision:eD(t,`envelopeRevision`)}}if(n===!1){if(ZE(t,[`ok`,`upgraded`],`custody envelope upgrade response`),eD(t,`ok`)!==!0)throw Error(`custody envelope upgrade response did not succeed`);return{kind:`already_owned`}}throw Error(`custody envelope upgrade response has an invalid branch`)}function JE(e,t){try{let n=XE(e,t),r=Object.keys(n);if(!r.includes(`ok`)||!$E(r,[`ok`,`code`,`message`]))throw Error(`${t} has an unexpected response shape`);if(eD(n,`ok`)!==!1)throw Error(`${t} is not a failure`);return{code:nD(n,`code`),message:nD(n,`message`)}}catch{return{code:null,message:null}}}function YE(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return!1;let n=Object.getOwnPropertyDescriptor(e,`ok`);return!!(n&&`value`in n&&n.value===!0)}function XE(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t} must be a JSON object`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw Error(`${t} must be a plain JSON object`);return e}function ZE(e,t,n){let r=XE(e,n),i=Object.keys(r);if(i.length!==t.length||!QE(i,t))throw Error(`${n} has an unexpected response shape`);return r}function QE(e,t){for(let n of t)if(!e.includes(n))return!1;return!0}function $E(e,t){for(let n of e)if(!t.includes(n))return!1;return!0}function eD(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(!n||!(`value`in n))throw Error(`response field ${t} is missing`);return n.value}function tD(e,t){let n=eD(e,t);return typeof n==`string`?n.trim():``}function nD(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return!n||!(`value`in n)?null:(typeof n.value==`string`?n.value.trim():``)||null}function rD(e){return Array.isArray(e)?e.filter(e=>{switch(e){case`ble`:case`hybrid`:case`internal`:case`nfc`:case`smart-card`:case`usb`:return!0;default:return!1}}):[]}function iD(e){let t=e.flatMap(e=>{let t=String(e.credentialId||``).trim();return t?[{id:t,type:`public-key`,transports:rD(e.transports)}]:[]});if(t.length===0)throw Error(`Wallet recovery-code rotation requires an active passkey`);return t}async function aD(e){let t=await fetch(a(e.relayUrl,`/wallet/unlock/challenge`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({unlockBackend:`passkey`,userId:e.walletId,rpId:e.rpId})}),n=await t.json().catch(()=>({})),r=n&&typeof n==`object`&&!Array.isArray(n)?n:{};if(!t.ok||r.ok!==!0)throw Error(typeof r.message==`string`?r.message:`passkey envelope challenge failed`);let i=typeof r.challengeId==`string`?r.challengeId.trim():``,o=typeof r.challengeB64u==`string`?r.challengeB64u.trim():``;if(!i||!o)throw Error(`passkey envelope challenge is invalid`);return{challengeId:i,challengeB64u:o}}async function oD(e){let t=String(e.context.signingEngine.getRpId()||``).trim();if(!t)throw Error(`Wallet recovery-code rotation requires an RP ID`);let n=typeof window>`u`?``:window.location.origin;if(!n)throw Error(`Wallet recovery-code rotation requires a browser Origin`);let r=iD(await G.listProfileAuthenticators(e.walletId)),i=await aD({relayUrl:e.relayUrl,walletId:e.walletId,rpId:t}),a=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.walletId,challengeB64u:i.challengeB64u,allowCredentials:r,includeSecondPrfOutput:!0}),o=Xc(a);if(!o)throw Error(`Wallet recovery-code rotation did not receive a passkey credential`);let s=await WE({relayUrl:e.relayUrl,locator:{walletId:e.walletId,factor:{kind:`passkey`,rpId:t,credentialIdB64u:o}},challengeId:i.challengeId,expectedOrigin:n,webauthnAuthentication:Os(a)});if(s.kind!==`active`)throw Error(s.message);let c=s.envelope,l=F(Zc(a,`Wallet recovery-code rotation`));try{let i=e.context.signingEngine.getSignerWorkerContext();return await zE({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:async({operation:i,payload:a})=>{let s=await tl({walletId:e.walletId,operation:i,payload:a,requestOrigin:n}),c=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:e.walletId,challengeB64u:s,allowCredentials:r,includeSecondPrfOutput:!1}),l=Xc(c);if(!l||l!==o)throw Error(`Wallet recovery-code rotation selected an unrelated passkey`);return{kind:`passkey`,walletId:e.walletId,rpId:t,credentialIdB64u:o,challenge_digest:s,webauthn_authentication:Os(c)}},statusRequestId:Be(`wallet-recovery-status`,16,`wallet recovery status request IDs`),custodyEnvelope:c,factorSecret:l.buffer,worker:{rotateRecoverySet:async e=>await i.requestWorkerOperation({kind:`walletCustodyCeremony`,request:{type:`rotateWalletRecoverySet`,timeoutMs:3e4,payload:e,transfer:[e.factorSecret]}})}})}finally{l.fill(0)}}async function sD(e,t){return await ff({context:e.context,relayUrl:e.relayUrl,request:t})}async function cD(e,t){let n=await df(e.walletId),r=await gr({relayUrl:e.relayUrl,walletId:e.walletId,walletAuthMethodId:n.walletAuthMethodId,operation:Vr});if(r.walletAuthMethodId!==n.walletAuthMethodId)throw Error(`Recovery rotation Email OTP challenge selected another owner method`);let i=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:`recovery_unlock`,walletId:e.walletId,emailAddress:`your email`,challengeId:r.challengeId});if(i.challengeId!==r.challengeId)throw Error(`Recovery rotation Email OTP unlock changed its challenge`);let a=dr({routeFamily:`login`,operation:Vr});return await e.context.signingEngine.getSignerWorkerContext().requestWorkerOperation({kind:`emailOtp`,request:{type:`rotateEmailOtpWalletRecoverySet`,timeoutMs:6e4,payload:{relayUrl:e.relayUrl,walletId:e.walletId,walletAuthMethodId:n.walletAuthMethodId,userId:e.walletId,groupId:Xe,routePlan:a,verification:{kind:`otp`,challengeId:i.challengeId,otpCode:i.otpCode},recoveryCodesJson:t.recoveryCodesJson}}})}async function lD(e){let t=sD.bind(null,{context:e.context,relayUrl:e.relayUrl});return await BE({relayUrl:e.relayUrl,walletId:e.walletId,factorProof:t,statusRequestId:Be(`wallet-recovery-status`,16,`wallet recovery status request IDs`),worker:{rotateRecoverySet:cD.bind(null,e)}})}async function uD(e){switch(e.authorization.kind){case`existing_passkey`:return await oD(e);case`email_otp`:return await lD(e)}}function dD(e){return e?e.status===`near_ready`?{kind:`near_ready`,nearAccountId:e.nearAccountId}:e.status===`near_failed_retryable`?{kind:`near_failed_retryable`,reason:e.error}:null:null}async function fD(e,t){let n=String(t.walletId||``).trim();if(!n)throw Error(`[seams] waitForNearAccount requires a walletId`);let r=Math.max(1,Math.floor(t.timeoutMs??12e4)),i=null,a=null,o=null;try{return await new Promise((s,c)=>{let l=!1,u=e=>{l||(l=!0,s(e))};if(t.signal?.aborted){c(t.signal.reason??Error(`[seams] waitForNearAccount aborted`));return}t.signal&&(o=()=>{l||(l=!0,c(t.signal?.reason??Error(`[seams] waitForNearAccount aborted`)))},t.signal.addEventListener(`abort`,o,{once:!0})),i=e.onNearAccountChange(e=>{if(String(e.walletId)!==n)return;let t=dD(e.state);t&&u(t)}),a=setTimeout(()=>u({kind:`timed_out`}),r),e.getNearAccountState({walletId:n}).then(e=>{let t=dD(e);t&&u(t)}).catch(()=>{})})}finally{a&&clearTimeout(a),o&&t.signal&&t.signal.removeEventListener(`abort`,o);try{i?.()}catch{}}}function pD(e){return typeof e==`string`?Ir({walletId:e}):e}function mD(e){return typeof e==`string`?Nr(e):e}function hD(e){let t=async()=>{let t=await e.getWalletSession();if(t.authentication.kind!==`authenticated`)throw Error("[seams] no authenticated wallet: unlock a wallet first, or pass an explicit `walletSession`.");return t};return{walletSession:async e=>e?pD(e):Ir({walletId:(await t()).authentication.walletId}),nearSubject:async e=>{if(e.walletSession&&e.nearAccount)return{walletSession:pD(e.walletSession),nearAccount:mD(e.nearAccount)};let n=await t(),r=n.authentication.walletId,i=e.walletSession?pD(e.walletSession):Ir({walletId:r});if(e.nearAccount)return{walletSession:i,nearAccount:mD(e.nearAccount)};let a=n.appIdentity;if(a.kind!==`resolved`||String(a.walletId)!==String(r))throw Error("[seams] the authenticated wallet has no resolved NEAR account: pass an explicit `nearAccount`.");if(!a.nearAccountId)throw Error("[seams] this wallet has no NEAR account yet (NEAR provisioning may still be pending): pass an explicit `nearAccount`, or await `seams.registration.waitForNearAccount`.");return{walletSession:i,nearAccount:Nr(a.nearAccountId)}}}}function gD(e){let t=new _D(e.linkedDeviceManagement);return{startLinking:e.startLinking,cancelLinking:e.cancelLinking,approveLinking:e.approveLinking,list:t.list.bind(t),remove:t.remove.bind(t)}}var _D=class{constructor(e){this.management=e}async list(e){let t=ri({kind:`linked_device_list_request_v1`,walletId:vD(e.walletId),limit:e.limit,cursor:e.cursor});return si(await this.management.listLinkedDevices({walletId:t.walletId,limit:t.limit,cursor:t.cursor}))}async remove(e){return oi(await this.management.revokeLinkedDevice({walletId:vD(e.walletId),walletAuthMethodId:yD(e.walletAuthMethodId)}))}};function vD(e){let t=o(e);if(!t.ok)throw Error(t.error.message);return t.value}function yD(e){let t=c(e);if(!t.ok)throw Error(t.error.message);return t.value}function bD(e){return/UNKNOWN_ACCOUNT|unknown\s+account|account\b[^\n]*\bdoes not exist/iu.test(L(e))}function xD(e){return/server error|internal|temporar|timeout|throttl|too many requests|429|empty response|rpc request failed|failed to fetch/iu.test(L(e))}function SD(e){setTimeout(e,150)}async function CD(e,t){let n=Or(t);try{return await e.viewAccount(n),!0}catch(e){if(bD(e))return!1;if(!xD(e))throw e}await new Promise(SD);try{return await e.viewAccount(n),!0}catch(e){if(bD(e))return!1;throw e}}function wD(e){let t={"content-type":`application/json`},n=String(e?.publishableKey??``).trim();n&&(t.Authorization=`Bearer ${n}`);let r=String(e?.environmentId??``).trim();return r&&(t[`X-Seams-Environment-Id`]=r),t}function TD(e,t){if(!O(e))return{ok:!1,error:`Relayer HTTP ${t}`};let n=typeof e.code==`string`?e.code.trim():``,r=(typeof e.message==`string`?e.message.trim():typeof e.error==`string`?e.error.trim():``)||`Relayer HTTP ${t}`;return{ok:!1,error:n?`${r} (${n})`:r}}function ED(e){let t=e?.registration;if(!t||typeof t!=`object`||t.mode!==`managed`)return{};let n=String(t.publishableKey??``).trim(),r=String(t.projectEnvironmentId??``).trim();return{...n?{publishableKey:n}:{},...r?{environmentId:r}:{}}}const DD=e=>Array.isArray(e)?e:Array.from(e),OD=e=>{let t=e.delegateAction,n=e.signature;return{delegateAction:{...t,publicKey:{...t.publicKey,keyData:DD(t.publicKey.keyData)}},signature:{...n,signatureData:DD(n.signatureData)}}};async function kD(e){let{url:t,payload:n,auth:r,signal:i,options:a}=e,o={...n,signedDelegate:OD(n.signedDelegate)};$T(a?.onEvent,`delegate`,{phase:U.STEP_12_BROADCAST_STARTED,status:`running`,message:`Submitting delegate to relayer`,interaction:{kind:`none`,overlay:`none`}});let s;try{s=await fetch(t,{method:`POST`,headers:wD(r),body:JSON.stringify(o),signal:i||AbortSignal.timeout(3e4)})}catch(e){let t=e instanceof DOMException&&e.name===`TimeoutError`?Error(`Relayer request timed out after 30 seconds`):e instanceof Error?e:Error(String(e));throw a?.onError?.(t),AD(a,t.message),await a?.afterCall?.(!1),t}if(!s.ok){let e=null;try{e=await s.json()}catch{}let t=TD(e,s.status);return a?.onError?.(Error(t.error)),AD(a,t.error),await a?.afterCall?.(!1),t}let c;try{let e=await s.json();c=O(e)?e:{}}catch(e){let t={ok:!1,error:`Relayer returned non-JSON response`},n=e instanceof Error?e:Error(String(e));return a?.onError?.(n),AD(a,t.error),await a?.afterCall?.(!1),t}let l={ok:!!(c.ok??!0),relayerTxHash:typeof c.relayerTxHash==`string`?c.relayerTxHash:typeof c.transactionId==`string`?c.transactionId:typeof c.txHash==`string`?c.txHash:void 0,status:typeof c.status==`string`?c.status:void 0,outcome:c.outcome,error:typeof c.error==`string`?c.error:void 0};if(l.ok!==!1)$T(a?.onEvent,`delegate`,{phase:U.STEP_15_COMPLETED,status:`succeeded`,message:`Delegate relayed successfully`,interaction:{kind:`none`,overlay:`none`}}),await a?.afterCall?.(!0,l);else{let e=l.error||`Relayer execution failed`;a?.onError?.(Error(e)),AD(a,e),await a?.afterCall?.(!1)}return l}function AD(e,t){$T(e?.onEvent,`delegate`,{phase:U.FAILED,status:`failed`,message:t,interaction:{kind:`none`,overlay:`hide`},error:{message:t}})}function jD(e){let t=new ND(e);return{accountExists:CD.bind(null,e.nearClient),signAndSendTransaction:t.signAndSendTransaction.bind(t),signTransaction:t.signTransaction.bind(t),sendTransaction:t.sendTransaction.bind(t),signDelegateAction:t.signDelegateAction.bind(t),signMessage:t.signMessage.bind(t),sendDelegateAction:t.sendDelegateAction.bind(t),signAndSendDelegateAction:t.signAndSendDelegateAction.bind(t)}}function MD(){}var ND=class{constructor(e){this.deps=e}async signAndSendTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return qw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signTransaction}),await this.deps.commands.signAndSendTransaction(t)}async signTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return qw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signTransaction}),await this.deps.commands.signTransaction(t)}async sendTransaction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return await this.deps.commands.sendTransaction(t)}async signDelegateAction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return qw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signDelegateAction}),await this.deps.commands.signDelegateAction(t)}async signMessage(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}};return qw(this.deps.configs,{capabilityKind:bt.nearEd25519MpcSigning,operationKind:yt.signNep413Message}),await this.deps.commands.signMessage(t)}async sendDelegateAction(e){return await kD({url:`${e.relayerUrl.replace(/\/+$/,``)}${(this.deps.configs.network.relayer?.routes?.delegateAction||`/signed-delegate`).replace(/^\/?/,`/`)}`,payload:{hash:e.hash,signedDelegate:e.signedDelegate},auth:ED(this.deps.configs),signal:e.signal,options:e.options})}async signAndSendDelegateAction(e){let t={...e,...await this.deps.currentWallet.nearSubject(e),options:e.options??{}},n={signerSlot:t.options.signerSlot,onEvent:t.options.onEvent,onError:t.options.onError,waitUntil:t.options.waitUntil,confirmationConfig:t.options.confirmationConfig,confirmerText:t.options.confirmerText,afterCall:MD},r;try{r=await this.signDelegateAction({walletSession:t.walletSession,nearAccount:t.nearAccount,delegate:t.delegate,options:n})}catch(e){let n=I(e);throw await t.options?.afterCall?.(!1,void 0,n),n}let i={onEvent:t.options.onEvent,onError:t.options.onError},a;try{a=await this.sendDelegateAction({relayerUrl:t.relayerUrl,hash:r.hash,signedDelegate:r.signedDelegate,signal:t.signal,options:i})}catch(e){let n=I(e);throw await t.options?.afterCall?.(!1,void 0,n),n}let o={signResult:r,relayResult:a};if(a.ok!==!1)await t.options?.afterCall?.(!0,o);else{let e=I(a.error||`Delegate relay failed`);await t.options?.afterCall?.(!1,void 0,e)}return o}};function PD(e){let t=new FD(e);return{signAndSendTransaction:e.signAndSendTransaction,advanced:e.advanced,signTransaction:t.signTransaction.bind(t)}}var FD=class{constructor(e){this.deps=e}async signTransaction(e){let t=$w(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);qw(this.deps.configs,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.signTransaction,chainTarget:t});let r=await this.deps.commands.signEvmFamily({walletSession:n,request:e.request,chainTarget:t,options:e.options});if(r.chain!==`evm`||r.kind!==`eip1559`)throw Error(`[EVM capability] expected EVM result, received ${r.chain}`);return r}};function ID(e,t){let n=e.tx.chainId;if(n!==void 0&&Number(n)!==t.chainId)throw Error(`[evm-family] request tx.chainId ${n} does not match chain target ${z(t)}`);return{...e,tx:{...e.tx,chainId:t.chainId}}}const LD=5e3;function RD(e,t,n){try{e?.(Xo({...n,flowId:`signing:evm_family:${t}:${n.phase}`,accountId:t}))}catch{}}function zD(){let e=Error(`Request cancelled`);return e.code=`cancelled`,e}function BD(e){let t=Error(e);return t.code=`timeout`,t}async function VD(e){let t=Math.max(1,Math.floor(Number(e.timeoutMs)||0)),n=null,r=!1;try{return await new Promise((i,a)=>{n=setTimeout(()=>{if(!r){r=!0;try{e.onTimeout?.()}catch{}a(BD(e.message))}},t),e.promise.then(e=>{r||(r=!0,n&&clearTimeout(n),i(e))},e=>{r||(r=!0,n&&clearTimeout(n),a(e))})})}finally{n&&clearTimeout(n)}}function HD(e){let t=Math.floor(Number(e));return!Number.isFinite(t)||t<=0?LD:Math.min(LD,Math.max(250,t))}function UD(e){if(typeof e==`function`&&e())throw zD()}function WD(e){return String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`)}function GD(e,t){return!e||typeof e!=`object`?!1:WD(e.code)===WD(t)}function KD(e){if(e instanceof Error){let t=String(e.code||``).trim(),n=`details`in e?e.details:void 0;return{...t?{code:t}:{},message:e.message,...n===void 0?{}:{details:n}}}if(e&&typeof e==`object`){let t=e,n=String(t.code||``).trim(),r=String(t.message||``).trim();return{...n?{code:n}:{},message:r||String(e),...t.details===void 0?{}:{details:t.details}}}return{message:String(e||`unknown error`)}}function qD(e){let t=WD(e instanceof Error||e&&typeof e==`object`&&`message`in e?e.message:e);return t.includes(`nonce_lane_blocked`)||t.includes(`nonce lane blocked`)}function JD(e){return!e||typeof e!=`object`||!GD(e,`tx_dropped_or_replaced`)?null:WD(e.reason)===`replaced`?`replaced`:`dropped`}function YD(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]*$/.test(t)?t:null}function XD(e){return String(e??``).trim()||null}function ZD(e){let t=XD(e);return t?t.toLowerCase():null}function QD(e){throw Error(`[Tempo capability] unhandled finalized payload branch: ${String(e)}`)}function $D(e,t){let n=YD(e);if(!n)throw Error(`[Tempo capability] invalid ${t} payload input`);return n}function eO(e){return{kind:`evm_eip1559`,to:e.tx.to??null,input:$D(e.tx.data||`0x`,`EVM`)}}function tO(e){return{to:e.to,input:$D(e.input||`0x`,`Tempo call`)}}function nO(e){let[t,...n]=e.tx.calls;if(!t)throw Error(`[Tempo capability] Tempo transaction has no calls`);return{kind:`tempo_eip2718_calls`,calls:[tO(t),...n.map(tO)]}}function rO(e){switch(e.chain){case`evm`:return eO(e);case`tempo`:return nO(e);default:return QD(e)}}function iO(e){return e.input??e.data??null}function aO(e){return Array.isArray(e.calls)?{kind:`tempo_eip2718_calls`,calls:e.calls.map(e=>({to:e?.to??null,input:e?iO(e):null,data:e?.data??null}))}:{kind:`evm_eip1559`,to:e.to??null,input:e.input??null}}function oO(e){return ZD(e.observed.to)===ZD(e.expected.to)&&YD(e.observed.input)===YD(e.expected.input)}function sO(e){return ZD(e.observed.to)===ZD(e.expected.to)&&YD(iO(e.observed))===YD(e.expected.input)}function cO(e){return e.observed.calls.length===e.expected.calls.length?e.expected.calls.every((t,n)=>{let r=e.observed.calls[n];return r?sO({expected:t,observed:r}):!1}):!1}function lO(e){switch(e.expected.kind){case`evm_eip1559`:return e.observed.kind===`evm_eip1559`?oO({expected:e.expected,observed:e.observed}):!1;case`tempo_eip2718_calls`:return e.observed.kind===`tempo_eip2718_calls`?cO({expected:e.expected,observed:e.observed}):!1;default:return QD(e.expected)}}function uO(e){let t=z(e.chainTarget),n=e.chains.filter(e=>{let n=ie(e.network);return n!==`evm`&&n!==`tempo`?!1:z(Mr(e))===t});if(n.length===1){let e=String(n[0].rpcUrl||``).trim();if(!e)throw Error(`[Tempo capability] missing rpcUrl for ${n[0].network} ${t}`);return e}if(n.length>1){let e=n.map(e=>e.network).join(`, `);throw Error(`[Tempo capability] ambiguous RPC routing for ${t} across [${e}]`)}throw Error(`[Tempo capability] unable to resolve RPC URL for ${t}`)}function dO(e){let t=String(e?.managedNonce?.sender||``).trim(),n=/^0x[0-9a-fA-F]{40}$/.test(t)?t:void 0,r;try{let t=String(e?.managedNonce?.nonce||``).trim();if(t){let e=BigInt(t);e>=0n&&(r=e)}}catch{}return{...n?{managedNonceSenderAddress:n}:{},...typeof r==`bigint`?{nonceHint:r}:{}}}async function fO(e){let t=await Gd({rpcUrl:e.rpcUrl}).getTransactionByHash({txHash:e.txHash}).catch(()=>null);if(!t)return{kind:`tx_unavailable`,expected:e.expected};let n=aO(t);return lO({expected:e.expected,observed:n})?{kind:`matched`,expected:e.expected,observed:n}:{kind:`mismatch`,expected:e.expected,observed:n}}async function pO(e){if(!e.broadcastAccepted){await e.lifecycle.reportBroadcastRejected({walletSession:e.walletSession,signedResult:e.signedResult,error:e.error,options:{onEvent:e.onEvent}});return}let t=JD(e.error);if(t){await e.lifecycle.reportDroppedOrReplaced({walletSession:e.walletSession,signedResult:e.signedResult,reason:t,...e.txHash?{txHash:e.txHash}:{},options:{onEvent:e.onEvent}});return}try{await e.lifecycle.reconcileNonceLane({walletSession:e.walletSession,signedResult:e.signedResult,options:{onEvent:e.onEvent}})}catch(t){if(GD(t,`nonce_lane_blocked`)||qD(t)){await e.lifecycle.reportDroppedOrReplaced({walletSession:e.walletSession,signedResult:e.signedResult,reason:`dropped`,...e.txHash?{txHash:e.txHash}:{},options:{onEvent:e.onEvent}});return}throw t}}function mO(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw Error(`[Tempo capability] invalid transaction hash from broadcast: ${t||`empty`}`);return t}function hO(e){let t=String(e||``).trim();if(!/^0x[0-9a-fA-F]+$/.test(t))throw Error(`[Tempo capability] signed rawTxHex is missing or invalid`);return t}function gO(e){return e.payloadExpectation??rO(e.request)}async function _O(e){let t=e.input.options?.onEvent,n=R(e.input.walletSession.walletId);UD(e.input.options?.shouldAbort);let r=null,i,a=!1,o=!1,s=e=>RD(t,n,e),c=e=>{if(e.phase!==U.STEP_15_COMPLETED)try{t?.(e)}catch{}};try{let n=e.input.request,l=uO({chains:e.chains,chainTarget:e.input.chainTarget}),u=Gd({rpcUrl:l});r=await e.lifecycle.signEvmFamily({walletSession:e.input.walletSession,request:n,chainTarget:e.input.chainTarget,options:e.input.options?{...e.input.options.confirmationConfig?{confirmationConfig:e.input.options.confirmationConfig}:{},...e.input.options.shouldAbort?{shouldAbort:e.input.options.shouldAbort}:{},...t?{onEvent:c}:{}}:void 0}),UD(e.input.options?.shouldAbort),s({phase:U.STEP_12_BROADCAST_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let d=hO(r.rawTxHex);e.lifecycle.onBroadcastStarted({walletSession:e.input.walletSession,signedResult:r}),i=mO(await u.request({method:`eth_sendRawTransaction`,params:[d]})),await e.lifecycle.reportBroadcastAccepted({walletSession:e.input.walletSession,signedResult:r,txHash:i,options:{...t?{onEvent:t}:{}}}),a=!0,s({phase:U.STEP_13_NONCE_RECONCILE_STARTED,status:`running`,message:`Waiting for transaction finalization`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}});let f=new AbortController,p=null;typeof e.input.options?.shouldAbort==`function`&&(p=setInterval(()=>{e.input.options?.shouldAbort?.()&&f.abort(zD())},100));let m=Math.max(1,Math.floor(Number(e.input.finalization?.timeoutMs??9e4)||0)),h=Math.max(1,Math.floor(Number(e.input.finalization?.pollIntervalMs??1250)||0)),g=Math.max(1,Math.floor(Number(e.input.finalization?.confirmations??1)||0)),_=dO(r),v=await VD({promise:u.waitForTransactionReceipt({txHash:i,timeoutMs:m,pollIntervalMs:h,confirmations:g,maxFeePerGasHint:n.tx.maxFeePerGas,signal:f.signal,..._.managedNonceSenderAddress?{transactionSenderAddress:_.managedNonceSenderAddress}:{},...typeof _.nonceHint==`bigint`?{nonceHint:_.nonceHint}:{}}).finally(()=>{p&&=(clearInterval(p),null),f.abort(Error(`finalization wait settled`))}),timeoutMs:m+2e3,message:`Timed out waiting for transaction finalization after ${m.toString()}ms`,onTimeout:()=>{f.abort(BD(`Transaction finalization watchdog timed out`))}}),y=Kd(v.status,`receipt.status`);if(y===0n){await e.lifecycle.reportFinalized({walletSession:e.input.walletSession,signedResult:r,txHash:i,receiptStatus:`reverted`,options:{...t?{onEvent:t}:{}}}),o=!0;let n=Error(`Transaction reverted with receipt status ${String(v.status||`unknown`)}`);throw n.code=`tx_reverted`,n.txHash=i,n}if(y!==1n)throw Error(`Unexpected transaction receipt status ${v.status}`);let b=gO(e.input),x=await fO({rpcUrl:l,txHash:i,expected:b});if(x.kind===`mismatch`){let e=Error(`Finalized transaction payload mismatch for ${i}.`);throw e.code=`tx_payload_mismatch`,e.details=x,e}if(await e.lifecycle.reportFinalized({walletSession:e.input.walletSession,signedResult:r,txHash:i,receiptStatus:`success`,options:{...t?{onEvent:t}:{}}}),o=!0,s({phase:U.STEP_13_RECEIPT_FINALIZED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}}),typeof e.input.postFinalizationCheck==`function`){s({phase:U.STEP_14_APP_STATE_SYNC_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}});try{await e.input.postFinalizationCheck()}catch(e){let t=e instanceof Error?e.message:String(e||``),n=Error(`Post-finalization state verification failed for ${i}: ${t||`unknown error`}`);throw n.code=`post_finalization_state_mismatch`,n.txHash=i,n.details={...e instanceof Error&&e.message?{message:e.message}:{},originalError:e},n}s({phase:U.STEP_14_APP_STATE_SYNC_SUCCEEDED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{txHash:i}})}return s({phase:U.STEP_15_COMPLETED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{operation:`execute`,txHash:i}}),{txHash:i,signedResult:r,payloadVerification:x}}catch(s){try{let t=r?a?o?`post_finalization`:`finalization`:`broadcast`:`sign`;console.warn(`[EvmFamilyLifecycle][failure]`,{stage:t,walletId:n,requestChain:e.input.request.chain,requestKind:e.input.request.kind,requestChainId:e.input.request.tx.chainId,chainTarget:e.input.chainTarget,signed:!!r,...r?.managedNonce?{managedNonce:{chain:r.managedNonce.chainTarget.kind,networkKey:r.managedNonce.chainTarget.networkSlug,chainId:r.managedNonce.chainTarget.chainId,sender:r.managedNonce.sender,nonce:r.managedNonce.nonce.toString(),...r.managedNonce.nonceKey==null?{}:{nonceKey:r.managedNonce.nonceKey.toString()}}}:{},broadcastAccepted:a,finalizedReported:o,...i?{txHash:i}:{},error:KD(s)})}catch{}throw!o&&r&&await VD({promise:pO({lifecycle:e.lifecycle,walletSession:e.input.walletSession,signedResult:r,error:s,broadcastAccepted:a,...i?{txHash:i}:{},...t?{onEvent:t}:{}}),timeoutMs:HD(e.input.finalization?.timeoutMs),message:`Timed out during best-effort nonce cleanup after EVM-family signing failure`}).catch(()=>null),s}}function vO(e,t){return uO({chains:e,chainTarget:t})}async function yO(e,t){return await NE({rpcUrl:vO(e,t.chainTarget),account:wE(`account address`,t.account),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function bO(e,t){return await PE({rpcUrl:vO(e,t.chainTarget),feeToken:wE(`fee token address`,t.feeToken),...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs}})}async function xO(e){let t=await NE(e);if(t?.toLowerCase()!==e.feeToken.toLowerCase())throw Error(`[Tempo capability] fee-token preference mismatch: expected ${e.feeToken}, received ${t??`unset`}`)}async function SO(e,t){let n=vO(e.chains,t.chainTarget),r=wE(`account address`,t.account),i=wE(`fee token address`,t.feeToken),a=await PE({rpcUrl:n,feeToken:i});if(a.kind===`invalid`)throw Error(`[Tempo capability] invalid fee token: ${a.reason}`);let o=FE({chainId:t.chainTarget.chainId,feeToken:i,maxPriorityFeePerGas:t.feeCaps.maxPriorityFeePerGas,maxFeePerGas:t.feeCaps.maxFeePerGas,gasLimit:t.gasLimit??1000000n});return await e.execute({walletSession:t.walletSession,chainTarget:t.chainTarget,request:o,payloadExpectation:{kind:`evm_eip1559`,to:o.tx.to??null,input:o.tx.data??`0x`},...t.finalization?{finalization:t.finalization}:{},...t.options?{options:t.options}:{},postFinalizationCheck:xO.bind(null,{rpcUrl:n,account:r,feeToken:i})})}function CO(e){let t=new wO(e),n=e.commands,r={reportBroadcastAccepted:n.reportBroadcastAccepted,reportBroadcastRejected:n.reportBroadcastRejected,reportFinalized:n.reportFinalized,reportDroppedOrReplaced:n.reportDroppedOrReplaced,reconcileNonceLane:n.reconcileNonceLane},i=t.signTempo.bind(t),a=t.executeEvmFamilyTransaction.bind(t);return{tempo:{signTransaction:i,signAndSendTransaction:a,advanced:r,getFeeToken:yO.bind(null,e.configs.network.chains),validateFeeToken:bO.bind(null,e.configs.network.chains),setFeeToken:SO.bind(null,{chains:e.configs.network.chains,execute:a})},evm:PD({...e,advanced:r,signAndSendTransaction:a})}}var wO=class{constructor(e){this.deps=e}async signEvmFamily(e){let t=Zw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return qw(this.deps.configs,{capabilityKind:bt.evmEcdsaMpcSigning,operationKind:_t.signTransaction,chainTarget:t}),await this.deps.commands.signEvmFamily({walletSession:n,chainTarget:t,request:e.request,options:e.options})}async signTempo(e){let t=await this.signEvmFamily({...e,chainTarget:Qw(this.deps.configs.network.chains,e.chainTarget)});if(t.chain!==`tempo`||t.kind!==`tempoTransaction`)throw Error(`[Tempo capability] expected Tempo result, received ${t.chain}`);return t}async executeEvmFamilyTransaction(e){let t=Zw(this.deps.configs.network.chains,e.chainTarget),n=await this.deps.currentWallet.walletSession(e.walletSession);return await _O({lifecycle:{...this.deps.commands,signEvmFamily:this.signEvmFamily.bind(this)},chains:this.deps.configs.network.chains,input:{...e,chainTarget:t,walletSession:n,request:ID(e.request,t)}})}};function TO(e){let t=e.auth,n=gD(e.devices),r=hD({getWalletSession:t.getSession}),i={createNearCommands:e.createNearCommands,createEvmFamilyCommands:e.createEvmFamilyCommands,nearClient:e.nearClient,configs:e.configs,currentWallet:r},a=jD({...i,commands:e.createNearCommands({kind:`ordinary`})}),o=e.createEvmFamilyCommands({kind:`ordinary`}),s=CO({...i,commands:o});return{preferences:e.preferences,auth:t,registration:{getNearAccountState:e.registration.getNearAccountState,onNearAccountChange:e.registration.onNearAccountChange,waitForNearAccount:fD.bind(null,e.registration),addSigner:e.registration.addSigner,addPasskey:e.registration.addPasskey,addEmail:e.registration.addEmail,removeAuthMethod:e.registration.removeAuthMethod,registerWallet:EO.bind(null,e.registration,e.configs)},recovery:e.recovery,devices:n,keys:tT({configs:e.configs,currentWallet:r,domain:e.keys}),near:a,tempo:s.tempo,evm:s.evm}}async function EO(e,t,n){let r;try{let e=n.wallet===void 0?{kind:`server_allocated`}:n.wallet,i=n.signerSelection===void 0?Dn({configs:t,wallet:e,options:n.options??{}}):n.signerSelection;r={authMethod:n.authMethod,wallet:e,signerSelection:i,options:n.options}}catch(e){let t=I(e);throw await n.options?.onError?.(t),await n.options?.afterCall?.(!1,void 0,t),t}return e.registerWallet(r)}var DO=class{state={kind:`active`};handlePageHideBound;constructor(e,t){this.eventTarget=e,this.clientOwner=t,this.handlePageHideBound=this.handlePageHide.bind(this),this.eventTarget?.addEventListener(`pagehide`,this.handlePageHideBound)}handlePageHide(){this.dispose()}dispose(){this.state.kind!==`disposed`&&(this.state={kind:`disposed`},this.eventTarget?.removeEventListener(`pagehide`,this.handlePageHideBound),this.clientOwner.dispose())}};function OO(e){let t;try{t=JSON.parse(e.activationResultJson)}catch{throw Error(`the Router activation result is not JSON`)}let n=Sa(t);if(!n.ok)throw Error(`Router activation result is invalid: ${n.message}`);let r=n.value,i=r.public_receipt;if(r.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router activation result belongs to another lifecycle`);let a=i.material_activation,o=p({kind:a.kind,activationId:a.activation_id,capability:a.capability,materialOwner:a.material_owner,keyBinding:a.key_binding,lifecycleBinding:a.lifecycle_binding,signingWorker:a.signing_worker});if(!o.ok)throw Error(`Invalid activation material reference: ${o.error.message}`);let s=e.admissionRequest.participant_ids;if(s.length!==2)throw Error(`an Ed25519 Yao registration has exactly two participants`);return{kind:or,scope:e.admissionRequest.scope,applicationBinding:e.admissionRequest.application_binding,participantIds:[s[0],s[1]],registeredPublicKey:Uint8Array.from(i.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(i.signing_worker_verifying_share),stateEpoch:BigInt(i.state_epoch),transcript:Uint8Array.from(i.transcript),activeCapabilityBinding:r.binding.session_id,materialActivation:o.value}}function kO(e){let t;try{t=JSON.parse(e.activationResultJson)}catch{throw Error(`the Router recovery result is not JSON`)}let n=va(t);if(!n.ok)throw Error(`Router recovery result is invalid: ${n.message}`);if(n.value.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router recovery result belongs to another lifecycle`);if(e.activationReceipt.binding.lifecycle.lifecycle_id!==e.admissionRequest.scope.lifecycle_id)throw Error(`the Router recovery activation belongs to another lifecycle`);let r=e.activationReceipt.public_receipt,i=p({kind:r.material_activation.kind,activationId:r.material_activation.activation_id,capability:r.material_activation.capability,materialOwner:r.material_activation.material_owner,keyBinding:r.material_activation.key_binding,lifecycleBinding:r.material_activation.lifecycle_binding,signingWorker:r.material_activation.signing_worker});if(!i.ok)throw Error(`Invalid recovery material reference: ${i.error.message}`);return{kind:or,scope:e.admissionRequest.scope,applicationBinding:e.admissionRequest.application_binding,participantIds:[e.admissionRequest.participant_ids[0],e.admissionRequest.participant_ids[1]],registeredPublicKey:Uint8Array.from(r.registered_public_key),signingWorkerVerifyingShare:Uint8Array.from(r.signing_worker_verifying_share),stateEpoch:BigInt(r.state_epoch),transcript:Uint8Array.from(r.transcript),activeCapabilityBinding:[...e.activationReceipt.active_capability_binding],materialActivation:i.value}}async function AO(e){let t=uo(e.currentScope.material_activation),n=_(Be(`wallet-recovery-ed25519-material-activation`,32,`wallet recovery Ed25519 activation identities`)),r=y(`${e.lifecycleId}:material-activation`);if(!n.ok||!r.ok)throw Error(`wallet recovery Ed25519 material activation identity is invalid`);let i=x({activationId:n.value,capability:t.capability,materialOwner:t.materialOwner,keyBinding:t.keyBinding,lifecycleBinding:r.value,signingWorker:t.signingWorker}),a=new Uint8Array(32);globalThis.crypto.getRandomValues(a);try{return MO(ka({scope:{lifecycle_id:e.lifecycleId,root_share_epoch:e.currentScope.root_share_epoch,account_id:e.currentScope.account_id,threshold_session_id:e.thresholdSessionId,signer_set_id:e.currentScope.signer_set_id,signing_worker_id:e.currentScope.signing_worker_id,material_activation:yo(i)},active_material_activation:e.currentScope.material_activation,application_binding:e.applicationBinding,participant_ids:e.participantIds,active_capability_binding:e.activeCapabilityBinding,replacement_capability_binding:[...a],registered_public_key:e.registeredPublicKey}),`wallet recovery Ed25519 admission request is invalid`)}finally{a.fill(0)}}function jO(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r+=1)n|=(e[r]??0)^(t[r]??0);return n===0}function MO(e,t){if(!e.ok)throw Error(`${t}: ${e.message}`);return e.value}async function NO(e){let t=await ns({reservationId:$o(e.reservationId),keySetId:e.entry.keySetId});return await AO({lifecycleId:t,thresholdSessionId:`${t}:threshold-session`,currentScope:e.entry.recoveryBasis.scope,applicationBinding:e.entry.recoveryBasis.applicationBinding,participantIds:e.entry.recoveryBasis.participantIds,activeCapabilityBinding:e.entry.recoveryBasis.activeCapabilityBinding,registeredPublicKey:e.entry.recoveryBasis.registeredPublicKey})}async function PO(e){return await AO({lifecycleId:Be(`wallet-session-ed25519-recovery`,32,`wallet-session Ed25519 recovery lifecycles`),thresholdSessionId:e.basis.lifecycle.thresholdSessionId,currentScope:{root_share_epoch:e.basis.lifecycle.rootShareEpoch,account_id:e.basis.lifecycle.accountId,signer_set_id:e.basis.lifecycle.signerSetId,signing_worker_id:e.basis.lifecycle.signingWorkerId,material_activation:yo(e.basis.materialActivation)},applicationBinding:e.basis.applicationBinding,participantIds:e.basis.participantIds,activeCapabilityBinding:e.basis.activeCapabilityBinding,registeredPublicKey:e.basis.registeredPublicKey})}async function FO(e){let t=await e.transport.send({kind:`recovery_admit`,path:ca,body:e.request});if(!t.ok)throw Error(`Router Ed25519 recovery admission failed: ${t.message}`);let n=MO(ma(t.value),`Router Ed25519 recovery admission is invalid`);if(n.binding.lifecycle.lifecycle_id!==e.request.scope.lifecycle_id||!to(n.binding.material_activation,e.request.scope.material_activation))throw Error(`Router Ed25519 recovery admission changed the requested lifecycle`);return{request:e.request,receipt:n}}async function IO(e){let t=MO(da(JSON.parse(e.executeRequestJson)),`wallet recovery Ed25519 execute request is invalid`),n=await e.transport.send({kind:`recovery_execute`,path:Na,body:t});if(!n.ok)throw Error(`Router Ed25519 recovery execute failed: ${n.message}`);let r=MO(va(n.value),`Router Ed25519 recovery result is invalid`);return JSON.stringify(r)}async function LO(e){let t=MO(va(JSON.parse(e.protocolResultJson)),`Router Ed25519 recovery result is invalid`),n=await e.transport.send({kind:`recovery_activate`,path:sa,body:{binding:t.binding,public_receipt:t.public_receipt}});if(!n.ok)throw Error(`Router Ed25519 recovery activation failed: ${n.message}`);let r=MO(ia(n.value),`Router Ed25519 recovery activation is invalid`);if(!jO(r.active_capability_binding,e.request.replacement_capability_binding)||!jO(r.retired_capability_binding,e.request.active_capability_binding)||!jO(r.public_receipt.transcript,t.public_receipt.transcript)||!jO(r.public_receipt.registered_public_key,t.public_receipt.registered_public_key)||!jO(r.public_receipt.signing_worker_verifying_share,t.public_receipt.signing_worker_verifying_share)||r.public_receipt.state_epoch!==t.public_receipt.state_epoch||!to(r.public_receipt.material_activation,e.request.scope.material_activation))throw Error(`Router Ed25519 recovery activation changed the requested identity`);return r}const RO=[250,500,1e3];function zO(e){return new Promise(t=>setTimeout(t,e))}async function BO(e){let t=e.wait??zO,n=JSON.parse(e.executeRequestJson),r=0;for(let i=0;;i+=1){let a=await e.transport.send({kind:`execute`,path:pa,body:n});if(a.ok)return JSON.stringify(a.value);if(a.code!==`execution_in_progress`||r>=15e3)throw Error(`Router Ed25519 Yao execute failed: ${a.message}`);let o=RO[Math.min(i,RO.length-1)];await t(o),r+=o}}function VO(e){let t=F(e);if(t.length!==20)throw Error(`wallet recovery ECDSA identity has an invalid address`);return`0x${Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}`}function HO(e){let t=e.activationReceipt.ecdsa_activation;if(t.context.application_binding_digest_b64u!==e.publicCapability.context.application_binding_digest_b64u||!xo(t.public_identity,e.publicCapability.public_identity)||!Ra(t.signing_worker,e.publicCapability.signer_set.selected_server)||!to(t.material_activation,e.publicCapability.material_activation)||t.activation_epoch!==e.publicCapability.activation_epoch||e.activationReceipt.server_generation!==e.serverGeneration)throw Error(`wallet recovery ECDSA activation changed its registered capability`)}function UO(e){let t=e.publicCapability.public_identity;if(e.challenge.walletId!==e.walletId||e.challenge.reservationId!==e.reservationId||e.challenge.replacementId!==e.replacementId||e.challenge.keySetId!==e.entry.keySetId||e.challenge.keyHandle!==e.entry.keyHandle||e.challenge.recordedKeyManifestDigestB64u!==e.entry.recordedKeyManifestDigestB64u||e.challenge.expectedServerGeneration!==String(e.entry.recoveryBasis.serverGeneration)||e.challenge.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u)throw Error(`wallet recovery ECDSA possession challenge changed its registered identity`)}function WO(e){let t=e.publicCapability.public_identity;if(e.publicFacts.contextBinding32B64u!==t.context_binding_b64u||e.publicFacts.derivationClientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.clientVerifyingShare33B64u!==t.derivation_client_share_public_key33_b64u||e.publicFacts.relayerPublicKey33B64u!==t.server_public_key33_b64u||e.publicFacts.groupPublicKey33B64u!==t.threshold_public_key33_b64u||e.publicFacts.clientShareRetryCounter!==t.client_share_retry_counter||e.publicFacts.relayerShareRetryCounter!==t.server_share_retry_counter||e.publicFacts.ethereumAddress!==VO(t.ethereum_address20_b64u))throw Error(`wallet recovery ECDSA custody public facts changed the capability`)}function GO(e){let t=e.trim();if(!t)throw Error(`wallet recovery ECDSA returned no ready state blob`);return{kind:`ecdsa_role_local_state_blob_v1`,curve:`secp256k1`,encoding:`base64url`,producer:`signer_core`,stateBlobB64u:t}}async function KO(e){let t=no(e.entry.recoveryBasis.publicCapability),n=$a(e.entry.recoveryBasis.activationReceipt);HO({activationReceipt:n,publicCapability:t,serverGeneration:String(e.entry.recoveryBasis.serverGeneration)});let r=ms(e.entry.recoveryBasis.possessionChallenge);UO({challenge:r,entry:e.entry,walletId:e.walletId,reservationId:e.reservationId,replacementId:e.replacementId,publicCapability:t});let i=P(await ae(k(t)));if(r.publicCapabilityDigestB64u!==i)throw Error(`wallet recovery ECDSA possession challenge changed the capability digest`);WO({publicFacts:e.publicFacts,publicCapability:t});let a=await ku({workerCtx:e.workerCtx,challenge:r,stateBlob:GO(e.readyStateBlobB64u)}),o=await fs(r);if(a.challengeDigestB64u!==o||a.derivationClientSharePublicKey33B64u!==r.derivationClientSharePublicKey33B64u)throw Error(`wallet recovery ECDSA possession proof changed its challenge binding`);return{activationReceipt:n,publicCapability:t,possessionProof:a.proof}}function qO(e){return e.entryIndex===0?{kind:`reseal_replacement_factor`,factorJson:JSON.stringify({envelopeId:e.replacementFactor.replacementId,walletAuthMethodId:e.replacementFactor.walletAuthMethodId,factor:e.replacementFactor.factor}),factorSecret:e.replacementFactor.factorSecret.slice(0)}:{kind:`preserve_existing`}}function JO(e){return Uint8Array.from(e).buffer}function YO(e){e.kind===`reseal_replacement_factor`&&new Uint8Array(e.factorSecret).fill(0)}function XO(e){let t=F(e);if(t.length!==20)throw Error(`wallet recovery ECDSA identity has an invalid address`);return`0x${Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}`}function ZO(e){let t=e.entry.recoveryBasis.publicCapability.public_identity;if(e.bootstrap.contextBinding32B64u!==t.context_binding_b64u||e.bootstrap.clientSharePublicKey33B64u!==t.derivation_client_share_public_key33_b64u||e.bootstrap.clientShareRetryCounter!==t.client_share_retry_counter)throw Error(`wallet recovery changed ECDSA identity for ${e.entry.keySetId}`)}function QO(e){if(!e.candidate)return e.current;if(e.current)throw Error(`wallet recovery produced more than one replacement envelope`);return e.candidate}async function $O(e){let t=[],n=[],r=null;for(let[i,a]of e.prepared.keyManifest.entries.entries()){let o=null,s=null;try{let c=JO(e.recoveryCodeBytes);o=c;let l=qO({entryIndex:i,replacementFactor:e.replacementFactor});switch(s=l,a.kind){case`near_ed25519`:{let n=new Tn({routing:{kind:`discovery`},routerOrigin:new URL(e.relayUrl).origin,authorization:{kind:`recovery_challenge`,challengeId:e.recoveryChallengeId},fetch:globalThis.fetch}),i=await NO({reservationId:e.prepared.reservationId,entry:a}),o=await FO({request:i,transport:n}),s=await cr({runStep:e.runStep,walletId:e.walletId,custodyJson:e.custodyJson,recoveryCode:c,recordedKeyManifestDigestB64u:a.recordedKeyManifestDigestB64u,factorReplacement:l,nearEd25519SigningKeyId:a.recoveryBasis.applicationBinding.near_ed25519_signing_key_id,yaoAdmission:o.receipt,yaoApplication:o.request.application_binding,participantIds:o.request.participant_ids,registeredPublicKeyB64u:P(Uint8Array.from(a.recoveryBasis.registeredPublicKey)),runRouterRound:e=>IO({executeRequestJson:e,transport:n}),activateRouterRecovery:e=>LO({request:i,protocolResultJson:e,transport:n})});if(!s.localMaterial)throw Error(`wallet recovery produced no NEAR local material`);r=QO({current:r,candidate:s.recoveryReplacementEnvelope}),t.push({entry:a,metadata:kO({admissionRequest:i,activationResultJson:s.activationResultJson,activationReceipt:s.activationReceipt}),localMaterial:s.localMaterial});break}case`evm_family_ecdsa`:{let t=await nr({runStep:e.runStep,walletId:e.walletId,custodyJson:e.custodyJson,recoveryCode:c,recordedKeyManifestDigestB64u:a.recordedKeyManifestDigestB64u,factorReplacement:l,evmFamilySigningKeySlotId:a.evmFamilySigningKeySlotId,applicationBindingDigestB64u:a.recoveryBasis.publicCapability.context.application_binding_digest_b64u,registeredClientRootPublicKey33B64u:a.recoveryBasis.clientRootPublicKey33B64u,resolveRelayerPublicIdentity:async e=>(ZO({entry:a,bootstrap:e}),JSON.stringify({relayerKeyId:a.recoveryBasis.publicCapability.signer_set.selected_server.server_id,relayerPublicKey33B64u:a.recoveryBasis.publicCapability.public_identity.server_public_key33_b64u,groupPublicKey33B64u:a.recoveryBasis.publicCapability.public_identity.threshold_public_key33_b64u,ethereumAddress:XO(a.recoveryBasis.publicCapability.public_identity.ethereum_address20_b64u),relayerShareRetryCounter:a.recoveryBasis.publicCapability.public_identity.server_share_retry_counter}))}),i=await KO({entry:a,walletId:e.walletId,reservationId:e.prepared.reservationId,replacementId:e.replacementFactor.replacementId,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts,workerCtx:e.workerCtx});r=QO({current:r,candidate:t.recoveryReplacementEnvelope}),n.push({entry:a,activation:i,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts});break}}}finally{s&&YO(s),o&&new Uint8Array(o).fill(0)}}if(!r)throw Error(`wallet recovery produced no replacement custody envelope`);return{replacementEnvelope:Jn({expectedWalletId:e.walletId,replacement:r,activatedAtMs:(e.nowMs??Date.now)()}),nearKeySets:t,ecdsaKeySets:n}}function ek(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} must be a positive integer`);return e}function tk(e){if(!Array.isArray(e)||e.length!==2||!Number.isSafeInteger(e[0])||!Number.isSafeInteger(e[1])||e[0]<1||e[1]<1||e[0]===e[1])throw Error(`warm recovery participantIds must contain two distinct positive integers`);return[Number(e[0]),Number(e[1])]}const nk=[`capability`,`kind`,`nearAccountId`,`nearEd25519SigningKeyId`,`participantIds`,`quotaId`,`routerAbNormalSigning`,`runtimePolicyScope`,`signerSlot`,`signingWorkerId`,`thresholdExpiresAtMs`,`thresholdSessionId`,`walletId`,`walletSessionId`];function rk(e,t){let n=[...t].sort(),r=Object.keys(e).sort();if(r.length!==n.length)throw Error(`warm recovery bootstrap response fields are invalid`);for(let e=0;e<r.length;e+=1)if(r[e]!==n[e])throw Error(`warm recovery bootstrap response fields are invalid`)}function ik(e,t){if(e.authMethod!==`passkey`)return!1;let n=e.ed25519Restore;return n.credentialIdB64u?e.walletId===t.walletId&&n.nearAccountId===t.nearAccountId&&n.nearEd25519SigningKeyId===t.nearEd25519SigningKeyId&&n.signerSlot===t.signerSlot&&e.thresholdSessionIds.ed25519===t.thresholdSessionId:!1}async function ak(e,t){let n=await t.readExactEd25519SealedSession(hd({authMethod:`passkey`,materialActivation:e.materialActivation}));return n&&(n.curve!==`ed25519`||!ik(n,e)||!b(n.ed25519Restore.materialActivation,e.materialActivation))||!n||n.expiresAtMs<=t.nowMs()||n.remainingUses<1?{kind:`unavailable`}:{kind:`ready`,record:n}}async function ok(e){let t;try{t=await e.runtime.resolveSelectedWalletAuthority(String(e.walletId))}catch{return null}if(t.kind!==`resolved`)return null;let{selection:n,authMethod:r,authority:i}=t;if(n.lockState!==`unlocked`||n.walletId!==e.walletId||e.expectedAuthorityRef.walletId!==e.walletId||n.walletAuthMethodId!==e.expectedAuthorityRef.walletAuthMethodId||r.kind!==`passkey`||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthMethodId!==e.expectedAuthorityRef.walletAuthMethodId||r.walletAuthorityId!==i.authorityId||String(r.rpId)!==e.rpId||String(r.credentialIdB64u)!==e.credentialIdB64u||i.state!==`active`||i.walletId!==e.walletId)return null;try{return{authorizationRead:await e.runtime.readExactWalletSessionAuthorization({walletId:e.walletId,authorityId:i.authorityId,authMethodId:r.walletAuthMethodId}),authorityId:i.authorityId,authorityDigestB64u:i.authorityDigestB64u,authorityRevocationEpoch:i.revocationEpoch}}catch{return null}}async function sk(e){if(e.authorizationRead.kind!==`found`)return null;let t=e.authorizationRead,n=t.record,r=n.capabilitySubjects.filter(t=>t.kind===`sign`&&t.keyFamily===`ed25519`&&b(t.materialActivation,e.record.ed25519Restore.materialActivation));return n.walletId!==e.expectedAuthorityRef.walletId||n.walletId!==e.record.walletId||n.authorityId!==e.expectedAuthorityId||n.authMethodId!==e.expectedAuthorityRef.walletAuthMethodId||String(n.authorityDigestB64u)!==String(e.expectedAuthorityDigestB64u)||n.authorityRevocationEpoch!==e.expectedAuthorityRevocationEpoch||n.expiresAtMs<=e.nowMs||t.operationCredential.walletSessionId.trim().length===0||t.operationCredential.token.trim().length===0||r.length!==1?null:t}function ck(e,t){let n=e.ed25519Restore,r=Ea({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:e.walletId,nearAccountId:n.nearAccountId,nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,signerSlot:n.signerSlot,thresholdSessionId:t,signingWorkerId:n.routerAbNormalSigning.signingWorkerId,participantIds:n.participantIds});if(!r.ok)throw Error(r.message);return r.value}async function lk(e){let t=e.authorization.operationCredential.token;if(e.authorization.record.walletId!==e.request.walletId||!e.authorization.operationCredential.walletSessionId||!t.trim())throw Error(`[SigningEngine][near] active Wallet Session authorization does not match sealed material`);let n=await e.fetch(`${new URL(e.relayerUrl).origin}${oa}`,{method:`POST`,headers:{Authorization:`Bearer ${t}`,"Content-Type":`application/json`},body:JSON.stringify(e.request)}),r=await uk(n),i=E(r)?r:null;if(!n.ok){let e=i?String(i.code||``).trim():``;if(n.status===401&&e===`wallet_session_expired`)return{kind:`unavailable`,reason:`wallet_session_expired`};let t=i?String(i.message||``).trim():``;throw Error(`[SigningEngine][near] Ed25519 warm recovery bootstrap failed (HTTP ${n.status}${e?`, ${e}`:``}): ${t||`invalid response`}`)}if(!i)throw Error(`Ed25519 warm recovery bootstrap returned invalid JSON`);return{kind:`ready`,descriptor:await dk({record:e.record,authorization:e.authorization,expectedAuthorityRef:e.expectedAuthorityRef,expectedThresholdSessionId:e.expectedThresholdSessionId,response:i})}}async function uk(e){try{return await e.json()}catch{return null}}async function dk(e){let t=e.record,n=e.response;if(rk(n,nk),n.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`warm recovery bootstrap response kind is invalid`);let r=t.ed25519Restore,i=j(n.walletId,`response.walletId`),a=j(n.nearAccountId,`response.nearAccountId`),o=j(n.nearEd25519SigningKeyId,`response.nearEd25519SigningKeyId`),s=ek(n.signerSlot,`response.signerSlot`),c=j(n.thresholdSessionId,`response.thresholdSessionId`),l=j(n.signingWorkerId,`response.signingWorkerId`),u=ek(n.thresholdExpiresAtMs,`response.thresholdExpiresAtMs`),d=tk(n.participantIds),f=fe(M(n.runtimePolicyScope,`response.runtimePolicyScope`)),p=fe(M(r.runtimePolicyScope,`ed25519Restore.runtimePolicyScope`)),m=Ze(n.routerAbNormalSigning),h=pt(n.walletSessionId),g=dt(n.quotaId),_=Cn(n.capability),v=e.authorization.operationCredential.token;if(!h.ok||!g.ok||e.expectedAuthorityRef.walletId!==t.walletId||String(h.value)!==String(e.authorization.operationCredential.walletSessionId)||String(g.value)!==String(e.authorization.record.quotaId)||!m||i!==t.walletId||a!==r.nearAccountId||o!==r.nearEd25519SigningKeyId||s!==r.signerSlot||c!==String(e.expectedThresholdSessionId)||!v||l!==r.relayerKeyId||l!==r.routerAbNormalSigning.signingWorkerId||m.signingWorkerId!==l||t.expiresAtMs>u||d[0]!==r.participantIds[0]||d[1]!==r.participantIds[1]||!xe(f,p))throw Error(`warm recovery bootstrap does not match the exact sealed Ed25519 lane`);if(!be(f))throw Error(`warm recovery bootstrap signing-root scope is invalid`);if(!v)throw Error(`[SigningEngine][near] active Wallet Session authorization is unavailable`);let y={authority:e.expectedAuthorityRef,walletId:ko(i),nearAccountId:Or(a),nearEd25519SigningKeyId:o,signerSlot:s,operationalPublicKey:`ed25519:${Tr(Uint8Array.from(_.registeredPublicKey))}`,relayerKeyId:l,credentialIdB64u:j(r.credentialIdB64u,`ed25519Restore.credentialIdB64u`),session:{sessionKind:`opaque`,home:e.authorization.operationCredential.home,walletSessionToken:v,thresholdSessionId:c,walletSessionId:h.value,authorizationId:e.authorization.record.authorizationId,quotaId:g.value,expiresAtMs:u,remainingUses:t.remainingUses,runtimePolicyScope:f,participantIds:d,routerAbNormalSigning:m},capability:_};return Ut(y,r.materialActivation),y}async function fk(e,t){let n=await ak(e.subject,t);if(n.kind===`unavailable`)return{kind:`capability_recovery_required`};let r=o(n.record.walletId);if(!r.ok)throw Error(`[SigningEngine][near] sealed Ed25519 wallet identity is invalid`);let i=j(n.record.ed25519Restore.credentialIdB64u,`ed25519Restore.credentialIdB64u`),a;try{a=await t.resolveExactPasskeyWalletAuthAuthorityRef({walletId:r.value,rpId:n.record.ed25519Restore.rpId,credentialIdB64u:i})}catch{return{kind:`capability_recovery_required`}}if(!a)return{kind:`capability_recovery_required`};let s=await ok({walletId:r.value,rpId:n.record.ed25519Restore.rpId,credentialIdB64u:i,expectedAuthorityRef:a,runtime:t});if(!s)return{kind:`capability_recovery_required`};let c=await sk({record:n.record,authorizationRead:s.authorizationRead,expectedAuthorityRef:a,expectedAuthorityId:s.authorityId,expectedAuthorityDigestB64u:s.authorityDigestB64u,expectedAuthorityRevocationEpoch:s.authorityRevocationEpoch,nowMs:t.nowMs()});if(!c)return{kind:`capability_recovery_required`};let l=await lk({request:ck(n.record,e.subject.thresholdSessionId),authorization:c,record:n.record,expectedAuthorityRef:a,expectedThresholdSessionId:e.subject.thresholdSessionId,relayerUrl:e.relayerUrl,fetch:e.fetch});if(l.kind===`unavailable`)return{kind:`capability_recovery_required`};let u=l.descriptor,d=await t.readPasskeyCustodySessionEnvelope({walletId:String(u.walletId),credentialIdB64u:u.credentialIdB64u});return!d||d.binding.kind!==`wallet_custody_seed_v1`?{kind:`capability_recovery_required`}:{kind:`ready`,context:{kind:`passkey_ed25519_yao_export_context_v1`,selectedLaneMaterialActivation:u.capability.materialActivation,material:{authority:u.authority,walletId:u.walletId,nearAccountId:u.nearAccountId,nearEd25519SigningKeyId:u.nearEd25519SigningKeyId,signerSlot:u.signerSlot,operationalPublicKey:u.operationalPublicKey,relayerKeyId:u.relayerKeyId,credentialIdB64u:u.credentialIdB64u,capability:u.capability},authorization:c,relayerUrl:e.relayerUrl,rpId:n.record.ed25519Restore.rpId,walletCustodyEnvelope:d}}}async function pk(e){let{authority:t,authMethod:n}=e.projection;if(String(t.walletId)!==e.walletId||String(n.walletId)!==e.walletId||String(n.walletAuthMethodId)!==e.walletAuthMethodId||String(n.walletAuthorityId)!==String(t.authorityId))throw Error(`Verified Email OTP authority changed during wallet unlock`);switch(t.provenance.kind){case`wallet_registration`:await G.persistFoundingWalletAuthority({authority:t,authMethod:n});return;case`wallet_recovery`:{if(!ba(t))throw Error(`Recovered Email OTP authority provenance is invalid`);let r=await G.resolveWalletAuthorityForMethod(e.walletId,e.walletAuthMethodId),i=r.kind===`resolved`?[...String(r.authority.authorityId)===String(t.authorityId)?[]:[`authorityId`],...String(r.authority.authorityDigestB64u)===String(t.authorityDigestB64u)?[]:[`authorityDigest`],...r.authMethod.kind===`email_otp`?[]:[`method.kind`],...r.authMethod.status===`active`?[]:[`method.status`],...String(r.authMethod.walletAuthMethodId)===String(n.walletAuthMethodId)?[]:[`method.id`],...String(r.authMethod.walletAuthorityId)===String(n.walletAuthorityId)?[]:[`method.authorityId`],...r.authMethod.kind===`email_otp`&&r.authMethod.emailHashHex!==n.emailHashHex?[`method.emailHash`]:[]]:[`resolution:${r.kind}`];if(i.length>0)throw Error(`Verified recovered Email OTP authority is not installed on this device: ${i.join(`, `)}`);return}case`device_link`:{let n=await G.resolveWalletAuthorityForMethod(e.walletId,e.walletAuthMethodId);if(n.kind!==`resolved`||String(n.authority.authorityId)!==String(t.authorityId)||String(n.authority.authorityDigestB64u)!==String(t.authorityDigestB64u))throw Error(`Verified linked Email OTP authority is not installed on this device`);return}}t.provenance}async function mk(e){let{authority:t,authMethod:n}=e.projection;if(String(t.walletId)!==e.walletId||String(n.walletId)!==e.walletId||String(n.walletAuthMethodId)!==e.walletAuthMethodId||String(n.walletAuthorityId)!==String(t.authorityId)||n.emailHashHex!==e.emailHashHex)throw Error(`Verified Email OTP authority does not match the wallet unlock factor`);let r=Ha({walletId:e.walletId,provider:e.providerSubject.startsWith(`google:`)?`google`:`email`,providerUserId:e.providerSubject,emailHashHex:e.emailHashHex});return await H({authority:{walletId:r.walletId,factor:r.factor,verifier:r.verifier,bindingId:n.walletAuthMethodId}})}function hk(){}async function gk(e,t){switch(t.kind){case`near_ed25519_wallet`:await e.signingEngine.activateAuthenticatedWalletState({walletId:t.signer.account.wallet.walletId,nearAccountId:Or(t.signer.account.nearAccountId),signerSlot:t.signer.signerSlot,...e.nearClient?{nearClient:e.nearClient}:{}}),await e.signingEngine.markSelectedEmailOtpWalletAuthorityUnlocked({walletId:t.signer.account.wallet.walletId,walletAuthMethodId:t.walletAuthMethodId}),e.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.signer.account.wallet.walletId,authMethod:`email_otp`});return;case`evm_family_ecdsa_wallet`:{let n=e.signingEngine.getUserPreferences();n.setCurrentWallet(t.walletId),await n.reloadUserSettings().catch(hk),await e.signingEngine.markSelectedEmailOtpWalletAuthorityUnlocked({walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId}),e.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.walletId,authMethod:`email_otp`});return}}}function _k(e){return{laneSelection:e.laneSelection,sessionLifecycle:e.sessionLifecycle,ecdsa:{...e.ecdsa,theme:e.getTheme()},ed25519Yao:{...e.ed25519Yao,theme:e.getTheme()}}}async function vk(e,t){let{exportKeypairWithUI:n}=await import(`./exportKeypairOperation-Du9HKB8f.js`);return await n(_k(e),t)}async function yk(e,t){let{resolveExactKeyExportLane:n}=await import(`./exportKeypairOperation-Du9HKB8f.js`);return await n(_k(e),t)}async function bk(e,t){return await e.touchConfirm.requestRegistrationCredentialConfirmation({walletId:t.walletId,nearAccountId:t.nearAccountId,signerSlot:t.signerSlot,confirmerText:t.confirmerText,confirmationConfigOverride:t.confirmationConfigOverride,challengeB64u:t.challengeB64u,registrationOptions:t.registrationOptions})}async function xk(e,t){return await e.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u({subjectId:t.subjectId,challengeB64u:t.challengeB64u,allowCredentials:t.allowCredentials,includeSecondPrfOutput:t.includeSecondPrfOutput??!1})}function Sk(e){e instanceof Uint8Array&&e.fill(0)}function Ck(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned invalid JSON`);return e}function wk(e,t){return j(e,t)}function Tk(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}function Ek(e){if(!e||typeof e.requestWorkerOperation!=`function`)throw Error(`Email OTP secret-bearing operations require the dedicated emailOtp worker`);return e}function Dk(e,t){if(!(e instanceof Uint8Array))throw Error(`${t} must be a Uint8Array`);if(e.length!==32)throw Error(`${t} must contain 32 bytes`);return Uint8Array.from(e)}function Ok(e){return e.routeFamily===`registration`?dr({routeFamily:`registration`,operation:Lr}):dr({routeFamily:`login`,operation:Vr})}function kk(e){let t=Ck(e,`Email OTP registration ECDSA handle`),n=wk(t.kind,`emailOtpSessionHandle.handle.kind`);if(n!==`email_otp_worker_session_handle_v1`)throw Error(`Unsupported Email OTP worker handle kind: ${n}`);let r=wk(t.action,`emailOtpSessionHandle.handle.action`);if(r!==`wallet_registration_ecdsa_prepare`)throw Error(`Unsupported Email OTP worker handle action: ${r}`);if(wk(t.operation,`emailOtpSessionHandle.handle.operation`)!==`registration`)throw Error(`Email OTP registration ECDSA handle requires registration operation`);if(wk(t.keyScope,`emailOtpSessionHandle.handle.keyScope`)!==`evm-family`)throw Error(`Email OTP registration ECDSA handle requires evm-family keyScope`);return{kind:`email_otp_worker_session_handle_v1`,sessionId:wk(t.sessionId,`emailOtpSessionHandle.handle.sessionId`),walletId:wk(t.walletId,`emailOtpSessionHandle.handle.walletId`),evmFamilySigningKeySlotId:wk(t.evmFamilySigningKeySlotId,`emailOtpSessionHandle.handle.evmFamilySigningKeySlotId`),authSubjectId:wk(t.authSubjectId,`emailOtpSessionHandle.handle.authSubjectId`),action:`wallet_registration_ecdsa_prepare`,operation:`registration`,keyScope:`evm-family`,chainTarget:Ak(t.chainTarget)}}function Ak(e){let t=e&&typeof e==`object`?e:null;if(!t)throw Error(`Email OTP registration ECDSA handle requires chainTarget`);return jr(t)}function jk(e){let t=Ck(e,`Email OTP registration ECDSA handle result`),n=wk(t.kind,`emailOtpSessionHandle.kind`);switch(n){case`available`:if(!Array.isArray(t.handles)||t.handles.length===0)throw Error(`Email OTP registration ECDSA handle result requires handles`);{let e=[];for(let n of t.handles)e.push(kk(n));let n=e[0];if(!n)throw Error(`Email OTP registration ECDSA handle result requires handles`);return{kind:`available`,handles:[n,...e.slice(1)]}}case`not_requested`:if(`handles`in t)throw Error(`Email OTP unrequested registration ECDSA handle result forbids handles`);return{kind:`not_requested`};default:throw Error(`Unsupported Email OTP registration ECDSA handle result kind: ${n}`)}}async function Mk(e){let t=Ek(e.workerCtx),n=null;try{n=e.clientSecret32?Dk(e.clientSecret32,`clientSecret32`):null;let r=await t.requestWorkerOperation({kind:`emailOtp`,request:{type:`prepareEmailOtpRegistrationEnrollmentMaterial`,payload:{relayUrl:wk(e.relayUrl,`relayUrl`),walletId:wk(e.walletId,`walletId`),userId:wk(e.userId,`userId`),groupId:wk(e.groupId,`groupId`),routePlan:Ok({routeFamily:`registration`}),otpChannel:e.otpChannel||`email_otp`,ecdsaSessionHandle:e.ecdsaSessionHandle,...n?{clientSecret32:Tk(n)}:{}}}});return{...r,emailOtpSessionHandle:jk(r.emailOtpSessionHandle),emailOtpEnrollment:r.emailOtpEnrollment}}finally{Sk(n)}}function Nk(e,t){return cn({freshRouteFamily:t,operation:e.operation})}function Pk(e){return{walletSession:e.walletSession,authoritySelector:e.authoritySelector,chainTarget:e.chainTarget,otpCode:e.otpCode,routePlan:Nk(e,`login`),ecdsaBootstrapAuthorization:e.ecdsaBootstrapAuthorization,emailHashHex:e.emailHashHex,providerIdentity:e.providerIdentity,ed25519YaoRecovery:e.ed25519YaoRecovery??{kind:`not_requested`},...e.emailOtpAuthPolicy?{emailOtpAuthPolicy:e.emailOtpAuthPolicy}:{},...e.emailOtpAuthReason?{emailOtpAuthReason:e.emailOtpAuthReason}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{},...e.challengeId?{challengeId:e.challengeId}:{},...e.operation?{operation:e.operation}:{},...e.groupId?{groupId:e.groupId}:{},...e.keyHandle?{keyHandle:e.keyHandle}:{},...e.participantIds?{participantIds:e.participantIds}:{},...e.publicationChainTargets?{publicationChainTargets:e.publicationChainTargets}:{},...typeof e.ttlMs==`number`?{ttlMs:e.ttlMs}:{},...typeof e.remainingUses==`number`?{remainingUses:e.remainingUses}:{},...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},...e.onProgress?{onProgress:e.onProgress}:{}}}async function Fk(e,t){return await e.emailOtpSessions.loginWithEcdsaCapabilityInternal(Pk(t))}async function Ik(e,t){let n=R(t.walletId),r=String(t.relayUrl||e.relayerUrl||``).trim();if(!r)throw Error(`Missing relayer url (configs.network.relayer.url)`);let i=String(t.groupId||e.groupId||``).trim();if(!i)throw Error(`Missing shamir prime for Email OTP runtime`);let a=String(t.userId).trim();if(!a)throw Error(`Email OTP registration enrollment material requires userId`);return await Mk({relayUrl:r,walletId:String(n),userId:a,groupId:i,workerCtx:e.getSignerWorkerContext(),otpChannel:t.otpChannel,ecdsaSessionHandle:{kind:`not_requested`},...t.clientSecret32?{clientSecret32:t.clientSecret32}:{}})}const Lk={BUILD:{ROOT:`dist`,WORKERS:`dist/workers`,ESM:`dist/esm`,TYPES:`dist/types`},SOURCE:{ROOT:`src`,CORE:`src/core`,STATIC:`src/static`,SIGNING_WORKERS:`src/core/signingEngine/workerManager/workers`,WASM_SIGNER:`../../wasm/near_signer`,ED25519_YAO_CLIENT:`../../crates/router-ab-ed25519-yao-client`,WASM_ECDSA_CLIENT:`../../wasm/router_ab_ecdsa_client`,WASM_EVM_CRYPTO:`../../wasm/evm_crypto`,WASM_TEMPO_SIGNER:`../../wasm/tempo_signer`,WASM_SHAMIR3PASS_RUNTIME:`../../wasm/shamir3pass_runtime`,WASM_EMAIL_OTP_RUNTIME:`../../wasm/email_otp_runtime`,WASM_WALLET_CUSTODY_CEREMONY:`../../wasm/wallet_custody_ceremony`,CRITICAL_DIRS:[`src/core`,`src/react`,`src/static`,`src/utils`,`../wallet-server/src`,`../shared-ts/src`,`../../crates/router-ab-ed25519-yao-client`,`../../wasm/near_signer`,`../../wasm/router_ab_ecdsa_client`,`../../wasm/evm_crypto`,`../../wasm/tempo_signer`,`../../wasm/shamir3pass_runtime`,`../../wasm/email_otp_runtime`,`../../wasm/wallet_custody_ceremony`]},RUNTIME:{SDK_BASE:`/sdk`,WORKERS_BASE:`/sdk/workers`,TOUCH_CONFIRM_WORKER:`/sdk/workers/passkey-confirm.worker.js`,PASSKEY_MPC_SESSION_WORKER:`/sdk/workers/passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT_WORKER:`/sdk/workers/passkey-mpc-export.worker.js`,SIGNER_WORKER:`/sdk/workers/near-signer.worker.js`,ECDSA_DERIVATION_CLIENT_WORKER:`/sdk/workers/ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT_WORKER:`/sdk/workers/ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT_WORKER:`/sdk/workers/ecdsa-online-client.worker.js`,EMAIL_OTP_WORKER:`/sdk/workers/email-otp.worker.js`,WALLET_CUSTODY_CEREMONY_WORKER:`/sdk/workers/wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY_WORKER:`/sdk/workers/device-linking-key.worker.js`},WORKERS:{TOUCH_CONFIRM:`passkey-confirm.worker.js`,PASSKEY_MPC_SESSION:`passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT:`passkey-mpc-export.worker.js`,SIGNER:`near-signer.worker.js`,ECDSA_DERIVATION_CLIENT:`ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT:`ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT:`ecdsa-online-client.worker.js`,EMAIL_OTP:`email-otp.worker.js`,WALLET_CUSTODY_CEREMONY:`wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY:`device-linking-key.worker.js`,SHAMIR3PASS:`shamir3pass.worker.js`,WASM_SIGNER_JS:`wasm_signer_worker.js`,WASM_SIGNER_WASM:`wasm_signer_worker_bg.wasm`,ED25519_YAO_CLIENT_JS:`router_ab_ed25519_yao_client.js`,ED25519_YAO_CLIENT_WASM:`router_ab_ed25519_yao_client_bg.wasm`,ECDSA_CLIENT_JS:`router_ab_ecdsa_client.js`,ECDSA_CLIENT_WASM:`router_ab_ecdsa_client_bg.wasm`,WASM_EVM_CRYPTO_BG_WASM:`evm_crypto_bg.wasm`,WASM_TEMPO_SIGNER_BG_WASM:`tempo_signer_bg.wasm`,EMAIL_OTP_RUNTIME_JS:`email_otp_runtime.js`,EMAIL_OTP_RUNTIME_WASM:`email_otp_runtime_bg.wasm`,WALLET_CUSTODY_CEREMONY_WASM:`wallet_custody_ceremony_bg.wasm`},TEST_WORKERS:{TOUCH_CONFIRM:`/sdk/workers/passkey-confirm.worker.js`,PASSKEY_MPC_SESSION:`/sdk/workers/passkey-mpc-session.worker.js`,PASSKEY_MPC_EXPORT:`/sdk/workers/passkey-mpc-export.worker.js`,SIGNER:`/sdk/workers/near-signer.worker.js`,ECDSA_DERIVATION_CLIENT:`/sdk/workers/ecdsa-derivation-client.worker.js`,ECDSA_PRESIGN_CLIENT:`/sdk/workers/ecdsa-presign-client.worker.js`,ECDSA_ONLINE_CLIENT:`/sdk/workers/ecdsa-online-client.worker.js`,EMAIL_OTP:`/sdk/workers/email-otp.worker.js`,WALLET_CUSTODY_CEREMONY:`/sdk/workers/wallet-custody-ceremony.worker.js`,DEVICE_LINKING_KEY:`/sdk/workers/device-linking-key.worker.js`,SHAMIR3PASS:`/sdk/workers/shamir3pass.worker.js`,WASM_SIGNER_JS:`/sdk/workers/wasm_signer_worker.js`,WASM_SIGNER_WASM:`/sdk/workers/wasm_signer_worker_bg.wasm`,ED25519_YAO_CLIENT_JS:`/sdk/workers/router_ab_ed25519_yao_client.js`,ED25519_YAO_CLIENT_WASM:`/sdk/workers/router_ab_ed25519_yao_client_bg.wasm`,ECDSA_CLIENT_JS:`/sdk/workers/router_ab_ecdsa_client.js`,ECDSA_CLIENT_WASM:`/sdk/workers/router_ab_ecdsa_client_bg.wasm`,WASM_EVM_CRYPTO_BG_WASM:`/sdk/workers/evm_crypto_bg.wasm`,WASM_TEMPO_SIGNER_BG_WASM:`/sdk/workers/tempo_signer_bg.wasm`,EMAIL_OTP_RUNTIME_JS:`/sdk/workers/email_otp_runtime.js`,EMAIL_OTP_RUNTIME_WASM:`/sdk/workers/email_otp_runtime_bg.wasm`,WALLET_CUSTODY_CEREMONY_WASM:`/sdk/workers/wallet_custody_ceremony_bg.wasm`}},Rk=()=>{let e=navigator.userAgent.toLowerCase(),t=/android|iphone|ipod|blackberry|iemobile|opera mini/i.test(e),n=/ipad|tablet|kindle|playbook|silk/i.test(e),r=navigator.maxTouchPoints>0,i=window.screen.width,a=i<=480,o=i<=1024,s=`orientation`in window;return t||r&&a?`mobile`:n||r&&o&&s?`tablet`:`desktop`},zk=()=>{try{let e=navigator.userAgent;return/safari/i.test(e)&&!/chrome|crios|crmo|chromium|edg|edge|opr|opera|brave/i.test(e)}catch{return!1}},Bk=()=>{try{let e=navigator.userAgent,t=navigator.platform||``,n=Number(navigator.maxTouchPoints||0),r=/iPad|iPhone|iPod/.test(e),i=/Macintosh/.test(e)&&n>1,a=/iPad|iPhone|iPod/.test(t);return r||i||a}catch{return!1}},Vk=()=>{try{let e=navigator.userActivation;return!!(e&&typeof e.isActive==`boolean`&&e.isActive)}catch{return!1}},Hk=()=>{try{return Vk()?!1:Bk()||Uk()||zk()}catch{return!1}},Uk=()=>Rk()===`mobile`;function Wk(e){try{return ul(e)===`emailOtp`}catch{return!1}}function Gk(e,t){let n=e.userPreferencesManager.getConfirmationConfig(),r=t?.confirmationConfig||{},i=Object.fromEntries(Object.entries(r).filter(([,e])=>e!=null)),a={...n,...i};if(t?.type===Y.AUTHORIZE_KEY_EXPORT)return dl({uiMode:`none`,behavior:a.behavior,autoProceedDelay:a.autoProceedDelay});t&&Wk(t)&&(a={...a,uiMode:a.uiMode===`none`?`modal`:a.uiMode,behavior:`requireClick`});let o=window.self!==window.top;if(Hk()){let e=a.uiMode===`none`?`drawer`:a.uiMode;a={...a,uiMode:e,behavior:`requireClick`}}return o&&t?.type&&(t.type===Y.REGISTER_ACCOUNT||t.type===Y.LINK_DEVICE)?dl({uiMode:`modal`,behavior:`requireClick`,autoProceedDelay:a.autoProceedDelay}):dl(a)}const Kk=new Map;function qk(e){e?.cleanupTimer&&(clearTimeout(e.cleanupTimer),e.cleanupTimer=null)}function Jk(e){let t=String(e.requestId||``).trim();if(!t)return;qk(Kk.get(t));let n=Number.isFinite(e.ttlMs)&&Number(e.ttlMs)>0?Number(e.ttlMs):12e4,r={readiness:e.readiness,cleanupTimer:null};r.cleanupTimer=setTimeout(()=>{Kk.get(t)===r&&Kk.delete(t)},n),Kk.set(t,r)}function Yk(e){let t=String(e||``).trim();if(!t)return;let n=Kk.get(t);return Kk.delete(t),qk(n),n?.readiness}function Xk(e){let t=String(e||``).trim();t&&(qk(Kk.get(t)),Kk.delete(t))}const Zk={CONFIRMATION_COMPLETE:`confirmation.complete`,PASSKEY_PROMPT_STARTED:`auth.passkey.prompt.started`,PASSKEY_PROMPT_SUCCEEDED:`auth.passkey.prompt.succeeded`};function Qk(e,t,n){yl(e,{requestId:t,step:2,phase:Zk.CONFIRMATION_COMPLETE,status:`failed`,message:n||Ol.cancelled})}function $k(e){return e.type===Y.SIGN_TRANSACTION||e.type===Y.SIGN_NEP413_MESSAGE?ul(e)??`webauthn`:`webauthn`}function eA(e){return!Qd(e.signingOperationStateKind)||e.signingAuthMode===`emailOtp`}function tA(e){if(!e)throw Error(`NEAR transaction signing lifecycle callback is required`);return e}function nA(){}function rA(){return new Promise(nA)}function iA(){return rA()}function aA(e){let t=Ru(e);return t?.kind===`expired`?{kind:`wallet_session_expired`,failure:t}:rA()}function oA(e){return e.then(iA,aA)}function sA(e){return`kind`in e&&e.kind===`wallet_session_expired`}function cA(e){return e.request.type===Y.SIGN_NEP413_MESSAGE||e.request.type===Y.SIGN_TRANSACTION&&e.transactionSummary.type===`delegateAction`?{kind:`signature_only`}:{kind:`transaction_access_key`}}function lA(e){return e.error===`NEAR_ACCOUNT_LOOKUP_FAILED`?e.details||`NEAR account access-key lookup failed.`:e.details?`${Ol.nearRpcFailed}: ${e.details}`:Ol.nearRpcFailed}function uA(e){if(e.readinessMode.kind!==`transaction_access_key`)return;if(e.request.type!==Y.SIGN_TRANSACTION)throw Error(`NEAR transaction readiness requires a transaction confirmation request`);let t=fl(e.request);if(t.signingKind!==`transaction`)throw Error(`NEAR transaction readiness cannot use a delegate confirmation payload`);let n=t.nearFundingRequest;if(n.signatureUses!==e.usesNeeded)throw Error(`NEAR funding request signature use count does not match confirmation request`);return n}function dA(e){return e?{nearTransactionReadiness:e}:{}}function fA(e){let t=String(e||``).replace(/\D/g,``).slice(0,6);if(!/^\d{6}$/.test(t))throw Error(`Enter the 6-digit Email OTP code to continue`);return t}function pA(e){if(e.signingAuthPlanKind===Zd.EmailOtpReauth)throw console.warn(`[SigningEngine][ui-confirm] Email OTP auth plan reached passkey credential lookup`,{stage:e.stage,subjectId:e.subjectId,requestId:e.requestId,signingAuthPlanKind:e.signingAuthPlanKind}),Error(`[SigningEngine] passkey_lookup_for_email_otp`)}function mA(e){throw Error(`Unsupported WebAuthn challenge branch: ${JSON.stringify(e)}`)}function hA(e){e.ctx.operationStepUpPreparation.cancel({requestId:e.requestId,...e.preparation?{handle:e.preparation.handle}:{}})}function gA(e){let t=String(e||``).trim();return!t||t===`AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`?``:t}function _A(e){let t=gA(e.defaultChallengeB64u);if(!e.webauthnChallenge){if(e.requireTypedChallenge)throw Error(`Missing typed WebAuthn challenge for passkey signing flow`);return t}switch(e.webauthnChallenge.kind){case`intent_digest`:return gA(e.webauthnChallenge.challengeB64u)||t;case`threshold_session_policy`:return String(e.webauthnChallenge.digest32B64u||``).trim();case`ecdsa_role_local_bootstrap`:return String(e.webauthnChallenge.digest32B64u||``).trim()}return mA(e.webauthnChallenge)}async function vA(e,t,n,r){let i=lt(e.surfaceMeasurementBinding),{confirmationConfig:a,transactionSummary:o,theme:s,surface:c}=r,l=Sl(e),u=Dl({adapters:l,worker:n,request:t,confirmationConfig:a,transactionSummary:o,theme:s,surface:c}),d=ml(t),f,p=String(Ml(t)||``).trim()||void 0;p===`pending-intent-digest`&&(p=void 0);try{let a=$k(t),s=t.type===Y.SIGN_TRANSACTION?fl(t):null,c=s?.signingKind===`transaction`?s:null,m=c?tA(r.onSigningOperationInteractionEvent):null,h=c?Qd(c.signingOperationStateKind):!1,g=c?eA({signingOperationStateKind:c.signingOperationStateKind,signingAuthMode:a}):!0,_=Al(t),v=t.type===Y.SIGN_TRANSACTION?Yd(t.requestId):void 0,y=t.type===Y.SIGN_TRANSACTION?String(Ml(t)||``).trim()||void 0:t.type===Y.SIGN_NEP413_MESSAGE&&String(await ol({nearAccountId:d,recipient:t.payload.recipient,message:t.payload.message})).trim()||void 0;y===`pending-intent-digest`&&(y=void 0);let b=y;p=y;let x=cA({request:t,transactionSummary:o}),S=uA({request:t,usesNeeded:_,readinessMode:x}),C=S?l.near.fetchNearContext(S):void 0,w=l.security.getRpId(),T=w?{rpId:w}:void 0,E,D=new Promise(e=>{E=e}),O=!1,ee=!1,k=Yk(t.requestId),A=!!k,j=k?Promise.resolve(k.promise):void 0,M=j?oA(j):void 0,te=()=>{E?.(),E=void 0};a===`emailOtp`&&m?.({kind:$d.AuthenticationStarted});let ne=g?u.promptUser({securityContext:T,loading:!1,onMounted:()=>{te(),A&&u.updateUI({preparing:!0})}}):Promise.resolve({confirmed:!0});g?ne.finally(te):te();let re,N=e=>{let t=String(e.intentDigest||``).trim(),n=String(e.challengeB64u||``).trim();t&&(y=t,p=t),n&&(b=n)},ie=e=>{N(e),u.updateUI({...e.displayModel?{model:e.displayModel}:{},...e.title?{title:e.title}:{},...e.body?{body:e.body}:{},loading:!1})},ae=v?(async()=>(await D,await v))():void 0;ae&&ae.then(e=>{O||ie(e)}).catch(e=>{O||u.updateUI({loading:!1,errorMessage:String(I(e)?.message||e||`Failed to prepare intent`)})}),j&&j.then(async()=>{A=!1,await D,!O&&u.updateUI({preparing:!1})}).catch(async e=>{if(A=!1,await D,O)return;if(ee){u.updateUI({preparing:!1});return}let t=String(I(e)?.message||`NEAR signing session could not be finalized`);u.updateUI({preparing:!1,errorMessage:`NEAR signing session could not be finalized: ${t}`})}),C&&C.then(async e=>{if(re=e,await D,e.kind===`failed`){if(ee=!0,O)return;u.updateUI({loading:!1,errorMessage:lA(e)});return}if(ee=!1,e.readiness.kind===`funding_required`){if(O)return;u.updateUI({loading:!1,body:Cl(String(e.readiness.request.subject.nearAccountId)),errorMessage:``,confirmText:`Fund account`});return}u.setNonceLeases(e.reservedNonceLeases),O||r.onNearTransactionContextReady?.(e.readiness);let t=e.readiness.transactionContext,n=w?{rpId:w,blockHeight:t.txBlockHeight,blockHash:t.txBlockHash}:void 0;O||u.updateUI({securityContext:n,loading:!1})});let oe=M?await Promise.race([ne,M]):await ne;if(O=!0,sA(oe))return hA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,walletSessionFailure:oe.failure});let{confirmed:se,error:ce,otpCode:le,emailOtpChallengeId:ue}=oe;if(!se)return Qk(n,t.requestId,ce),hA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:ce});m&&!h&&(m({kind:$d.ReviewApproved}),u.dismissReviewSurface());let de=C?re||await C:void 0,fe;if(C){if(!de||de.kind===`failed`){let n=de||{kind:`failed`,error:`NEAR_CONTEXT_UNAVAILABLE`,details:`NEAR transaction readiness did not resolve`};return console.error(`[SigningFlow] fetchNearContext failed`,n),hA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:lA(n)})}fe=de.readiness,de.readiness.kind===`context_ready`&&u.setNonceLeases(de.reservedNonceLeases)}if(ae&&N(await ae),j)try{await j}catch(n){let r=String(I(n)?.message||`NEAR signing session could not be finalized`);return hA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:`NEAR signing session could not be finalized: ${r}`})}if(a!==`warmSession`&&fe?.kind===`funding_required`&&S){u.updateUI({body:El(String(fe.request.subject.nearAccountId)),errorMessage:``,loading:!0});let n;try{n=await e.nearImplicitAccountFunding.fund({requestId:t.requestId,request:fe.request})}catch(n){return hA({ctx:e,requestId:t.requestId,preparation:f}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:`NEAR account funding failed: ${String(I(n)?.message||n)}`})}fe=n.readiness,u.setNonceLeases(n.reservedNonceLeases)}if(a!==`warmSession`&&fe?.kind===`context_ready`){let n=uA({request:t,usesNeeded:_,readinessMode:x});if(!n)throw Error(`Operation step-up requires exact NEAR operation facts`);f=await e.operationStepUpPreparation.prepare({kind:`near_transaction`,requestId:t.requestId,transactionContext:fe.transactionContext,operationId:n.operation.operationId,operationFingerprint:n.operation.operationFingerprint,displayDigest:String(p||``).trim()})}else a!==`warmSession`&&x.kind===`signature_only`&&(f=await e.operationStepUpPreparation.prepare({kind:`near_signature_only`,requestId:t.requestId,displayDigest:String(p||``).trim()}));if(a===`emailOtp`){m?.({kind:$d.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,otpCode:fA(le),...ue?{emailOtpChallengeId:ue}:{},...f?{operationStepUpPreparation:f}:{},...dA(fe)});return}if(a===`warmSession`){u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,...dA(fe)});return}pA({stage:`transaction_prompt`,subjectId:d,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let pe=f?.challengeB64u||_A({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(b||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===Zd.PasskeyReauth&&!!t.payload.webauthnChallenge});if(!pe)throw Error(`Missing WebAuthn challenge digest for signing flow`);m?.({kind:$d.AuthenticationStarted});let me=await Hd({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},walletId:t.payload.walletId,challengeB64u:pe});i?.afterCredential(),m?.({kind:$d.AuthenticationCompleted}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!0,credential:me,...f?{operationStepUpPreparation:f}:{},...dA(fe)})}catch(n){hA({ctx:e,requestId:t.requestId,preparation:f});let r=_l(n),i=String(I(n)?.message||n||``);r&&window.parent?.postMessage({type:`WALLET_UI_CLOSED`},`*`);let a=/multiple passkeys \\(devicenumbers\\) for account/i.test(i);return u.confirmAndCloseModal({requestId:t.requestId,intentDigest:p,confirmed:!1,error:r?Ol.cancelled:a?i:i||Ol.collectCredentialsFailed})}}function yA(e){return ul(e)??`webauthn`}async function bA(e,t,n,r){let i=lt(e.surfaceMeasurementBinding),{confirmationConfig:a,transactionSummary:o,theme:s,surface:c}=r,l=Sl(e),u=Dl({adapters:l,worker:n,request:t,confirmationConfig:a,transactionSummary:o,theme:s,surface:c}),d=jl(t),f=d.kind===`near_wallet`?d.nearAccountId:d.walletId,p=d.kind===`near_wallet`?d.nearAccountId:``,m=Yd(t.requestId);try{let r=yA(t),o=String(Ml(t)||``).trim()||void 0,s=String(t.payload.challengeB64u||``).trim(),c=a.kind===`interactive`,h=l.security.getRpId(),g=h?{rpId:h}:void 0;c&&yl(n,{requestId:t.requestId,step:2,phase:`intent-confirmation-required`,status:`running`,message:`Awaiting confirmation click`});let _,v=new Promise(e=>{_=e}),y=()=>{_?.(),_=void 0},b=u.promptUser({securityContext:g,loading:!1,onMounted:()=>{y()}});b.finally(y);let x=!1,S=!1,C=e=>{o=String(e.intentDigest||``).trim()||o,s=String(e.challengeB64u||``).trim()||s,u.updateUI({...e.displayModel?{model:e.displayModel}:{},...e.title?{title:e.title}:{},...e.body?{body:e.body}:{},loading:!1}),S=!0},w=m?(async()=>(await v,await m))():void 0;w&&w.then(e=>{x||S||C(e)}).catch(e=>{x||u.updateUI({loading:!1,errorMessage:String(I(e)?.message||e||`Failed to prepare intent`)})});let{confirmed:T,error:E,otpCode:D,emailOtpChallengeId:O}=await b;if(x=!0,!T)return c&&Qk(n,t.requestId,E),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!1,error:E});if(w){let e=await w;S||C(e)}if(r===`emailOtp`)return c&&yl(n,{requestId:t.requestId,step:2,phase:Zk.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Email OTP submitted`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,otpCode:fA(D),...O?{emailOtpChallengeId:O}:{}});if(r===`warmSession`)return c&&yl(n,{requestId:t.requestId,step:2,phase:Zk.CONFIRMATION_COMPLETE,status:`succeeded`,message:`Confirmation complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0});pA({stage:`intent_digest_prompt`,subjectId:f,requestId:t.requestId,signingAuthPlanKind:t.payload.signingAuthPlan.kind});let ee=_A({webauthnChallenge:t.payload.webauthnChallenge,defaultChallengeB64u:String(s||``).trim(),requireTypedChallenge:t.payload.signingAuthPlan.kind===Zd.PasskeyReauth});if(!ee)throw Error(`Missing WebAuthn challenge digest for intent signing flow`);yl(n,{requestId:t.requestId,step:3,phase:Zk.PASSKEY_PROMPT_STARTED,status:`running`,message:`Authenticating with passkey...`});let k=d.kind===`near_wallet`?await Ud({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},nearAccountId:p,challengeB64u:ee}):await Hd({credentialStore:e.webauthnCredentialStore,touchIdPrompt:e.touchIdPrompt,onBeforePrompt:i?.beforeCredential,cancellation:i?{kind:`abort_signal`,signal:i.abortController.signal}:{kind:`none`},walletId:d.walletId,challengeB64u:ee});return i?.afterCredential(),yl(n,{requestId:t.requestId,step:4,phase:Zk.PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,message:`Authentication complete`}),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:o,confirmed:!0,credential:k})}catch(e){Jd(t.requestId),yl(n,{requestId:t.requestId,step:4,phase:Zk.PASSKEY_PROMPT_SUCCEEDED,status:`failed`,message:String(I(e)?.message||e||Ol.collectCredentialsFailed)});let r=_l(e),i=String(I(e)?.message||e||``);return r&&window.parent?.postMessage({type:`WALLET_UI_CLOSED`},`*`),u.confirmAndCloseModal({requestId:t.requestId,intentDigest:String(Ml(t)||``).trim()||void 0,confirmed:!1,error:r?Ol.cancelled:i||Ol.collectCredentialsFailed})}}async function xA(e,t,n,r){let i=gl(n,{channelToken:t.channelToken,onDecision:r?.onDecision}),a=t.data,o,s,c;try{kl(a),pl(a),o=Gk(e,a),c=Le(e.getTheme?.())??`dark`;let t=Ml(a);s=xl({...a.summary,...t?{intentDigest:t}:{}})}catch(e){console.error(`[UserConfirm][Host] validateAndParseRequest failed`,e),vl(i,{requestId:a.requestId,confirmed:!1,error:L(e)||`Invalid secure confirm request`});return}try{let t={confirmationConfig:o,transactionSummary:s,theme:c,surface:r?.signingSurface??{kind:`mount_new`}};switch(a.type){case Y.AUTHORIZE_KEY_EXPORT:case Y.SHOW_SECURE_PRIVATE_KEY_UI:{let{handleLocalOnlyFlow:n}=await import(`./localOnly-CvFSZFUy.js`);await n(e,a,i,t);break}case Y.REGISTER_ACCOUNT:case Y.LINK_DEVICE:{let{handleRegistrationFlow:n}=await import(`./registration-CIxJvbTo.js`).then(e=>e.n);await n(e,a,i,t);break}case Y.SIGN_TRANSACTION:case Y.SIGN_NEP413_MESSAGE:await vA(e,a,i,{...t,...r?.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:r.onSigningOperationInteractionEvent}:{},...r?.onNearTransactionContextReady?{onNearTransactionContextReady:r.onNearTransactionContextReady}:{}});break;case Y.SIGN_INTENT_DIGEST:await bA(e,a,i,t);break;default:SA(a)}}catch(e){console.error(`[UserConfirm][Host] handler failed`,e),vl(i,{requestId:a.requestId,intentDigest:Ml(a),confirmed:!1,error:L(e)||`Secure confirmation failed`})}}function SA(e){throw Error(`Unsupported secure confirmation request`)}function CA(e){let t={signingKind:`transaction`,walletId:e.params.walletId,txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest,displayModel:e.displayModel,rpcCall:e.params.rpcCall,nearPublicKeyStr:e.params.nearPublicKeyStr,nearFundingRequest:e.params.nearFundingRequest,signingOperationStateKind:e.params.signingOperationStateKind};switch(e.params.signingAuthPlan.kind){case Zd.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Zd.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Zd.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case Zd.EmailOtpReauth:if(!e.params.emailOtpPrompt)throw Error(`Email OTP NEAR confirmation requires a prompt`);return{...t,signingAuthPlan:e.params.signingAuthPlan,emailOtpPrompt:e.params.emailOtpPrompt};default:return wA(e.params.signingAuthPlan)}}function wA(e){throw Error(`Unsupported transaction signing auth params: ${String(e)}`)}function TA(e){let t={signingKind:`delegate`,walletId:e.params.walletId,txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest,displayModel:e.displayModel,rpcCall:e.params.rpcCall,...e.params.nearPublicKeyStr?{nearPublicKeyStr:e.params.nearPublicKeyStr}:{}};switch(e.params.signingAuthPlan.kind){case Zd.WarmSession:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Zd.ActiveWalletAuthority:return{...t,signingAuthPlan:e.params.signingAuthPlan};case Zd.PasskeyReauth:return{...t,signingAuthPlan:e.params.signingAuthPlan,...e.params.webauthnChallenge?{webauthnChallenge:e.params.webauthnChallenge}:{}};case Zd.EmailOtpReauth:{let n=e.params.signingAuthPlan.emailOtpPrompt;if(!n)throw Error(`Email OTP delegate confirmation requires a prompt`);return{...t,signingAuthPlan:e.params.signingAuthPlan,emailOtpPrompt:n}}default:return wA(e.params.signingAuthPlan)}}function EA(e){let t=String(e||``).trim();return!t||t===`pending-intent-digest`?``:t}function DA(e){return String(e||``).trim()||qd}function OA(e){if(!e)throw Error(`[SigningConfirmation] passkey intent signing requires webauthnChallenge`);return e}function kA(e){return e.signingAuthPlan.kind===Zd.PasskeyReauth?{signingSubject:e.signingSubject,challengeB64u:e.challengeB64u,...e.displayModel?{displayModel:e.displayModel}:{},webauthnChallenge:OA(e.webauthnChallenge),signingAuthPlan:e.signingAuthPlan}:{signingSubject:e.signingSubject,challengeB64u:e.challengeB64u,...e.displayModel?{displayModel:e.displayModel}:{},signingAuthPlan:e.signingAuthPlan,...e.webauthnChallenge?{webauthnChallenge:e.webauthnChallenge}:{},...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}}}function AA(e){try{return Id({txSigningRequests:e.txSigningRequests,intentDigest:e.intentDigest||``,signerAccount:e.signerAccountId,title:e.title,subtitle:e.body})}catch{return{chain:`near`,...e.intentDigest?{intentDigest:e.intentDigest}:{},signerAccount:e.signerAccountId,...e.title==null?{}:{title:e.title},...e.body==null?{}:{subtitle:e.body},operations:[]}}}async function jA(e){let{sessionId:t}=e,n=MA(e.ctx),r,i;switch(e.kind){case`transaction`:{let n=e.txSigningRequests,a=n.map(e=>({receiverId:e.receiverId,actions:e.actions.map(al)})),o={receiverId:n[0]?.receiverId,totalAmount:NA(n),type:`transaction`,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};r=await cl(a);let s={...o,intentDigest:r},c=AA({txSigningRequests:n,intentDigest:r,signerAccountId:e.rpcCall.nearAccountId,title:s.title,body:s.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:s,payload:CA({params:e,txSigningRequests:n,intentDigest:r,displayModel:c}),confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`delegate`:{let n=[{receiverId:e.delegate.receiverId,actions:e.delegate.actions}];r=await cl(n.map(e=>({receiverId:e.receiverId,actions:e.actions.map(al)})));let a={intentDigest:r,receiverId:n[0]?.receiverId,totalAmount:NA(n),type:`delegateAction`,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body},delegate:{senderId:e.delegate.senderId,receiverId:e.delegate.receiverId,nonce:String(e.delegate.nonce),maxBlockHeight:String(e.delegate.maxBlockHeight)}},o=AA({txSigningRequests:n,intentDigest:r,signerAccountId:e.nearAccountId,title:a.title,body:a.body});i={requestId:t,type:Y.SIGN_TRANSACTION,summary:a,payload:TA({params:e,txSigningRequests:n,intentDigest:r,displayModel:o}),confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`nep413`:{r=`${e.nearAccountId}:${e.recipient}:${e.message}`;let n=zd({signerAccount:e.nearAccountId,recipient:e.recipient,message:e.message,intentDigest:r,title:e.title,subtitle:e.body}),a={intentDigest:r,method:`NEP-413`,receiverId:e.recipient,...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};i={requestId:t,type:Y.SIGN_NEP413_MESSAGE,summary:a,payload:{walletId:e.walletId,nearAccountId:e.nearAccountId,...e.nearPublicKeyStr?{nearPublicKeyStr:e.nearPublicKeyStr}:{},message:e.message,recipient:e.recipient,displayModel:n,...e.webauthnChallenge?{webauthnChallenge:e.webauthnChallenge}:{},signingAuthPlan:e.signingAuthPlan,...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}},confirmationConfig:e.confirmationConfigOverride,intentDigest:r};break}case`intentDigest`:{let n=EA(e.intentDigest);r=n;let a=DA(e.challengeB64u),o=e.signingSubject,s=e.displayModel,c={...n?{intentDigest:n}:{},...e.title==null?{}:{title:e.title},...e.body==null?{}:{body:e.body}};i={requestId:t,type:Y.SIGN_INTENT_DIGEST,summary:c,payload:kA({signingSubject:o,challengeB64u:a,displayModel:s,webauthnChallenge:e.webauthnChallenge,signingAuthPlan:e.signingAuthPlan,...e.emailOtpPrompt?{emailOtpPrompt:e.emailOtpPrompt}:{}}),confirmationConfig:e.confirmationConfigOverride,...n?{intentDigest:n}:{}};break}default:throw Error(`Unsupported signing confirmation kind`)}e.confirmationReadiness&&Jk({requestId:t,readiness:e.confirmationReadiness});let a=await n(i,{onProgress:e.onProgress,...e.kind===`transaction`?{onSigningOperationInteractionEvent:e.onSigningOperationInteractionEvent}:{},...e.chain===`near`&&e.kind===`transaction`&&e.onNearTransactionContextReady?{onNearTransactionContextReady:e.onNearTransactionContextReady}:{}}).finally(()=>{Xk(t)});if(!a?.confirmed)throw a?.walletSessionFailure?new zu({failure:a.walletSessionFailure,message:`Wallet Session expired while signing confirmation was open`}):Error(a?.error||`User rejected signing request`);if(e.kind===`intentDigest`)return{sessionId:t,intentDigest:a.intentDigest||r,credential:a.credential,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId};if(e.kind===`delegate`||e.kind===`nep413`)return{sessionId:t,intentDigest:a.intentDigest||r,credential:a.credential,operationStepUpPreparation:a.operationStepUpPreparation,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId};if(!a.nearTransactionReadiness)throw Error(`Missing explicit NEAR transaction readiness from confirmation flow`);return{sessionId:t,readiness:a.nearTransactionReadiness,intentDigest:a.intentDigest||r,credential:a.credential,operationStepUpPreparation:a.operationStepUpPreparation,otpCode:a.otpCode,emailOtpChallengeId:a.emailOtpChallengeId}}function MA(e){return e.touchConfirm.requestUserConfirmation.bind(e.touchConfirm)}function NA(e){try{let t=BigInt(0);for(let n of e)for(let e of n.actions)switch(e.action_type){case sl.Transfer:t+=BigInt(e.deposit||`0`);break;case sl.FunctionCall:t+=BigInt(e.deposit||`0`);break;case sl.Stake:t+=BigInt(e.stake||`0`);break;default:break}return t>BigInt(0)?t.toString():void 0}catch{return}}async function PA({ctx:e,surface:t,walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c}){let l=FA({walletId:n,nearAccountId:r,signerSlot:i,confirmerText:a,confirmationConfig:o,challengeB64u:s,registrationOptions:c});pl(l);let u=await LA({ctx:e,surface:t,request:l,confirmationConfig:Gk(e,l),transactionSummary:IA(l),theme:Le(e.getTheme?.())??`dark`});return zA({requestId:l.requestId,decision:u})}function FA({walletId:e,nearAccountId:t,signerSlot:n,confirmerText:r,confirmationConfig:i,challengeB64u:a,registrationOptions:o}){let s=Be(`register`,32,`registration credential confirmation IDs`),c=r?.title,l=r?.body,u=String(e||``).trim(),d=String(t||``).trim();if(!u)throw Error(`Registration credential confirmation requires walletId`);return o?{requestId:s,type:Y.REGISTER_ACCOUNT,summary:{walletId:u,signerSlot:n,...c==null?{}:{title:c},...l==null?{}:{body:l}},payload:{walletId:u,walletAddAuthMethodRegistration:o},confirmationConfig:i,intentDigest:`register:${u}:${o.challengeId}`}:{requestId:s,type:Y.REGISTER_ACCOUNT,summary:{walletId:u,...d?{nearAccountId:d}:{},signerSlot:n,...c==null?{}:{title:c},...l==null?{}:{body:l}},payload:{walletId:u,...d?{nearAccountId:d}:{},signerSlot:n,...a?{webauthnChallenge:{kind:`intent_digest`,challengeB64u:a}}:{}},confirmationConfig:i,intentDigest:`register:${u}:${n}`}}function IA(e){let t=wl(e.summary),n=Ml(e);return{...t,...n?{intentDigest:n}:{}}}async function LA({ctx:e,surface:t,request:n,confirmationConfig:r,transactionSummary:i,theme:a}){let o,s,c=!1,l=new Promise((e,t)=>{o=e,s=t}),u=Cf(e,n,{postMessage:e=>{let t=RA(e,n.requestId);if(t.ok){o(t.value);return}s(Error(t.message))}},{confirmationConfig:r,transactionSummary:i,theme:a,surface:t}).then(()=>{c||s(Error(`Registration confirmation completed without a decision`))},e=>{s(Error(L(e)||`Registration confirmation failed`))}),d=await l;return c=!0,await u,d}function RA(e,t){if(!O(e))return{ok:!1,message:`Registration confirmation returned a malformed response`};let n=e;if(n.type!==gf.USER_PASSKEY_CONFIRM_RESPONSE)return{ok:!1,message:`Registration confirmation returned an unexpected response type`};if((ee(n.requestId)?n.requestId.trim():``)!==t)return{ok:!1,message:`Registration confirmation response requestId mismatch`};if(!O(n.data))return{ok:!1,message:`Registration confirmation returned missing decision data`};let r=n.data,i=ee(r.requestId)?r.requestId.trim():``;return i===t?oe(r.confirmed)?{ok:!0,value:{requestId:i,confirmed:r.confirmed,...ee(r.intentDigest)?{intentDigest:r.intentDigest}:{},...r.credential?{credential:r.credential}:{},...r.transactionContext?{transactionContext:r.transactionContext}:{},...r.registrationDiagnostics?{registrationDiagnostics:r.registrationDiagnostics}:{},...ee(r.error)?{error:r.error}:{}}}:{ok:!1,message:`Registration confirmation returned invalid decision state`}:{ok:!1,message:`Registration confirmation decision requestId mismatch`}}function zA({requestId:e,decision:t}){if(!t.confirmed)throw Error(t.error||`User rejected registration request`);if(!t.credential)throw Error(`Missing credential from registration confirmation`);return Rd({confirmed:t.confirmed,requestId:e,intentDigest:t.intentDigest||``,credential:t.credential,transactionContext:t.transactionContext,registrationDiagnostics:t.registrationDiagnostics,error:t.error})}function BA(e){return Math.max(0,Math.round(performance.now()-e))}function VA(e){throw Error(`Unexpected UI confirmation state: ${String(e)}`)}function HA(e){return typeof e==`object`&&!!e}function UA(e){if(!HA(e)||e.type!==gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD)return null;let t=typeof e.requestId==`string`?e.requestId.trim():``,n=typeof e.channelToken==`string`?e.channelToken.trim():``;if(!t||!n||!HA(e.data)||e.data.kind!==`pending_request`||`request`in e.data)return null;let r=typeof e.data.requestId==`string`?e.data.requestId.trim():``,i=typeof e.data.requestToken==`string`?e.data.requestToken.trim():``;return!r||r!==t||!i?null:{type:gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD,requestId:t,channelToken:n,data:{kind:`pending_request`,requestId:t,requestToken:i}}}function WA(e){if(!HA(e))return null;let t=typeof e.requestId==`string`?e.requestId.trim():``,n=typeof e.step==`number`?e.step:NaN,r=typeof e.phase==`string`?e.phase:``,i=e.status;return!t||!Number.isFinite(n)||!r||i!==`running`&&i!==`succeeded`&&i!==`failed`?null:{requestId:t,step:n,phase:r,status:i,...typeof e.message==`string`?{message:e.message}:{},...`data`in e?{data:e.data}:{}}}var GA=class{worker=null;initializationPromise=null;messageId=0;config;workerBaseOrigin;context;pendingWorkerRequests=new Map;userConfirmProgressListeners=new Map;pendingConfirmRequests=new Map;boundHandleWorkerMessage=this.handleWorkerMessage.bind(this);boundHandleWorkerError=this.handleWorkerError.bind(this);registrationPreparationModalState={kind:`closed`,generation:0};transactionPreparationModalState={kind:`closed`,generation:0};constructor(e,t){this.config={workerUrl:Lk.RUNTIME.TOUCH_CONFIRM_WORKER,workerTimeout:6e4,debug:!1,...e},this.context={...t}}getContext(){return this.context}async requestUserConfirmation(e,t){let n=typeof e?.requestId==`string`?e.requestId.trim():``;if(!n)throw Error(`Invalid secure confirmation request: missing requestId`);if(this.pendingConfirmRequests.has(n))throw Error(`Duplicate secure confirmation request id: ${n}`);let r=this.generateMessageId();this.pendingConfirmRequests.set(n,{kind:`awaiting_decision`,context:{...this.context},request:e,requestToken:r,...t?.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:t.onSigningOperationInteractionEvent}:{},...t?.onNearTransactionContextReady?{onNearTransactionContextReady:t.onNearTransactionContextReady}:{}});try{let e=performance.now();await this.ensureWorkerReady(!1);let i=BA(e);t?.onProgress&&this.userConfirmProgressListeners.set(n,t.onProgress);let a=performance.now(),o=await this.sendMessage({type:`SECURE_CONFIRM_REQUEST`,id:r,payload:{requestId:n}}),s=BA(a),c=performance.now();if(!o?.success)throw Error(String(o?.error||`Secure confirmation request failed`));let l=this.pendingConfirmRequests.get(n);if(!l||l.kind!==`decided`)throw Error(`Secure confirmation failed: missing host decision`);let u=l.decision,d=BA(c);return u.registrationDiagnostics?.kind===`registration_confirmation_diagnostics_v1`?{...u,registrationDiagnostics:{...u.registrationDiagnostics,workerReadyMs:i,workerRequestRoundTripMs:s,workerResponseValidationMs:d}}:u}finally{this.userConfirmProgressListeners.delete(n),this.pendingConfirmRequests.delete(n)}}async orchestrateSigningConfirmation(e){return jA(e)}async openTransactionPreparationModal(e){if(!String(e.walletLabel||``).trim())throw Error(`Transaction preparation modal requires a wallet label`);this.closeTransactionPreparationModal();let t=this.context.userPreferencesManager.getConfirmationConfig(),n=Object.fromEntries(Object.entries(e.confirmationConfigOverride||{}).filter(([,e])=>e!=null)),r=dl({...t,...n});if(r.kind===`silent`)return;let i=String(this.context.touchIdPrompt.getRpId()||``).trim(),a=this.transactionPreparationModalState.generation+1;this.transactionPreparationModalState={kind:`opening`,generation:a};let o=await Tl({ctx:this.getContext(),summary:{title:`Review transaction`},...e.chain===`near`?{txSigningRequests:e.txSigningRequests}:{},model:e.model,securityContext:i?{rpId:i}:void 0,loading:!1,theme:this.context.getTheme?.()??`dark`,uiMode:r.uiMode}),s=this.transactionPreparationModalState;if(s.kind!==`opening`||s.generation!==a){o.close(!1);return}this.transactionPreparationModalState={kind:`open`,generation:a,handle:o},o.onCancel?.(this.handleTransactionPreparationCancel.bind(this,a,o))}handleTransactionPreparationCancel(e,t){let n=this.transactionPreparationModalState;n.kind!==`open`||n.generation!==e||n.handle!==t||(this.transactionPreparationModalState={kind:`cancelled`,generation:e},t.close(!1))}closeTransactionPreparationModal(){let e=this.transactionPreparationModalState;this.transactionPreparationModalState={kind:`closed`,generation:e.generation},e.kind===`open`&&e.handle.close(!1)}takeTransactionConfirmationSurface(){let e=this.transactionPreparationModalState;switch(e.kind){case`closed`:return{kind:`mount_new`};case`opening`:throw Error(`Transaction confirmation started before its preparation modal opened`);case`cancelled`:return this.transactionPreparationModalState={kind:`closed`,generation:e.generation},{kind:`preparation_cancelled`};case`open`:return this.transactionPreparationModalState={kind:`closed`,generation:e.generation},{kind:`reuse_mounted`,handle:e.handle};default:return VA(e)}}async requestRegistrationCredentialConfirmation(e){let t=this.takeRegistrationConfirmationSurface();try{return await PA({ctx:this.getContext(),surface:t,walletId:e.walletId,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,confirmerText:e.confirmerText,confirmationConfig:e.confirmationConfigOverride,challengeB64u:e.challengeB64u,registrationOptions:e.registrationOptions})}catch(e){throw t.kind===`reuse_mounted`&&t.handle.close(!1),e}}takeRegistrationConfirmationSurface(){let e=this.registrationPreparationModalState;switch(e.kind){case`closed`:return{kind:`mount_new`};case`opening`:throw Error(`Registration confirmation started before its preparation modal opened`);case`open`:return this.registrationPreparationModalState={kind:`closed`,generation:e.generation},{kind:`reuse_mounted`,handle:e.handle};default:return VA(e)}}async openRegistrationPreparationModal(e){let t=String(e.walletLabel||``).trim();if(!t)throw Error(`Registration preparation modal requires a wallet label`);if(!Number.isInteger(e.signerSlot)||e.signerSlot<1)throw Error(`Registration preparation modal requires a positive signer slot`);let n=String(this.context.touchIdPrompt.getRpId()||``).trim();if(!n)throw Error(`Registration preparation modal requires an RP ID`);this.closeRegistrationPreparationModal();let r=this.registrationPreparationModalState.generation+1;this.registrationPreparationModalState={kind:`opening`,generation:r};let i=await Tl({ctx:this.getContext(),summary:{title:`Create your passkey`,body:`Preparing secure registration…`},securityContext:{rpId:n,passkeyRegistration:{kind:`passkey_registration_confirm_display_v1`,intendedUserName:t,accountId:t,rpId:n,signerSlot:e.signerSlot}},loading:!0,theme:this.context.getTheme?.()??`dark`,uiMode:`modal`}),a=this.registrationPreparationModalState;if(a.kind!==`opening`||a.generation!==r){i.close(!1);return}this.registrationPreparationModalState={kind:`open`,generation:r,handle:i}}closeRegistrationPreparationModal(){let e=this.registrationPreparationModalState;this.registrationPreparationModalState={kind:`closed`,generation:e.generation},e.kind===`open`&&e.handle.close(!1)}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async ensureWorkerReady(e=!1){if(this.initializationPromise?await this.initializationPromise:this.worker||await this.initialize(),!this.worker)throw Error(`UserConfirm worker failed to initialize`);if(e)try{if(!(await this.sendMessage({type:`PING`,id:this.generateMessageId()},3e3)).success)throw Error(`UserConfirm worker failed health check`)}catch(e){throw console.error(`[UserConfirmWorker] health check failed:`,e),Error(`UserConfirm worker failed health check`)}}async initialize(){if(this.initializationPromise)return this.initializationPromise;if(!this.worker)return this.initializationPromise=this.createUserConfirmWorker().catch(e=>{throw console.error(`[UserConfirmWorker] initialization failed:`,e),console.error(`[UserConfirmWorker] error details:`,{message:e.message,stack:e.stack,name:e.name}),this.initializationPromise=null,e}),await this.initializationPromise}async createUserConfirmWorker(){try{if(this.worker){let e=this.worker;this.detachWorkerRouter(e),e.terminate(),this.worker=null,this.rejectPendingWorkerRequestsForWorker(e,Error(`UserConfirm worker was restarted`))}let e=Tf(this.config.workerUrl||Lk.RUNTIME.TOUCH_CONFIRM_WORKER,{worker:`touchConfirm`,baseOrigin:this.workerBaseOrigin});this.config.debug&&console.debug(`[UserConfirmWorker] Worker URL:`,e);let t=new Worker(e,{type:`module`,name:`Web3AuthnSecureConfirmWorker`});this.attachWorkerRouter(t),this.worker=t,await this.testWebWorkerCommunication()}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`UserConfirm worker initialization failed: ${t}`)}}attachWorkerRouter(e){e.addEventListener(`message`,this.boundHandleWorkerMessage),e.addEventListener(`error`,this.boundHandleWorkerError)}detachWorkerRouter(e){e.removeEventListener(`message`,this.boundHandleWorkerMessage),e.removeEventListener(`error`,this.boundHandleWorkerError)}isFromActiveWorker(e){return e.currentTarget===this.worker&&e.target===this.worker}normalizePromptEnvelope(e){let t=UA(e);if(!t)return null;let n=this.pendingConfirmRequests.get(t.requestId);return!n||n.kind!==`awaiting_decision`||n.requestToken!==t.data.requestToken?null:{type:t.type,requestId:t.requestId,channelToken:t.channelToken,data:n.request}}capturePendingConfirmationDecision(e,t){let n=e.request.requestId.trim();if(!n||t.requestId.trim()!==n)return;let r=this.pendingConfirmRequests.get(n);r!==e||r.kind!==`awaiting_decision`||this.pendingConfirmRequests.set(n,{kind:`decided`,request:r.request,requestToken:r.requestToken,decision:t})}postPromptEnvelopeError(e,t,n,r){e.postMessage({type:gf.USER_PASSKEY_CONFIRM_RESPONSE,requestId:t,channelToken:n,data:{requestId:t,confirmed:!1,error:r}})}dispatchUserConfirmProgress(e){let t=WA(e.data),n=typeof e.requestId==`string`&&e.requestId.trim()?e.requestId.trim():typeof t?.requestId==`string`?t.requestId.trim():``;if(!n||!t)return;let r=this.userConfirmProgressListeners.get(n);if(r)try{r(t)}catch(e){console.error(`[UserConfirmWorker] progress listener failed:`,e)}}handleWorkerMessage(e){if(!this.isFromActiveWorker(e))return;let t=e.data;if(HA(t)&&t.type===gf.USER_PASSKEY_CONFIRM_PROGRESS){this.dispatchUserConfirmProgress(t);return}let n=this.normalizePromptEnvelope(t);if(n){let t=this.pendingConfirmRequests.get(n.requestId);if(!t||t.kind!==`awaiting_decision`)return;let r=t.context,i=e.currentTarget;xA(r,n,i,{signingSurface:n.data.type===Y.SIGN_TRANSACTION||n.data.type===Y.SIGN_NEP413_MESSAGE||n.data.type===Y.SIGN_INTENT_DIGEST?this.takeTransactionConfirmationSurface():{kind:`mount_new`},onDecision:this.capturePendingConfirmationDecision.bind(this,t),...t.onSigningOperationInteractionEvent?{onSigningOperationInteractionEvent:t.onSigningOperationInteractionEvent}:{},...t.onNearTransactionContextReady?{onNearTransactionContextReady:t.onNearTransactionContextReady}:{}}).catch(e=>{console.error(`[UserConfirmWorker] failed to handle confirmation prompt:`,e),this.postPromptEnvelopeError(i,n.requestId,n.channelToken,`Secure confirmation failed`)});return}if(HA(t)&&t.type===gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[UserConfirmWorker] rejected malformed prompt envelope`);return}let r=Jl(t);if(!r)return;let i=r.id||``;if(!i)return;let a=e.currentTarget;this.resolvePendingWorkerRequest(a,i,r)}handleWorkerError(e){if(!this.isFromActiveWorker(e))return;let t=e,n=String(t?.message||`UserConfirm worker encountered an unknown error`),r=Error(`UserConfirm worker failed: ${n}`);console.error(`[UserConfirmWorker] error:`,t);let i=e.currentTarget;i===this.worker&&this.worker&&(this.detachWorkerRouter(this.worker),this.worker.terminate(),this.worker=null,this.initializationPromise=null),this.rejectPendingWorkerRequestsForWorker(i,r)}resolvePendingWorkerRequest(e,t,n){let r=this.pendingWorkerRequests.get(t);!r||r.worker!==e||(clearTimeout(r.timeoutId),r.settle?.(),this.pendingWorkerRequests.delete(t),r.resolve(n))}rejectPendingWorkerRequest(e,t){let n=this.pendingWorkerRequests.get(e);n&&(clearTimeout(n.timeoutId),n.settle?.(),this.pendingWorkerRequests.delete(e),n.reject(t))}rejectPendingWorkerRequestsForWorker(e,t){for(let n of this.pendingWorkerRequests.values())n.worker===e&&(this.pendingWorkerRequests.delete(n.id),clearTimeout(n.timeoutId),n.settle?.(),n.reject(t))}async sendMessage(e,t,n){return new Promise((r,i)=>{let a=this.worker;if(!a){i(Error(`UserConfirm worker not available`));return}let o=()=>Error(`UserConfirm worker request aborted for message type: ${e.type}`);if(n?.aborted){i(o());return}let s=typeof e.id==`string`&&e.id.trim().length?e.id.trim():this.generateMessageId();if(this.pendingWorkerRequests.has(s)){i(Error(`Duplicate UserConfirm worker request id: ${s}`));return}let c=t??this.config.workerTimeout??6e4,l=setTimeout(()=>{this.rejectPendingWorkerRequest(s,Error(`UserConfirm worker communication timeout (${c}ms) for message type: ${e.type}`))},c),u;if(n){let e=()=>{this.rejectPendingWorkerRequest(s,o())};n.addEventListener(`abort`,e,{once:!0}),u=()=>{n.removeEventListener(`abort`,e)}}this.pendingWorkerRequests.set(s,{id:s,messageType:e.type,worker:a,timeoutId:l,settle:u,resolve:r,reject:i});try{a.postMessage({...e,id:s})}catch(e){let t=e instanceof Error?e:Error(String(e));this.rejectPendingWorkerRequest(s,t)}})}generateMessageId(){return`sc_${Date.now()}_${++this.messageId}`}async testWebWorkerCommunication(){try{let e=await this.sendMessage({type:`PING`,id:this.generateMessageId()},15e3);if(!e.success)throw Error(`UserConfirm worker PING failed: ${e.error}`);return}catch(e){let t=e instanceof Error?e.message:String(e);throw console.warn(`[UserConfirmWorker] testWebWorkerCommunication failed:`,t),this.worker&&=(this.detachWorkerRouter(this.worker),this.worker.terminate(),null),e}}};function KA(e,t){return new GA(e,t)}function qA(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Invalid export confirmation: ${t} must be an object`);return e}function JA(e,t){if(typeof e!=`string`)throw Error(`Invalid export confirmation: ${t} must be a string`);return e}function YA(e,t){let n=JA(e,t);if(!n.trim()||n!==n.trim())throw Error(`Invalid export confirmation: ${t} must be a nonempty identity`);return n}function XA(e,t){return e===void 0?void 0:JA(e,t)}function ZA(e,t){if(e===void 0||typeof e==`boolean`)return e;throw Error(`Invalid export confirmation: ${t} must be a boolean`)}function QA(e){let t=qA(e,`subject`);switch(t.kind){case`near_wallet`:if(t.walletId!==void 0)throw Error(`Invalid NEAR export subject`);return{kind:`near_wallet`,nearAccountId:YA(t.nearAccountId,`nearAccountId`)};case`evm_wallet`:if(t.nearAccountId!==void 0)throw Error(`Invalid EVM export subject`);return{kind:`evm_wallet`,walletId:YA(t.walletId,`walletId`)};default:throw Error(`Invalid export confirmation: unsupported subject`)}}function $A(e){let t=qA(e,`summary`),n=t.operation;if(n!==`Export Private Key`&&n!==`Export Recovery Key`)throw Error(`Invalid export confirmation: unsupported operation`);return{operation:n,accountId:YA(t.accountId,`summary.accountId`),publicKey:JA(t.publicKey,`summary.publicKey`),warning:JA(t.warning,`summary.warning`)}}function ej(e){let t=qA(e,`key`),n=t.scheme;if(n!==`ed25519`&&n!==`secp256k1`)throw Error(`Invalid export confirmation: unsupported key scheme`);return{scheme:n,label:JA(t.label,`key.label`),publicKey:JA(t.publicKey,`key.publicKey`),privateKey:JA(t.privateKey,`key.privateKey`),address:XA(t.address,`key.address`)}}function tj(e){if(e!==void 0){if(!Array.isArray(e))throw Error(`Invalid export confirmation: keys must be an array`);return e.map(ej)}}function nj(e){return JA(e,`guidance step`)}function rj(e){if(e===void 0)return;let t=qA(e,`guidance`);if(t.steps!==void 0&&!Array.isArray(t.steps))throw Error(`Invalid export confirmation: guidance steps must be an array`);return{title:JA(t.title,`guidance.title`),body:XA(t.body,`guidance.body`),steps:t.steps?.map(nj)}}function ij(e){if(e===void 0)return;let{uiMode:t,behavior:n,autoProceedDelay:r}=qA(e,`confirmationConfig`);if(t!==void 0&&t!==`none`&&t!==`modal`&&t!==`drawer`)throw Error(`Invalid export confirmation: unsupported UI mode`);if(n!==void 0&&n!==`skipClick`&&n!==`requireClick`)throw Error(`Invalid export confirmation: unsupported behavior`);if(r!==void 0&&(typeof r!=`number`||!Number.isFinite(r)))throw Error(`Invalid export confirmation: invalid autoProceedDelay`);return{uiMode:t,behavior:n,autoProceedDelay:r}}function aj(e){let t=qA(e,`request`),n=qA(t.payload,`payload`);if(n.prfOutput!==void 0||n.prf_output!==void 0||n.wrapKeySeed!==void 0||n.wrapKeySalt!==void 0||n.prfKey!==void 0)throw Error(`Invalid export confirmation: forbidden signing secret`);let r=YA(t.requestId,`requestId`),i=$A(t.summary),a=QA(n.subject),o=JA(n.publicKey,`publicKey`),s=XA(t.intentDigest,`intentDigest`),c=ij(t.confirmationConfig);if(n.onLifecycle!==void 0)throw Error(`Invalid export confirmation: callbacks belong to the host`);switch(t.type){case Y.AUTHORIZE_KEY_EXPORT:return{type:Y.AUTHORIZE_KEY_EXPORT,requestId:r,summary:i,intentDigest:s,confirmationConfig:c,payload:{subject:a,publicKey:o,credentialIdB64u:YA(n.credentialIdB64u,`credentialIdB64u`),challengeB64u:XA(n.challengeB64u,`challengeB64u`)}};case Y.SHOW_SECURE_PRIVATE_KEY_UI:{let{variant:e,theme:t}=n;if(e!==void 0&&e!==`drawer`&&e!==`modal`)throw Error(`Invalid export confirmation: unsupported variant`);if(t!==void 0&&t!==`dark`&&t!==`light`)throw Error(`Invalid export confirmation: unsupported theme`);return{type:Y.SHOW_SECURE_PRIVATE_KEY_UI,requestId:r,summary:i,intentDigest:s,confirmationConfig:c,payload:{subject:a,publicKey:o,viewerSessionId:XA(n.viewerSessionId,`viewerSessionId`),privateKey:XA(n.privateKey,`privateKey`),keys:tj(n.keys),guidance:rj(n.guidance),variant:e,theme:t,loading:ZA(n.loading,`loading`),errorMessage:XA(n.errorMessage,`errorMessage`)}}}default:throw Error(`Invalid export confirmation: unsupported request type`)}}const oj=6e4;function sj(e){return typeof e==`object`&&!!e}function cj(e){if(!sj(e))return null;let t=e.kind;if(typeof e.accountId!=`string`)return null;let n=Array.isArray(e.exportedSchemes)?e.exportedSchemes:null;if(!n)return null;let r=n.filter(e=>e===`ed25519`||e===`secp256k1`);return r.length===n.length?t===`completed`?`error`in e?null:{kind:t,accountId:e.accountId,exportedSchemes:r}:t!==`cancelled`&&t!==`failed`||r.length!==0||typeof e.error!=`string`?null:{kind:t,accountId:e.accountId,exportedSchemes:[],error:e.error}:null}var lj=class{worker=null;initializationPromise=null;workerBaseOrigin;messageId=0;pendingRequests=new Map;viewerLifecycleBySessionId=new Map;boundHandleWorkerMessage=this.handleWorkerMessage.bind(this);boundHandleWorkerError=this.handleWorkerError.bind(this);constructor(e){this.context=e}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async exportPrivateKeysWithUi(e,t){await this.ensureWorkerReady();let n=`viewerSessionId`in e?String(e.viewerSessionId||``).trim():``;n&&t?.onViewerLifecycle&&this.viewerLifecycleBySessionId.set(n,t.onViewerLifecycle);try{let t=await this.sendMessage({type:`EXPORT_PRIVATE_KEYS_WITH_UI`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(String(t.error||`Export private keys request failed`));let n=cj(t.data);if(!n)throw Error(`Export private keys request failed: invalid worker response payload`);return n}finally{n&&this.viewerLifecycleBySessionId.delete(n)}}async ensureWorkerReady(){if(!this.worker&&(this.initializationPromise||=this.createWorker().catch(e=>{throw this.initializationPromise=null,e}),await this.initializationPromise,!this.worker))throw Error(`Passkey MPC export worker failed to initialize`)}async createWorker(){let e=Tf(Lk.RUNTIME.PASSKEY_MPC_EXPORT_WORKER,{worker:`passkeyMpcExport`,baseOrigin:this.workerBaseOrigin}),t=new Worker(e,{type:`module`,name:`PasskeyMpcExportWorker`});t.addEventListener(`message`,this.boundHandleWorkerMessage),t.addEventListener(`error`,this.boundHandleWorkerError),this.worker=t}normalizePromptEnvelope(e){if(!sj(e)||e.type!==gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD||!sj(e.data)||e.data.kind!==`export_request`)return null;let t;try{t=aj(e.data.request)}catch{return null}let n=typeof e.requestId==`string`?e.requestId.trim():``,r=typeof t.requestId==`string`?t.requestId.trim():``,i=typeof e.channelToken==`string`?e.channelToken.trim():``;return!n||n!==r||!i?null:{type:gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD,requestId:n,channelToken:i,data:this.restoreViewerLifecycle(t)}}restoreViewerLifecycle(e){if(e.type!==Y.SHOW_SECURE_PRIVATE_KEY_UI)return e;let t=e.payload.viewerSessionId;if(!t)return e;let n=this.viewerLifecycleBySessionId.get(t);return n?{type:e.type,requestId:e.requestId,summary:e.summary,intentDigest:e.intentDigest,confirmationConfig:e.confirmationConfig,payload:{...e.payload,onLifecycle:n}}:e}postPromptEnvelopeError(e,t,n){e.postMessage({type:gf.USER_PASSKEY_CONFIRM_RESPONSE,requestId:t,channelToken:n,data:{requestId:t,confirmed:!1,error:`Secure confirmation failed`}})}handleWorkerMessage(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=this.normalizePromptEnvelope(e.data);if(t){let n=e.currentTarget;xA(this.context,t,n).catch(e=>{console.error(`[PasskeyMpcExportWorker] failed to handle export prompt:`,e),this.postPromptEnvelopeError(n,t.requestId,t.channelToken||``)});return}if(sj(e.data)&&e.data.type===gf.PROMPT_USER_CONFIRM_IN_JS_MAIN_THREAD){console.error(`[PasskeyMpcExportWorker] rejected malformed prompt envelope`);return}let n=Jl(e.data);if(!n)return;let r=n.id||``;if(!r)return;let i=this.pendingRequests.get(r);i&&(clearTimeout(i.timeoutId),this.pendingRequests.delete(r),i.resolve(n))}handleWorkerError(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=e,n=Error(`Passkey MPC export worker failed: ${String(t.message||`unknown worker error`)}`),r=this.worker;r&&(r.removeEventListener(`message`,this.boundHandleWorkerMessage),r.removeEventListener(`error`,this.boundHandleWorkerError),r.terminate()),this.worker=null,this.initializationPromise=null;for(let e of this.pendingRequests.values())clearTimeout(e.timeoutId),e.reject(n);this.pendingRequests.clear()}sendMessage(e){return new Promise((t,n)=>{let r=this.worker;if(!r){n(Error(`Passkey MPC export worker not available`));return}let i=typeof e.id==`string`&&e.id.trim()?e.id.trim():this.generateMessageId();if(this.pendingRequests.has(i)){n(Error(`Duplicate Passkey MPC export request id: ${i}`));return}let a=setTimeout(()=>{let e=this.pendingRequests.get(i);e&&(this.pendingRequests.delete(i),e.reject(Error(`Passkey MPC export request timed out (${oj}ms)`)))},oj);this.pendingRequests.set(i,{id:i,timeoutId:a,resolve:t,reject:n});try{r.postMessage({...e,id:i})}catch(e){clearTimeout(a),this.pendingRequests.delete(i),n(e instanceof Error?e:Error(String(e)))}})}generateMessageId(){return`mpc_export_${Date.now()}_${++this.messageId}`}};function uj(e){return new lj(e)}function dj(e){if(e.purpose.curve===`ecdsa`)return e.purpose.thresholdSessionId;if(e.thresholdSessionId===void 0)throw Error(`Ed25519 warm material operation requires its protocol session id`);return e.thresholdSessionId}function fj(e){return e.curve===`ecdsa`?{thresholdSessionId:e.thresholdSessionId,chainTarget:e.chainTarget}:null}function $(e){return String(e??``).trim()||null}function pj(e){return Array.isArray(e)?e.map(e=>Math.floor(Number(e))).filter(e=>Number.isFinite(e)&&e>0):[]}function mj(e){try{return Pa(e)}catch{return null}}function hj(e){try{return no(e)}catch{return null}}function gj(e){switch(e){case`login`:case`registration`:case`manual-bootstrap`:case`email_otp`:return e;default:return null}}function _j(e){let t=gj(e);return t&&t!==`email_otp`?t:null}function vj(e){return e&&typeof e==`object`?e:null}function yj(e){return vj(e.thresholdSessionIds)||{}}function bj(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function xj(e){try{return co(e)}catch{return null}}function Sj(e){let t=$(e.rawSigningRootId),n=$(e.rawSigningRootVersion),r=null,i=null;if(e.runtimePolicyScope)try{let t=be(e.runtimePolicyScope);r=$(t.signingRootId),i=$(t.signingRootVersion)}catch{}if(t&&r&&t!==r||n&&i&&n!==i)return null;let a=t||r,o=n||i;return a&&o?{signingRootId:a,signingRootVersion:o}:null}function Cj(e){return!!($(e.signingRootId)||$(e.signingRootVersion))}function wj(e){return!!($(e.subjectId)||$(e.userId))}function Tj(e){let t=yj(e);return{authMethod:e.authMethod,curve:e.curve,storeKey:e.storeKey,walletId:e.walletId||null,thresholdSessionIds:t,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs,hasEcdsaRestore:!!e.ecdsaRestore}}function Ej(e,t){return{kind:`rejected`,rejection:{kind:`rejected_sealed_recovery_record`,storeKey:$(e.storeKey),walletId:$(e.walletId),reason:t,safeSummary:Tj(e)}}}function Dj(e,t={}){let n=yj(e),r=vj(e.ecdsaRestore),i=$(e.storeKey),a=$(e.walletId),o=$(e.sealedSecretB64u),s=Math.floor(Number(e.issuedAtMs)||0),c=Math.floor(Number(e.expiresAtMs)||0),l=Math.floor(Number(e.remainingUses)||0),u=Math.floor(Number(e.updatedAtMs)||0);if(e.authMethod!==`passkey`&&e.authMethod!==`email_otp`||e.curve!==`ecdsa`)return Ej(e,`unsupported_record`);if(!i||!a||!o)return Ej(e,`missing_identity`);if(c<=0||u<=0||s<=0)return Ej(e,`missing_restore_metadata`);if(wj(e))return Ej(e,`invalid_identity`);if(!t.allowExpired&&c<=Date.now())return Ej(e,`expired`);if(!t.allowExhausted&&e.authMethod!==`passkey`&&l<=0)return Ej(e,`exhausted`);let d=$(n.ecdsa),f=r,p=Ke(f?.runtimePolicyScope),m=Sj({runtimePolicyScope:p,rawSigningRootId:f?.signingRootId,rawSigningRootVersion:f?.signingRootVersion}),h=$(e.relayerUrl),g=e.authMethod===`passkey`?$(f?.rpId):null,_=e.authMethod===`passkey`?_j(f?.source):null,v=e.authMethod===`email_otp`&&gj(f?.source)===`email_otp`?`email_otp`:null,y=$(f?.credentialIdB64u),b=$(f?.providerSubjectId),x=$(f?.emailHashHex),S=$(f?.relayerKeyId),C=$(f?.keyHandle),w=$(f?.ecdsaThresholdKeyId),T=bj(f?.ethereumAddress),E=$(f?.thresholdEcdsaPublicKeyB64u),D=pj(f?.participantIds),O=mj(f?.routerAbEcdsaDerivationNormalSigning),ee=hj(f?.publicCapability),k=null;try{k=Lo(f?.roleLocalMaterialRef)}catch{k=null}let A=$(f?.clientVerifyingShareB64u),j=e.authMethod===`passkey`?A:null;if(f?.sessionKind!=null||Cj(e))return Ej(e,`invalid_identity`);if(!d||!m)return Ej(e,`missing_identity`);if(!f?.chainTarget)return Ej(e,`wrong_chain_target`);let M;try{M=jr(f.chainTarget)}catch{return Ej(e,`wrong_chain_target`)}if(!h||e.authMethod===`passkey`&&!_||e.authMethod===`email_otp`&&!v||e.authMethod===`passkey`&&!g||e.authMethod===`passkey`&&!y||e.authMethod===`email_otp`&&(!b||!x)||!w||!S||!C||!T||!E||!p||!O||!ee||!D.length||!k||e.authMethod===`passkey`&&!j)return Ej(e,`missing_restore_metadata`);let te=e.authMethod===`passkey`?xj({walletId:a,rpId:g,credentialIdB64u:y}):null,ne=Wa(f.authority),re=za(f.emailOtpAuthority),N=e.authMethod===`email_otp`&&ne&&re&&re.walletId===a&&re.factor.provider===f.provider&&re.factor.providerUserId===b&&re.verifier.emailHashHex===x?re:null;return e.authMethod===`passkey`&&!te||e.authMethod===`email_otp`&&!N?Ej(e,`invalid_identity`):{kind:`accepted`,record:e.authMethod===`passkey`?{storeKey:i,walletId:a,authMethod:`passkey`,curve:`ecdsa`,thresholdSessionId:d,sealedSecretB64u:o,issuedAtMs:s,expiresAtMs:c,remainingUses:l,updatedAtMs:u,...$(e.keyVersion)?{keyVersion:$(e.keyVersion)}:{},...$(e.groupId)?{groupId:$(e.groupId)}:{},chainTarget:M,source:_,authority:te,signingRootId:m.signingRootId,signingRootVersion:m.signingRootVersion,keyHandle:C,ecdsaThresholdKeyId:w,ethereumAddress:T,thresholdEcdsaPublicKeyB64u:E,participantIds:D,relayerUrl:h,relayerKeyId:S,runtimePolicyScope:p,routerAbEcdsaDerivationNormalSigning:O,publicCapability:ee,clientVerifyingShareB64u:j,roleLocalMaterialRef:k}:{storeKey:i,walletId:a,authMethod:`email_otp`,curve:`ecdsa`,thresholdSessionId:d,sealedSecretB64u:o,issuedAtMs:s,expiresAtMs:c,remainingUses:l,updatedAtMs:u,...$(e.keyVersion)?{keyVersion:$(e.keyVersion)}:{},...$(e.groupId)?{groupId:$(e.groupId)}:{},chainTarget:M,source:`email_otp`,authority:ne,emailOtpAuthority:N,signingRootId:m.signingRootId,signingRootVersion:m.signingRootVersion,keyHandle:C,ecdsaThresholdKeyId:w,ethereumAddress:T,thresholdEcdsaPublicKeyB64u:E,participantIds:D,relayerUrl:h,relayerKeyId:S,runtimePolicyScope:p,routerAbEcdsaDerivationNormalSigning:O,publicCapability:ee,...A?{clientVerifyingShareB64u:A}:{},roleLocalMaterialRef:k}}}function Oj(e,t){return String(e??``).trim()===String(t??``).trim()}function kj(e,t){return String(e??``).trim().toLowerCase()===String(t??``).trim().toLowerCase()}function Aj(e,t){return e.length===t.length?e.every((e,n)=>Number(e)===Number(t[n])):!1}function jj(e,t){let n=[],r=t.signer;return Oj(e.walletId,r.walletId)||n.push(`wallet_id`),Pr(e.chainTarget,r.chainTarget)||n.push(`chain_target`),Oj(e.keyHandle,r.keyHandle)||n.push(`key_handle`),Oj(e.ecdsaThresholdKeyId,r.key.ecdsaThresholdKeyId)||n.push(`ecdsa_threshold_key_id`),Oj(e.signingRootId,r.key.signingRootId)||n.push(`signing_root_id`),Oj(e.signingRootVersion,r.key.signingRootVersion)||n.push(`signing_root_version`),kj(e.ethereumAddress,r.key.thresholdOwnerAddress)||n.push(`threshold_owner_address`),Aj(e.participantIds,r.key.participantIds)||n.push(`participant_ids`),e.authMethod!==t.auth.kind&&n.push(`auth_method`),e.authMethod===`passkey`?t.auth.kind===`passkey`?(Oj(e.authority.verifier.rpId,t.auth.rpId)||n.push(`rp_id`),Oj(e.authority.factor.credentialIdB64u,t.auth.credentialIdB64u)||n.push(`credential_id`),n):(n.push(`passkey_auth_branch`),n):t.auth.kind===`email_otp`?(Oj(e.emailOtpAuthority.factor.providerUserId,t.auth.providerSubjectId)||n.push(`provider_subject_id`),n):(n.push(`email_otp_auth_branch`),n)}function Mj(e){console.warn(`[SigningSessionRestore] ECDSA restore identity mismatch`,JSON.stringify({reasons:e.reasons,record:{authMethod:e.record.authMethod,walletId:e.record.walletId,source:e.record.source,chainTarget:z(e.record.chainTarget),keyHandle:e.record.keyHandle,ecdsaThresholdKeyId:e.record.ecdsaThresholdKeyId,signingRootId:e.record.signingRootId,signingRootVersion:e.record.signingRootVersion,ethereumAddress:e.record.ethereumAddress,participantIds:e.record.participantIds},lane:{authMethod:e.lane.auth.kind,walletId:e.lane.signer.walletId,chainTarget:z(e.lane.signer.chainTarget),keyHandle:e.lane.signer.keyHandle,ecdsaThresholdKeyId:e.lane.signer.key.ecdsaThresholdKeyId,signingRootId:e.lane.signer.key.signingRootId,signingRootVersion:e.lane.signer.key.signingRootVersion,thresholdOwnerAddress:e.lane.signer.key.thresholdOwnerAddress,participantIds:e.lane.signer.key.participantIds}},null,2))}function Nj(e,t){if(t.authMethod!==e.authMethod||!Pr(t.chainTarget,e.chainTarget)||t.thresholdSessionId!==e.thresholdSessionId)return null;let n=e.materialRestoreIdentity.lane,r=jj(t,n);return r.length>0?(Mj({record:t,lane:n,reasons:r}),null):!Oj(t.ecdsaThresholdKeyId,e.materialRestoreIdentity.ecdsaThresholdKeyId)||!Oj(t.walletId,n.signer.walletId)||!Oj(t.keyHandle,n.signer.keyHandle)||!b(t.roleLocalMaterialRef.materialActivation,n.signer.materialActivation)?null:{record:t,purpose:{walletId:e.walletId,authMethod:e.authMethod,curve:`ecdsa`,chainTarget:e.chainTarget,materialActivation:t.roleLocalMaterialRef.materialActivation,thresholdSessionId:t.thresholdSessionId,reason:e.reason}}}function Pj(e,t){let n=Dj(t,{allowExpired:!1,allowExhausted:!1});if(n.kind===`rejected`)return{kind:`rejected`,rejection:n.rejection};let r=Nj(e,n.record);return r?{kind:`matched`,workItem:r}:{kind:`not_applicable`}}function Fj(e){return Pr(e.record.chainTarget,e.requestedChainTarget)?[{record:e.record,purpose:{walletId:e.walletId,authMethod:e.record.authMethod,curve:`ecdsa`,chainTarget:e.requestedChainTarget,materialActivation:e.record.roleLocalMaterialRef.materialActivation,thresholdSessionId:e.record.thresholdSessionId,reason:e.reason}}]:[]}function Ij(e){let t=Dj(e.record);if(t.kind===`rejected`)return[{kind:`rejected`,rejection:t.rejection}];let n=Fj({walletId:e.walletId,record:t.record,reason:e.reason,requestedChainTarget:e.requestedChainTarget});return n.length?n.map(e=>({kind:`matched`,workItem:e})):[{kind:`not_applicable`}]}function Lj(e){return e.kind===`matched`}function Rj(e,t){let n=z(e.chainTarget),r=`materialRestoreIdentity`in e?e.materialRestoreIdentity.lane.signer.materialActivation:e.materialActivation;return[e.walletId,e.authMethod,e.curve,n,e.reason,Ed(r),e.thresholdSessionId,t.thresholdSessionId,t.updatedAtMs,`restored`].join(`|`)}function zj(e,t){let n=z(e.chainTarget);return[e.walletId,e.authMethod,e.curve,n,Ed(e.materialActivation),e.thresholdSessionId,t.updatedAtMs].join(`|`)}function Bj(e){return{kind:`completed`,attempted:e.attempted,restored:e.restored,deferred:e.deferred}}function Vj(e){return e.map(({record:e,purpose:t})=>({authMethod:t.authMethod,curve:t.curve,chain:z(t.chainTarget),thresholdSessionId:t.thresholdSessionId,recordThresholdSessionId:e.thresholdSessionId,updatedAtMs:e.updatedAtMs}))}function Hj(){let e=new Set;return{hasSuccessfulRestore:(t,n)=>e.has(Rj(t,n)),rememberSuccessfulRestore:(t,n)=>{e.add(Rj(t,n))},clear:()=>{e.clear()}}}function Uj(){let e=new Set,t=new Map;return{hasCompleted:t=>e.has(String(t||``).trim()),rememberCompleted:t=>{let n=String(t||``).trim();n&&e.add(n)},getInFlight:e=>{let n=String(e||``).trim();return n?t.get(n):void 0},setInFlight:(e,n)=>{let r=String(e||``).trim();r&&t.set(r,n)},clearInFlight:e=>{let n=String(e||``).trim();n&&t.delete(n)},clear:()=>{e.clear(),t.clear()}}}async function Wj(e,t){let n=String(e.walletId||``).trim();if(!n)return Bj({attempted:0,restored:0,deferred:0});let r={...e,walletId:n},i;try{i=await t.listExactSealedSessionsForWallet({walletId:n,authMethod:r.authMethod,curve:`ecdsa`,chainTarget:r.chainTarget})}catch(e){return t.onListError?.({walletId:n,target:z(r.chainTarget),reason:r.reason,error:e}),Bj({attempted:0,restored:0,deferred:0})}let a=i.map(e=>Pj(r,e));for(let e of a)e.kind===`rejected`&&t.onRejectedRecord?.({walletId:n,rejection:e.rejection});let o=a.filter(Lj).map(e=>e.workItem);if(!o.length)return Bj({attempted:0,restored:0,deferred:0});if(o.length>1)return{kind:`duplicate_records`,attempted:0,restored:0,deferred:0,duplicateCount:o.length,duplicateRecordSummaries:Vj(o)};let s=0,c=0,l=0;return await Promise.all(o.map(async({record:e,purpose:i})=>{if(t.cache?.hasSuccessfulRestore(r,e))return;s+=1;let a=await t.restoreSealedRecordForWallet({walletId:n,record:e,purpose:i});a===`restored`&&(c+=1,t.cache?.rememberSuccessfulRestore(r,e)),a===`ready`&&t.cache?.rememberSuccessfulRestore(r,e),a===`deferred`&&(l+=1)})),Bj({attempted:s,restored:c,deferred:l})}async function Gj(e,t){let n=String(e.walletId||``).trim(),r=Math.max(0,Math.floor(e.maxRecords??10)),i={listed:0,discovered:0,truncated:0};if(!n||r<=0)return i;let a;try{a=(await Promise.all(e.ecdsaChainTargets.map(r=>t.listExactSealedSessionsForWallet({walletId:n,authMethod:e.authMethod,curve:`ecdsa`,chainTarget:r})))).flat()}catch(e){return t.onListError?.({walletId:n,error:e}),i}let o=new Set,s=a.flatMap(t=>e.ecdsaChainTargets.flatMap(e=>Ij({walletId:n,record:t,reason:`session_status`,requestedChainTarget:e}))).filter(e=>e.kind===`rejected`?(t.onRejectedRecord?.({walletId:n,rejection:e.rejection}),!1):!0).filter(Lj).map(e=>e.workItem).filter(e=>{let t=zj(e.purpose,e.record);return o.has(t)?!1:(o.add(t),!0)}),c=s.slice(0,r);return{listed:a.length,discovered:c.length,truncated:Math.max(0,s.length-c.length)}}function Kj(e){if(e.ok)return!1;switch(e.code){case`expired`:case`exhausted`:return!1;case`not_found`:case`invalid_args`:case`invalid_response`:return!0;default:return!1}}async function qj(e){let t=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:R(e.record.walletId),chainTarget:e.record.chainTarget});return t.kind===`resolved`&&b(t.runtime.materialActivation,e.record.roleLocalMaterialRef.materialActivation)?{kind:`current`}:{kind:`superseded`,status:{ok:!1,code:`superseded`,message:`Passkey ECDSA sealed recovery was superseded (${t.kind===`blocked`?t.reason:`material_activation_mismatch`})`}}}async function Jj(e){if(!Pr(e.record.chainTarget,e.purpose.chainTarget))return null;let t=String(e.purpose.thresholdSessionId||``).trim();if(!t||!e.groupId)return null;let n=await qj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});if(n.kind===`superseded`)return n.status;let r=await e.rehydrateWarmSessionMaterial({thresholdSessionId:t,sealedSecretB64u:e.record.sealedSecretB64u,signingSessionSealKeyVersion:Bo(e.record.keyVersion),expiresAtMs:e.record.expiresAtMs,remainingUses:e.record.remainingUses,transport:{...e.transport,groupId:e.groupId}});if(!r.ok){let t=await qj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});return t.kind===`superseded`?t.status:(Kj(r)&&await e.deletePersistedRecord().catch(()=>void 0),await e.recordSessionMaterialRestored(r),r)}let i=await e.readWarmSessionStatusFromWorker(t);if(!i)return{ok:!1,code:`worker_error`,message:`Warm-session status read failed after rehydrate`};let a=await qj({record:e.record,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime});return a.kind===`superseded`?a.status:(i.ok?await e.updatePersistedPolicy({expiresAtMs:i.expiresAtMs,remainingUses:i.remainingUses,updatedAtMs:Date.now()}).catch(()=>void 0):Kj(i)&&await e.deletePersistedRecord().catch(()=>void 0),await e.recordSessionMaterialRestored(i),i)}const Yj=new Map;function Xj(e){return Math.max(0,Math.round(performance.now()-e))}function Zj(e){e.diagnostics?.recordDuration(e.bucket,Xj(e.startedAt))}function Qj(e){!e.diagnostics||!e.resultDiagnostics||(e.diagnostics.recordDuration(`sealed_record_apply_runtime_setup`,e.resultDiagnostics.runtimeSetupMs),e.diagnostics.recordDuration(`sealed_record_apply_client_seal`,e.resultDiagnostics.clientSealMs),e.diagnostics.recordDuration(`sealed_record_apply_server_route`,e.resultDiagnostics.serverSealRouteMs),e.diagnostics.recordDuration(`sealed_record_apply_client_unseal`,e.resultDiagnostics.clientUnsealMs),e.diagnostics.recordDuration(`sealed_record_apply_policy_update`,e.resultDiagnostics.policyUpdateMs))}function $j(e){if(e.transport.curve===`ecdsa`){let t=String(e.transport.walletId).trim(),n=String(e.transport.ecdsaRestore.authority.walletId).trim();if(!t||!n||t!==n)throw Error(`Passkey ECDSA seal transport wallet does not match restore metadata`);return{walletId:t,ecdsaRestore:e.transport.ecdsaRestore}}let t=be(fe(e.transport.ed25519Restore.runtimePolicyScope));return{walletId:e.transport.walletId,signingRootId:t.signingRootId,...t.signingRootVersion?{signingRootVersion:t.signingRootVersion}:{},ed25519Restore:e.transport.ed25519Restore}}function eM(e){return e.transport.curve===`ed25519`?{authMethod:`passkey`,curve:`ed25519`}:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.transport.chainTarget}}function tM(e){if(e.transport.curve===`ecdsa`){let t=e.transport.ecdsaRestore?.roleLocalMaterialRef;if(!t)throw Error(`Passkey ECDSA persistence requires exact restore metadata`);return[`persist`,`passkey`,`ecdsa`,z(e.transport.chainTarget),t.materialActivation.activationId,t.materialActivation.capability,t.materialActivation.materialOwner,t.materialActivation.keyBinding,t.materialActivation.lifecycleBinding,t.materialActivation.signingWorker,t.durableMaterialRef,t.bindingDigest].join(`|`)}let t=hd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation});return[`persist`,t.kind,t.authMethod,Ed(t.materialActivation)].join(`|`)}function nM(e){return e.transport.curve===`ed25519`}function rM(e){if(!nM(e)){let t=String(e.metadata.walletId||``).trim();if(!t||!e.metadata.ecdsaRestore)throw Error(`[SigningSessionSealedStore] missing Passkey ECDSA seal metadata`);let n={...e.existing?.thresholdSessionIds,ecdsa:e.thresholdSessionId};return{thresholdSessionId:e.thresholdSessionId,sealedSecretB64u:e.sealedSecretB64u,curve:`ecdsa`,authMethod:`passkey`,thresholdSessionIds:n,walletId:t,relayerUrl:e.relayerUrl,keyVersion:e.keyVersion,groupId:e.groupId,ecdsaRestore:e.metadata.ecdsaRestore,...e.metadata.ed25519Restore?{ed25519Restore:e.metadata.ed25519Restore}:{},issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs}}let t=String(e.metadata.walletId||``).trim();if(!t||!e.metadata.ed25519Restore)throw Error(`[SigningSessionSealedStore] missing Passkey Ed25519 seal metadata`);let n={...e.existing?.thresholdSessionIds,ed25519:e.thresholdSessionId};return{thresholdSessionId:e.thresholdSessionId,sealedSecretB64u:e.sealedSecretB64u,curve:`ed25519`,authMethod:`passkey`,thresholdSessionIds:n,walletId:t,...e.metadata.signingRootId?{signingRootId:e.metadata.signingRootId}:{},...e.metadata.signingRootVersion?{signingRootVersion:e.metadata.signingRootVersion}:{},relayerUrl:e.relayerUrl,keyVersion:e.keyVersion,groupId:e.groupId,...e.metadata.ecdsaRestore?{ecdsaRestore:e.metadata.ecdsaRestore}:{},ed25519Restore:e.metadata.ed25519Restore,issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses,updatedAtMs:e.updatedAtMs}}function iM(e){return e.transport.curve===`ed25519`}async function aM(e){let t=Kt(e);if(!t)throw Error(`[SigningSessionSealedStore] invalid sealed session record write input`);await Bt(t)}function oM(e,t){return e.source===t.source&&Pr(e.chainTarget,t.chainTarget)&&e.keyHandle===t.keyHandle&&e.ecdsaThresholdKeyId===t.ecdsaThresholdKeyId&&e.ethereumAddress===t.ethereumAddress&&e.relayerKeyId===t.relayerKeyId&&e.clientVerifyingShareB64u===t.clientVerifyingShareB64u&&e.thresholdEcdsaPublicKeyB64u===t.thresholdEcdsaPublicKeyB64u&&b(e.roleLocalMaterialRef.materialActivation,t.roleLocalMaterialRef.materialActivation)&&e.roleLocalMaterialRef.durableMaterialRef===t.roleLocalMaterialRef.durableMaterialRef&&e.roleLocalMaterialRef.bindingDigest===t.roleLocalMaterialRef.bindingDigest&&e.participantIds.length===t.participantIds.length&&e.participantIds.every((e,n)=>e===t.participantIds[n])&&e.authority.kind===t.authority.kind&&e.authority.walletId===t.authority.walletId&&e.authority.authorityDigest===t.authority.authorityDigest&&e.authority.walletAuthMethodId===t.authority.walletAuthMethodId&&La(e.publicCapability,t.publicCapability)&&Ka(e.routerAbEcdsaDerivationNormalSigning,t.routerAbEcdsaDerivationNormalSigning)}function sM(e){if(e.existing.curve!==e.transport.curve)return!1;let t=String(e.transport.walletId).trim();if(!t||t!==e.existing.walletId)return!1;if(e.existing.curve===`ed25519`&&e.transport.curve===`ed25519`)return b(e.existing.ed25519Restore.materialActivation,e.transport.ed25519Restore.materialActivation);if(e.existing.curve!==`ecdsa`||e.transport.curve!==`ecdsa`||!Pr(e.existing.ecdsaRestore.chainTarget,e.transport.chainTarget))return!1;let n=e.metadata.ecdsaRestore;return n?oM(e.existing.ecdsaRestore,n):!0}function cM(e){return e.curve===`ecdsa`?{walletId:e.walletId,ecdsaRestore:e.ecdsaRestore,...e.ed25519Restore?{ed25519Restore:e.ed25519Restore}:{}}:{walletId:e.walletId,...e.signingRootId?{signingRootId:e.signingRootId}:{},...e.signingRootVersion?{signingRootVersion:e.signingRootVersion}:{},...e.ecdsaRestore?{ecdsaRestore:e.ecdsaRestore}:{},ed25519Restore:e.ed25519Restore}}function lM(e,t){return e.curve,{...e,authMethod:`passkey`,groupId:t}}async function uM(e){return e.transport.curve===`ed25519`?await At(hd({authMethod:`passkey`,materialActivation:e.transport.ed25519Restore.materialActivation})):await qn(e.thresholdSessionId,e.purpose)}var dM=class{constructor(e){this.deps=e}async persistSigningSessionSealForThresholdSession(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey signing-session seal persistence requires signingSessionPersistenceMode="sealed_refresh_v1"`};let t=String(e.thresholdSessionId||``).trim();if(!t)return{ok:!1,code:`invalid_args`,message:`Missing threshold sessionId`};let n=String(e.transport.relayerUrl||``).trim();if(!n)return{ok:!1,code:`invalid_args`,message:`Passkey seal persistence requires relayerUrl`};let r=$j({transport:e.transport}),i=eM({transport:e.transport});if(!i)return{ok:!1,code:`invalid_args`,message:`Passkey seal persistence requires one exact record purpose`};let a=tM({transport:e.transport}),o=Yj.get(a);if(o)return await o;let s;s=(e.transport.curve,this.persistExactRecord({thresholdSessionId:t,transport:e.transport,metadata:r,purpose:i,relayerUrl:n,diagnostics:e.diagnostics,completedSeal:e.completedSeal}));let c=s.finally(()=>{Yj.delete(a)});return Yj.set(a,c),await c}async recordPolicyResult(e,t,n){let r=await this.readRecordForPurpose(e,t);if(r){if(n.ok){await this.writePolicy(r,n.expiresAtMs,Math.max(0,n.remainingUses));return}if(n.code===`exhausted`){await this.writePolicy(r,r.expiresAtMs,0);return}n.code===`expired`&&await this.writePolicy(r,Math.min(r.expiresAtMs,Date.now()),Math.max(0,r.remainingUses))}}async updatePersistedPolicy(e){let t=await this.readRecordForPurpose(e.purpose,e.thresholdSessionId);!t||t.curve!==`ecdsa`||t.thresholdSessionIds.ecdsa!==e.thresholdSessionId||await this.writePolicy(t,e.expiresAtMs,e.remainingUses)}async persistExactRecord(e){let t=performance.now(),n;try{n=await uM(e)}catch(n){return Zj({diagnostics:e.diagnostics,bucket:`sealed_record_existing_read`,startedAt:t}),{ok:!1,code:`local_persist_failed`,message:n instanceof Error?`Failed to read the existing sealed session: ${n.message}`:`Failed to read the existing sealed session`}}if(Zj({diagnostics:e.diagnostics,bucket:`sealed_record_existing_read`,startedAt:t}),n){if(!sM({existing:n,transport:e.transport,metadata:e.metadata}))return{ok:!1,code:`binding_mismatch`,message:`Existing sealed session names different material`};let t=performance.now(),r;try{r=await this.deps.readWarmSessionStatus({thresholdSessionId:e.thresholdSessionId})}catch(e){return{ok:!1,code:`worker_error`,message:e instanceof Error?`Failed to read warm-session policy: ${e.message}`:`Failed to read warm-session policy`}}Zj({diagnostics:e.diagnostics,bucket:`sealed_record_policy_read`,startedAt:t});let i=cM(n),a=r.ok?r.expiresAtMs:r.code===`expired`?Math.min(n.expiresAtMs,Date.now()):n.expiresAtMs,o=r.ok?r.remainingUses:r.code===`exhausted`?0:n.remainingUses;if(!r.ok&&r.code!==`expired`&&r.code!==`exhausted`)return r;let s=performance.now();return await aM((iM(e),rM({thresholdSessionId:e.thresholdSessionId,transport:e.transport,metadata:i,sealedSecretB64u:n.sealedSecretB64u,relayerUrl:n.relayerUrl,keyVersion:n.keyVersion,groupId:n.groupId,issuedAtMs:n.issuedAtMs,expiresAtMs:a,remainingUses:o,updatedAtMs:Date.now(),existing:n}))),Zj({diagnostics:e.diagnostics,bucket:`sealed_record_register`,startedAt:s}),{ok:!0,sealedSecretB64u:n.sealedSecretB64u,keyVersion:n.keyVersion,remainingUses:o,expiresAtMs:a}}if(e.transport.curve===`ecdsa`&&!e.metadata.ecdsaRestore)return{ok:!1,code:`missing_restore_metadata`,message:`Passkey ECDSA seal persistence requires exact restore metadata`};if(e.transport.curve===`ecdsa`&&e.metadata.ecdsaRestore&&!Pr(e.transport.chainTarget,e.metadata.ecdsaRestore.chainTarget))return{ok:!1,code:`binding_mismatch`,message:`Passkey ECDSA seal transport and restore metadata name different material`};if(e.transport.curve===`ed25519`&&!e.metadata.ed25519Restore)return{ok:!1,code:`missing_restore_metadata`,message:`Passkey Ed25519 seal persistence requires exact restore metadata`};if(String(e.transport.groupId||`rfc2409-group2`).trim()!==`rfc2409-group2`)return{ok:!1,code:`invalid_args`,message:`Unsupported groupId for Passkey signing-session seal persistence`};let r=Xe,i=performance.now(),a=e.completedSeal??await this.deps.sealAndPersistWarmSessionMaterial({thresholdSessionId:e.thresholdSessionId,transport:lM(e.transport,r)});if(Zj({diagnostics:e.diagnostics,bucket:`sealed_record_apply_server_seal`,startedAt:i}),Qj({diagnostics:e.diagnostics,resultDiagnostics:a.ok?a.diagnostics:void 0}),!a.ok)return a;let o=String(a.keyVersion||``).trim();if(!o)return{ok:!1,code:`invalid_key_version`,message:`Signing-session seal response did not include a key version`};let s=Date.now(),c=performance.now();await aM((iM(e),rM({thresholdSessionId:e.thresholdSessionId,transport:e.transport,metadata:e.metadata,sealedSecretB64u:a.sealedSecretB64u,relayerUrl:e.relayerUrl,keyVersion:o,groupId:r,issuedAtMs:s,expiresAtMs:a.expiresAtMs,remainingUses:a.remainingUses,updatedAtMs:s}))),Zj({diagnostics:e.diagnostics,bucket:`sealed_record_register`,startedAt:c});let l=performance.now(),u;try{u=await uM(e)}catch{u=null}return Zj({diagnostics:e.diagnostics,bucket:`sealed_record_verify_read`,startedAt:l}),u?a:{ok:!1,code:`local_persist_failed`,message:`Failed to persist sealed signing-session record locally`}}async readRecordForPurpose(e,t){return e.curve===`ed25519`?await At(hd({authMethod:`passkey`,materialActivation:e.materialActivation})):await qn(t,{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget})}async writePolicy(e,t,n){if(e.curve===`ed25519`){await nn({locator:hd({authMethod:`passkey`,materialActivation:e.ed25519Restore.materialActivation}),expiresAtMs:Math.max(1,Math.floor(t)),remainingUses:Math.max(0,Math.floor(n)),updatedAtMs:Date.now()});return}await sn({thresholdSessionId:e.thresholdSessionIds.ecdsa,filter:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.ecdsaRestore.chainTarget},expiresAtMs:Math.max(1,Math.floor(t)),remainingUses:Math.max(0,Math.floor(n)),updatedAtMs:Date.now()})}};const fM=new Map,pM=new Map;function mM(e){return[`rehydrate`,`passkey`,`ecdsa`,z(e.chainTarget),Ed(e.materialActivation),String(e.thresholdSessionId||``).trim()].join(`|`)}function hM(e,t){if(!e)return`deferred`;if(e.ok)return t;if(e.code===`exhausted`)return`ready`;if(e.code===`expired`)return`deferred`;throw Error(`[PasskeyMpcSession] sealed-session restore failed (${e.code}): ${e.message}`)}async function gM(e){return{chainTarget:e.chainTarget,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,source:e.source,authority:await H({authority:e.authority}),roleLocalMaterialRef:e.roleLocalMaterialRef,rpId:e.authority.verifier.rpId,credentialIdB64u:e.authority.factor.credentialIdB64u,keyHandle:e.keyHandle,ecdsaThresholdKeyId:e.ecdsaThresholdKeyId,ethereumAddress:e.ethereumAddress,relayerKeyId:e.relayerKeyId,clientVerifyingShareB64u:e.clientVerifyingShareB64u,thresholdEcdsaPublicKeyB64u:e.thresholdEcdsaPublicKeyB64u,participantIds:[...e.participantIds],...e.runtimePolicyScope?{runtimePolicyScope:e.runtimePolicyScope}:{},routerAbEcdsaDerivationNormalSigning:e.routerAbEcdsaDerivationNormalSigning,publicCapability:e.publicCapability}}function _M(e){return e.session.capabilitySubjects.some(t=>t.kind===`sign`&&t.keyFamily===`ecdsa_secp256k1`&&b(t.materialActivation,e.materialActivation))}async function vM(e){let t=R(e.walletId),n;try{n=await G.resolveSelectedWalletAuthority(String(t))}catch{return null}if(n.kind!==`resolved`)return null;let{selection:r,authMethod:i,authority:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==i.walletAuthMethodId||i.kind!==`passkey`||i.status!==`active`||i.walletId!==t||i.walletAuthorityId!==a.authorityId||i.walletAuthMethodId!==e.factorAuthority.bindingId||i.rpId!==e.factorAuthority.verifier.rpId||i.credentialIdB64u!==e.factorAuthority.factor.credentialIdB64u||a.state!==`active`||a.walletId!==t)return null;let o;try{o=await K.readExactWithOperationCredential({walletId:t,authorityId:a.authorityId,authMethodId:i.walletAuthMethodId})}catch{return null}return o.kind!==`found`||o.record.walletId!==t||o.record.authorityId!==a.authorityId||o.record.authMethodId!==i.walletAuthMethodId||o.record.authorityDigestB64u!==a.authorityDigestB64u||o.record.authorityRevocationEpoch!==a.revocationEpoch||o.record.expiresAtMs<=e.nowMs||!_M({session:o.record,materialActivation:e.materialActivation})?null:o.operationCredential}async function yM(e){let t=Qt({durableRecord:{authMethod:`passkey`,curve:`ecdsa`,thresholdSessionId:e.thresholdSessionId,chainTarget:e.chainTarget},deleteReason:`invalid_persisted_record`,preserveResolvedIdentity:!1}),n=[`delete`,`passkey`,`ecdsa`,z(e.chainTarget),e.thresholdSessionId].join(`|`),r=pM.get(n);if(r)return await r;let i=It(t).finally(()=>{pM.delete(n)});pM.set(n,i),await i}async function bM(e){return await Yn({walletId:e.walletId,filter:{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget}})}function xM(e){console.warn(`[PasskeyMpcSession] signing-session restore list failed`,{walletId:e.walletId,target:e.target,reason:e.reason,error:e.error instanceof Error?e.error.message:String(e.error||`unknown error`)})}function SM(e){console.warn(`[PasskeyMpcSession] signing-session restore rejected record`,e)}function CM(e){return typeof e==`object`&&!!e}function wM(e){let t=Math.floor(Number(e));return Number.isFinite(t)&&t>0?t:0}function TM(e){return Number.isSafeInteger(e)&&Number(e)>=0}function EM(e){return Number.isSafeInteger(e)&&Number(e)>0}function DM(e){return!CM(e)||typeof e.ok!=`boolean`?null:e.ok?!TM(e.remainingUses)||!EM(e.expiresAtMs)?null:{ok:!0,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Warm-session status read failed`}}function OM(e){if(!CM(e)||!Array.isArray(e.results))return null;let t=[];for(let n of e.results){if(!CM(n)||typeof n.thresholdSessionId!=`string`||!n.thresholdSessionId.trim())return null;let e=DM(n.result);if(!e)return null;t.push({thresholdSessionId:n.thresholdSessionId,result:e})}return{results:t}}function kM(e){return!CM(e)||typeof e.ok!=`boolean`?null:e.ok?typeof e.prfFirstB64u!=`string`||!e.prfFirstB64u.trim()||!TM(e.remainingUses)||!EM(e.expiresAtMs)?null:{ok:!0,prfFirstB64u:e.prfFirstB64u,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Warm-session claim failed`}}function AM(e){if(!CM(e)||typeof e.ok!=`boolean`)return null;if(!e.ok)return{ok:!1,code:typeof e.code==`string`?e.code:`worker_error`,message:typeof e.message==`string`?e.message:`Signing-session seal and persist failed`};if(typeof e.sealedSecretB64u!=`string`||!e.sealedSecretB64u.trim()||typeof e.keyVersion!=`string`||!e.keyVersion.trim()||!TM(e.remainingUses)||!EM(e.expiresAtMs))return null;let t=CM(e.diagnostics)?{runtimeSetupMs:wM(e.diagnostics.runtimeSetupMs),clientSealMs:wM(e.diagnostics.clientSealMs),serverSealRouteMs:wM(e.diagnostics.serverSealRouteMs),clientUnsealMs:wM(e.diagnostics.clientUnsealMs),policyUpdateMs:wM(e.diagnostics.policyUpdateMs)}:void 0;return{ok:!0,sealedSecretB64u:e.sealedSecretB64u,keyVersion:e.keyVersion.trim(),remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs,...t?{diagnostics:t}:{}}}function jM(e){if(e.authMethod===`email_otp`||e.curve===`linked_device`)throw Error(`Passkey MPC durable owner requires an owner signing-lane transport`);return e}function MM(e){return Math.max(0,Math.round(performance.now()-e))}function NM(e){e.diagnostics?.recordDuration(e.bucket,MM(e.startedAt))}var PM=class{worker=null;initializationPromise=null;workerBaseOrigin;messageId=0;pendingRequests=new Map;boundHandleWorkerMessage=this.handleWorkerMessage.bind(this);boundHandleWorkerError=this.handleWorkerError.bind(this);durableState;constructor(e){this.deps=e,this.durableState=new dM({signingSessionPersistenceMode:e.signingSessionPersistenceMode,sealAndPersistWarmSessionMaterial:this.sealAndPersistWarmSessionMaterial.bind(this),readWarmSessionStatus:this.readWarmSessionStatus.bind(this)})}setWorkerBaseOrigin(e){this.workerBaseOrigin=e}async prewarmShamir3Pass(){try{await this.sendMessage({type:`PREWARM_SHAMIR3PASS`,id:this.generateMessageId(),payload:{}},15e3)}catch{}}async prepareSigningSessionHydration(e){let t=await this.sendMessage({type:`PREPARE_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(t.error||`Client seal preparation failed`)}async discardSigningSessionHydration(e){let t=await this.sendMessage({type:`DISCARD_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success)throw Error(t.error||`Client seal cleanup failed`)}async readPreparedSigningSessionHydration(e){let t=await this.sendMessage({type:`READ_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:e});if(!t.success||!CM(t.data)||t.data.ok!==!0||typeof t.data.ciphertext!=`string`||!t.data.ciphertext.trim())throw Error(t.success?`Prepared client seal is invalid`:t.error||`Client seal read failed`);return{ciphertext:t.data.ciphertext}}putWarmSessionMaterial=async e=>{let{diagnostics:t,preparedServerSeal:n,...r}=e;if(n&&!e.transport)throw Error(`Prepared server seal requires exact persistence transport`);let i=performance.now();await this.ensureWorkerReady(),NM({diagnostics:t,bucket:`worker_ready`,startedAt:i});let a=performance.now(),o=await this.sendMessage({type:`WARM_SESSION_MATERIAL_PUT`,id:this.generateMessageId(),payload:r});if(!o.success)throw Error(String(o.error||`Failed to cache warm-session material`));let s=DM(o.data);if(!s)throw Error(`Warm-session cache returned an invalid response`);if(!s.ok)throw Error(`Warm-session cache failed (${s.code}): ${s.message}`);NM({diagnostics:t,bucket:`worker_put`,startedAt:a});let c;if(n&&e.transport){let t=await this.sendMessage({type:`COMPLETE_SESSION_CLIENT_SEAL`,id:this.generateMessageId(),payload:{preparationId:n.preparationId,thresholdSessionId:e.thresholdSessionId,transport:jM(e.transport),serverSeal:{ok:!0,ciphertext:n.ciphertext,keyVersion:n.keyVersion,expiresAtMs:n.expiresAtMs,remainingUses:n.remainingUses}}}),r=t.success?AM(t.data):null;if(!r){let e=t.success?`Prepared signing-session seal returned an invalid response`:t.error||`Prepared signing-session seal failed`;throw Error(e)}if(!r.ok)throw Error(`Prepared signing-session seal failed (${r.code}): ${r.message}`);c=r}let l=performance.now(),u=e.transport?await this.durableState.persistSigningSessionSealForThresholdSession({thresholdSessionId:e.thresholdSessionId,transport:jM(e.transport),...t?{diagnostics:t}:{},...c?{completedSeal:c}:{}}):null;if(NM({diagnostics:t,bucket:`sealed_record_persist`,startedAt:l}),u&&!u.ok)throw Error(`Warm-session cache could not persist sealed refresh material (${u.code}): ${u.message}`)};getWarmSessionStatus=async e=>await this.readWarmSessionStatus(e);discoverPersistedSessionsForWallet=async e=>this.deps.signingSessionPersistenceMode===`sealed_refresh_v1`?await Gj({...e,authMethod:`passkey`},{listExactSealedSessionsForWallet:async e=>await Yn({walletId:e.walletId,filter:e.curve===`ecdsa`?{authMethod:`passkey`,curve:`ecdsa`,chainTarget:e.chainTarget}:{authMethod:`passkey`,curve:`ed25519`}}),onListError:({walletId:e,error:t})=>{console.warn(`[PasskeyMpcSession] persisted-session discovery list failed`,{walletId:e,error:t instanceof Error?t.message:String(t||`unknown error`)})},onRejectedRecord:({walletId:e,rejection:t})=>{console.warn(`[PasskeyMpcSession] persisted-session discovery rejected record`,{walletId:e,rejection:t})}}):{listed:0,discovered:0,truncated:0};restorePersistedSessionForSigning=async e=>this.deps.signingSessionPersistenceMode===`sealed_refresh_v1`?await Wj({...e,authMethod:`passkey`},{listExactSealedSessionsForWallet:bM,restoreSealedRecordForWallet:this.restorePasskeySealedRecordForWallet,onListError:xM,onRejectedRecord:SM}):{kind:`completed`,attempted:0,restored:0,deferred:0};restorePasskeySealedRecordForWallet=async e=>{let{record:t,purpose:n}=e;if(n.authMethod!==`passkey`||t.authMethod!==`passkey`)return`deferred`;let r=String(n.thresholdSessionId||``).trim(),i=n.chainTarget;if(!r||t.curve!==`ecdsa`||!Pr(t.chainTarget,i)||!b(t.roleLocalMaterialRef.materialActivation,n.materialActivation))return`deferred`;let a=mM({thresholdSessionId:r,chainTarget:i,materialActivation:n.materialActivation}),o=fM.get(a);if(o)return hM(await o,`ready`);let s=pd({queueByKey:this.deps.thresholdEcdsaSigningQueueByKey,queueKey:bd({materialActivation:t.roleLocalMaterialRef.materialActivation}),walletId:R(e.walletId),enabled:!0,task:async()=>await this.restorePasskeyEcdsaRecord({walletId:e.walletId,record:t,purpose:{...n,authMethod:`passkey`}})}).finally(()=>{fM.delete(a)});return fM.set(a,s),hM(await s,`restored`)};async restorePasskeyEcdsaRecord(e){let t=e.purpose.thresholdSessionId,n=e.purpose.chainTarget,r=await Rt({thresholdSessionId:t,authMethod:`passkey`,curve:`ecdsa`,chainTarget:n});if(!r)return null;try{let r=await vM({walletId:e.walletId,factorAuthority:e.record.authority,materialActivation:e.purpose.materialActivation,nowMs:Date.now()});if(!r)return null;let i=await gM(e.record),a=r.token,o=String(i.authority.walletId).trim();if(!o||o!==String(e.walletId).trim())return null;let s=String(e.record.groupId||``).trim();if(!s)return null;let c={curve:`ecdsa`,authMethod:`passkey`,walletId:o,chainTarget:n,relayerUrl:e.record.relayerUrl,signingSessionSealKeyVersion:Bo(e.record.keyVersion),groupId:s,walletSessionToken:a,ecdsaRestore:i};return await Jj({record:e.record,purpose:e.purpose,transport:c,groupId:s,rehydrateWarmSessionMaterial:this.rehydrateWarmSessionMaterial.bind(this),deletePersistedRecord:async()=>await yM({thresholdSessionId:t,chainTarget:n}),recordSessionMaterialRestored:async e=>await this.recordWarmSessionPolicyResult({curve:`ecdsa`,thresholdSessionId:t,chainTarget:n},t,e),readWarmSessionStatusFromWorker:async e=>await this.readWarmSessionStatus({thresholdSessionId:e}),resolveCurrentEcdsaCapabilityRuntime:this.deps.resolveCurrentEcdsaCapabilityRuntime,updatePersistedPolicy:async e=>await this.durableState.updatePersistedPolicy({thresholdSessionId:t,purpose:{curve:`ecdsa`,thresholdSessionId:t,chainTarget:n},...e})})}finally{await en(r)}}getWarmSessionStatuses=async e=>{let t=Array.from(new Set(e.thresholdSessionIds.map(e=>String(e||``).trim()).filter(Boolean)));if(!t.length)return{results:[]};let n=await this.sendMessage({type:`WARM_SESSION_STATUS_BATCH_READ`,id:this.generateMessageId(),payload:{thresholdSessionIds:t}});if(n.success){let e=OM(n.data);if(e)return e}return{results:t.map(e=>({thresholdSessionId:e,result:{ok:!1,code:`worker_error`,message:String(n.success?`Warm-session batch status read failed`:n.error)}}))}};claimWarmSessionMaterial=async e=>{let t=dj(e),n=await this.sendMessage({type:`WARM_SESSION_MATERIAL_CLAIM`,id:this.generateMessageId(),payload:{thresholdSessionId:t,...typeof e.uses==`number`?{uses:e.uses}:{},...typeof e.consume==`boolean`?{consume:e.consume}:{},curve:e.purpose.curve}});if(!n.success)return{ok:!1,code:`worker_error`,message:n.error};let r=kM(n.data);return r?(await this.recordWarmSessionPolicyResult(e.purpose,t,r),r):{ok:!1,code:`worker_error`,message:`Warm-session claim failed`}};consumeWarmSessionUses=async e=>{let t=dj(e),n=await this.sendMessage({type:`WARM_SESSION_MATERIAL_CONSUME`,id:this.generateMessageId(),payload:{thresholdSessionId:t,...typeof e.uses==`number`?{uses:e.uses}:{},curve:e.purpose.curve}});if(!n.success)return{ok:!1,code:`worker_error`,message:n.error};let r=DM(n.data);return r?(await this.recordWarmSessionPolicyResult(e.purpose,t,r),r):{ok:!1,code:`worker_error`,message:`Warm-session consume failed`}};clearVolatileWarmSessionMaterial=async e=>{let t=Hm(e);if(t?.scope.kind!==`session`||!this.worker&&!this.initializationPromise)return;let n=await this.sendMessage({type:`WARM_SESSION_VOLATILE_MATERIAL_CLEAR`,id:this.generateMessageId(),payload:t});if(!n.success)throw Error(String(n.error||`Failed to clear volatile warm-session material`))};clearAllVolatileWarmSessionMaterial=async e=>{let t=Hm(e);if(t?.scope.kind!==`all`||!this.worker&&!this.initializationPromise)return;let n=await this.sendMessage({type:`WARM_SESSION_VOLATILE_MATERIAL_CLEAR_ALL`,id:this.generateMessageId(),payload:t});if(!n.success)throw Error(String(n.error||`Failed to clear all volatile warm-session material entries`))};async sealAndPersistWarmSessionMaterial(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey MPC session sealing requires sealed refresh mode`};let t=await this.sendMessage({type:`WARM_SESSION_SEAL_AND_PERSIST`,id:this.generateMessageId(),payload:e});if(t.success){let e=AM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Signing-session seal and persist failed`:t.error)}}persistSigningSessionSealForThresholdSession=async e=>await this.durableState.persistSigningSessionSealForThresholdSession(e);recordWarmSessionPolicyResult=async(e,t,n)=>await this.durableState.recordPolicyResult(e,t,n);async rehydrateWarmSessionMaterial(e){if(this.deps.signingSessionPersistenceMode!==`sealed_refresh_v1`)return{ok:!1,code:`not_enabled`,message:`Passkey MPC session rehydration requires sealed refresh mode`};let t=await this.sendMessage({type:`WARM_SESSION_REHYDRATE`,id:this.generateMessageId(),payload:e});if(t.success){let e=DM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Warm-session rehydrate failed`:t.error)}}async readWarmSessionStatus(e){let t=await this.sendMessage({type:`WARM_SESSION_STATUS_READ`,id:this.generateMessageId(),payload:e});if(t.success){let e=DM(t.data);if(e)return e}return{ok:!1,code:`worker_error`,message:String(t.success?`Warm-session status read failed`:t.error)}}async ensureWorkerReady(){if(!this.worker&&(this.initializationPromise||=this.createWorker().catch(e=>{throw this.initializationPromise=null,e}),await this.initializationPromise,!this.worker))throw Error(`Passkey MPC session worker failed to initialize`)}async createWorker(){let e=Tf(Lk.RUNTIME.PASSKEY_MPC_SESSION_WORKER,{worker:`passkeyMpcSession`,baseOrigin:this.workerBaseOrigin}),t=new Worker(e,{type:`module`,name:`PasskeyMpcSessionWorker`});t.addEventListener(`message`,this.boundHandleWorkerMessage),t.addEventListener(`error`,this.boundHandleWorkerError),this.worker=t}async sendMessage(e,t=6e4){await this.ensureWorkerReady();let n=this.worker;if(!n)throw Error(`Passkey MPC session worker not available`);let r=String(e.id||this.generateMessageId());if(this.pendingRequests.has(r))throw Error(`Duplicate Passkey MPC session worker request id: ${r}`);return await new Promise((i,a)=>{let o=setTimeout(()=>{this.rejectPendingRequest(r,Error(`Passkey MPC session worker communication timeout (${t}ms) for ${e.type}`))},t);this.pendingRequests.set(r,{id:r,timeoutId:o,resolve:i,reject:a});try{n.postMessage({...e,id:r})}catch(e){this.rejectPendingRequest(r,e instanceof Error?e:Error(String(e)))}})}handleWorkerMessage(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=Jl(e.data);if(!t)return;let n=t.id||``;if(!n)return;let r=this.pendingRequests.get(n);r&&(clearTimeout(r.timeoutId),this.pendingRequests.delete(n),r.resolve(t))}handleWorkerError(e){if(e.currentTarget!==this.worker||e.target!==this.worker)return;let t=this.worker;this.worker=null,this.initializationPromise=null,t?.removeEventListener(`message`,this.boundHandleWorkerMessage),t?.removeEventListener(`error`,this.boundHandleWorkerError),t?.terminate();let n=e,r=Error(`Passkey MPC session worker failed: ${String(n.message||`unknown error`)}`);for(let e of this.pendingRequests.values())clearTimeout(e.timeoutId),e.reject(r);this.pendingRequests.clear()}rejectPendingRequest(e,t){let n=this.pendingRequests.get(e);n&&(clearTimeout(n.timeoutId),this.pendingRequests.delete(e),n.reject(t))}generateMessageId(){return`passkey_mpc_session_${Date.now()}_${++this.messageId}`}};function FM(e){return new PM(e)}var IM=class{resolveOperationStepUpCredential;nearKeyMaterialStore;touchIdPrompt;touchConfirm;passkeyMpcSession;nearClient;userPreferencesManager;nonceCoordinator;relayerUrl;chains;nearExplorerUrl;tempoExplorerUrl;evmExplorerUrl;getTheme;workerTransport;constructor(e){this.resolveOperationStepUpCredential=e.resolveOperationStepUpCredential,this.nearKeyMaterialStore=e.nearKeyMaterialStore,this.touchIdPrompt=e.touchIdPrompt,this.touchConfirm=e.touchConfirm,this.passkeyMpcSession=e.passkeyMpcSession,this.nearClient=e.nearClient,this.userPreferencesManager=e.userPreferencesManager,this.nonceCoordinator=e.nonceCoordinator,this.relayerUrl=e.relayerUrl,this.chains=e.chains,this.nearExplorerUrl=e.nearExplorerUrl,this.tempoExplorerUrl=e.tempoExplorerUrl,this.evmExplorerUrl=e.evmExplorerUrl,this.getTheme=e.getTheme,this.workerTransport=e.workerTransport}setWorkerBaseOrigin(e){this.workerTransport.setWorkerBaseOrigin(e)}getContext(){return{resolveOperationStepUpCredential:this.resolveOperationStepUpCredential,requestWorkerOperation:this.requestWorkerOperation.bind(this),nearKeyMaterialStore:this.nearKeyMaterialStore,touchIdPrompt:this.touchIdPrompt,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,nearClient:this.nearClient,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator,chains:this.chains,getTheme:this.getTheme,rpIdOverride:this.touchIdPrompt.getRpId(),nearExplorerUrl:this.nearExplorerUrl,tempoExplorerUrl:this.tempoExplorerUrl,evmExplorerUrl:this.evmExplorerUrl,relayerUrl:this.relayerUrl}}async clearEcdsaClientWorkerState(e){await this.workerTransport.clearEcdsaClientWorkerState(e)}async prewarmEcdsaRegistrationCrypto(){return await this.workerTransport.prewarmEcdsaRegistrationCrypto()}prewarmNearSigner(){this.workerTransport.prewarmNearSigner()}async prewarmEmailOtpYao(e){return await this.workerTransport.prewarmEmailOtpYao(e)}requestWorkerOperation(e){return this.workerTransport.requestOperation(e)}};const LM={TIMEOUTS:{DEFAULT:6e4,TRANSACTION:6e4,REGISTRATION:6e4},WORKER:{URL:Lk.RUNTIME.SIGNER_WORKER,TYPE:`module`,NAME:`Web3AuthnSignerWorker`},ECDSA_DERIVATION_CLIENT_WORKER:{URL:Lk.RUNTIME.ECDSA_DERIVATION_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaDerivationClientWorker`},ECDSA_PRESIGN_CLIENT_WORKER:{URL:Lk.RUNTIME.ECDSA_PRESIGN_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaPresignClientWorker`},ECDSA_ONLINE_CLIENT_WORKER:{URL:Lk.RUNTIME.ECDSA_ONLINE_CLIENT_WORKER,TYPE:`module`,NAME:`Web3AuthnEcdsaOnlineClientWorker`},RETRY:{MAX_ATTEMPTS:3,BACKOFF_MS:1e3}};function RM(e){switch(e){case`evmCrypto`:return`/sdk/workers/evm-crypto.worker.js`;case`tempoSigner`:return`/sdk/workers/tempo-signer.worker.js`}}function zM(e){let t=typeof window<`u`?window:{};switch(e){case`evmCrypto`:return typeof t.__SEAMS_EVM_CRYPTO_WORKER_URL__==`string`?t.__SEAMS_EVM_CRYPTO_WORKER_URL__:void 0;case`tempoSigner`:return typeof t.__SEAMS_TEMPO_SIGNER_WORKER_URL__==`string`?t.__SEAMS_TEMPO_SIGNER_WORKER_URL__:void 0}}function BM(e,t){let n=t?.baseOrigin||wf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,r=zM(e)||RM(e);return/^https?:\/\//i.test(r)?r:new URL(r,n).toString()}function VM(e){let t=e?.baseOrigin||wf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,n=(typeof window<`u`&&typeof window.__SEAMS_EMAIL_OTP_WORKER_URL__==`string`?String(window.__SEAMS_EMAIL_OTP_WORKER_URL__):``)||`/sdk/workers/email-otp.worker.js`;return/^https?:\/\//i.test(n)?n:new URL(n,t).toString()}function HM(e){let t=e?.baseOrigin||wf()||(typeof window<`u`?window.location.origin:``)||`https://invalid.local`,n=(typeof window<`u`&&typeof window.__SEAMS_WALLET_CUSTODY_CEREMONY_WORKER_URL__==`string`?String(window.__SEAMS_WALLET_CUSTODY_CEREMONY_WORKER_URL__):``)||`/sdk/workers/wallet-custody-ceremony.worker.js`;return/^https?:\/\//i.test(n)?n:new URL(n,t).toString()}const UM={AttachDerivationToPresign:`attach_ecdsa_derivation_to_presign_v1`,AttachLinkedHolderToPresign:`attach_linked_holder_to_ecdsa_presign_v1`,AttachPresignToOnline:`attach_ecdsa_presign_to_online_v1`};`A`.repeat(43);function WM(e){return Math.max(0,Math.round(performance.now()-e))}function GM(e){throw Error(`Unsupported Email OTP Yao prewarm result: ${String(e)}`)}function KM(e){throw Error(`Unsupported Email OTP Yao prewarm request: ${String(e)}`)}function qM(e,t,n){console.warn(`[WorkerTransport] operation timed out; resetting worker`,{kind:e,type:String(t),timeoutMs:n})}function JM(e){return Be(e,32,`signer worker request IDs`)}function YM(e){return e?.type===au.WORKER_READY||e?.ready===!0}function XM(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0}function ZM(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function QM(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function $M(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!0&&`result`in e}function eN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.ok===!1&&typeof e.error==`string`}function tN(e){return!!e&&typeof e==`object`&&typeof e.id==`string`&&e.progress===!0&&`payload`in e}const nN=new class{workerBaseOrigin;workers=new Map;pendingByKind=new Map;messageHandlers=new Map;errorHandlers=new Map;presignAuthorityKind=null;presignOnlineConnected=!1;ecdsaRegistrationCryptoPrewarmPromise=null;emailOtpYaoPrewarmPromise=null;setWorkerBaseOrigin(e){if(this.workerBaseOrigin!==e){this.workerBaseOrigin=e,this.emailOtpYaoPrewarmPromise=null;for(let e of Array.from(this.workers.keys()))this.resetWorker(e)}}prewarmNearSigner(){this.getOrCreateWorker(`nearSigner`)}async clearEcdsaClientWorkerState(e){switch(e.kind){case`all`:this.resetWorker(`ecdsaPresignClient`);return;case`wallet`:if(Nu(e.walletId),!this.workers.has(`ecdsaPresignClient`))return;await this.requestOperation({kind:`ecdsaPresignClient`,request:{type:uu.ClearWallet,timeoutMs:2e4,payload:{walletId:e.walletId}}});return}}async prewarmEcdsaRegistrationCrypto(){let e=this.ecdsaRegistrationCryptoPrewarmPromise;if(e)return await e;let t=this.requestEcdsaRegistrationCryptoPrewarm();this.ecdsaRegistrationCryptoPrewarmPromise=t;let n=await t;return n.kind===`failed`&&this.ecdsaRegistrationCryptoPrewarmPromise===t&&(this.ecdsaRegistrationCryptoPrewarmPromise=null),n}async requestEcdsaRegistrationCryptoPrewarm(){let e=performance.now();try{return await this.requestDerivationOperation({type:su.PrewarmEcdsaRegistrationCrypto,payload:{}}),{kind:`succeeded`,wasmInitMs:WM(e)}}catch{return{kind:`failed`,wasmInitMs:WM(e)}}}async prewarmEmailOtpYao(e={kind:`requested`}){switch(e.kind){case`not_requested`:return{kind:`not_requested`,elapsedMs:0,workerPrewarmMs:0,yaoWasmInitMs:0};case`requested`:break;default:return KM(e)}let t=this.emailOtpYaoPrewarmPromise;if(t)return await t;let n=this.requestEmailOtpYaoPrewarm();this.emailOtpYaoPrewarmPromise=n;let r=await n;return r.kind===`failed`&&this.emailOtpYaoPrewarmPromise===n&&(this.emailOtpYaoPrewarmPromise=null),r}async requestEmailOtpYaoPrewarm(){let e=performance.now();try{let t=await this.requestOperation({kind:`emailOtp`,request:{type:`prewarmEmailOtpRegistrationCrypto`,payload:{}}}),n=WM(e);switch(t.kind){case`succeeded`:return{kind:`succeeded`,elapsedMs:n,workerPrewarmMs:n,yaoWasmInitMs:t.elapsedMs};case`failed`:return{kind:`failed`,elapsedMs:n,workerPrewarmMs:n,yaoWasmInitMs:t.elapsedMs,failureStage:t.failureStage};default:return GM(t)}}catch{let t=WM(e);return{kind:`failed`,elapsedMs:t,workerPrewarmMs:t,yaoWasmInitMs:0,failureStage:`worker_ready`}}}async requestOperation(e){return e.kind===`nearSigner`?await this.requestNearOperation(e.request):e.kind===`ecdsaDerivationClient`?e.request.type===su.DisposeLinkedDeviceEcdsaHolderMaterials&&!this.workers.has(`ecdsaDerivationClient`)?{type:cu.DisposeLinkedDeviceEcdsaHolderMaterialsSuccess,payload:e.request.payload}:await this.requestDerivationOperation(e.request):e.kind===`ecdsaPresignClient`?(this.connectPresignAuthorityChannel(e.request),await this.requestRpcOperation(`ecdsaPresignClient`,e.request)):e.kind===`ecdsaOnlineClient`?(this.connectPresignOnlineChannel(),await this.requestRpcOperation(`ecdsaOnlineClient`,e.request)):e.kind===`evmCrypto`?await this.requestRpcOperation(`evmCrypto`,e.request):e.kind===`tempoSigner`?await this.requestRpcOperation(`tempoSigner`,e.request):e.kind===`walletCustodyCeremony`?await this.requestRpcOperation(`walletCustodyCeremony`,e.request):e.request.type===`clearEmailOtpWarmSessionMaterial`&&!this.workers.has(`emailOtp`)?{ok:!0,cleared:!0}:await this.requestRpcOperation(e.kind,e.request)}async requestNearOperation({type:e,payload:t,onEvent:n,timeoutMs:r=LM.TIMEOUTS.DEFAULT,transfer:i}){let a=this.getOrCreateWorker(`nearSigner`),o=JM(`nearSigner`);return await new Promise((s,c)=>{let l=setTimeout(()=>{this.rejectRequest(`nearSigner`,o,new iu({message:`Worker operation timed out after ${r}ms`,code:`TIMEOUT`,workerKind:`nearSigner`})),qM(`nearSigner`,e,r),this.resetWorker(`nearSigner`);try{let e=Math.round(r/1e3);window.postMessage({type:`MODAL_TIMEOUT`,payload:`Timed out after ${e}s, try again`},`*`)}catch{}},r);this.getPendingMap(`nearSigner`).set(o,{resolve:e=>s(e),reject:c,onEvent:n?e=>n(e):void 0,timeoutId:l});try{a.postMessage({id:o,type:e,payload:t},i||[])}catch(e){this.rejectRequest(`nearSigner`,o,new iu({message:`[nearSigner] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`nearSigner`}))}})}async requestDerivationOperation({type:e,payload:t,timeoutMs:n=LM.TIMEOUTS.DEFAULT,transfer:r}){let i=this.getOrCreateWorker(`ecdsaDerivationClient`),a=JM(`ecdsaDerivationClient`);return await new Promise((o,s)=>{let c=setTimeout(()=>{this.rejectRequest(`ecdsaDerivationClient`,a,new iu({message:`Worker operation timed out after ${n}ms`,code:`TIMEOUT`,workerKind:`ecdsaDerivationClient`})),qM(`ecdsaDerivationClient`,e,n),this.resetWorker(`ecdsaDerivationClient`)},n);this.getPendingMap(`ecdsaDerivationClient`).set(a,{resolve:e=>o(e),reject:s,timeoutId:c});try{i.postMessage({id:a,type:e,payload:t},r||[])}catch(e){this.rejectRequest(`ecdsaDerivationClient`,a,new iu({message:`[ecdsaDerivationClient] failed to postMessage: ${L(e)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:`ecdsaDerivationClient`}))}})}async requestRpcOperation(e,t){let n=this.getOrCreateWorker(e),r=JM(e),i=Math.floor(Number(t.timeoutMs)),a=Number.isFinite(i)&&i>0?i:2e4;return await new Promise((i,o)=>{let s=setTimeout(()=>{this.rejectRequest(e,r,new iu({message:`Worker operation timed out after ${a}ms`,code:`TIMEOUT`,workerKind:e})),qM(e,t.type,a),this.resetWorker(e)},a);this.getPendingMap(e).set(r,{resolve:e=>i(e),reject:o,onEvent:t.onEvent,timeoutId:s});try{n.postMessage({id:r,type:t.type,payload:t.payload},t.transfer||[])}catch(t){this.rejectRequest(e,r,new iu({message:`[${e}] failed to postMessage: ${L(t)}`,code:`WORKER_POSTMESSAGE_ERROR`,workerKind:e}))}})}getOrCreateWorker(e){let t=this.workers.get(e);if(t)return t;let n=this.createWorker(e),r=t=>{this.handleWorkerMessage(e,t)},i=t=>{this.handleWorkerError(e,t)};return n.addEventListener(`message`,r),n.addEventListener(`error`,i),this.workers.set(e,n),this.messageHandlers.set(e,r),this.errorHandlers.set(e,i),n}connectPresignAuthorityChannel(e){if(e.type!==uu.ListAvailable&&e.type!==uu.SessionInit)return;let t=this.getOrCreateWorker(`ecdsaPresignClient`),n=this.parsePresignAuthorityKind(e.payload);switch(n){case`role_local_derivation_handle`:this.connectDerivationPresignChannel(t,n);return;case`linked_holder_signing_material`:this.connectDerivationPresignChannel(t,n);return;default:}}parsePresignAuthorityKind(e){if(!O(e)||!O(e.authority))throw Error(`ECDSA presign init authority is required`);switch(e.authority.kind){case`role_local_derivation_handle`:case`linked_holder_signing_material`:return e.authority.kind;default:throw Error(`ECDSA presign init authority kind is invalid`)}}createLinkedHolderPresignAuthorityPortV1(){let e=this.getOrCreateWorker(`ecdsaPresignClient`);Lu();let t=new MessageChannel;return e.postMessage({kind:UM.AttachLinkedHolderToPresign,port:t.port1},[t.port1]),t.port2}connectDerivationPresignChannel(e,t){if(this.presignAuthorityKind===t)return;this.presignAuthorityKind!==null&&Lu();let n=this.getOrCreateWorker(`ecdsaDerivationClient`),r=new MessageChannel,i=t===`role_local_derivation_handle`?UM.AttachDerivationToPresign:UM.AttachLinkedHolderToPresign;n.postMessage({kind:i,port:r.port1},[r.port1]),e.postMessage({kind:i,port:r.port2},[r.port2]),this.presignAuthorityKind=t}connectPresignOnlineChannel(){if(this.presignOnlineConnected)return;let e=this.getOrCreateWorker(`ecdsaPresignClient`),t=this.getOrCreateWorker(`ecdsaOnlineClient`),n=new MessageChannel;e.postMessage({kind:UM.AttachPresignToOnline,port:n.port1},[n.port1]),t.postMessage({kind:UM.AttachPresignToOnline,port:n.port2},[n.port2]),this.presignOnlineConnected=!0}createWorker(e){try{if(e===`nearSigner`){let e=Tf(LM.WORKER.URL,{worker:`signer`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:LM.WORKER.TYPE,name:LM.WORKER.NAME})}if(e===`ecdsaDerivationClient`){let e=Tf(LM.ECDSA_DERIVATION_CLIENT_WORKER.URL,{worker:`ecdsaDerivationClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:LM.ECDSA_DERIVATION_CLIENT_WORKER.TYPE,name:LM.ECDSA_DERIVATION_CLIENT_WORKER.NAME})}if(e===`ecdsaPresignClient`){let e=Tf(LM.ECDSA_PRESIGN_CLIENT_WORKER.URL,{worker:`ecdsaPresignClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:LM.ECDSA_PRESIGN_CLIENT_WORKER.TYPE,name:LM.ECDSA_PRESIGN_CLIENT_WORKER.NAME})}if(e===`ecdsaOnlineClient`){let e=Tf(LM.ECDSA_ONLINE_CLIENT_WORKER.URL,{worker:`ecdsaOnlineClient`,baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:LM.ECDSA_ONLINE_CLIENT_WORKER.TYPE,name:LM.ECDSA_ONLINE_CLIENT_WORKER.NAME})}if(e===`emailOtp`){let e=VM({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`email-otp-worker`})}if(e===`walletCustodyCeremony`){let e=HM({baseOrigin:this.workerBaseOrigin});return new Worker(e,{type:`module`,name:`wallet-custody-ceremony-worker`})}let t=BM(e,{baseOrigin:this.workerBaseOrigin});return new Worker(t,{type:`module`,name:`${e}-worker`})}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Failed to create ${e} worker: ${n}`)}}handleWorkerMessage(e,t){let n=t.data;if(YM(n))return;if(e===`nearSigner`){this.handleNearWorkerMessage(n);return}if(e===`ecdsaDerivationClient`){this.handleEcdsaDerivationWorkerMessage(n);return}if(tN(n)){let t=this.getPendingMap(e).get(n.id);if(!t)return;t.onEvent?.(n.payload);return}if($M(n)){this.resolveRequest(e,n.id,n.result);return}if(eN(n)){this.rejectRequest(e,n.id,new iu({message:n.error||`[${e}] worker error`,code:n.code,coreCode:n.coreCode,workerKind:e}));return}let r=O(n)&&typeof n.id==`string`?n.id:void 0;if(r&&this.getPendingMap(e).has(r)){this.rejectRequest(e,r,new iu({message:`Malformed worker response frame for request ${r}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e}));return}this.getPendingMap(e).size!==0&&(this.rejectAllPending(e,new iu({message:`Unknown worker response frame: ${JSON.stringify(n)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:e})),this.resetWorker(e))}handleNearWorkerMessage(e){if(XM(e)){let t=this.getPendingMap(`nearSigner`).get(e.id);if(!t)return;t.onEvent?.(e.payload);return}if(ZM(e)){this.resolveNearResponse(e.id,e.result);return}if(QM(e)){this.rejectRequest(`nearSigner`,e.id,new iu({message:e.error,code:e.code,coreCode:e.coreCode,workerKind:`nearSigner`}));return}let t=O(e)&&typeof e.id==`string`?e.id:void 0;if(t&&this.getPendingMap(`nearSigner`).has(t)){this.rejectRequest(`nearSigner`,t,new iu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`}));return}this.getPendingMap(`nearSigner`).size!==0&&(this.rejectAllPending(`nearSigner`,new iu({message:`Unknown worker response frame: ${JSON.stringify(e)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`nearSigner`})),this.resetWorker(`nearSigner`))}handleEcdsaDerivationWorkerMessage(e){if($M(e)){this.resolveRequest(`ecdsaDerivationClient`,e.id,e.result);return}if(eN(e)){this.rejectRequest(`ecdsaDerivationClient`,e.id,new iu({message:e.error||`[ecdsaDerivationClient] worker error`,code:e.code,coreCode:e.coreCode,workerKind:`ecdsaDerivationClient`}));return}let t=O(e)&&typeof e.id==`string`?e.id:void 0;if(t&&this.getPendingMap(`ecdsaDerivationClient`).has(t)){this.rejectRequest(`ecdsaDerivationClient`,t,new iu({message:`Malformed worker response frame for request ${t}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`ecdsaDerivationClient`}));return}this.getPendingMap(`ecdsaDerivationClient`).size!==0&&(this.rejectAllPending(`ecdsaDerivationClient`,new iu({message:`Unknown worker response frame: ${JSON.stringify(e)}`,code:`WORKER_PROTOCOL_ERROR`,workerKind:`ecdsaDerivationClient`})),this.resetWorker(`ecdsaDerivationClient`))}resolveNearResponse(e,t){this.getPendingMap(`nearSigner`).get(e)&&this.resolveRequest(`nearSigner`,e,t)}handleWorkerError(e,t){let n=new iu({message:`[${e}] worker runtime error: ${t.message||`unknown error`}`,code:`WORKER_RUNTIME_ERROR`,workerKind:e});this.rejectAllPending(e,n),this.resetWorker(e)}getPendingMap(e){let t=this.pendingByKind.get(e);if(t)return t;let n=new Map;return this.pendingByKind.set(e,n),n}resolveRequest(e,t,n){let r=this.getPendingMap(e).get(t);r&&(this.clearRequest(e,t),r.resolve(n))}rejectRequest(e,t,n){let r=this.getPendingMap(e).get(t);r&&(this.clearRequest(e,t),r.reject(n))}rejectAllPending(e,t){let n=Array.from(this.getPendingMap(e).keys());for(let r of n)this.rejectRequest(e,r,t)}clearRequest(e,t){let n=this.getPendingMap(e).get(t);n&&(n.timeoutId&&clearTimeout(n.timeoutId),this.getPendingMap(e).delete(t))}resetWorker(e){e===`ecdsaDerivationClient`?(this.presignAuthorityKind=null,this.resetWorker(`ecdsaPresignClient`)):e===`ecdsaPresignClient`?(this.presignAuthorityKind=null,this.presignOnlineConnected=!1,this.resetWorker(`ecdsaOnlineClient`),this.terminateWorkerOnly(`ecdsaDerivationClient`)):e===`ecdsaOnlineClient`&&(this.presignOnlineConnected=!1),(e===`ecdsaDerivationClient`||e===`ecdsaPresignClient`||e===`ecdsaOnlineClient`)&&Lu(),this.terminateWorkerOnly(e)}terminateWorkerOnly(e){let t=this.workers.get(e);if(!t)return;this.rejectAllPending(e,Error(`${e} worker was reset`));let n=this.messageHandlers.get(e),r=this.errorHandlers.get(e);n&&t.removeEventListener(`message`,n),r&&t.removeEventListener(`error`,r),t.terminate(),this.workers.delete(e),this.messageHandlers.delete(e),this.errorHandlers.delete(e),e===`walletCustodyCeremony`&&Xn()}};function rN(){return nN}function iN(e){let t=String(e.metadata?.walletId||``).trim();if(!t)return null;try{return R(t)}catch{return null}}function aN(e){let t=[],n=new Set;for(let r of e){let e=iN(r);if(!e)continue;let i=String(e);n.has(i)||(n.add(i),t.push(e))}return t}async function oN(e){let t=aN(await e.store.listAccountSignersByProfile({profileId:e.profileId,status:`active`}).catch(()=>[]));return t.length===1?t[0]:null}var sN=class{confirmationConfigChangeListeners=new Set;currentWalletChangeListeners=new Set;currentWalletId=null;lifecycle={kind:`active`,revision:0};writeQueue=Promise.resolve();confirmationConfig=Et;unsubscribeFromIndexedDB;constructor(e){this.deps=e,this.subscribeToIndexedDBChanges()}onConfirmationConfigChange(e){return this.confirmationConfigChangeListeners.add(e),()=>{this.confirmationConfigChangeListeners.delete(e)}}onCurrentWalletChange(e){return this.currentWalletChangeListeners.add(e),()=>{this.currentWalletChangeListeners.delete(e)}}notifyConfirmationConfigChange(e){if(this.confirmationConfigChangeListeners.size!==0)for(let t of this.confirmationConfigChangeListeners)try{t(e)}catch{}}notifyCurrentWalletChange(e){if(this.currentWalletChangeListeners.size!==0)for(let t of this.currentWalletChangeListeners)try{t(e)}catch{}}sanitizeConfirmationConfig(e){if(!e)return{};let{uiMode:t,behavior:n,autoProceedDelay:r}=e,i={};return t!=null&&(i.uiMode=t),n!=null&&(i.behavior=n),r!=null&&(i.autoProceedDelay=r),i}mergeConfirmationConfig(e,t){let n={...e,...t};return{uiMode:n.uiMode??Et.uiMode,behavior:n.behavior??Et.behavior,autoProceedDelay:n.autoProceedDelay??Et.autoProceedDelay}}async initFromIndexedDB(){await this.loadUserSettings().catch(e=>{console.warn(`[SigningEngine]: Failed to initialize user settings:`,e)})}subscribeToIndexedDBChanges(){this.unsubscribeFromIndexedDB=this.deps.store.onChange(e=>{this.handleIndexedDBEvent(e).catch(e=>{console.warn(`[SigningEngine]: Error handling IndexedDB event:`,e)})})}async handleIndexedDBEvent(e){switch(e.type){case`preferences-updated`:case`user-updated`:this.currentWalletId&&String(e.accountId)===String(this.currentWalletId)&&await this.reloadUserSettings();break;case`user-deleted`:this.currentWalletId&&String(e.accountId)===String(this.currentWalletId)&&(this.invalidateReads(),this.currentWalletId=null,this.confirmationConfig=Et,this.notifyCurrentWalletChange(null),this.notifyConfirmationConfigChange(this.confirmationConfig));break}}destroy(){this.lifecycle={kind:`disposed`},this.unsubscribeFromIndexedDB&&=(this.unsubscribeFromIndexedDB(),void 0),this.confirmationConfigChangeListeners.clear(),this.currentWalletChangeListeners.clear()}getCurrentWalletId(){return this.currentWalletId}getConfirmationConfig(){return this.confirmationConfig}setCurrentWallet(e){this.invalidateReads();let t=this.currentWalletId;this.currentWalletId=e,t!==e&&(this.confirmationConfig=Et,this.notifyCurrentWalletChange(e),this.notifyConfirmationConfigChange(this.confirmationConfig)),this.deps.store.isDisabled()||this.loadSettingsForWallet(e).catch(()=>void 0)}projectCurrentWallet(e){let t=this.currentWalletId;this.setCurrentWallet(e),t&&String(t)===String(e)&&this.notifyCurrentWalletChange(e)}assertActive(){if(this.lifecycle.kind===`disposed`)throw Error(`Wallet preferences are disposed`)}invalidateReads(){if(this.lifecycle.kind===`disposed`)throw Error(`Wallet preferences are disposed`);return++this.lifecycle.revision}async loadSettingsForWallet(e){if(this.deps.store.isDisabled())return;let t=this.invalidateReads(),n=await this.deps.store.getWalletPreferences(e);this.lifecycle.kind!==`active`||this.lifecycle.revision!==t||this.currentWalletId!==e||(this.confirmationConfig=this.mergeConfirmationConfig(Et,this.sanitizeConfirmationConfig(n.confirmationConfig)),this.notifyConfirmationConfigChange(this.confirmationConfig))}async reloadUserSettings(){let e=this.getCurrentWalletId();e&&await this.loadSettingsForWallet(e)}setConfirmationBehavior(e){return this.setConfirmationConfig({behavior:e})}setConfirmationConfig(e){this.invalidateReads();let t=this.currentWalletId,n=this.sanitizeConfirmationConfig(e),r=this.writeQueue.then(this.commitConfirmationConfig.bind(this,t,n));return this.writeQueue=r.then(cN,cN),r}async commitConfirmationConfig(e,t){this.assertActive();let n=this.confirmationConfig;if(e!==null){if(this.deps.store.isDisabled())throw Error(`Wallet preference storage is unavailable`);let t=await this.deps.store.getWalletPreferences(e);n=this.mergeConfirmationConfig(Et,this.sanitizeConfirmationConfig(t.confirmationConfig))}let r=this.mergeConfirmationConfig(n,t);if(e!==null&&(this.assertActive(),await this.deps.store.updateWalletPreferences({walletId:e,preferences:{confirmationConfig:r}})===null))throw Error(`Wallet preference target does not exist`);this.lifecycle.kind===`active`&&this.currentWalletId===e&&(this.invalidateReads(),this.confirmationConfig=r,this.notifyConfirmationConfigChange(r))}async loadUserSettings(){if(this.deps.store.isDisabled())return;let e=this.invalidateReads(),t=await Ps(this.deps.store).catch(()=>null);if(!t){console.debug(`[SigningEngine]: No last user found, using default settings`);return}let n=await oN({store:this.deps.store,profileId:t.profileId});if(!n){console.debug(`[SigningEngine]: Last profile has no wallet-bound signer metadata`);return}this.lifecycle.kind!==`active`||this.lifecycle.revision!==e||(this.currentWalletId=n,this.confirmationConfig=Et,this.notifyCurrentWalletChange(n),this.notifyConfirmationConfigChange(this.confirmationConfig),await this.loadSettingsForWallet(n))}};function cN(){}function lN(e){let t=e.seamsWebConfigs.wallet,n=new pf(t.mode===`direct`?t.rpId:t.iframe.rpIdOverride),r=new sN({store:e.stores.userPreferencesStore}),i=e.seamsWebConfigs.network.chains,a=Ql({evmNonceBackend:Wd({chains:i}),nearClient:e.nearClient,nonceLaneCoordinationStore:e.stores.nonceLaneCoordinationStore}),o=ne(i,`near`),s=ne(i,`tempo`),c=ne(i,`evm`),l=FM({signingSessionPersistenceMode:e.seamsWebConfigs.signing.sessionPersistenceMode,thresholdEcdsaSigningQueueByKey:e.thresholdEcdsaSigningQueueByKey,resolveCurrentEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime}),u=KA({},{touchIdPrompt:n,nearClient:e.nearClient,webauthnCredentialStore:e.stores.webauthnCredentialStore,passkeyAuthenticatorStore:e.stores.passkeyAuthenticatorStore,userPreferencesManager:r,nonceCoordinator:a,operationStepUpPreparation:Od,nearImplicitAccountFunding:Pd,relayerUrl:e.seamsWebConfigs.network.relayer.url,chains:i,rpIdOverride:n.getRpId(),nearExplorerUrl:o,tempoExplorerUrl:s,evmExplorerUrl:c,getTheme:e.getTheme,getAppearance:e.getAppearance,loadEcdsaRoleLocalReadyRecord:e.loadEcdsaRoleLocalReadyRecord,surfaceMeasurementBinding:{kind:`disabled`}});return{touchIdPrompt:n,userPreferencesManager:r,nonceCoordinator:a,touchConfirm:u,passkeyMpcExport:uj(u.getContext()),passkeyMpcSession:l,signerWorkerManager:new IM({resolveOperationStepUpCredential:e.resolveOperationStepUpCredential,nearKeyMaterialStore:e.stores.nearKeyMaterialStore,touchIdPrompt:n,touchConfirm:u,passkeyMpcSession:l,nearClient:e.nearClient,userPreferencesManager:r,nonceCoordinator:a,relayerUrl:e.seamsWebConfigs.network.relayer.url,workerTransport:rN(),chains:i,nearExplorerUrl:o,tempoExplorerUrl:s,evmExplorerUrl:c,getTheme:e.getTheme})}}const uN=new Map;function dN(e){return typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null?null:new Map(Object.entries(e))}function fN(e,t){let n=e.get(t);if(typeof n==`string`)return n.trim()||void 0}function pN(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return t===`none`?`none`:t===`sealed_refresh_v1`?`sealed_refresh_v1`:null}function mN(e){let t=dN(e);if(!t)return null;let n=pN(t.get(`mode`));if(!n)return null;if(n===`none`)return{mode:`none`};let r=dN(t.get(`protocol`)),i=r?fN(r,`algorithm`):void 0,a=r?fN(r,`groupId`):void 0,o=fN(t,`currentKeyVersion`);return i!==`shamir3pass-v2`||a!==`rfc2409-group2`||!o?null:{mode:`sealed_refresh_v1`,protocol:{algorithm:$e,groupId:Xe},currentKeyVersion:o}}function hN(e){let t=dN(e);return t&&mN(dN(t.get(`capabilities`))?.get(`signingSessionSeal`))||{mode:`none`}}function gN(e){return e.signing.sessionPersistenceMode===`sealed_refresh_v1`?!(e.wallet.mode===`iframe`&&!hl()):!1}function _N(e){return[String(e.network.relayer.url||``).trim(),String(e.signing.sessionPersistenceMode||``).trim().toLowerCase(),$e,Xe,hl()?`wallet-host`:`app`,e.wallet.mode].join(`|`)}function vN(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.max(250,Math.floor(n))}function yN(e,t){let n=Error(e);return n.code=t,n}function bN(e){if(e.signal?.aborted)throw yN(`Parity check aborted`,`sealed_refresh_parity_aborted`);let t=new AbortController,n=setTimeout(()=>t.abort(`timeout`),e.timeoutMs),r=()=>{try{t.abort(e.signal?.reason)}catch{}};return e.signal?.addEventListener(`abort`,r,{once:!0}),e.task(t.signal).finally(()=>{clearTimeout(n),e.signal?.removeEventListener(`abort`,r)}).catch(e=>{let n=e instanceof Error?e.message:String(e||`Unknown error`);throw t.signal.aborted?yN(`[sealed-refresh-parity] Failed to fetch relayer well-known capabilities: ${n}`,`sealed_refresh_parity_fetch_failed`):e})}async function xN(e){let t=String(e.relayerUrl||``).trim();if(!t)throw yN(`[sealed-refresh-parity] Missing relayer URL for capability check`,`sealed_refresh_parity_invalid_config`);let n=e.fetchImpl||fetch.bind(globalThis),r=vN(e.timeoutMs,8e3),i=`${t.replace(/\/+$/,``)}/.well-known/webauthn`;return await bN({timeoutMs:r,task:async e=>{let t=await n(i,{method:`GET`,headers:{Accept:`application/json`},signal:e});if(!t.ok)throw yN(`[sealed-refresh-parity] Well-known endpoint returned HTTP ${t.status}`,`sealed_refresh_parity_http_error`);let r={};try{r=await t.json()}catch{throw yN(`[sealed-refresh-parity] Well-known response is not valid JSON`,`sealed_refresh_parity_invalid_payload`)}return hN(r)}})}async function SN(e){if(!gN(e.configs))return;let t=_N(e.configs),n=uN.get(t);if(n){await n;return}let r=(async()=>{let t=String(e.configs.network.relayer.url||``).trim(),n=e.configs.signing.sessionPersistenceMode,r=await xN({relayerUrl:t,fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs}),i=[];if(r.mode!==n&&i.push(`mode`),r.mode===`sealed_refresh_v1`&&r.protocol.algorithm!==`shamir3pass-v2`&&i.push(`algorithm`),r.mode===`sealed_refresh_v1`&&r.protocol.groupId!==`rfc2409-group2`&&i.push(`groupId`),i.length>0)throw yN(`[sealed-refresh-parity] Client/server mismatch for fields: ${i.join(`, `)}. client={mode:${n},algorithm:${$e},groupId:${Xe}} server={mode:${r.mode}${r.mode===`sealed_refresh_v1`?`,algorithm:${r.protocol.algorithm},groupId:${r.protocol.groupId}`:``}}`,`sealed_refresh_parity_mismatch`)})().catch(e=>{throw uN.delete(t),e});uN.set(t,r),await r}function CN(e,t){let n=String(e??``).trim();if(!n)throw Error(`${t} is required`);return n}function wN(e,t){let n=Number(e);if(!Number.isSafeInteger(n)||n<1)throw Error(`${t} must be a positive integer`);return n}function TN(e){let t=s(e);if(!t.ok)throw Error(`thresholdSessionId is invalid`);return t.value}function EN(e){let t=e.bootstrap.session,n=e.bootstrap.capability;if(!t.walletId||!t.walletSessionId||!t.quotaId||!t.thresholdSessionId)throw Error(`Wallet custody Ed25519 bootstrap Wallet Session binding is invalid`);if(e.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`Wallet custody Ed25519 operation credential does not identify the bootstrap session`);let r=String(e.identity.walletId);if(String(t.walletId)!==r||t.nearAccountId!==String(e.identity.nearAccountId)||t.thresholdSessionId!==e.identity.expectedThresholdSessionId||n.applicationBinding.wallet_id!==r||n.applicationBinding.key_creation_signer_slot!==e.identity.signerSlot||n.nearAccountId!==String(e.identity.nearAccountId)||n.lifecycle.accountId!==r||n.lifecycle.thresholdSessionId!==e.identity.expectedThresholdSessionId||n.lifecycle.signerSetId!==String(kr(e.identity.signerSlot))||`ed25519:${Tr(Uint8Array.from(n.registeredPublicKey))}`!==e.identity.expectedOperationalPublicKey)throw Error(`Wallet custody Ed25519 bootstrap identity changed`)}async function DN(e){let t=e.bootstrap.session,n=t.authorityScope;if(n.kind!==`email_otp`)throw Error(`Wallet custody Ed25519 bootstrap returned another authority kind`);let r=CN(e.providerSubject,`providerSubject`);if(n.providerUserId!==r)throw Error(`Wallet custody Ed25519 bootstrap provider subject changed`);if(e.authority.walletId!==t.walletId)throw Error(`Wallet custody Ed25519 Wallet Session authority changed wallets`);let i=dn({walletId:String(t.walletId),nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,walletSessionId:t.walletSessionId,authorizationId:t.authorizationId,quotaId:t.quotaId,thresholdSessionId:t.thresholdSessionId,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,runtimePolicyScope:t.runtimePolicyScope,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,routerAbNormalSigning:t.routerAbNormalSigning,walletSessionToken:e.operationCredential.token,home:e.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`Wallet custody Ed25519 Wallet Session is unusable (${i.reason})`);return Wn({walletId:t.walletId,nearAccountId:Or(t.nearAccountId),nearEd25519SigningKeyId:Oo(t.nearEd25519SigningKeyId),providerSubjectId:r,signerSlot:wN(e.bootstrap.capability.applicationBinding.key_creation_signer_slot,`server capability signerSlot`),relayerUrl:CN(e.relayerUrl,`relayerUrl`),authority:e.authority,signingWalletSession:i.value})}function ON(e,t){return{activeClient:t,facts:{thresholdSessionId:e.thresholdSessionId,signer:e.signingLane.identity.signer,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,routerAbNormalSigning:e.routerAbNormalSigning,runtimePolicyScope:e.runtimePolicyScope,relayerUrl:e.relayerUrl}}}async function kN(e){let t={walletId:e.walletSession.walletId,nearAccountId:CN(e.nearAccountId,`nearAccountId`),signerSlot:wN(e.signerSlot,`signerSlot`),expectedOperationalPublicKey:CN(e.expectedOperationalPublicKey,`expectedOperationalPublicKey`),expectedThresholdSessionId:CN(e.expectedThresholdSessionId,`expectedThresholdSessionId`)};if(EN({bootstrap:e.bootstrap,identity:t,operationCredential:e.operationCredential}),e.metadata.applicationBinding.wallet_id!==String(e.walletSession.walletId)||e.metadata.applicationBinding.key_creation_signer_slot!==t.signerSlot||e.metadata.scope.threshold_session_id!==t.expectedThresholdSessionId||!b(e.metadata.materialActivation,e.bootstrap.capability.materialActivation))throw Error(`Wallet custody Ed25519 active client metadata changed`);let n=await DN({bootstrap:e.bootstrap,operationCredential:e.operationCredential,providerSubject:e.providerSubject,relayerUrl:e.relayerUrl,authority:e.authority}),r=new ny(e.workerContext,e.activeClientHandle,e.metadata);try{let i=ON(n,r),a=await e.activateCapability(i);if(String(a.walletId)!==String(t.walletId)||String(a.nearAccountId)!==t.nearAccountId||!b(a.materialActivation,e.metadata.materialActivation))throw Error(`Wallet custody Ed25519 active client identity changed during activation`);return r=null,{thresholdSessionId:TN(n.thresholdSessionId),material:i,walletSessionState:n}}finally{r?.dispose()}}function AN(e,t){let n=e.trim();if(!n)throw Error(`Wallet custody Ed25519 projection requires ${t}`);return n}async function jN(e,t,n,r){let i=String(t.walletId),a=AN(String(n),`providerSubject`),o=(await e.listPublicCapabilityReferences()).filter(e=>String(e.walletId)===i&&b(e.materialActivation,r));if(o.length===0)return null;if(o.length!==1||!o[0])throw Error(`Wallet custody Ed25519 requires one exact public capability reference`);let s=o[0],c=(await e.listUsers()).filter(e=>String(e.walletId)===i&&String(e.nearAccountId)===String(s.nearAccountId));if(c.length!==1||!c[0])throw Error(`Wallet custody Ed25519 requires one exact persisted signer projection`);return{identity:s,user:c[0],providerSubject:a}}function MN(e){if(!e.authorization)throw Error(`Available Ed25519 lane requires Wallet Session authorization`);return Jc({signer:Lc({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,walletSessionId:e.authorization.operationCredential.walletSessionId,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.thresholdSessionId})}function NN(e){let t=e.signer;return JSON.stringify([String(t.account.wallet.walletId),String(t.account.nearAccountId),String(t.nearEd25519SigningKeyId),t.signerSlot,Ss(e.auth),String(e.thresholdSessionId)])}function PN(e){return{kind:`near_ed25519_material_identity`,signer:Lc({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,thresholdSessionId:xs.thresholdEd25519Session(e.thresholdSessionId)}}function FN(e){return{kind:`near_ed25519_material_identity`,signer:e.signer,auth:e.auth,thresholdSessionId:e.thresholdSessionId}}function IN(e){switch(e.kind){case`exact_lane`:return{kind:`near_ed25519_material_identity`,signer:e.laneIdentity.signer,auth:e.laneIdentity.auth,thresholdSessionId:e.laneIdentity.thresholdSessionId};case`export_exact_lane`:return FN(e.laneIdentity);case`material_identity`:return e.materialIdentity;default:return zN(e)}}function LN(e,t){if(!yd(e)||e.curve!==`ed25519`)return!1;let n=IN(t),r=n.signer;if(String(e.walletId)!==String(r.account.wallet.walletId)||String(e.nearAccountId)!==String(r.account.nearAccountId)||e.signerSlot!==r.signerSlot||String(e.thresholdSessionId)!==n.thresholdSessionId)return!1;switch(t.kind){case`exact_lane`:return e.authorizationState===`authorized`&&Oc(MN(e),t.laneIdentity);case`export_exact_lane`:return NN(PN(e))===NN(n)&&b(e.materialActivation,t.materialActivation);case`material_identity`:return NN(PN(e))===NN(n);default:return zN(t)}}function RN(e){switch(e.kind){case`exact_lane`:return JSON.stringify([e.kind,Tc(e.laneIdentity)]);case`export_exact_lane`:return JSON.stringify([e.kind,NN(FN(e.laneIdentity)),Ed(e.materialActivation)]);case`material_identity`:return JSON.stringify([e.kind,NN(e.materialIdentity)]);default:return zN(e)}}function zN(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}function BN(e){return e.binding.kind===`ed25519_yao_client_root_v1`}function VN(e){if(!BN(e))throw Error(`[SigningEngine][ed25519-export] export envelope has the wrong secret kind`);return e}function HN(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} fields are invalid`)}function UN(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<1)throw Error(`${t} is invalid`);return e}function WN(e){if(!Array.isArray(e)||e.length!==2||!Number.isSafeInteger(e[0])||!Number.isSafeInteger(e[1])||Number(e[0])<1||Number(e[1])<1||e[0]===e[1])throw Error(`Ed25519 export bootstrap participantIds are invalid`);return[Number(e[0]),Number(e[1])]}async function GN(e){let t=e.authorization.operationCredential,n=e.authorization.status,r=e.authorization.record.authorizationId,i=e.subject.signer,a=e.source;if(e.authorization.record.walletId!==i.account.wallet.walletId||e.authorization.record.authMethodId!==e.authorization.selectedAuthMethod.walletAuthMethodId||e.authorization.factorAuthority.factor.providerUserId!==e.subject.auth.providerSubjectId||!a.signingWorkerId||a.participantIds.length!==2||!a.registeredPublicKeyB64u)throw Error(`[SigningEngine][ed25519-export] sealed custody identity mismatch`);let o=Ea({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(i.account.wallet.walletId),nearAccountId:String(i.account.nearAccountId),nearEd25519SigningKeyId:String(i.nearEd25519SigningKeyId),signerSlot:i.signerSlot,thresholdSessionId:e.subject.thresholdSessionId,signingWorkerId:a.signingWorkerId,participantIds:a.participantIds});if(!o.ok)throw Error(o.message);let c=await e.fetch(`${new URL(e.relayerUrl).origin}${oa}`,{method:`POST`,headers:{Authorization:`Bearer ${t.token}`,"Content-Type":`application/json`},body:JSON.stringify(o.value)}),l=await c.json().catch(()=>null);if(!c.ok){let e=l&&typeof l==`object`?l:null;throw Error(`[SigningEngine][ed25519-export] capability bootstrap failed (HTTP ${c.status}): ${String(e?.message||`invalid response`)}`)}let u=M(l,`Ed25519 export bootstrap`);if(HN(u,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`walletSessionId`,`quotaId`,`signingWorkerId`,`thresholdExpiresAtMs`,`participantIds`,`runtimePolicyScope`,`routerAbNormalSigning`,`capability`],`Ed25519 export bootstrap`),u.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`Ed25519 export bootstrap kind is invalid`);let d=D(u.walletId,`bootstrap.walletId`),f=D(u.nearAccountId,`bootstrap.nearAccountId`),p=D(u.nearEd25519SigningKeyId,`bootstrap.nearEd25519SigningKeyId`),m=s(u.thresholdSessionId),h=pt(u.walletSessionId),g=dt(u.quotaId),_=e.authorization.factorAuthority,v=fe(u.runtimePolicyScope),y=be(v),x=Ze(u.routerAbNormalSigning),S={kind:`router_ab_ed25519_yao_active_capability_v1`,...Cn(u.capability)},C=WN(u.participantIds),w=P(Uint8Array.from(S.registeredPublicKey));if(!m.ok||!h.ok||!g.ok||!y||!x||d!==String(i.account.wallet.walletId)||f!==String(i.account.nearAccountId)||p!==String(i.nearEd25519SigningKeyId)||m.value!==S.lifecycle.thresholdSessionId||h.value!==t.walletSessionId||g.value!==e.authorization.record.quotaId||UN(u.signerSlot,`bootstrap.signerSlot`)!==i.signerSlot||D(u.signingWorkerId,`bootstrap.signingWorkerId`)!==a.signingWorkerId||C[0]!==a.participantIds[0]||C[1]!==a.participantIds[1]||_.factor.providerUserId!==e.subject.auth.providerSubjectId||w!==a.registeredPublicKeyB64u||!b(S.materialActivation,e.expectedMaterialActivation))throw Error(`[SigningEngine][ed25519-export] capability bootstrap identity mismatch`);return{emailHashHex:_.verifier.emailHashHex,bootstrap:{kind:`router_ab_ed25519_yao_email_otp_recovery_v1`,session:{walletId:i.account.wallet.walletId,nearAccountId:f,nearEd25519SigningKeyId:p,authorityScope:{kind:`email_otp`,provider:_.factor.provider,providerUserId:_.factor.providerUserId},thresholdSessionId:m.value,authorizationId:r,walletSessionId:h.value,quotaId:g.value,expiresAtMs:Math.min(UN(u.thresholdExpiresAtMs,`bootstrap.thresholdExpiresAtMs`),n.expiresAtMs),participantIds:C,remainingUses:n.remainingUses,signingRootId:y.signingRootId,signingRootVersion:v.signingRootVersion,runtimePolicyScope:v,routerAbNormalSigning:x},capability:S}}}async function KN(e){let t=XN({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,result:e.authorization});return(await GN({subject:e.subject,authorization:t,source:e.source,expectedMaterialActivation:e.expectedMaterialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch})).bootstrap}async function qN(e){let t=e.authorization.operationCredential,n=e.subject.signer;if(e.authorization.record.walletId!==n.account.wallet.walletId||e.authorization.record.authMethodId!==e.authorization.selectedAuthMethod.walletAuthMethodId||e.authorization.factorAuthority.factor.providerUserId!==e.subject.auth.providerSubjectId)throw Error(`[SigningEngine][ed25519-export] linked Wallet Session is unavailable`);let r=Ea({kind:`router_ab_ed25519_yao_warm_recovery_bootstrap_request_v1`,walletId:String(n.account.wallet.walletId),nearAccountId:String(n.account.nearAccountId),nearEd25519SigningKeyId:String(n.nearEd25519SigningKeyId),signerSlot:n.signerSlot,thresholdSessionId:e.subject.thresholdSessionId,signingWorkerId:e.source.signingWorkerId,participantIds:e.source.participantIds});if(!r.ok)throw Error(r.message);let i=await e.fetch(`${new URL(e.relayerUrl).origin}${oa}`,{method:`POST`,headers:{Authorization:`Bearer ${t.token}`,"Content-Type":`application/json`},body:JSON.stringify(r.value)}),a=await i.json().catch(()=>null);if(!i.ok){let e=a&&typeof a==`object`?a:null;throw Error(`[SigningEngine][ed25519-export] linked capability bootstrap failed (HTTP ${i.status}): ${String(e?.message||`invalid response`)}`)}let o=M(a,`linked Ed25519 export bootstrap`);if(HN(o,[`kind`,`walletId`,`nearAccountId`,`nearEd25519SigningKeyId`,`signerSlot`,`thresholdSessionId`,`walletSessionId`,`quotaId`,`signingWorkerId`,`thresholdExpiresAtMs`,`participantIds`,`runtimePolicyScope`,`routerAbNormalSigning`,`capability`],`linked Ed25519 export bootstrap`),o.kind!==`router_ab_ed25519_yao_v2_session_bootstrap_v1`)throw Error(`linked Ed25519 export bootstrap kind is invalid`);let c=s(o.thresholdSessionId),l=pt(o.walletSessionId),u=dt(o.quotaId),d=fe(o.runtimePolicyScope),f=Ze(o.routerAbNormalSigning),p={kind:`router_ab_ed25519_yao_active_capability_v1`,...Cn(o.capability)},m=WN(o.participantIds),h=P(Uint8Array.from(p.registeredPublicKey));if(!c.ok||!l.ok||!u.ok||!d||!f||D(o.walletId,`bootstrap.walletId`)!==String(n.account.wallet.walletId)||D(o.nearAccountId,`bootstrap.nearAccountId`)!==String(n.account.nearAccountId)||D(o.nearEd25519SigningKeyId,`bootstrap.nearEd25519SigningKeyId`)!==String(n.nearEd25519SigningKeyId)||UN(o.signerSlot,`bootstrap.signerSlot`)!==n.signerSlot||c.value!==p.lifecycle.thresholdSessionId||l.value!==t.walletSessionId||u.value!==e.authorization.record.quotaId||D(o.signingWorkerId,`bootstrap.signingWorkerId`)!==e.source.signingWorkerId||m[0]!==e.source.participantIds[0]||m[1]!==e.source.participantIds[1]||h!==e.source.registeredPublicKeyB64u||!b(p.materialActivation,e.expectedMaterialActivation))throw Error(`[SigningEngine][ed25519-export] linked capability identity mismatch`);return p}function JN(e,t){let n=0;for(let r of e)switch(r.kind){case`export_keys`:r.keyFamily===`ed25519`&&b(r.materialActivation,t)&&(n+=1);break;case`sign`:case`link_devices`:case`revoke_devices`:break;default:break}return n}function YN(e){let{authorization:t}=e,n=t.selectedAuthority,r=t.selectedAuthMethod,i=t.factorAuthority,a=t.record,o=t.operationCredential,s=t.status,c=s.status===`active`&&s.quotaLifecycle===`active`&&s.remainingUses>0||s.status===`exhausted`&&s.quotaLifecycle===`exhausted`&&s.remainingUses===0;if(n.state!==`active`||n.walletId!==e.subject.signer.account.wallet.walletId||r.status!==`active`||r.walletId!==e.subject.signer.account.wallet.walletId||r.walletAuthorityId!==n.authorityId||i.walletId!==e.subject.signer.account.wallet.walletId||i.bindingId!==r.walletAuthMethodId||i.verifier.emailHashHex!==r.emailHashHex||i.factor.providerUserId!==e.subject.auth.providerSubjectId||a.walletId!==e.subject.signer.account.wallet.walletId||a.authorityId!==n.authorityId||a.authMethodId!==r.walletAuthMethodId||String(a.authorityDigestB64u)!==String(n.authorityDigestB64u)||a.authorityRevocationEpoch!==n.revocationEpoch||!c||s.walletSessionId!==o.walletSessionId||s.quotaId!==a.quotaId||!Pe(s.authorization,a)||o.walletSessionId.trim().length===0||o.token.trim().length===0||s.expiresAtMs<=Date.now()||JN(a.capabilitySubjects,e.expectedMaterialActivation)!==1)throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization identity mismatch`)}function XN(e){switch(e.result.kind){case`found`:return YN({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,authorization:e.result.authorization}),e.result.authorization;case`missing`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is missing`);case`upgrade_required`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization requires an upgrade`);case`corrupt`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is corrupt`);case`persistence_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization persistence is unavailable`);case`exhausted`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is exhausted`);case`expired`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is expired`);case`superseded`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authorization is superseded`);case`authority_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP authority is unavailable`);case`method_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP method is unavailable`);case`capability_unavailable`:throw Error(`[SigningEngine][ed25519-export] exact Email OTP export capability is unavailable`);default:return e.result}}function ZN(e){if(e.material.activeClient.status().kind!==`active`)throw Error(`[SigningEngine][ed25519-export] wallet custody client is inactive`);let t=e.material.activeClient.metadata(),n=e.subject.signer;if(!b(t.materialActivation,e.expectedMaterialActivation)||e.material.facts.signer.account.wallet.walletId!==n.account.wallet.walletId||String(e.material.facts.signer.account.nearAccountId)!==String(n.account.nearAccountId)||e.material.facts.signer.nearEd25519SigningKeyId!==n.nearEd25519SigningKeyId||e.material.facts.signer.signerSlot!==n.signerSlot||t.applicationBinding.wallet_id!==n.account.wallet.walletId||t.applicationBinding.near_ed25519_signing_key_id!==n.nearEd25519SigningKeyId||t.applicationBinding.key_creation_signer_slot!==n.signerSlot)throw Error(`[SigningEngine][ed25519-export] wallet custody client changed the exact lane`);let r=s(t.scope.threshold_session_id);if(!r.ok)throw Error(`[SigningEngine][ed25519-export] threshold session id is invalid: ${r.error.message}`);return{kind:`router_ab_ed25519_yao_active_capability_v1`,materialActivation:t.materialActivation,activeCapabilityBinding:t.activeCapabilityBinding,registeredPublicKey:[...t.registeredPublicKey],nearAccountId:String(n.account.nearAccountId),applicationBinding:t.applicationBinding,runtimePolicyScope:e.material.facts.runtimePolicyScope,participantIds:t.participantIds,lifecycle:{lifecycleId:t.scope.lifecycle_id,rootShareEpoch:t.scope.root_share_epoch,accountId:t.scope.account_id,thresholdSessionId:r.value,signerSetId:t.scope.signer_set_id,signingWorkerId:t.scope.signing_worker_id},stateEpoch:Number(t.stateEpoch),registrationContinuity:{kind:`recovery`,activationTranscript:[...t.transcript]}}}async function QN(e){let t=e.subject.signer.account.wallet.walletId,n=XN({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,result:await e.readExactWalletSessionAuthorization({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation})}),r=e.resolveActiveCapability(t,e.subject.signer.account.nearAccountId,e.expectedMaterialActivation),i=r?ZN({subject:e.subject,expectedMaterialActivation:e.expectedMaterialActivation,material:r}):null,a=e.resolveEd25519YaoClientRootEnvelope?await e.resolveEd25519YaoClientRootEnvelope({subject:e.subject,capability:i,selectedMaterialActivation:e.expectedMaterialActivation}):null,o=a&&`envelope`in a?a.envelope:a,s=i;if(a&&`envelope`in a&&(s=await qN({subject:e.subject,authorization:n,source:a.source,expectedMaterialActivation:a.source.materialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch})),o){if(!s)throw Error(`[SigningEngine][ed25519-export] Ed25519 export-root capability is unavailable`);return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`sealed_export_root`,materialActivation:s.materialActivation,capability:s,exportRootEnvelope:VN(o)}}}if(r){if(!i)throw Error(`[SigningEngine][ed25519-export] active Email OTP capability is unavailable`);return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`active_capability`,materialActivation:e.expectedMaterialActivation,capability:i}}}let c=await e.loadWalletCustodyMaterial();if(c.kind!==`found`)throw Error(`[SigningEngine][ed25519-export] sealed wallet custody material is unavailable`);let l=await GN({subject:e.subject,authorization:n,source:c.material.binding,expectedMaterialActivation:e.expectedMaterialActivation,relayerUrl:e.relayerUrl,fetch:e.fetch});return{kind:`wallet_custody_ed25519_export_context_v1`,lane:e.subject,authorization:n,material:{kind:`sealed_custody`,materialActivation:e.expectedMaterialActivation,capability:l.bootstrap.capability,walletCustodyEd25519Material:c.material,bootstrap:l.bootstrap,activateRecoveredCapability:t=>{if(t.operationCredential.walletSessionId!==n.operationCredential.walletSessionId||t.operationCredential.token!==n.operationCredential.token)throw Error(`[SigningEngine][ed25519-export] recovered capability credential does not match authorization`);return e.activateRecoveredCapability({activation:{...t.activation,bootstrap:l.bootstrap,emailHashHex:l.emailHashHex},operationCredential:t.operationCredential})}}}}async function $N(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`sealEmailOtpWarmSessionMaterial`,timeoutMs:3e4,payload:{target:e.target,transport:{...e.transport,authorizationThresholdSessionId:e.authorizationThresholdSessionId}}}})}async function eP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`getEmailOtpWarmSessionStatus`,timeoutMs:5e3,payload:{target:e.target}}})}async function tP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`consumeEmailOtpWarmSessionUses`,timeoutMs:5e3,payload:{target:e.target,...typeof e.uses==`number`?{uses:e.uses}:{}}}})}async function nP(e){return await e.worker.requestWorkerOperation({kind:`emailOtp`,request:{type:`clearEmailOtpWarmSessionMaterial`,timeoutMs:5e3,payload:{target:e.target}}})}async function rP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateEmailOtpEcdsaWarmSessionMaterial`,timeoutMs:6e4,payload:{target:e.target,sealedSecretB64u:e.sealedSecretB64u,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs,transport:{...e.transport,authorizationThresholdSessionId:e.authorizationThresholdSessionId},restore:e.restore}}})}async function iP(e){return await e.workerCtx.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateEmailOtpEd25519YaoOperationMaterial`,timeoutMs:12e4,payload:e.payload}})}function aP(e){let{capability:t}=e;if(!t.auth||!e.hasWalletSessionAuthorization)return t.capability===`ed25519`?`authorization_required`:`auth_missing`;if(e.emailOtpSingleUseConsumed)return`prf_missing`;let n=t.prfClaim;if(t.capability===`ed25519`){let e=Ac({remainingUses:t.runtime.remainingUses,expiresAtMs:t.runtime.expiresAtMs});return e===`expired`||e===`exhausted`?`authorization_required`:n?.state===`unavailable`?`prf_unavailable`:n?.state===`warm`?`ready`:`prf_missing`}let r=Ac({remainingUses:t.runtime.remainingUses,expiresAtMs:t.runtime.expiresAtMs});return r===`expired`||r===`exhausted`?`authorization_required`:n?n.state===`unavailable`?`prf_unavailable`:n.state===`warm`?`ready`:`prf_missing`:`prf_missing`}function oP(e){let{capability:t}=e,n=t.runtime,r=t.auth,i=t.prfClaim,a=String(n?.thresholdSessionId||``).trim();if(!n){if(t.state!==`missing`&&t.state!==`invalid`)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime must be missing or invalid`);if(r)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime cannot have auth`);if(i)throw Error(`[WarmSessionStore] invalid ${e.label} capability: missing runtime cannot have warm-session status`);return}if(String(n.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime wallet does not match envelope wallet`);if(!a)throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime is missing thresholdSessionId`);if(r){if(String(r.session.walletId)!==String(n.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization wallet does not match runtime`);if(r.selectedAuthMethod.kind!==n.factor.kind)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization factor does not match runtime`)}if(i){if(String(i.thresholdSessionId||``).trim()!==a)throw Error(`[WarmSessionStore] invalid ${e.label} capability: warm-session status thresholdSessionId does not match record thresholdSessionId`);switch(i.state){case`warm`:if(i.remainingUses<=0||i.expiresAtMs<=0)throw Error(`[WarmSessionStore] invalid ${e.label} capability: warm warm-session status requires positive remainingUses and expiresAtMs`);break;case`unavailable`:if(!String(i.code||``).trim())throw Error(`[WarmSessionStore] invalid ${e.label} capability: unavailable warm-session status requires a code`);break;case`missing`:case`expired`:case`exhausted`:break;default:throw Error(`[WarmSessionStore] unsupported warm-session claim state`)}}let o=aP({capability:t,hasWalletSessionAuthorization:!!r,emailOtpSingleUseConsumed:!1});if(t.state!==o)throw Error(`[WarmSessionStore] invalid ${e.label} capability: state=${t.state} does not match derived state=${o}`)}function sP(e){let{capability:t}=e,n=t.runtime,r=t.manifest.durableMaterial.roleLocalPublicFacts;if(String(n.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: runtime wallet does not match envelope wallet`);if(String(t.key.walletId)!==String(e.walletId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: key wallet does not match envelope wallet`);if(String(t.key.thresholdOwnerAddress).toLowerCase()!==String(r.ethereumAddress).toLowerCase())throw Error(`[WarmSessionStore] invalid ${e.label} capability: key owner address does not match manifest public facts`);if(t.state===`authorization_required`){if(t.lane)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorization_required cannot carry a lane`);return}if(!t.lane)throw Error(`[WarmSessionStore] invalid ${e.label} capability: authorized ECDSA capability requires a lane`);if(!Pr(t.lane.identity.signer.chainTarget,n.chainTarget))throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane chain target does not match runtime chain target`);if(String(t.lane.materialActivation.activationId)!==String(n.materialActivation.activationId))throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane material activation does not match runtime`);if(ys(t.lane.auth)!==n.authBinding.kind)throw Error(`[WarmSessionStore] invalid ${e.label} capability: lane authMethod does not match sealed auth binding`);if(t.emailOtpAuthContext&&n.authBinding.kind!==`email_otp`)throw Error(`[WarmSessionStore] invalid ${e.label} capability: non-email_otp binding cannot carry email-otp auth context`)}function cP(e){let{capability:t}=e;if(t.state!==`missing`){if(t.capability===`ecdsa`){if(t.state===`invalid`)return;sP({walletId:e.walletId,label:e.label,capability:t});return}oP(e)}}function lP(e){return cP({walletId:e.walletId,label:`ed25519`,capability:e.capabilities.ed25519}),cP({walletId:e.walletId,label:`ecdsa.evm`,capability:e.capabilities.ecdsa.evm}),cP({walletId:e.walletId,label:`ecdsa.tempo`,capability:e.capabilities.ecdsa.tempo}),e}function uP(e){switch(e.kind){case`passkey`:return{kind:`passkey`,rpId:qa(e.rpId),credentialIdB64u:e.credentialIdB64u};case`email_otp`:return{kind:`email_otp`,providerSubjectId:e.providerSubjectId};default:throw Error(`[WarmSessionStore] unsupported ECDSA runtime auth binding`)}}async function dP(e){if(!e.resolve||e.resolution.kind!==`resolved`)return null;try{return await e.resolve({walletId:e.walletId,chainTarget:e.resolution.runtime.chainTarget,materialActivation:e.resolution.manifest.activation.materialActivation},e.statusReads)}catch{return null}}function fP(e){return e.kind===`resolved`?dh({thresholdSessionId:e.runtime.sealedRecord.thresholdSessionId,remainingUses:e.runtime.remainingUses,expiresAtMs:e.runtime.expiresAtMs}):null}function pP(e){async function t(t,n){let r=e.resolveActiveEd25519WalletSessionAuthorization;if(!r)return null;try{return await r(t,n)}catch{return null}}function n(e){if(e.resolution.kind===`missing`)return{capability:`ed25519`,runtime:null,auth:null,prfClaim:null,state:`missing`};if(e.resolution.kind===`conflict`||e.resolution.kind===`corrupt`)return{capability:`ed25519`,runtime:null,auth:null,prfClaim:null,invalidReason:e.resolution.kind===`conflict`?`exact_record_conflict`:`corrupt`,state:`invalid`};let t=e.resolution.runtime,n=oh({runtime:t,auth:e.auth,prfClaim:e.prfClaim});if(n===`authorization_required`)return{capability:`ed25519`,runtime:t,auth:null,prfClaim:e.prfClaim,state:n};if(n===`missing`||n===`invalid`)throw Error(`[WarmSessionStore] Ed25519 capability state=${n} with resolved material`);if(!e.auth)throw Error(`[WarmSessionStore] Ed25519 capability state=${n} requires active authorization`);return{capability:`ed25519`,runtime:t,auth:e.auth,prfClaim:e.prfClaim,state:n}}function r(e){if(e.resolution.kind===`blocked`){let t=e.resolution.reason;return t===`missing_capability`||t===`missing_material`?{capability:`ecdsa`,manifest:null,runtime:null,key:null,lane:null,auth:null,prfClaim:null,state:`missing`}:{capability:`ecdsa`,manifest:null,runtime:null,key:null,lane:null,auth:null,prfClaim:null,invalidReason:t,state:`invalid`}}let{manifest:t,runtime:n}=e.resolution,r=t.durableMaterial.roleLocalPublicFacts,i=ho({walletId:n.walletId,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:String(r.signingRootId),signingRootVersion:String(r.signingRootVersion),participantIds:[...n.participantIds],thresholdOwnerAddress:String(r.ethereumAddress)}),a=n.authBinding,o=sh({runtime:n,auth:e.authorization,prfClaim:e.prfClaim,emailOtpAuthContext:null});if(o===`authorization_required`)return{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:null,auth:null,prfClaim:e.prfClaim,emailOtpAuthContext:null,state:o};if(!e.authorization)throw Error(`[WarmSessionStore] ECDSA capability without authorization must be authorization_required`);if(o===`missing`||o===`invalid`)throw Error(`[WarmSessionStore] ECDSA capability state=${o} with resolved material`);let s=qc({key:i,materialActivation:n.materialActivation,keyHandle:n.keyHandle,walletId:n.walletId,auth:uP(a),authorization:e.authorization,chainTarget:n.chainTarget});if(o===`ready`||o===`material_pending`){if(!e.prfClaim||e.prfClaim.state!==`warm`)throw Error(`[WarmSessionStore] ECDSA capability state=${o} requires a warm PRF claim`);return{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:e.authorization,prfClaim:e.prfClaim,state:o}}return o===`auth_missing`?{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:null,prfClaim:e.prfClaim,state:o}:{capability:`ecdsa`,manifest:t,runtime:n,key:i,lane:s,auth:e.authorization,prfClaim:e.prfClaim,state:o}}async function i(i){let a=R(i),o=new J,[s,c,l,u]=await Promise.all([_r(a),t(a,o),e.resolveActiveEcdsaCapabilityRuntimeForChain({walletId:a,chain:`evm`}),e.resolveActiveEcdsaCapabilityRuntimeForChain({walletId:a,chain:`tempo`})]),[d,f]=await Promise.all([dP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:l,statusReads:o}),dP({resolve:e.resolveActiveEcdsaWalletSessionAuthorization,walletId:a,resolution:u,statusReads:o})]);return lP({walletId:a,capabilities:{ed25519:n({resolution:s,auth:c,prfClaim:s.kind===`resolved`?await e.statusReader.readEd25519WarmSessionClaim(s.runtime):null}),ecdsa:{evm:r({resolution:l,prfClaim:fP(l),authorization:d}),tempo:r({resolution:u,prfClaim:fP(u),authorization:f})}},updatedAtMs:Date.now()})}async function a(t){let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.lane.signer.walletId,chainTarget:t.lane.signer.chainTarget});return r({resolution:n,prfClaim:fP(n),authorization:t.authorization})}function o(){return e.signingSessionSeal.seal===`configured`?{groupId:String(e.signingSessionSeal.groupId||``).trim()}:{groupId:``}}async function s(t){let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.lane.signer.walletId,chainTarget:t.lane.signer.chainTarget});if(n.kind!==`resolved`)return null;let r=o();return lh({runtime:n.runtime,auth:t.authorization,groupId:r.groupId})}return{getWarmSession:i,getEcdsaCapabilityForLane:a,resolveEcdsaSealTransportForLane:s}}function mP(e){switch(e.factor.kind){case V.passkey:return{authMethod:V.passkey};case V.emailOtp:return{authMethod:V.emailOtp,retention:`session`};default:throw e.factor,Error(`[WarmSessionStore] unsupported Ed25519 runtime factor`)}}async function hP(e){return Nn({runtime:e.runtime,authorization:e.authorization})}function gP(e){let t=nh(e.touchConfirm);async function n(e){let t=String(e.thresholdSessionId);return await r({authMethod:e.factor.kind,thresholdSessionId:t,materialActivation:e.sealedRecord.ed25519Restore.materialActivation})}async function r(n){if(n.authMethod===V.emailOtp){let t=await e.getEmailOtpWarmSessionStatus({kind:`ed25519_yao`,thresholdSessionId:n.thresholdSessionId,materialActivation:n.materialActivation}).catch(()=>({ok:!1,code:`worker_error`,message:`worker_error`}));return ah({thresholdSessionId:n.thresholdSessionId,status:t})}return await ih(t,n.thresholdSessionId)}async function i(e){let t=e.runtime,r=String(t.thresholdSessionId),i=mP(t);if(!e.authorization||!await hP({runtime:t,authorization:e.authorization}))return{sessionId:r,status:`unavailable`,statusCode:`auth_missing`,...i};if(e.authorization.status.expiresAtMs<=e.nowMs||t.expiresAtMs<=e.nowMs)return{sessionId:r,status:`expired`,expiresAtMs:Math.min(e.authorization.status.expiresAtMs,t.expiresAtMs),...i};if(t.remainingUses<=0)return{sessionId:r,status:`exhausted`,remainingUses:0,expiresAtMs:t.expiresAtMs,...i};let a=ch({sessionId:r,claim:await n(t),authMethod:i.authMethod,retention:i.retention??null});return a.status===`not_found`?{sessionId:r,status:`active`,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,...i}:a}return{getEd25519SigningSessionStatus:i,readEd25519WarmSessionClaim:n}}function _P(){return{ok:!1,code:`not_found`,message:`Email OTP warm-session status reader is unavailable`}}function vP(e){let t=nh(e.touchConfirm),n=e.getEmailOtpWarmSessionStatus;return n?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:n}:t?.statusPort===`single`||t?.statusPort===`single_and_batch`?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:async e=>await t.getWarmSessionStatus({thresholdSessionId:e.thresholdSessionId})}:t?{runtimeStatus:`configured`,touchConfirm:t,getEmailOtpWarmSessionStatus:async()=>_P()}:{runtimeStatus:`no_runtime_status`,touchConfirm:null,getEmailOtpWarmSessionStatus:async()=>_P()}}function yP(e){let t=String(e?.groupId||``).trim();return t?{seal:`configured`,groupId:t}:{seal:`unconfigured`}}function bP(e){let t=vP(e),n=gP({touchConfirm:t.touchConfirm,getEmailOtpWarmSessionStatus:t.getEmailOtpWarmSessionStatus});return pP({resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,resolveActiveEcdsaCapabilityRuntimeForChain:e.resolveActiveEcdsaCapabilityRuntimeForChain,statusReader:n,signingSessionSeal:yP(e.signingSessionSeal),...e.resolveActiveEcdsaWalletSessionAuthorization?{resolveActiveEcdsaWalletSessionAuthorization:e.resolveActiveEcdsaWalletSessionAuthorization}:{},...e.resolveActiveEd25519WalletSessionAuthorization?{resolveActiveEd25519WalletSessionAuthorization:e.resolveActiveEd25519WalletSessionAuthorization}:{}})}function xP(e){return!e.ok&&(e.code===`not_found`||e.code===`worker_error`)}function SP(e){let{base:t,secondary:n}=e,r=async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return xP(r)?await t.getWarmSessionStatus(e):r},i=async e=>{let r=await Promise.all(e.thresholdSessionIds.map(async e=>({thresholdSessionId:e,result:await n.readWarmSessionStatusOnly(e)}))),i=r.filter(e=>xP(e.result)).map(e=>e.thresholdSessionId),a=i.length===0?{results:[]}:typeof t.getWarmSessionStatuses==`function`?await t.getWarmSessionStatuses({thresholdSessionIds:i}):{results:await Promise.all(i.map(async e=>({thresholdSessionId:e,result:await t.getWarmSessionStatus({thresholdSessionId:e})})))},o=new Map(a.results.map(e=>[e.thresholdSessionId,e]));return{results:r.map(e=>xP(e.result)&&o.get(e.thresholdSessionId)||e)}},a=async e=>{await Promise.all([t.clearVolatileWarmSessionMaterial(e).catch(()=>void 0),n.clearVolatileWarmSessionMaterial(e).catch(()=>void 0)])};return new Proxy(t,{get:(e,t,n)=>{if(t===`getWarmSessionStatus`)return r;if(t===`getWarmSessionStatuses`)return i;if(t===`clearVolatileWarmSessionMaterial`)return a;let o=Reflect.get(e,t,n);return typeof o==`function`?o.bind(e):o}})}function CP(e){let{base:t,secondary:n}=e;return{getWarmSessionStatus:async e=>{let r=await n.readWarmSessionStatusOnly(e.thresholdSessionId);return xP(r)?await t.getWarmSessionStatus(e):r},getWarmSessionStatuses:async e=>{let r=Array.from(new Set((Array.isArray(e.thresholdSessionIds)?e.thresholdSessionIds:[]).map(e=>String(e||``).trim()).filter(Boolean))),i=await Promise.all(r.map(async e=>({thresholdSessionId:e,result:await n.readWarmSessionStatusOnly(e)}))),a=i.filter(e=>xP(e.result)).map(e=>e.thresholdSessionId),o=a.length===0?{results:[]}:await t.getWarmSessionStatuses({thresholdSessionIds:a}),s=new Map(o.results.map(e=>[e.thresholdSessionId,e.result]));return{results:i.map(e=>xP(e.result)?{thresholdSessionId:e.thresholdSessionId,result:s.get(e.thresholdSessionId)||e.result}:e)}}}}function wP(e){return{queueByWallet:e.queueByWallet,activationDeps:e.activationDeps,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord}}function TP(e){return{getWarmSession:t=>e.capabilityReader.getWarmSession(t),discoverPersistedSessionsForWallet:e.passkeyMpcSession.discoverPersistedSessionsForWallet.bind(e.passkeyMpcSession)}}function EP(e){let t=zl(e),n=Hl(e);return e.source===`registration`?{kind:`key_enrollment_bootstrap_parity`,walletId:t,chainTarget:n}:e.operationIntent===bs.TransactionSign?{kind:`transaction_bootstrap_parity`,walletId:t,chainTarget:n,operationIntent:bs.TransactionSign}:e.kind===`email_otp_ecdsa_bootstrap`?{kind:`email_otp_bootstrap_parity`,walletId:t,chainTarget:n,authMethod:`email_otp`}:{kind:`default_bootstrap_parity`,walletId:t,chainTarget:n}}async function DP(e,t){return await Ll(wP(e),t)}function OP(e){let t=e.error instanceof Error?e.error.message:String(e.error||`unknown error`);return{ok:!1,code:kP(e.error),chainTargetKey:e.chainTargetKey,errorMessage:t}}function kP(e){let t=Ru(e);if(t)switch(t.kind){case`expired`:return`sealed_record_expired`;case`exhausted`:return`sealed_record_exhausted`;case`missing`:case`invalid`:case`unavailable`:return`sealed_restore_failed`}switch(e&&typeof e==`object`?Reflect.get(e,`code`):void 0){case`expired`:return`sealed_record_expired`;case`exhausted`:return`sealed_record_exhausted`;default:return`sealed_restore_failed`}}async function AP(e,t,n){let r=n.chainTarget,i=z(r);if((await e.getWarmSession(t)).capabilities.ed25519.state!==`ready`)return{ok:!1,code:`missing_exact_material`,chainTargetKey:i};try{await e.discoverPersistedSessionsForWallet({kind:`discover_wallet_ecdsa_signing_sessions`,walletId:t,ecdsaChainTargets:[r],maxRecords:1})}catch(e){return console.warn(`[SigningEngine][ecdsa] reuse warm sealed discovery failed`,{walletId:t,chainTarget:r,error:e instanceof Error?e.message:String(e||`unknown error`)}),OP({chainTargetKey:i,error:e})}return{ok:!1,code:`missing_exact_material`,chainTargetKey:i}}function jP(e){switch(e.code){case`missing_exact_material`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap requires restored passkey ECDSA material for ${e.chainTargetKey}`;case`sealed_restore_failed`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed restore failed for ${e.chainTargetKey}: ${e.errorMessage||`unknown error`}`;case`sealed_record_expired`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed record expired for ${e.chainTargetKey}`;case`sealed_record_exhausted`:return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap sealed record exhausted for ${e.chainTargetKey}`}return`[SigningEngine][ecdsa] reuse_warm_ecdsa_bootstrap failed`}function MP(e){return Error(jP(e))}async function NP(e,t){await Gu(e.ensureSealedRefreshStartupParity,EP(t));let n=R(zl(t));switch(t.kind){case`reuse_warm_ecdsa_bootstrap`:{let r=await AP(TP(e),n,t);return r.ok?{ok:!0,bootstrap:r.bootstrap}:{ok:!1,kind:`reuse_failed`,failure:r}}case`passkey_fresh_ecdsa_bootstrap`:case`passkey_preauthorized_ecdsa_bootstrap`:case`wallet_session_reconnect_ecdsa_bootstrap`:case`email_otp_ecdsa_bootstrap`:return{ok:!0,bootstrap:await DP(e,t)}}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap request`)}function PP(e){return typeof e?.clearAllVolatileWarmSessionMaterial==`function`}function FP(e){return typeof e?.clearVolatileWarmSessionMaterial==`function`}async function IP(e){let t=new Set,n=await Promise.all([Yn({walletId:e,filter:{authMethod:`passkey`,curve:`ed25519`}}),Yn({walletId:e,filter:{authMethod:`email_otp`,curve:`ed25519`}})]);for(let e of n.flat()){let n=s(e.thresholdSessionIds.ed25519);n.ok&&t.add(n.value)}return[...t]}async function LP(e,t){if(t==null&&PP(e.touchConfirm)){await e.touchConfirm.clearAllVolatileWarmSessionMaterial(Wm()).catch(()=>void 0);return}let n=t==null?[]:await IP(t);FP(e.touchConfirm)&&await Promise.all(n.map(t=>e.clearVolatileThresholdSessionMaterial(Um(t)).catch(()=>void 0)))}function RP(e){switch(e.kind){case`rehydrated`:return e;case`device_link_required`:throw Error(`ECDSA login prefill requires local role-local material`);case`corrupt`:throw Error(`ECDSA login prefill role-local material is corrupt (${e.reason}): ${e.message}`);default:{let t=e;throw Error(`Unsupported ECDSA login prefill material state: ${String(t)}`)}}}function zP(e){return{kind:`router_ab_ecdsa_derivation_client_signing_material_source_v1`,initClientPresignSession:async t=>{let n=RP(await dd({purpose:`wallet_unlock`,source:ad({authority:e.manifest.signer.authority,materialActivation:e.manifest.durableMaterial.materialActivation,publicFacts:e.manifest.durableMaterial.roleLocalPublicFacts}),workerCtx:t.workerCtx}));return await lu({materialHandle:n.liveHandle.materialHandle,material:{kind:`persisted`,materialRef:n.materialRef},...t})},stepClientPresignSession:xu,abortClientPresignSession:nu,admitClientPresignature:tu,destroyClientPresignature:ru,reserveClientPresignature:eu,commitClientPresignature:Au,listAvailableClientPresignatures:fu.bind(void 0,`role_local_derivation_handle`),computeSignatureShareFromPresignatureHandle:pu}}function BP(e){let t={exportArtifactsByLane:e.ecdsaExportArtifacts.exportArtifactsByLane},n=CP({base:e.passkeyMpcSession,secondary:{readWarmSessionStatusOnly:t=>e.getEmailOtpWarmSessionStatus({kind:`ecdsa`,thresholdSessionId:t})}}),r=gP({touchConfirm:n,getEmailOtpWarmSessionStatus:e.getEmailOtpWarmSessionStatus});return{ecdsaSessions:t,statusUiConfirm:n,capabilityReader:bP({resolveActiveEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,resolveActiveEcdsaCapabilityRuntimeForChain:e.resolveActiveEcdsaCapabilityRuntimeForChain,touchConfirm:e.passkeyMpcSession,signingSessionSeal:e.signingSessionSeal.mode===`sealed_refresh_v1`?{groupId:Xe}:null,getEmailOtpWarmSessionStatus:e.getEmailOtpWarmSessionStatus,...e.resolveActiveEcdsaWalletSessionAuthorization?{resolveActiveEcdsaWalletSessionAuthorization:e.resolveActiveEcdsaWalletSessionAuthorization}:{},...e.resolveActiveEd25519WalletSessionAuthorization?{resolveActiveEd25519WalletSessionAuthorization:e.resolveActiveEd25519WalletSessionAuthorization}:{}}),statusReader:r}}function VP(e){return{getWarmSession:t=>e.warmSigning.capabilityReader.getWarmSession(R(t)),provisionThresholdEd25519Session:async t=>await Pm({credentialStore:e.credentialStore,touchIdPrompt:e.touchIdPrompt,touchConfirm:e.passkeyMpcSession,defaultRelayerUrl:e.seamsWebConfigs.network.relayer?.url||``,getSignerWorkerContext:()=>e.walletSessionActivationDeps.getSignerWorkerContext()},t),bootstrapEcdsaSession:async t=>{let n=await NP({ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.walletSessionActivationDeps,passkeyMpcSession:e.passkeyMpcSession,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord,capabilityReader:e.warmSigning.capabilityReader},t);if(n.ok)return n.bootstrap;switch(n.kind){case`reuse_failed`:throw MP(n.failure)}throw Error(`[SigningEngine][ecdsa] unsupported warm bootstrap result`)}}}function HP(e){return{statusReader:e.warmSigning.statusReader,persistThresholdEcdsaBootstrapForWalletTarget:async t=>await Lm({bootstrapStore:e.bootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,signerAuth:t.signerAuth}),hydrateSigningSession:async t=>await rl(e.passkeyMpcSession,t),clearVolatileWarmSigningMaterial:async t=>await LP({touchConfirm:e.passkeyMpcSession,clearVolatileThresholdSessionMaterial:async t=>await e.passkeyMpcSession.clearVolatileWarmSessionMaterial(t)},t),getWalletSessionStatus:t=>e.signingSessionCoordinator.getAvailableStatus(t),routerAbEcdsaDerivationPresignaturePoolPolicy:e.seamsWebConfigs.signing.routerAbEcdsaDerivation.presignaturePool,getSignerWorkerContext:()=>e.walletSessionActivationDeps.getSignerWorkerContext(),resolveClientSigningMaterialSource:zP}}function UP(e){return{availableLanes:{activeWalletAuthorityEcdsaRuntimeReadPorts:Gh,ed25519YaoPublicCapabilityLanes:e.ed25519YaoPublicCapabilityLanes,isEd25519YaoPublicCapabilityActive:e.isEd25519YaoPublicCapabilityActive,readActiveWalletSessionAuthorization:e.readActiveWalletSessionAuthorization,listEcdsaSigningCapabilitiesForWallet:e.listEcdsaSigningCapabilitiesForWallet},signingSessionSeal:e.seamsWebConfigs.signing.sessionSeal.mode===`sealed_refresh_v1`?{groupId:Xe}:void 0,getConfiguredEcdsaChainTargets:()=>Fr(e.seamsWebConfigs.network.chains),discovery:{emailOtp:t=>e.emailOtpSessions.discoverPersistedSessionsForWallet(t),passkey:t=>e.passkeyMpcSession.discoverPersistedSessionsForWallet(t)}}}async function WP(e,t){let{runtime:n,session:r,operationCredential:i}=t.capability.authorization,a=i.walletSessionId;try{let o=n.relayerUrl,s=n.clientVerifyingPublicKey33B64u,c=Date.now(),l=Math.min(n.expiresAtMs,r.expiresAtMs);if(l<=c)return{status:`skipped`,reason:`session_expired`,walletSessionId:a};let u=Pu(e.routerAbEcdsaDerivationPresignaturePoolPolicy);if(!u.enabled)return{status:`skipped`,reason:`pool_disabled`,walletSessionId:a};let d=n.remainingUses,f={kind:`router_ab_ecdsa_derivation_signing_worker_pool`,scope:n.normalSigning.scope,ceremonyExpiresAtMs:l,materialExpiresAtMs:c+ta},p=e.resolveClientSigningMaterialSource({manifest:t.capability.capability.manifest}),m=Fu({relayerUrl:o,keyHandle:Wo(n.keyHandle),ecdsaThresholdKeyId:Po(n.ecdsaThresholdKeyId),clientVerifyingShareB64u:Ro(s),clientSigningMaterial:p,thresholdEcdsaPublicKeyB64u:n.thresholdEcdsaPublicKeyB64u,relayerVerifyingShareB64u:n.normalSigning.scope.public_identity.server_public_key33_b64u,credential:{kind:`wallet_session_opaque`,walletSessionToken:i.token,home:i.home,ownershipGeneration:i.ownershipGeneration},authorization:{kind:`reusable_wallet_session`,wallet_session_id:i.walletSessionId},materialActivation:yo(n.materialActivation),routerAbEcdsaDerivationPoolFill:f,workerCtx:e.getSignerWorkerContext(),poolPolicy:u});return m.scheduled?(t.waitForPoolReady&&await Mu({ownershipGeneration:i.ownershipGeneration,relayerUrl:o,scope:n.normalSigning.scope,materialActivation:yo(n.materialActivation)}),{status:`scheduled`,reason:`scheduled`,walletSessionId:a,remainingUses:d,schedule:m}):(t.waitForPoolReady&&m.reason===`in_flight_for_pool_key`&&await Mu({ownershipGeneration:i.ownershipGeneration,relayerUrl:o,scope:n.normalSigning.scope,materialActivation:yo(n.materialActivation)}),{status:`skipped`,reason:`refill_not_scheduled`,walletSessionId:a,remainingUses:d,schedule:m})}catch(e){return{status:`failed`,reason:`unexpected_error`,walletSessionId:a,error:e instanceof Error?e.message:`unexpected error`}}}async function GP(e,t){let n=await e.statusReader.getEd25519SigningSessionStatus(t),r=t.authorization?zp({owner:Mp(t.runtime.walletId),authorization:{walletSessionId:t.authorization.operationCredential.walletSessionId,quotaId:t.authorization.session.quotaId}}):null;return Rp(n,r?await Lp({getAvailableStatus:e.getWalletSessionStatus},r):null)}async function KP(e,t){return await WP({getSignerWorkerContext:e.getSignerWorkerContext,resolveClientSigningMaterialSource:e.resolveClientSigningMaterialSource,routerAbEcdsaDerivationPresignaturePoolPolicy:e.routerAbEcdsaDerivationPresignaturePoolPolicy},t)}async function qP(e,t){await e.hydrateSigningSession(t)}async function JP(e,t){await e.clearVolatileWarmSigningMaterial(t)}function YP(e){let t=e.capability===`ecdsa`?e.runtime?.sealedRecord.thresholdSessionId:e.runtime?.thresholdSessionId,n=t?String(t).trim():null;return{state:e.state,thresholdSessionId:n||null,authState:e.auth?`present`:`missing`,prfClaimState:e.prfClaim?.state||null,...e.prfClaim?.state===`warm`?{remainingUses:e.prfClaim.remainingUses,expiresAtMs:e.prfClaim.expiresAtMs}:{}}}function XP(e){return{capabilities:{ed25519:YP(e.capabilities.ed25519),ecdsa:{evm:YP(e.capabilities.ecdsa.evm),tempo:YP(e.capabilities.ecdsa.tempo)}}}}function ZP(e){if(typeof e.onTransition==`function`)try{let t=e.onTransition(e.event);t&&typeof t.then==`function`&&Promise.resolve(t).catch(t=>{console.warn(`[WarmSessionStore] warm-session transition callback failed`,{type:e.event.type,walletId:e.event.walletId,error:t})})}catch(t){console.warn(`[WarmSessionStore] warm-session transition callback failed`,{type:e.event.type,walletId:e.event.walletId,error:t})}}function QP(e){return String(e||``).trim()||void 0}function $P(e){let t=String(e.persistedSessionIdRaw||``).trim();if(t!==e.expectedThresholdSessionId)throw Error(`[WarmSessionStore] provisioned Ed25519 capability was not persisted for ${e.walletId} (expected thresholdSessionId=${e.expectedThresholdSessionId}, found=${t||`missing`})`)}function eF(e){return e.kind===`exact_ed25519_provisioning`?R(Ec(e.laneIdentity,`exact Ed25519 capability provisioning`).walletId):R(e.walletId)}function tF(e){return Or(e.kind===`exact_ed25519_provisioning`?Ec(e.laneIdentity,`exact Ed25519 capability provisioning`).nearAccountId:e.nearAccountId)}async function nF(e,t){let n=tF(t),r=eF(t);if(!r)throw Error(`[WarmSessionStore] walletId is required to provision Ed25519 capability`);if(typeof e.provisionThresholdEd25519Session!=`function`)throw Error(`[WarmSessionStore] provisionThresholdEd25519Session is required to provision Ed25519 capability`);let i=await e.getWarmSession(r);await t.beforeProvision?.(),t.assertNotCancelled?.();let a=await e.provisionThresholdEd25519Session(t);if(t.assertNotCancelled?.(),!a.ok)return a;let o=QP(a.thresholdSessionId);if(!o)throw Error(`[WarmSessionStore] provisioned Ed25519 capability is missing thresholdSessionId for ${n}`);let s=await e.getWarmSession(r);return $P({walletId:r,expectedThresholdSessionId:o,persistedSessionIdRaw:s.capabilities.ed25519.runtime?.thresholdSessionId}),ZP({onTransition:e.onTransition,event:{type:`ed25519_capability_provisioned`,walletId:r,thresholdSessionId:o,before:XP(i),after:XP(s)}}),a}async function rF(e,t){return await nF({getWarmSession:t=>e.getWarmSession(t),provisionThresholdEd25519Session:async t=>await e.provisionThresholdEd25519Session(t)},t)}async function iF(e,t){return await e.bootstrapEcdsaSession(t)}function aF(e){switch(e){case`email_otp`:return{authMethod:V.emailOtp,signerSource:zr.emailOtpRegistration};case`login`:case`registration`:case`manual-bootstrap`:return{authMethod:V.passkey,signerSource:zr.passkeyRegistration};default:throw Error(`[SigningEngine] unsupported threshold ECDSA session source`)}}function oF(e){throw Error(`[SigningEngine] unsupported threshold ECDSA bootstrap backend binding: ${JSON.stringify(e)}`)}async function sF(e){let t=e.bootstrap.thresholdEcdsaKeyRef.backendBinding;if(!t)throw Error(`[SigningEngine] ECDSA bootstrap is missing its backend binding`);let n=cF(t);if(!n)return;let r=await e.deps.persistEcdsaRoleLocalReadyRecord({record:n,storageKeyFacts:No(n)});if(!r.ok)throw Error(`[SigningEngine] ECDSA role-local ready record persistence failed (${r.code}): ${r.message}`)}function cF(e){switch(e.materialKind){case`role_local_ready_state_blob`:return e.ecdsaRoleLocalReadyRecord;case`role_local_worker_handle`:case`role_local_durable_public_anchor`:case`role_local_durable_sealed_ref`:case`metadata_only`:return null;default:return oF(e)}}async function lF(e,t){return t.source===`email_otp`?await e.ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap({kind:`email_otp_bootstrap_parity`,walletId:t.walletId,chainTarget:t.chainTarget,authMethod:V.emailOtp}):await e.ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap({kind:`default_bootstrap_parity`,walletId:t.walletId,chainTarget:t.chainTarget}),await Gl(e.queueByWallet,t.walletId,async()=>{let n=t.bootstrap;if(!String(n.thresholdEcdsaKeyRef.ecdsaThresholdKeyId||``).trim())throw Error(`[SigningEngine] threshold-ecdsa bootstrap did not provide canonical ecdsaThresholdKeyId`);return await Lm({bootstrapStore:e.bootstrapStore,walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:n,signerAuth:aF(t.source)}),await sF({deps:e,bootstrap:n}),{bootstrap:n,authorization:await Yl(K,{walletId:t.walletId,authority:t.authority,bootstrap:n})}})}async function uF(e,t){let n=t.source===`email_otp`?await lF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:`email_otp`,authority:t.authority,emailOtpAuthContext:t.emailOtpAuthContext}):await lF(e,{walletId:t.walletId,chainTarget:t.chainTarget,bootstrap:t.bootstrap,source:t.source,authority:t.authority});return{bootstrap:n.bootstrap,authorization:n.authorization}}function dF(e){let t=[],n=new Set;for(let r of e.network.chains){let e=ie(r.network);if(e!==`evm`&&e!==`tempo`)continue;let i=Mr(r),a=z(i);n.has(a)||(n.add(a),t.push(i))}if(!t.length)throw Error(`[EmailOtpSession] exact ECDSA snapshot requires configured ECDSA targets`);return t}function fF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function pF(){return{signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function mF(e,t,n){e[t]+=Math.max(0,Math.round(fF()-n))}function hF(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function gF(e){let t=String(e||``).trim().toLowerCase();return/^0x[0-9a-f]{40}$/.test(t)?t:null}function _F(e){let t=[],n=new Set,r=e=>{let r=z(e);n.has(r)||(n.add(r),t.push(e))};r(e.chainTarget);let i=e.additionalChainTargets!==void 0;for(let t of e.additionalChainTargets||[])r(t);if(!i&&Hc(e.emailOtpAuthContext)===`session`)for(let t of dF(e.configs))r(t);return t}function vF(e){let t=be(e.runtimePolicyScope),n=String(t.signingRootId).trim(),r=String(t.signingRootVersion||`default`).trim();if(!n||!r)throw Error(`Email OTP ECDSA persisted identity is incomplete`);return{signingRootId:n,signingRootVersion:r}}function yF(e){let t=e.existingKey.persistedRoleLocalMaterial.publicFacts,n=jo({walletId:t.walletId,chainTarget:e.chainTarget,keyHandle:t.keyHandle,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,applicationBindingDigestB64u:t.applicationBindingDigestB64u,clientParticipantId:t.clientParticipantId,relayerParticipantId:t.relayerParticipantId,participantIds:t.participantIds,contextBinding32B64u:t.contextBinding32B64u,derivationClientSharePublicKey33B64u:t.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:t.relayerPublicKey33B64u,groupPublicKey33B64u:t.groupPublicKey33B64u,ethereumAddress:t.ethereumAddress,publicCapability:t.publicCapability});return{keyHandle:e.existingKey.keyHandle,publicCapability:n.publicCapability,walletKey:lo({walletId:n.walletId,keyHandle:n.keyHandle,chainTarget:e.chainTarget,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,participantIds:n.participantIds,thresholdOwnerAddress:n.ethereumAddress,thresholdEcdsaPublicKeyB64u:n.groupPublicKey33B64u}),persistedRoleLocalMaterial:ld({authority:e.existingKey.persistedRoleLocalMaterial.authority,materialActivation:e.existingKey.persistedRoleLocalMaterial.materialActivation,publicFacts:n}),runtimePolicyScope:e.existingKey.runtimePolicyScope}}function bF(e){let t=e.durableMaterial.roleLocalPublicFacts,n=lo({walletId:t.walletId,keyHandle:t.keyHandle,chainTarget:t.chainTarget,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,participantIds:t.participantIds,thresholdOwnerAddress:t.ethereumAddress,thresholdEcdsaPublicKeyB64u:t.groupPublicKey33B64u});return{keyHandle:String(n.keyHandle),publicCapability:t.publicCapability,walletKey:n,persistedRoleLocalMaterial:ld({authority:e.signer.authority,materialActivation:e.activation.materialActivation,publicFacts:t}),runtimePolicyScope:e.durableMaterial.runtimePolicyScope}}async function xF(e){let t=e.scope.kind===`exact`?vF({runtimePolicyScope:e.scope.runtimePolicyScope}):null,n=String(e.keyHandle||``).trim(),r=e.scope.kind===`durable_manifest`?null:e.scope.authorityRef,i=(await e.listActiveEcdsaCapabilityManifestsForWallet(e.walletId)).filter(i=>{let a=i.durableMaterial.roleLocalPublicFacts;return i.signer.walletId===e.walletId&&(!r||i.signer.authority.walletAuthMethodId===r.walletAuthMethodId&&String(i.signer.authority.authorityDigest)===String(r.authorityDigest))&&i.signer.scope.targetMemberships.some(t=>Pr(t,e.chainTarget))&&(!n||String(a.keyHandle).trim()===n)&&(!t||String(a.signingRootId).trim()===t.signingRootId)&&(!t||String(a.signingRootVersion||`default`).trim()===t.signingRootVersion)}).map(bF).reduce((t,n)=>{let r=t.find(e=>e.keyHandle===n.keyHandle);if(!r)return t.push(n),t;if(!La(r.publicCapability,n.publicCapability)||!b(r.persistedRoleLocalMaterial.materialActivation,n.persistedRoleLocalMaterial.materialActivation))throw Error(`Email OTP ECDSA has conflicting persisted role-local material for ${z(e.chainTarget)}`);return t},[]);if(i.length===0)return null;if(i.length!==1)throw Error(`Email OTP ECDSA has multiple persisted public capabilities for ${z(e.chainTarget)}`);return yF({existingKey:i[0],chainTarget:e.chainTarget})}function SF(e){return{authMethod:`email_otp`,curve:`ecdsa`,walletId:e.walletId,chainTarget:e.chainTarget,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:xs.thresholdEcdsaSession(e.thresholdSessionId),emailOtpAuthContext:e.emailOtpAuthContext,material:{kind:`worker_handle`,workerSessionId:e.thresholdSessionId}}}function CF(e){let t=String(e.warmThresholdSessionId).trim();if(!t)throw Error(`Email OTP sealed refresh requires a warm threshold session`);return{warmMaterialTarget:{kind:`ecdsa`,thresholdSessionId:t},authorizationThresholdSessionId:wF(e.normalSigning)}}function wF(e){return po(e)}async function TF(e,t){if(e.bootstraps.length!==e.publicationChainTargets.length)throw Error(`Email OTP ECDSA publication returned an unexpected lane count`);let n=pF(),r=[],i=e.bootstraps[0]?.session;if(!i)throw Error(`Email OTP ECDSA publication has no primary session`);for(let[t,n]of e.bootstraps.entries()){let a=e.publicationChainTargets[t],o=n.thresholdEcdsaKeyRef.chainTarget;if(!Pr(o,a))throw Error(`Email OTP ECDSA publication returned ${z(o)} for ${z(a)}`);if(n.session.walletSessionId!==i.walletSessionId||n.session.quotaId!==i.quotaId)throw Error(`Email OTP ECDSA publication returned mismatched Wallet Session authority`);r.push({chainTarget:a,bootstrap:n})}let a={args:e,ports:t},o=await Promise.all(r.map(DF.bind(null,a))),s=o.map(EF);for(let e of o)hF(n,e.timings);let[c,...l]=s;if(!c)throw Error(`Email OTP ECDSA publication did not commit a primary lane`);return{bootstrap:c.bootstrap,authorization:c.authorization,authorizations:[c.authorization,...l.map(e=>e.authorization)],timings:n}}function EF(e){return e.result}async function DF(e,t){let n=pF(),r=t.bootstrap,i=fF(),a=await e.ports.commitEvmFamilyThresholdEcdsaSessions({walletId:e.args.walletId,chainTarget:t.chainTarget,bootstrap:r,source:`email_otp`,authority:e.args.authority,emailOtpAuthContext:e.args.emailOtpAuthContext});return mF(n,`warmCapabilityPersistenceMs`,i),hF(n,await OF({walletId:e.args.walletId,chainTarget:t.chainTarget,bootstrap:a.bootstrap,runtimePolicyScope:e.args.runtimePolicyScope,emailOtpAuthContext:e.args.emailOtpAuthContext,relayerUrl:e.args.relayerUrl,groupId:e.args.groupId},e.ports)),{result:a,timings:n}}async function OF(e,t){let n=pF();if(t.configs.signing.sessionPersistenceMode!==`sealed_refresh_v1`||Hc(e.emailOtpAuthContext)!==`session`)return n;let r=t.getSignerWorkerContext();if(!r)throw Error(`Email OTP sealed refresh requires the dedicated emailOtp worker`);let i=e.bootstrap.thresholdEcdsaKeyRef,a=e.bootstrap.session,o=String(a.thresholdSessionId||``).trim(),s=String(e.relayerUrl||i.relayerUrl||``).trim();if(e.groupId&&e.groupId!==`rfc2409-group2`)throw Error(`Email OTP sealed refresh received an unsupported Shamir group`);let c=Xe;if(!o||!s)throw Error(`Email OTP sealed refresh is missing threshold-session persistence metadata`);let l=SF({walletId:e.walletId,chainTarget:e.chainTarget,walletSessionId:a.walletSessionId,quotaId:a.quotaId,thresholdSessionId:o,emailOtpAuthContext:e.emailOtpAuthContext}),u=a.operationCredential,d=e.runtimePolicyScope,f=be(d),p=String(f?.signingRootId||``).trim(),m=String(f?.signingRootVersion||``).trim(),h=String(i.ecdsaThresholdKeyId||``).trim(),g=String(i.userId||``).trim(),_=String(Pc(e.emailOtpAuthContext)||g).trim(),v=String(Kc(e.emailOtpAuthContext)).trim(),y=gF(i.ethereumAddress),x=String(i.backendBinding?.clientVerifyingShareB64u||``).trim(),S=String(i.thresholdEcdsaPublicKeyB64u||``).trim(),C=String(i.backendBinding?.relayerKeyId||``).trim(),w=i.routerAbEcdsaDerivationNormalSigning,T=i.backendBinding,E=null,D=null;(T?.materialKind===`role_local_worker_handle`||T?.materialKind===`role_local_durable_sealed_ref`)&&(E=T.roleLocalMaterialRef,D=T.publicFacts.publicCapability);let O=Array.isArray(i.participantIds)?i.participantIds.map(e=>Math.floor(Number(e))).filter(e=>Number.isFinite(e)&&e>0):[];if(!h||!g||!_||!v||!y||!x||!C||!w||!D||!E||!O.length||!u.token||!p||!m)throw Error(`Email OTP sealed refresh is missing ECDSA restore metadata`);if(l.material.kind!==`worker_handle`)throw Error(`Email OTP sealed refresh requires worker-owned warm material`);let ee=l.material.workerSessionId,k=i.chainTarget;if(!k)throw Error(`Email OTP sealed refresh requires exact ECDSA chain target`);if(!Pr(k,l.chainTarget))throw Error(`Email OTP sealed refresh chain target drifted from ${z(l.chainTarget)} to ${z(k)}`);let A=String(i.keyHandle||``).trim();if(!A)throw Error(`Email OTP sealed refresh requires exact ECDSA key handle`);let j=E.materialActivation,M=CF({warmThresholdSessionId:ee,normalSigning:w}),te=await H({authority:e.emailOtpAuthContext.authority}),ne=await xF({walletId:e.walletId,chainTarget:e.chainTarget,scope:{kind:`exact`,runtimePolicyScope:d,authorityRef:te},keyHandle:A,listActiveEcdsaCapabilityManifestsForWallet:t.listActiveEcdsaCapabilityManifestsForWallet});if(!ne||!b(ne.persistedRoleLocalMaterial.materialActivation,j))throw Error(`Email OTP sealed refresh material activation was superseded`);let re=fF(),N=await $N({workerCtx:r,target:M.warmMaterialTarget,authorizationThresholdSessionId:M.authorizationThresholdSessionId,transport:{relayerUrl:s,operationCredential:u,groupId:c}}).catch(e=>{let t=e instanceof Error?e.message:String(e||`unknown error`);throw Error(`Email OTP sealed refresh seal failed: ${t}`)});if(mF(n,`signingSessionSealApplyMs`,re),!N?.ok){let e=String(N?.message||N?.code||`unknown error`).trim();throw Error(`Email OTP sealed refresh seal failed: ${e}`)}let ie=String(N.sealedSecretB64u||``).trim(),ae=Math.floor(Number(N.expiresAtMs)||Number(a?.expiresAtMs)||0),oe=Math.floor(Number(N.remainingUses)||Number(a?.remainingUses)||0);if(!ie||ae<=0||oe<0)throw Error(`Email OTP sealed refresh seal returned invalid persistence metadata`);let se=String(N.keyVersion||``).trim();if(!se)throw Error(`Email OTP sealed refresh seal returned no key version`);let ce=Date.now(),le={thresholdSessionId:l.thresholdSessionId,sealedSecretB64u:ie,curve:`ecdsa`,authMethod:`email_otp`,thresholdSessionIds:{ecdsa:l.thresholdSessionId},walletId:String(e.walletId||``).trim(),relayerUrl:s,keyVersion:se,groupId:c,issuedAtMs:ce,expiresAtMs:ae,remainingUses:oe},ue=fF(),de=await xF({walletId:e.walletId,chainTarget:k,scope:{kind:`exact`,runtimePolicyScope:d,authorityRef:te},keyHandle:A,listActiveEcdsaCapabilityManifestsForWallet:t.listActiveEcdsaCapabilityManifestsForWallet});if(!de||!b(de.persistedRoleLocalMaterial.materialActivation,j))throw Error(`Email OTP sealed refresh material activation was superseded`);let fe=de.persistedRoleLocalMaterial.authority;await t.registerSigningSession({...le,ecdsaRestore:{chainTarget:k,source:`email_otp`,signingRootId:p,signingRootVersion:m,provider:Nc(e.emailOtpAuthContext),providerSubjectId:_,emailHashHex:v,authority:fe,emailOtpAuthority:e.emailOtpAuthContext.authority,...d?{runtimePolicyScope:d}:{},keyHandle:A,ecdsaThresholdKeyId:h,ethereumAddress:y,relayerKeyId:C,clientVerifyingShareB64u:x,...S?{thresholdEcdsaPublicKeyB64u:S}:{},participantIds:O,routerAbEcdsaDerivationNormalSigning:w,publicCapability:D,roleLocalMaterialRef:E},updatedAtMs:ce});let pe=await t.readExactSealedSession(o,{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:k}).catch(e=>{let t=e instanceof Error?e.message:String(e||`unknown error`);throw Error(`Email OTP sealed refresh read-back failed: ${t}`)});if(mF(n,`warmCapabilityPersistenceMs`,ue),!pe)throw Error(`Email OTP sealed refresh ${z(k)} record was not durably persisted`);let me=pe.ecdsaRestore?.roleLocalMaterialRef;if(pe.authMethod!==`email_otp`||pe.secretKind!==`signing_session_secret32`||pe.thresholdSessionIds.ecdsa!==o||pe.sealedSecretB64u!==ie||!me||!kF(me,E)||!pe.ecdsaRestore?.chainTarget||!Pr(pe.ecdsaRestore.chainTarget,k))throw Error(`Email OTP sealed refresh read-back record does not match ${z(k)} unlock session`);return n}function kF(e,t){return e.kind===t.kind&&e.durableMaterialRef===t.durableMaterialRef&&e.bindingDigest===t.bindingDigest&&b(e.materialActivation,t.materialActivation)}function AF(e){return{thresholdSessionId:xs.thresholdEcdsaSession(e.thresholdSessionId)}}function jF(e){if(!e)return{kind:`not_requested`};switch(e.kind){case`wallet_custody_cache_absent`:return{kind:`cache_absent`,bootstrap:e.ed25519YaoRecovery};case`ed25519_yao_capability`:return{kind:`capability`,activeClientHandle:e.activeClientHandle,metadata:e.metadata,bootstrap:e.ed25519YaoCapability}}throw Error(`Unsupported Email OTP Ed25519 unlock material`)}async function MF(e){if(e.workerResult){switch(e.workerResult.kind){case`wallet_custody_cache_absent`:return;case`ed25519_yao_capability`:if(!await ty({workerContext:e.workerContext,activeClientHandle:e.workerResult.activeClientHandle}))throw Error(`Email OTP capability unlock local Ed25519 client was unavailable`);return}e.workerResult}}function NF(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}async function PF(e){try{await fr(Qn(e.workerContext),{existingEnvelope:e.unlock.ed25519ExportRootCustody.existingEnvelope,existingFactorSecret:e.unlock.ed25519ExportRootCustody.factorSecret32,walletId:String(e.authorization.record.walletId),walletAuthMethodId:e.walletAuthMethodId,walletSessionId:String(e.authorization.operationCredential.walletSessionId),expiresAtMs:e.authorization.record.expiresAtMs})}catch(e){console.warn(`[SigningEngine][email-otp] unlocked Ed25519 export-root capability was not established:`,e instanceof Error?e.message:String(e||`unknown error`))}}function FF(){return{emailOtpProofVerificationMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0}}function IF(e,t,n){e[t]+=Math.max(0,Math.round(NF()-n))}function LF(e,t){e.signingSessionSealApplyMs+=t.signingSessionSealApplyMs,e.warmCapabilityPersistenceMs+=t.warmCapabilityPersistenceMs}function RF(e,t){let n=String(e||``).trim();if(!n)throw Error(`[SigningEngine][email-otp] ${t} is required`);return n}function zF(e){return{provider:e.identity.provider,providerUserId:RF(e.identity.providerUserId,`Email OTP provider user id`)}}async function BF(e){let t=await e.ownerLaneScopeStores.listWalletAuthMethodsForWallet(String(e.walletId)),n=[];for(let r of t){if(r.kind!==`email_otp`||r.status!==`active`||String(r.walletId)!==String(e.walletId)||String(r.emailHashHex)!==String(e.emailHashHex))continue;let t=r.authority;String(t.walletId)!==String(e.walletId)||t.factor.provider!==e.provider||String(t.factor.providerUserId)!==String(e.providerUserId)||String(t.verifier.emailHashHex)!==String(e.emailHashHex)||n.push(t)}let[r,...i]=n;if(!r)return{kind:`canonical_boundary`};if(i.length>0)throw Error(`Email OTP identity matches more than one active wallet auth method`);return{kind:`selected_v2`,authority:r}}function VF(e){let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(`Selected Email OTP wallet auth method is invalid`);let n=Ha({walletId:e.walletId,provider:e.provider,providerUserId:e.providerUserId,emailHashHex:e.emailHashHex});return{kind:`selected_v2`,authority:{walletId:n.walletId,factor:n.factor,verifier:n.verifier,bindingId:t.value}}}async function HF(e){if(e.authoritySelector.kind===`wallet_auth_method`)return await VF({walletId:e.walletId,walletAuthMethodId:e.authoritySelector.walletAuthMethodId,emailHashHex:e.emailHashHex,provider:e.provider,providerUserId:e.providerUserId});let t=await e.authorityPorts.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind===`missing_selection`)return{kind:`canonical_boundary`};if(t.kind!==`resolved`)throw Error(`Email OTP authority selection is unavailable: ${t.kind}`);if(t.authMethod.kind!==`email_otp`)return await BF({walletId:e.walletId,emailHashHex:e.emailHashHex,provider:e.provider,providerUserId:e.providerUserId,ownerLaneScopeStores:e.authorityPorts.ownerLaneScopeStores});if(t.authMethod.status!==`active`||t.authority.state!==`active`||String(t.authMethod.walletId)!==String(e.walletId)||String(t.authority.walletId)!==String(e.walletId)||String(t.authMethod.walletAuthorityId)!==String(t.authority.authorityId))throw Error(`Email OTP authority selected by the wallet is not active`);let n=t.authMethod,r=String(n.walletAuthMethodId),i=await mp({authMethod:n,stores:e.authorityPorts.ownerLaneScopeStores});if(!Ba(i))throw Error(`Email OTP authority selected by the wallet session has the wrong factor`);let a=await H({authority:i});if(String(a.walletId)!==String(t.authority.walletId)||String(a.walletAuthMethodId)!==r||String(i.verifier.emailHashHex)!==String(e.emailHashHex)||i.factor.provider!==e.provider||String(i.factor.providerUserId)!==String(e.providerUserId))throw Error(`Email OTP authority selected by the wallet session does not match the request`);return{kind:`selected_v2`,authority:i}}function UF(e){return e.source.kind===`selected_v2`&&!e.runtimePolicyScope?{kind:`exact_authority`,authorityRef:e.authorityRef}:e.runtimePolicyScope?{kind:`exact`,runtimePolicyScope:e.runtimePolicyScope,authorityRef:e.authorityRef}:{kind:`durable_manifest`}}function WF(e){if(`persistedExportMaterial`in e&&`explicitExportAuthorization`in e&&e.operation===`export_key`)return e;throw Error(`Email OTP ECDSA export requires prepared operation authorization`)}function GF(e){switch(e.unseal.kind){case`email_otp_grant`:return{kind:`email_otp_unseal_grant`,grant:e.unseal.grant,challengeId:e.unseal.challenge_id};case`not_requested`:throw Error(`Email OTP ECDSA export requires its verified unseal grant`);default:{let t=e.unseal;throw Error(`Unsupported Email OTP ECDSA export unseal state: ${String(t)}`)}}}function KF(e){if(e.operation!==e.routePlan.operation)throw Error(`Email OTP operation does not match its route plan`)}function qF(e){let t=e.existingKey.walletKey;if(String(e.handle.walletId)!==String(t.walletId)||String(e.handle.keyHandle)!==String(t.keyHandle)||e.handle.authSubjectId!==Pc(e.emailOtpAuthContext)||!Pr(e.handle.chainTarget,t.chainTarget)||!Pr(e.handle.chainTarget,e.chainTarget))throw Error(`Email OTP ECDSA export worker handle does not match the resolved lane`)}function JF(e){if(!Bc(e))throw Error(`Email OTP ECDSA export requires single-use authorization`);return e}function YF(e){let t=Ge({ttlMs:e.ttlMs??We.ttlMs,remainingUses:e.remainingUses});return{ttlMs:t.ttlMs,remainingUses:t.remainingUses}}function XF(e){let t=e.bootstrap.session,n=Math.floor(Number(t.expiresAtMs)),r=Math.floor(Number(t.remainingUses)),i=n-Date.now();if(!Number.isSafeInteger(n)||i<1)throw Error(`Email OTP capability unlock returned an invalid server signing budget`);if(r!==e.expectedRemainingUses)throw Error(`Email OTP capability unlock changed the requested signing budget uses`);return{ttlMs:i,remainingUses:r}}function ZF(e){return e.ed25519YaoResult?XF({bootstrap:e.ed25519YaoResult.kind===`wallet_custody_cache_absent`?e.ed25519YaoResult.ed25519YaoRecovery:e.ed25519YaoResult.ed25519YaoCapability,expectedRemainingUses:e.requestedRemainingUses}):YF({ttlMs:e.requestedTtlMs,remainingUses:e.requestedRemainingUses})}function QF(e){if(!e)throw Error(`Email OTP capability recovery requires explicit wallet unlock`);return e}function $F(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:e.request.session_policy}}function eI(e){return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.keyHandle),session_policy:{threshold_session_id:oI(e.thresholdSessionId),wallet_session_mint_id:sI(e.walletSessionMintId),ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.runtimePolicyScope}}}function tI(e,t){if(e.operation!==`wallet_unlock`||!e.ecdsaSession)throw Error(`Email OTP unlock did not return its ECDSA Wallet Session`);if(e.ecdsaSession.kind===`router_ab_ecdsa_credential_free_session_activated_v1`){if(!t)throw Error(`Email OTP combined unlock did not return its exact Wallet Session`);return{kind:`credential_free_ecdsa_session_activation_authorization_v1`,activation:e.ecdsaSession,authorization:t}}return e.ecdsaSession}function nI(e){if(!e)throw Error(`Email OTP unlock did not return its prepared ECDSA Wallet Session`);return e}function rI(e,t,n){let r=e.signers[0];if(!r)throw Error(`Email OTP ECDSA custody continuity is empty`);if(r.walletKey.walletId!==t||r.walletKey.keyHandle!==n)throw Error(`Email OTP ECDSA custody continuity changed the requested wallet key`);for(let t of e.signers)if(t.walletKey.walletId!==r.walletKey.walletId||t.walletKey.keyHandle!==r.walletKey.keyHandle||t.walletKey.ecdsaThresholdKeyId!==r.walletKey.ecdsaThresholdKeyId||t.walletKey.signingRootId!==r.walletKey.signingRootId||t.walletKey.signingRootVersion!==r.walletKey.signingRootVersion||t.walletKey.relayerKeyId!==r.walletKey.relayerKeyId||!La(t.walletKey.publicCapability,r.walletKey.publicCapability)||!Ja(t.activationReceipt,r.activationReceipt)||!xe(t.runtimePolicyScope,r.runtimePolicyScope))throw Error(`Email OTP ECDSA custody continuity conflicts across targets`);return r}function iI(e){let[t,...n]=e.signers;if(!t)throw Error(`Email OTP ECDSA custody continuity is empty`);return[t.chainTarget,...n.map(e=>e.chainTarget)]}async function aI(e){let t=e.restore.ecdsaCustody,n=rI(t.continuity,e.walletId,e.keyHandle);await e.restoreWalletCustodyEcdsaContinuity({authority:e.authority,chainTargets:iI(t.continuity),walletId:n.walletKey.walletId,keyHandle:n.walletKey.keyHandle,ecdsaThresholdKeyId:n.walletKey.ecdsaThresholdKeyId,signingRootId:n.walletKey.signingRootId,signingRootVersion:n.walletKey.signingRootVersion,relayerKeyId:n.walletKey.relayerKeyId,participantIds:n.walletKey.participantIds,publicCapability:n.walletKey.publicCapability,activationReceipt:n.activationReceipt,runtimePolicyScope:n.runtimePolicyScope,readyStateBlobB64u:t.readyStateBlobB64u,publicFacts:t.publicFacts})}function oI(e){let t=T(e);if(!t.ok)throw Error(`Failed to create Email OTP threshold session identity`);return t.value}function sI(e){let t=ft(e);if(!t.ok)throw Error(`Failed to create Email OTP Wallet Session mint identity`);return t.value}function cI(e){if(!e)throw Error(`Email OTP ECDSA bootstrap requires route auth`);return e}function lI(e){switch(e){case Ur:return`sign`;case Kr:return`export`;case Vr:throw Error(`Email OTP wallet unlock requires first-session activation`);case Rr:throw Error(`Email OTP relocation approval cannot create a signing session`);case Br:throw Error(`Email OTP device linking requires linked-device activation`);case`registration`:throw Error(`Email OTP ECDSA registration requires wallet-registration prepare`)}throw Error(`Unsupported Email OTP non-unlock operation`)}function uI(e){switch(e.operation){case`sign`:return{keyHandle:e.keyHandle,authSubjectId:e.authSubjectId,operation:`sign`,chainTarget:e.chainTarget};case`export`:return{keyHandle:e.keyHandle,authSubjectId:e.authSubjectId,operation:`export`,chainTarget:e.chainTarget}}throw e.operation,Error(`Unsupported Email OTP non-unlock handle operation`)}function dI(e){if(e.emailOtpWorkerSessionHandle.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP ECDSA activation requires a threshold ECDSA worker handle`);let t=AF({thresholdSessionId:e.thresholdSessionId}),n=Qa({chainTarget:e.chainTarget,thresholdSessionId:t.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses,runtimePolicyScope:e.runtimePolicyScope});if(Fc(e.emailOtpAuthContext)){let r={source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:t,sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletKey:e.existingKey.walletKey,lanePolicy:n,publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial};return e.authorization.kind===`preauthorized_wallet_unlock`?Wl({...r,preauthorizedSessionActivation:e.authorization.sessionActivation}):Fl({...r,walletSessionRouteAuth:e.authorization.routeAuth})}if(Bc(e.emailOtpAuthContext)){if(e.authorization.kind===`preauthorized_wallet_unlock`)throw Error(`Email OTP operation step-up cannot adopt a reusable Wallet Session`);return Pl({source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:t,sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletSessionRouteAuth:e.authorization.routeAuth,walletKey:e.existingKey.walletKey,lanePolicy:n,publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial})}throw Error(`Email OTP ECDSA activation cannot use a consumed single-use context`)}function fI(e){if(e.emailOtpWorkerSessionHandle.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP ECDSA recovery requires a threshold ECDSA worker handle`);let t=xs.thresholdEcdsaSession(e.thresholdSessionId);return Kl({source:`email_otp`,relayerUrl:e.relayerUrl,sessionIdentity:{kind:`recovered_material_session`,thresholdSessionId:t,materialActivation:e.existingKey.persistedRoleLocalMaterial.materialActivation},sessionKind:`opaque`,sessionBudgetUses:e.remainingUses,runtimePolicy:{kind:`scoped_policy`,scope:e.runtimePolicyScope},emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,walletSessionRouteAuth:e.routeAuth,walletKey:e.existingKey.walletKey,lanePolicy:_o({chainTarget:e.chainTarget,thresholdSessionId:t,ttlMs:e.ttlMs,remainingUses:e.remainingUses,runtimePolicyScope:e.runtimePolicyScope}),publicCapability:e.existingKey.publicCapability,existingRoleLocalMaterial:e.existingKey.persistedRoleLocalMaterial})}function pI(e){switch(e.kind){case`route_authorized`:return{sessionIdentity:e.sessionIdentity,authorization:{kind:`route_authorized`,routeAuth:e.routeAuth}};case`preauthorized_wallet_unlock`:{let t=e.request.session_policy,n=Nl(e.response)?e.response.activation.session:e.response.session;if(t.threshold_session_id!==n.threshold_session_id)throw Error(`Email OTP unlock returned a different prepared ECDSA session identity`);return{sessionIdentity:AF({thresholdSessionId:n.threshold_session_id}),authorization:{kind:`preauthorized_wallet_unlock`,sessionActivation:e.response}}}}}async function mI(e){let t=Dd(e.emailOtpSessionHandle);if(t.action!==`threshold_ecdsa_bootstrap`)throw Error(`Email OTP wallet unlock returned an invalid ECDSA worker handle`);let n=pI(e.primarySession),r={args:e,sessionIdentity:n.sessionIdentity,authorization:n.authorization,emailOtpWorkerSessionHandle:t},i=e.publicationChainTargets[0];if(!i)throw Error(`Email OTP ECDSA activation requires a primary target`);let a=await hI(r,i),o=e.primarySession.kind===`preauthorized_wallet_unlock`?n.authorization:{kind:`route_authorized`,routeAuth:a.session.operationCredential},s={...r,args:{...e,primarySession:{kind:`route_authorized`,sessionIdentity:n.sessionIdentity,routeAuth:a.session.operationCredential}},authorization:o},c=[a,...await Promise.all(e.publicationChainTargets.slice(1).map(hI.bind(null,s)))];if(!a)throw Error(`Email OTP ECDSA activation did not return a primary warm session`);return c}async function hI(e,t){let n=yF({existingKey:e.args.primaryExistingKey,chainTarget:t});return await e.args.ports.provisionThresholdEcdsaSession(dI({existingKey:n,chainTarget:t,thresholdSessionId:e.sessionIdentity.thresholdSessionId,ttlMs:e.args.ttlMs,remainingUses:e.args.remainingUses,runtimePolicyScope:e.args.runtimePolicyScope,relayerUrl:e.args.relayerUrl,emailOtpAuthContext:e.args.emailOtpAuthContext,emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,authorization:e.authorization}))}async function gI(e){return await e.ports.provisionEmailOtpEcdsaExplicitExportSession(Bl({relayerUrl:e.relayerUrl,existingRoleLocalMaterial:e.persistedMaterial,authorization:e.authorization}))}function _I(e){let t=Math.floor(Number(e)||0);if(!Number.isFinite(t)||t<=0)throw Error(`[SigningEngine][email-otp][ecdsa] signing remainingUses is required`);return t}function vI(e){let t=e.runtimePolicyScope;if(!t)throw Error(`Email OTP ECDSA signing refresh requires runtimePolicyScope`);return t}function yI(e){if(e.authority.factor.kind!==`email_otp`||!e.authLane)throw Error(`[SigningEngine][email-otp][ecdsa] committed lane requires Email OTP authority`);return{keyHandle:String(Ia(e.lane.identity.signer.keyHandle)),participantIds:e.lane.identity.signer.key.participantIds.map(Number),emailHashHex:e.authority.verifier.emailHashHex,providerIdentity:{kind:`explicit_provider_user`,provider:e.authority.factor.provider,providerUserId:e.authority.factor.providerUserId}}}async function bI(e){let t=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:R(e.committedLane.lane.identity.signer.walletId),chainTarget:e.chainTarget});if(t.kind!==`resolved`)throw Error(`[SigningEngine][email-otp][ecdsa] signing refresh runtime unavailable: ${t.reason}`);if(!b(t.runtime.materialActivation,e.committedLane.lane.materialActivation))throw Error(`[SigningEngine][email-otp][ecdsa] signing refresh runtime material activation mismatch`);return{...yI(e.committedLane),runtimePolicyScope:vI({runtimePolicyScope:t.runtime.runtimePolicyScope})}}async function xI(e,t){let n=Ur,r=_I(e.remainingUses),i=e.committedLane,a=await bI({committedLane:i,chainTarget:e.chainTarget,resolveCurrentEcdsaCapabilityRuntime:t.resolveCurrentEcdsaCapabilityRuntime}),o=En({authLane:Sn(i.authLane),operation:n});return await t.loginWithEcdsaCapabilityInternal({walletSession:e.walletSession,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:String((await H({authority:i.authority})).walletAuthMethodId)},chainTarget:e.chainTarget,emailOtpAuthPolicy:`session`,emailOtpAuthReason:`sign`,challengeId:e.challengeId,otpCode:e.otpCode,operation:n,keyHandle:a.keyHandle,participantIds:a.participantIds,routePlan:o,emailHashHex:a.emailHashHex,providerIdentity:a.providerIdentity,ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},remainingUses:r,runtimePolicyScope:a.runtimePolicyScope,ed25519YaoRecovery:{kind:`not_requested`}})}async function SI(e,t){let n=e.operation??e.routePlan.operation;KF({operation:n,routePlan:e.routePlan});let r=FF(),i=e.chainTarget,a=e.emailOtpAuthPolicy||t.configs.signing.emailOtp.authPolicy,o=e.emailOtpAuthReason||`login`,s=o===`sign`,c=s&&a===`per_operation`?`single_use`:`session`,l=c===`session`?`session`:a,u=String(e.relayUrl||t.requireRelayUrl()).trim(),d=String(e.groupId||t.requireSigningSessionSealGroupId()).trim(),f=e.remainingUses,p=t.configs.signing.sessionDefaults?.remainingUses,m=Math.min(Math.max(1,Math.floor(Number(f??p??Ue)||1)),Ue),h=Math.max(1,Math.floor(Number(f)||1)),g=He({requestedRemainingUses:m})||(()=>{throw Error(`[SigningEngine][email-otp] unlock session uses are required`)})(),_=s?h:g,v=t.getSignerWorkerContext(),y=e.routePlan,b=e.ecdsaBootstrapAuthorization.kind===`route_plan_auth`?Dt(y):e.ecdsaBootstrapAuthorization.routeAuth,x=b?b.operationCredential:void 0,S=e.runtimePolicyScope;if(!v)throw Error(`Email OTP login requires the dedicated emailOtp worker`);let C=zF({identity:e.providerIdentity}),w=await HF({walletId:e.walletSession.walletId,authoritySelector:e.authoritySelector,emailHashHex:e.emailHashHex,provider:C.provider,providerUserId:C.providerUserId,authorityPorts:t}),T=c===`single_use`?w.kind===`selected_v2`?Mc({policy:l,authority:w.authority,retention:`single_use`}):Wc({policy:l,walletId:R(e.walletSession.walletId),emailHashHex:e.emailHashHex,retention:`single_use`,provider:C.provider,providerUserId:C.providerUserId}):w.kind===`selected_v2`?Mc({policy:l,authority:w.authority,retention:`session`,reason:o}):Wc({policy:l,walletId:R(e.walletSession.walletId),emailHashHex:e.emailHashHex,retention:`session`,reason:o,provider:C.provider,providerUserId:C.providerUserId}),E=UF({source:w,runtimePolicyScope:S,authorityRef:await H({authority:T.authority})}),D=_F({configs:t.configs,chainTarget:i,emailOtpAuthContext:T,...e.publicationChainTargets?{additionalChainTargets:e.publicationChainTargets}:{}}),O=t.publicationPorts,ee=n===Vr,k=String(e.keyHandle||``).trim(),A=await xF({walletId:R(e.walletSession.walletId),chainTarget:i,scope:E,keyHandle:e.keyHandle,listActiveEcdsaCapabilityManifestsForWallet:O.listActiveEcdsaCapabilityManifestsForWallet});if(!A&&!ee)throw Error(`device_link_required: local threshold ECDSA material is unavailable for ${i.kind}:${i.chainId}`);let j=String(A?.keyHandle||k).trim();if(!j)throw Error(`Email OTP ECDSA wallet unlock requires an exact key handle`);let M=A?.runtimePolicyScope||S;if(!M)throw Error(`Email OTP ECDSA wallet unlock requires runtime policy scope`);let te=e.ed25519YaoRecovery.kind===`requested`?await t.loadWalletCustodyEd25519Material({nearAccountId:e.ed25519YaoRecovery.nearAccountId,signerSlot:e.ed25519YaoRecovery.signerSlot}):null,ne=ee?Ge({ttlMs:e.ttlMs??We.ttlMs,remainingUses:_}):null,re=ne?oI(nl(`threshold-ecdsa-login`)):null,N=ne&&re&&A?Rl({publicCapability:A.publicCapability,thresholdSessionId:re,walletSessionMintId:sI(nl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ie=ne&&re?eI({keyHandle:j,thresholdSessionId:re,walletSessionMintId:sI(nl(`wallet-session-mint`)),ttlMs:ne.ttlMs,remainingUses:ne.remainingUses,runtimePolicyScope:M}):null,ae=NF(),oe=n===`export_key`?WF(e):null,se=oe?{walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:u,groupId:d,verification:GF(oe.explicitExportAuthorization),routePlan:y,workerCtx:v,runtimePolicyScope:M,...e.onProgress?{onProgress:e.onProgress}:{}}:{walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:u,groupId:d,verification:{kind:`otp`,...e.challengeId?{challengeId:e.challengeId}:{},otpCode:e.otpCode},routePlan:y,workerCtx:v,runtimePolicyScope:M,...e.onProgress?{onProgress:e.onProgress}:{}},ce=e.ed25519YaoRecovery.kind===`not_requested`?await qt({...se,...ie?{ecdsaSessionHandleBinding:{keyHandle:j,authSubjectId:C.providerUserId,operation:`wallet_unlock`,chainTarget:i},ecdsaSessionPolicy:N?$F({request:N,keyHandle:j}):ie}:{ecdsaSessionHandleBinding:uI({keyHandle:j,authSubjectId:C.providerUserId,operation:lI(y.operation),chainTarget:i})}}):await wn({...se,ecdsaSessionHandleBinding:{keyHandle:j,authSubjectId:C.providerUserId,operation:`wallet_unlock`,chainTarget:i},providerSubject:e.ed25519YaoRecovery.providerSubject,signerSlot:e.ed25519YaoRecovery.signerSlot,nearAccountId:e.ed25519YaoRecovery.nearAccountId,expectedOperationalPublicKey:e.ed25519YaoRecovery.expectedOperationalPublicKey,expectedThresholdSessionId:e.ed25519YaoRecovery.expectedThresholdSessionId,walletCustodyEd25519Material:te||{kind:`absent`},remainingUses:_,ecdsaSessionPolicy:N?$F({request:N,keyHandle:j}):QF(ie)}),le=ce.kind===`wallet_unlock_capabilities`?ce.ecdsa:ce,ue=ce.kind===`wallet_unlock_capabilities`?ce.ed25519Yao:null,de=ce.kind===`wallet_unlock_capabilities`?ce.walletSessionAuthorization:void 0;try{if(le.operation===`wallet_unlock`&&!A){let n=await H({authority:T.authority});await aI({restore:le,walletId:String(e.walletSession.walletId),keyHandle:j,authority:n,restoreWalletCustodyEcdsaContinuity:t.restoreWalletCustodyEcdsaContinuity})}if(!A&&(A=await xF({walletId:R(e.walletSession.walletId),chainTarget:i,scope:E,keyHandle:j,listActiveEcdsaCapabilityManifestsForWallet:O.listActiveEcdsaCapabilityManifestsForWallet}),!A))throw Error(`Email OTP ECDSA custody restore did not publish the canonical key`);let a=N||(ie?Rl({publicCapability:A.publicCapability,thresholdSessionId:ie.session_policy.threshold_session_id,walletSessionMintId:ie.session_policy.wallet_session_mint_id,ttlMs:ie.session_policy.ttl_ms,remainingUses:ie.session_policy.remaining_uses,runtimePolicyScope:M}):null),o=n===`export_key`?JF(T):null,s=n===`export_key`?Md(le.emailOtpSessionHandle):null;s&&o&&qF({handle:s,existingKey:A,chainTarget:i,emailOtpAuthContext:o}),IF(r,`emailOtpProofVerificationMs`,ae);let c=a?tI(le,de):null,l=c?YF({ttlMs:e.ttlMs,remainingUses:_}):ZF({ed25519YaoResult:ue,requestedTtlMs:e.ttlMs,requestedRemainingUses:_});if(ae=NF(),n===`export_key`){if(!s||!o)throw Error(`Email OTP ECDSA export worker handle is unavailable`);let n=WF(e),i=await gI({relayerUrl:u,persistedMaterial:n.persistedExportMaterial,authorization:n.explicitExportAuthorization,ports:t});return IF(r,`ecdsaMaterialRestoreMs`,ae),{kind:`transient_export`,value:{bootstrap:i}}}let f=await mI({primaryExistingKey:A,publicationChainTargets:D,runtimePolicyScope:M,relayerUrl:u,ttlMs:l.ttlMs,remainingUses:l.remainingUses,emailOtpAuthContext:T,emailOtpSessionHandle:le.emailOtpSessionHandle,primarySession:a?{kind:`preauthorized_wallet_unlock`,request:a,response:nI(c)}:{kind:`route_authorized`,sessionIdentity:AF({thresholdSessionId:nl(`threshold-ecdsa-login`)}),routeAuth:cI(x)},ports:t});IF(r,`ecdsaMaterialRestoreMs`,ae);let{bootstrap:p,authorization:m,authorizations:h,timings:g}=await TF({walletId:R(e.walletSession.walletId),publicationChainTargets:D,bootstraps:f,runtimePolicyScope:M,authority:A.persistedRoleLocalMaterial.authority,emailOtpAuthContext:T,relayerUrl:u,groupId:d},O);return ce.kind===`wallet_unlock_capabilities`&&await PF({workerContext:v,unlock:ce,authorization:m,walletAuthMethodId:String(T.authority.bindingId)}),LF(r,g),{kind:`published_signing_session`,value:{recovery:ce.recovery,bootstrap:p,authorization:m,authorizations:h,emailOtpSessionHandle:le.emailOtpSessionHandle,ed25519YaoRecovery:jF(ue),timings:r}}}catch(e){try{await MF({workerResult:ue,workerContext:v})}catch(t){throw AggregateError([e,t],`Email OTP unlock failed and Ed25519 material disposal failed`)}throw e}finally{ce.kind===`wallet_unlock_capabilities`&&ce.ed25519ExportRootCustody.factorSecret32.fill(0)}}async function CI(e,t){if((e.operation??e.routePlan.operation)===`export_key`)throw Error(`Email OTP ECDSA export must use transient export preparation`);let n=await SI(e,t);if(n.kind!==`published_signing_session`)throw Error(`Email OTP ECDSA login did not publish a signing session`);return n.value}async function wI(e,t){let n=await SI(e,t);if(n.kind!==`transient_export`)throw Error(`Email OTP ECDSA export preparation published a signing session`);return n.value}var TI=class extends Error{code=`material_activation_superseded`;constructor(e){super(`Email OTP sealed refresh material activation was superseded ${e.replace(`_`,` `)}`),this.phase=e,this.name=`EmailOtpEcdsaSealedRestoreSupersededError`}};function EI(e){return Mc({policy:`session`,authority:e,retention:`session`,reason:`login`})}function DI(e){if(e.length!==2||e[0]!==1||e[1]!==2)throw Error(`Email OTP sealed refresh requires participantIds [1, 2]`);return[1,2]}async function OI(e){if((await H({authority:e.emailOtpAuthority})).walletId!==e.authority.walletId)throw Error(`Email OTP sealed refresh route authority wallet mismatch`);let t=e.publicCapability,n=t.public_identity,r=jo({walletId:R(e.walletId),chainTarget:e.chainTarget,keyHandle:e.keyHandle,ecdsaThresholdKeyId:go(e.ecdsaThresholdKeyId),signingRootId:vo(e.signingRootId),signingRootVersion:mo(e.signingRootVersion),applicationBindingDigestB64u:t.context.application_binding_digest_b64u,participantIds:DI(e.participantIds),clientParticipantId:1,relayerParticipantId:2,contextBinding32B64u:n.context_binding_b64u,derivationClientSharePublicKey33B64u:n.derivation_client_share_public_key33_b64u,relayerPublicKey33B64u:n.server_public_key33_b64u,groupPublicKey33B64u:n.threshold_public_key33_b64u,ethereumAddress:e.ethereumAddress,publicCapability:t}),i=lo({walletId:r.walletId,keyHandle:r.keyHandle,chainTarget:r.chainTarget,ecdsaThresholdKeyId:r.ecdsaThresholdKeyId,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,participantIds:r.participantIds,thresholdOwnerAddress:r.ethereumAddress,thresholdEcdsaPublicKeyB64u:r.groupPublicKey33B64u});return{keyHandle:String(i.keyHandle),publicCapability:t,walletKey:i,runtimePolicyScope:e.runtimePolicyScope,persistedRoleLocalMaterial:ld({authority:e.authority,materialActivation:e.roleLocalMaterialRef.materialActivation,publicFacts:r})}}function kI(e){let t=String(e.keyVersion||``).trim(),n=String(e.groupId||``).trim();if(!t||!n)throw Error(`Email OTP sealed refresh is missing normalized seal transport metadata`);return{signingSessionSealKeyVersion:t,signingSessionSealGroupId:n}}function AI(e){let{sealedRecord:t}=e,n=kI(t);if(!t.thresholdSessionId||!t.relayerUrl||!t.keyHandle||!t.relayerKeyId||!t.participantIds.length)throw Error(`Email OTP sealed refresh is missing durable ECDSA restore metadata`);return{kind:`sealed_record_restore`,sealedRecord:t,emailOtpAuthContext:EI(t.emailOtpAuthority),authorization:e.authorization,relayerUrl:t.relayerUrl,chainTarget:t.chainTarget,keyHandle:t.keyHandle,...n,...t.runtimePolicyScope?{runtimePolicyScope:t.runtimePolicyScope}:{}}}async function jI(e,t){let n=await e(String(t));if(n.kind!==`resolved`||n.selection.lockState!==`unlocked`||n.selection.walletId!==t||n.selection.walletAuthMethodId!==n.authMethod.walletAuthMethodId||n.authMethod.kind!==`email_otp`||n.authMethod.status!==`active`||n.authMethod.walletId!==t||n.authMethod.walletAuthorityId!==n.authority.authorityId||n.authority.state!==`active`||n.authority.walletId!==t)throw Error(`Email OTP sealed refresh selected authority is invalid`);return{kind:`resolved`,selection:n.selection,authMethod:n.authMethod,authority:n.authority,signerMaterials:n.signerMaterials,exportRoot:n.exportRoot}}function MI(e){if(e.authBinding.kind!==`email_otp`)throw Error(`Email OTP sealed refresh runtime is not Email OTP bound`);return e.authBinding.emailOtpAuthority}function NI(e){if(e.authorizationRead.kind!==`found`)throw Error(`Email OTP sealed refresh requires active Wallet Session authorization: ${e.authorizationRead.kind}`);let{record:t,operationCredential:n}=e.authorizationRead;if(e.runtime.kind!==`exact_ecdsa_sealed_runtime_v1`)throw Error(`Email OTP sealed refresh ECDSA runtime is unavailable`);if(e.sealedRecord.authMethod!==`email_otp`||t.walletId!==R(e.sealedRecord.walletId)||t.authorityId!==e.selected.authority.authorityId||t.authMethodId!==e.selected.authMethod.walletAuthMethodId||t.authorityDigestB64u!==e.selected.authority.authorityDigestB64u||t.authorityRevocationEpoch!==e.selected.authority.revocationEpoch||t.expiresAtMs<=e.nowMs||n.walletSessionId.trim().length===0||n.token.trim().length===0||e.runtime.walletId!==t.walletId||!Pr(e.runtime.chainTarget,e.sealedRecord.chainTarget)||e.runtime.sealedRecord.thresholdSessionId!==e.sealedRecord.thresholdSessionId||e.runtime.sealedRecord.authMethod!==e.selected.authMethod.kind||e.runtime.authBinding.kind!==`email_otp`||e.runtime.authBinding.emailOtpAuthority.bindingId!==e.selected.authMethod.walletAuthMethodId||e.runtime.authBinding.emailOtpAuthority.walletId!==t.walletId)throw Error(`Email OTP sealed refresh Wallet Session authorization mismatch`);return rd({capability:e.capability,selected:e.selected,session:t,operationCredential:n,runtime:e.runtime,nowMs:e.nowMs})}function PI(e){return async t=>await FI({...e,...t})}async function FI(e){let t=e.sealedRecord;if(t.authMethod!==`email_otp`||t.curve!==`ecdsa`)return null;let n=t.roleLocalMaterialRef.materialActivation;return await e.withThresholdEcdsaSigningQueue({queueKey:bd({materialActivation:n}),walletId:R(t.walletId),enabled:!0,task:async()=>await II(e)})}async function II(e){let t=e.sealedRecord,n=t.roleLocalMaterialRef.materialActivation,r=R(t.walletId),i=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:r,chainTarget:t.chainTarget});if(i.kind!==`resolved`||!b(i.runtime.materialActivation,n))throw new TI(`before_rehydrate`);let a=await jI(e.resolveSelectedWalletAuthority,r),o=await e.readExactWalletSessionAuthorization({walletId:r,authorityId:a.authority.authorityId,authMethodId:a.authMethod.walletAuthMethodId}),s=await OI(t),c=await qu({authority:MI(i.runtime),manifest:i.manifest,material:s.persistedRoleLocalMaterial}),l=AI({sealedRecord:t,authorization:NI({sealedRecord:t,authorizationRead:o,selected:a,runtime:i.runtime,capability:c,nowMs:Date.now()})});if(l.authorization.runtime.kind!==`exact_ecdsa_sealed_runtime_v1`)throw Error(`Email OTP sealed refresh requires a sealed ECDSA runtime`);let u=l.authorization.operationCredential;if(Hc(l.emailOtpAuthContext)!==`session`)return null;let d=e.getSignerWorkerContext();if(!d)throw Error(`Email OTP sealed refresh requires the dedicated emailOtp worker`);if(t.expiresAtMs<=Date.now())throw Error(`Email OTP sealed refresh expired sealed record`);if(t.remainingUses<=0)throw Error(`Email OTP sealed refresh exhausted sealed record`);let f=n,p=l.authorization.runtime.sealedRecord.thresholdSessionId,m=wF(t.routerAbEcdsaDerivationNormalSigning),h=await rP({workerCtx:d,target:{kind:`ecdsa`,thresholdSessionId:p},authorizationThresholdSessionId:m,sealedSecretB64u:t.sealedSecretB64u,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs,transport:{relayerUrl:l.relayerUrl,operationCredential:u,signingSessionSealKeyVersion:Bo(l.signingSessionSealKeyVersion),groupId:l.signingSessionSealGroupId},restore:{thresholdSessionId:p,walletId:t.walletId,keyHandle:l.keyHandle,chainTarget:l.chainTarget,authSubjectId:Pc(l.emailOtpAuthContext)}});if(!h.ok)throw Error(h.message||h.code||`Email OTP sealed refresh failed`);if(!l.runtimePolicyScope)throw Error(`Email OTP sealed refresh requires runtime policy scope`);let g=Dd(h.emailOtpSessionHandle),_=await e.provisionThresholdEcdsaSession(fI({existingKey:s,chainTarget:l.chainTarget,thresholdSessionId:p,ttlMs:Math.max(1,h.expiresAtMs-Date.now()),remainingUses:h.remainingUses,runtimePolicyScope:l.runtimePolicyScope,relayerUrl:l.relayerUrl,emailOtpAuthContext:l.emailOtpAuthContext,emailOtpWorkerSessionHandle:g,routeAuth:u})),v=await e.resolveCurrentEcdsaCapabilityRuntime({walletId:R(t.walletId),chainTarget:l.chainTarget});if(v.kind!==`resolved`||!b(v.runtime.materialActivation,f))throw new TI(`before_commit`);let y=await e.commitEvmFamilyThresholdEcdsaSessions({walletId:r,chainTarget:l.chainTarget,bootstrap:_,source:`email_otp`,authority:s.persistedRoleLocalMaterial.authority,emailOtpAuthContext:l.emailOtpAuthContext});return{authorization:rd({capability:c,selected:a,session:y.bootstrap.session.walletSession,operationCredential:y.bootstrap.session.operationCredential,runtime:v.runtime,nowMs:Date.now()}),remainingUses:y.bootstrap.session.remainingUses,expiresAtMs:y.bootstrap.session.expiresAtMs}}var LI=class{constructor(e){this.ports=e}async loginWithEcdsaCapabilityForSigning(e){return await xI(e,{resolveCurrentEcdsaCapabilityRuntime:this.ports.resolveCurrentEcdsaCapabilityRuntime,loginWithEcdsaCapabilityInternal:e=>this.loginWithEcdsaCapabilityInternal(e)})}async loginWithEcdsaCapabilityInternal(e){return await CI(e,{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,loadWalletCustodyEd25519Material:this.ports.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:this.ports.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:this.ports.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:this.ports.provisionEmailOtpEcdsaExplicitExportSession,requireRelayUrl:()=>this.ports.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.ports.runtimeConfig.requireSigningSessionSealGroupId(),ownerLaneScopeStores:this.ports.ownerLaneScopeStores,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,publicationPorts:this.ports.publicationPorts()})}async prepareEcdsaExportCapability(e){return await wI(e,{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,loadWalletCustodyEd25519Material:this.ports.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:this.ports.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:this.ports.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:this.ports.provisionEmailOtpEcdsaExplicitExportSession,requireRelayUrl:()=>this.ports.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.ports.runtimeConfig.requireSigningSessionSealGroupId(),ownerLaneScopeStores:this.ports.ownerLaneScopeStores,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,publicationPorts:this.ports.publicationPorts()})}};async function RI(e,t){let n=await e.resolveSelectedWalletAuthority(String(t));if(n.kind===`missing_selection`)return{kind:`canonical`};if(n.kind!==`resolved`)throw Error(`Email OTP challenge authority selection is unavailable: ${n.kind}`);if(n.authMethod.kind!==`email_otp`)return{kind:`canonical`};if(n.authMethod.status!==`active`||n.authority.state!==`active`||String(n.authMethod.walletId)!==String(t)||String(n.authority.walletId)!==String(t)||String(n.authMethod.walletAuthorityId)!==String(n.authority.authorityId))throw Error(`Email OTP challenge selected authority is not active`);return{kind:`exact`,walletAuthMethodId:String(n.authMethod.walletAuthMethodId)}}function zI(e){return e===`near`?`ed25519`:`ecdsa`}function BI(e){let t=e.authLane;return t?.kind!==`signing_session`&&Rn({kind:`auth_lane_missing`,source:`provided_route_auth`,expectedCurve:zI(e.chain)}),t}async function VI(e,t){let n=t.kind===`wallet_session`?t.walletId:t.walletSession.walletId,r=e.requireRelayUrl(),i=e.getSignerWorkerContext();if(!i)throw Error(`Email OTP signing requires the dedicated emailOtp worker`);let a=await RI(e,n),o=await i.requestWorkerOperation({kind:`emailOtp`,request:{type:`requestEmailOtpChallenge`,timeoutMs:3e4,payload:{relayUrl:r,walletId:String(n),...a.kind===`exact`?{walletAuthMethodId:a.walletAuthMethodId}:{},routePlan:t.routePlan,otpChannel:Gr,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}}}}),s=String(o.challengeId||``).trim();if(!s)throw Error(`Email OTP signing challenge response did not include challengeId`);let c=o.delivery;return{challengeId:s,emailHint:c.emailHint,delivery:c}}async function HI(e,t){let n=UI(e,t);return t.kind===`near_account_challenge`?await VI(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}}):await VI(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n,...t.operationFingerprintDigest?{operationFingerprintDigest:t.operationFingerprintDigest}:{}})}function UI(e,t){switch(t.kind){case`wallet_operation_challenge`:return dr({routeFamily:`operation_step_up`,operation:Ur,operationCredential:t.operationCredential});case`wallet_session_challenge`:case`near_account_challenge`:return e.buildSigningSessionRoutePlan({authLane:BI({authLane:t.authLane,chain:t.chain}),operation:Ur})}}async function WI(e,t){let n=GI(e,t);return t.kind===`near_account_challenge`?await VI(e,{kind:`near_account`,walletSession:t.walletSession,routePlan:n}):t.kind===`wallet_export_challenge`?await VI(e,{kind:`wallet_session`,walletId:t.walletId,routePlan:n}):await VI(e,{kind:`wallet_session`,walletId:t.walletSession.walletId,routePlan:n})}function GI(e,t){switch(t.kind){case`wallet_login_challenge`:return dr({routeFamily:`login`,operation:Kr});case`wallet_session_challenge`:case`near_account_challenge`:return e.buildSigningSessionRoutePlan({authLane:BI({authLane:t.authLane,chain:t.chain}),operation:Kr});case`wallet_export_challenge`:return dr({routeFamily:`login`,operation:Kr})}}function KI(e){return dr({routeFamily:`login`,operation:Kr})}function qI(e){switch(e.material.kind){case`active_capability`:return e.material;case`sealed_custody`:return{kind:`sealed_custody`,materialActivation:e.material.materialActivation,walletCustodyEd25519Material:e.material.walletCustodyEd25519Material,bootstrap:e.material.bootstrap};case`sealed_export_root`:return{kind:`sealed_export_root`,materialActivation:e.material.materialActivation,capability:e.material.capability,exportRootEnvelope:e.material.exportRootEnvelope};default:throw e.material,Error(`Email OTP Ed25519 export material is invalid`)}}async function JI(e,t){let n=e.getSignerWorkerContext();if(!n)throw Error(`Email OTP Ed25519 Yao export requires the dedicated emailOtp worker`);let r=e.requireRelayUrl(),i=t.exportContext.lane.signer.account.wallet.walletId,a=await n.requestWorkerOperation({kind:`emailOtp`,request:{type:`exportEmailOtpEd25519YaoSeed`,timeoutMs:6e4,payload:{relayUrl:r,challengeId:t.challengeId,otpCode:t.otpCode,lane:{walletId:String(i),providerSubjectId:t.exportContext.lane.auth.providerSubjectId,walletAuthMethodId:String(t.exportContext.authorization.record.authMethodId),nearAccountId:String(t.exportContext.lane.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.exportContext.lane.signer.nearEd25519SigningKeyId),signerSlot:t.exportContext.lane.signer.signerSlot},material:qI(t.exportContext)}}});switch(a.kind){case`exported`:return a;case`exported_and_rehydrated`:if(t.exportContext.material.kind!==`sealed_custody`)throw await ty({workerContext:n,activeClientHandle:a.activeClientHandle}).catch(()=>void 0),Error(`Email OTP Ed25519 export returned unexpected recovered material`);if(t.exportContext.authorization.status.status===`exhausted`)return await ty({workerContext:n,activeClientHandle:a.activeClientHandle}),a;try{await t.exportContext.material.activateRecoveredCapability({activation:{activeClientHandle:a.activeClientHandle,metadata:a.metadata,bootstrap:a.bootstrap},operationCredential:t.exportContext.authorization.operationCredential})}catch(e){throw await ty({workerContext:n,activeClientHandle:a.activeClientHandle}).catch(()=>void 0),e}return a;default:throw Error(`Email OTP Ed25519 export returned an invalid result`)}}async function YI(e,t){let n=KI(t.explicitExportAuthorization);return await XI({walletSession:t.walletSession,authority:await H({authority:t.authority}),chainTarget:t.chainTarget,challengeId:t.challengeId,otpCode:t.otpCode,routePlan:n,keyHandle:String(t.publicFacts.keyHandle),participantIds:t.publicFacts.participantIds.map(Number),emailHashHex:t.authority.verifier.emailHashHex,provider:t.authority.factor.provider,providerUserId:t.authority.factor.providerUserId,runtimePolicyScope:t.runtimePolicyScope,relayUrl:e.requireRelayUrl(),getSignerWorkerContext:e.getSignerWorkerContext,prepareEcdsaExportCapability:t.prepareEcdsaExportCapability,persistedMaterial:t.persistedMaterial,explicitExportAuthorization:t.explicitExportAuthorization})}async function XI(e){let t=await e.prepareEcdsaExportCapability({walletSession:e.walletSession,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:String(e.authority.walletAuthMethodId)},chainTarget:e.chainTarget,relayUrl:e.relayUrl,emailOtpAuthPolicy:`per_operation`,emailOtpAuthReason:`sign`,challengeId:e.challengeId,otpCode:e.otpCode,operation:Kr,routePlan:e.routePlan,ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},keyHandle:e.keyHandle,participantIds:e.participantIds,remainingUses:1,emailHashHex:e.emailHashHex,providerIdentity:{kind:`explicit_provider_user`,provider:e.provider,providerUserId:e.providerUserId},runtimePolicyScope:e.runtimePolicyScope,ed25519YaoRecovery:{kind:`not_requested`},persistedExportMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization}),n=e.getSignerWorkerContext();if(!n)throw Error(`Email OTP ECDSA export requires the dedicated signer worker`);return await Ul({getSignerWorkerContext:()=>n},{walletSessionUserId:e.walletSession.walletSessionUserId,exportProvision:t.bootstrap,factorAuthorization:{kind:`email_otp_verified`}})}var ZI=class{constructor(e){this.ports=e}async requestTransactionSigningChallenge(e){return await HI(this.workerPorts(),e)}async requestExportChallenge(e){return await WI(this.workerPorts(),e)}async exportEcdsaKeyWithDurableAuthorization(e){return await YI({getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl},{walletSession:e.walletSession,chainTarget:e.chainTarget,challengeId:e.challengeId,otpCode:e.otpCode,publicFacts:e.publicFacts,runtimePolicyScope:e.runtimePolicyScope,authority:e.authority,persistedMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization,prepareEcdsaExportCapability:this.ports.prepareEcdsaExportCapability})}async exportEd25519YaoSeedWithFreshEmailOtpLane(e){return await JI({getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl},e)}workerPorts(){return{getSignerWorkerContext:this.ports.getSignerWorkerContext,requireRelayUrl:this.ports.requireRelayUrl,requireSigningSessionSealGroupId:this.ports.requireSigningSessionSealGroupId,resolveSelectedWalletAuthority:this.ports.resolveSelectedWalletAuthority,buildSigningSessionRoutePlan:En}}},QI=class{constructor(e){this.ports=e}requireRelayUrl(){let e=String(this.ports.configs.network.relayer?.url||``).trim();if(!e)throw Error(`Missing relayer url (configs.network.relayer.url)`);return e}requireSigningSessionSealGroupId(){return Xe}requireRpId(e){let t=String(this.ports.getRpId()||``).trim();if(!t)throw Error(`${e} requires an RP ID for ECDSA bootstrap`);return t}},$I=class{constructor(e){this.ports=e}async registerSigningSession(e){let t=Kt(e);if(!t)throw Error(`[SigningSessionSealedStore] invalid sealed session record write input`);await this.ports.writeExactSealedSession(t),this.ports.clearEcdsaRestoreCaches()}ecdsaPublicationPorts(){return{configs:this.ports.configs,getSignerWorkerContext:this.ports.getSignerWorkerContext,commitEvmFamilyThresholdEcdsaSessions:this.ports.commitEvmFamilyThresholdEcdsaSessions,registerSigningSession:e=>this.registerSigningSession(e),readExactSealedSession:this.ports.readExactSealedSession,listActiveEcdsaCapabilityManifestsForWallet:this.ports.listActiveEcdsaCapabilityManifestsForWallet}}async persistEcdsaSessionForRefresh(e){await OF({walletId:e.walletId,chainTarget:e.chainTarget,bootstrap:e.bootstrap,runtimePolicyScope:e.runtimePolicyScope,emailOtpAuthContext:e.emailOtpAuthContext,relayerUrl:this.ports.configs.network.relayer?.url||``,groupId:Xe},this.ecdsaPublicationPorts())}},eL=class{constructor(e){this.ports=e}sealedRecordFilter(e){return{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:e.chainTarget}}async recordSessionUseConsumed(e,t){await this.recordSessionPolicyResult({purpose:e,result:t})}async recordSessionMaterialRestored(e,t){await this.recordSessionPolicyResult({purpose:e,result:t})}async recordSessionPolicyResult(e){let t=String(e.purpose.thresholdSessionId||``).trim();if(t){if(!e.result.ok){this.ports.clearEcdsaRestoreCaches();return}await this.ports.updateExactSealedSessionPolicy({thresholdSessionId:t,filter:this.sealedRecordFilter(e.purpose),expiresAtMs:e.result.expiresAtMs,remainingUses:e.result.remainingUses,updatedAtMs:Date.now()}).catch(()=>void 0),this.ports.clearEcdsaRestoreCaches()}}};const tL={listed:0,discovered:0,truncated:0},nL={kind:`completed`,attempted:0,restored:0,deferred:0};var rL=class{restoreCache=Hj();restoreAttempts=Uj();requestedChainTarget=null;constructor(e){this.ports=e}clearCache(){this.restoreCache.clear(),this.restoreAttempts.clear()}async tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return null;let t=String(e.thresholdSessionId||``).trim();if(!t)return null;this.requestedChainTarget=e.chainTarget;let n=t,r=await this.readEcdsaSealedRecord(t);if(!r)return null;if(r.remainingUses<=0||Date.now()>=r.expiresAtMs)return console.debug(`[EmailOtpSession] sealed refresh restore deferred by durable policy hint`,{thresholdSessionId:n,remainingUses:r.remainingUses,expiresAtMs:r.expiresAtMs}),null;if(r.authMethod!==`email_otp`||r.thresholdSessionId!==n)return console.warn(`[EmailOtpSession] sealed refresh restore deferred by store metadata mismatch`,{thresholdSessionId:n,authMethod:r.authMethod,ecdsaThresholdSessionId:r.thresholdSessionId}),null;let i=await this.ports.acquireSigningSessionRestoreLease({thresholdSessionId:n,authMethod:`email_otp`,curve:`ecdsa`,chainTarget:r.chainTarget}).catch(()=>null);if(!i){let e=`lease-unavailable:${n}`;return this.ports.shouldLogDiagnostic(e)&&console.debug(`[EmailOtpSession] sealed refresh restore deferred; lease unavailable`,{thresholdSessionId:n}),null}try{console.debug(`[EmailOtpSession] sealed refresh restore started`,{thresholdSessionId:n});let e=await this.ports.restoreEcdsaSigningSessionMaterialFromSealedRecord({sealedRecord:r}).catch(e=>(console.warn(`[EmailOtpSession] sealed refresh restore failed`,{thresholdSessionId:n,error:e instanceof Error?e.message:String(e||`unknown error`)}),null));if(!e)return null;console.debug(`[EmailOtpSession] sealed refresh restore succeeded`,{thresholdSessionId:n,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs});let t={ok:!0,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs};return await this.ports.recordSessionMaterialRestored({thresholdSessionId:n,chainTarget:r.chainTarget},t),t}finally{await this.ports.releaseSigningSessionRestoreLease(i).catch(()=>void 0)}}async discoverPersistedSessionsForWallet(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return{...tL};let t=String(R(e.walletId)||``).trim();if(!t)return{...tL};let n=await Gj({...e,walletId:t},{listExactSealedSessionsForWallet:({walletId:e,...t})=>this.ports.listExactSealedSessionsForWallet({walletId:e,filter:t}),onListError:({walletId:e,error:t})=>{console.warn(`[EmailOtpSession] wallet-scoped sealed ECDSA discovery list failed`,{walletId:e,error:t instanceof Error?t.message:String(t||`unknown error`)})}});if(!n.listed){let e=`wallet-sealed-ecdsa-empty:${t}`;this.ports.shouldLogDiagnostic(e)&&console.debug(`[EmailOtpSession] no durable sealed ECDSA records for wallet discovery`,{walletId:t})}return n}async restorePersistedSessionForSigning(e){if(this.ports.sessionPersistenceMode!==`sealed_refresh_v1`)return{...nL};let t=String(R(e.walletId)||``).trim();return t?await Wj({...e,walletId:t},{listExactSealedSessionsForWallet:({walletId:e,...t})=>t.curve===`ecdsa`?this.ports.listExactSealedSessionsForWallet({walletId:e,filter:{authMethod:t.authMethod,curve:`ecdsa`,chainTarget:t.chainTarget}}):Promise.resolve([]),restoreSealedRecordForWallet:e=>this.restoreEmailOtpSealedRecordForWallet(e),cache:this.restoreCache,onListError:({walletId:e,target:t,reason:n,error:r})=>{console.warn(`[EmailOtpSession] signing-intent sealed ECDSA restore list failed`,{walletId:e,target:t,reason:n,error:r instanceof Error?r.message:String(r||`unknown error`)})}}):{...nL}}async readEcdsaSealedRecord(e){let t=this.requestedChainTarget;return t?await this.readEcdsaSealedRecordForTarget(e,t):null}async readEcdsaSealedRecordForTarget(e,t){let n=await this.ports.readExactSealedSession(e,{authMethod:`email_otp`,curve:`ecdsa`,chainTarget:t}).catch(n=>(console.warn(`[EmailOtpSession] sealed refresh ECDSA read failed`,{thresholdSessionId:e,chain:t.kind,error:n instanceof Error?n.message:String(n||`unknown error`)}),null));if(!n)return null;let r=Dj(n);return r.kind===`accepted`&&r.record.authMethod===`email_otp`&&r.record.curve===`ecdsa`?r.record:null}async restoreEmailOtpSealedRecordForWallet(e){return e.purpose.authMethod!==`email_otp`||e.purpose.curve!==`ecdsa`||e.record.authMethod!==`email_otp`||e.record.curve!==`ecdsa`?`deferred`:await this.restoreEcdsaSealedRecordForWallet({...e,record:e.record,purpose:e.purpose})}async restoreEcdsaSealedRecordForWallet(e){let t=String(e.purpose.thresholdSessionId||``).trim();if(!t||e.record.authMethod!==e.purpose.authMethod||e.record.thresholdSessionId!==t||!Pr(e.record.chainTarget,e.purpose.chainTarget)||!b(e.record.roleLocalMaterialRef.materialActivation,e.purpose.materialActivation))return`deferred`;let n=[e.walletId,e.purpose.authMethod,e.purpose.curve,z(e.purpose.chainTarget),Ed(e.purpose.materialActivation),t].join(`:`);if(this.restoreAttempts.hasCompleted(n))return`ready`;let r=this.restoreAttempts.getInFlight(n);if(r)return await r,this.restoreAttempts.hasCompleted(n)?`ready`:`deferred`;let i=`deferred`,a=(async()=>{let r=await this.ports.restoreEcdsaSigningSessionMaterialFromSealedRecord({sealedRecord:e.record});r&&(await this.ports.recordSessionMaterialRestored({thresholdSessionId:t,chainTarget:e.record.chainTarget},{ok:!0,remainingUses:r.remainingUses,expiresAtMs:r.expiresAtMs}),this.restoreAttempts.rememberCompleted(n),i=`restored`)})().catch(n=>{console.warn(`[EmailOtpSession] wallet-scoped sealed ECDSA restore failed`,{walletId:e.walletId,thresholdSessionId:t,error:n instanceof Error?n.message:String(n||`unknown error`)})}).finally(()=>{this.restoreAttempts.clearInFlight(n)});return this.restoreAttempts.setInFlight(n,a),await a,i}};async function iL(e){let t=sL(e.target);return t?await e.readWarmSessionStatusFromWorker(t).catch(e=>({ok:!1,code:`worker_error`,message:e instanceof Error?e.message:String(e||`Email OTP worker error`)})):{ok:!1,code:`invalid_args`,message:`Missing thresholdSessionId`}}async function aL(e){let t=sL(e.target);if(!t)return{ok:!1,code:`invalid_args`,message:`Missing thresholdSessionId`};try{let n=await e.consumeWarmSessionUsesFromWorker({target:t,...typeof e.uses==`number`?{uses:e.uses}:{}});if(!n.ok&&n.code===`not_found`&&e.ecdsaPurpose){let r=await e.tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e.ecdsaPurpose);if(r?.ok){let n=await e.consumeWarmSessionUsesFromWorker({target:t,...typeof e.uses==`number`?{uses:e.uses}:{}});return e.ecdsaPurpose&&await e.recordSessionUseConsumed(e.ecdsaPurpose,n),n}return r&&e.ecdsaPurpose&&await e.recordSessionMaterialRestored(e.ecdsaPurpose,r),n}return e.ecdsaPurpose&&await e.recordSessionUseConsumed(e.ecdsaPurpose,n),n}catch(e){return{ok:!1,code:`worker_error`,message:e instanceof Error?e.message:String(e||`Email OTP worker error`)}}}async function oL(e){let t=sL(e.target);t&&await e.clearVolatileWarmSessionMaterialFromWorker(t).catch(()=>void 0)}function sL(e){let t=String(e.thresholdSessionId||``).trim();return t?e.kind===`ecdsa`?{kind:`ecdsa`,thresholdSessionId:t}:{kind:`ed25519_yao`,thresholdSessionId:t,materialActivation:e.materialActivation}:null}function cL(e){return{async readStatus(t){return await eP({worker:e.worker,target:t})},async consumeUses(t){return await tP({worker:e.worker,target:t.target,...typeof t.uses==`number`?{uses:t.uses}:{}})},async clearMaterial(t){await nP({worker:e.worker,target:t})}}}var lL=class{constructor(e){this.ports=e}async readWarmSessionStatusOnly(e){return await iL({target:e,readWarmSessionStatusFromWorker:e=>this.ports.workerClient.readStatus(e)})}async consumeWarmSessionUses(e){return await aL({target:uL(e),...typeof e.uses==`number`?{uses:e.uses}:{},consumeWarmSessionUsesFromWorker:e=>this.ports.workerClient.consumeUses(e),ecdsaPurpose:fj(e.purpose),tryRestoreEcdsaWarmSessionStatusFromSealedRecord:e=>this.ports.sealedRestoreOrchestrator.tryRestoreEcdsaWarmSessionStatusFromSealedRecord(e),recordSessionUseConsumed:(e,t)=>this.ports.sealedRefreshPolicy.recordSessionUseConsumed(e,t),recordSessionMaterialRestored:(e,t)=>this.ports.sealedRefreshPolicy.recordSessionMaterialRestored(e,t)})}async clearVolatileWarmSessionMaterial(e){await oL({target:e,clearVolatileWarmSessionMaterialFromWorker:e=>this.ports.workerClient.clearMaterial(e)})}};function uL(e){let t=dj(e);return e.purpose.curve===`ecdsa`?{kind:`ecdsa`,thresholdSessionId:t}:{kind:`ed25519_yao`,thresholdSessionId:t,materialActivation:e.purpose.materialActivation}}var dL=class{sealedRefreshDiagnosticLogAtMsByKey=new Map;sealedRefreshPolicy;sealedRestoreOrchestrator;runtimeConfig;sealedSessionRegistry;warmSessionRuntime;exportRecoveryRuntime;ecdsaLifecycleRuntime;constructor(e){this.runtimeConfig=new QI({configs:e.configs,getRpId:e.getRpId}),this.sealedSessionRegistry=new $I({configs:e.configs,getSignerWorkerContext:e.getSignerWorkerContext,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,listActiveEcdsaCapabilityManifestsForWallet:e.listActiveEcdsaCapabilityManifestsForWallet,writeExactSealedSession:e.writeExactSealedSession,readExactSealedSession:e.readExactSealedSession,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.ecdsaLifecycleRuntime=new LI({configs:e.configs,getSignerWorkerContext:e.getSignerWorkerContext,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,provisionEmailOtpEcdsaExplicitExportSession:e.provisionEmailOtpEcdsaExplicitExportSession,runtimeConfig:this.runtimeConfig,ownerLaneScopeStores:e.ownerLaneScopeStores,resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime,publicationPorts:()=>this.sealedSessionRegistry.ecdsaPublicationPorts()}),this.exportRecoveryRuntime=new ZI({getSignerWorkerContext:e.getSignerWorkerContext,requireRelayUrl:()=>this.runtimeConfig.requireRelayUrl(),requireSigningSessionSealGroupId:()=>this.runtimeConfig.requireSigningSessionSealGroupId(),resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,prepareEcdsaExportCapability:e=>this.ecdsaLifecycleRuntime.prepareEcdsaExportCapability(e)});let t=PI({withThresholdEcdsaSigningQueue:e.withThresholdEcdsaSigningQueue,getSignerWorkerContext:e.getSignerWorkerContext,resolveSelectedWalletAuthority:e.resolveSelectedWalletAuthority,readExactWalletSessionAuthorization:e.readExactWalletSessionAuthorization,provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,commitEvmFamilyThresholdEcdsaSessions:e.commitEvmFamilyThresholdEcdsaSessions,resolveCurrentEcdsaCapabilityRuntime:e.resolveCurrentEcdsaCapabilityRuntime}),n=cL({worker:e.signerWorkerManager});this.sealedRefreshPolicy=new eL({updateExactSealedSessionPolicy:e.updateExactSealedSessionPolicy,clearEcdsaRestoreCaches:()=>this.clearEcdsaRestoreCaches()}),this.sealedRestoreOrchestrator=new rL({sessionPersistenceMode:e.configs.signing.sessionPersistenceMode,listExactSealedSessionsForWallet:e.listExactSealedSessionsForWallet,readExactSealedSession:e.readExactSealedSession,acquireSigningSessionRestoreLease:e.acquireSigningSessionRestoreLease,releaseSigningSessionRestoreLease:e.releaseSigningSessionRestoreLease,readWarmSessionStatusFromWorker:e=>n.readStatus({kind:`ecdsa`,thresholdSessionId:e}),restoreEcdsaSigningSessionMaterialFromSealedRecord:e=>t(e),recordSessionMaterialRestored:(e,t)=>this.sealedRefreshPolicy.recordSessionMaterialRestored(e,t),shouldLogDiagnostic:e=>this.shouldLogSealedRefreshDiagnostic(e)}),this.warmSessionRuntime=new lL({workerClient:n,sealedRefreshPolicy:this.sealedRefreshPolicy,sealedRestoreOrchestrator:this.sealedRestoreOrchestrator})}async persistEcdsaSessionForRefresh(e){await this.sealedSessionRegistry.persistEcdsaSessionForRefresh(e)}clearEcdsaRestoreCaches(){this.sealedRestoreOrchestrator.clearCache()}shouldLogSealedRefreshDiagnostic(e,t=Date.now()){let n=String(e||``).trim();return!n||t-(this.sealedRefreshDiagnosticLogAtMsByKey.get(n)||0)<6e4?!1:(this.sealedRefreshDiagnosticLogAtMsByKey.set(n,t),!0)}async discoverPersistedSessionsForWallet(e){return await this.sealedRestoreOrchestrator.discoverPersistedSessionsForWallet(e)}async restorePersistedSessionForSigning(e){return await this.sealedRestoreOrchestrator.restorePersistedSessionForSigning(e)}async readWarmSessionStatusOnly(e){return await this.warmSessionRuntime.readWarmSessionStatusOnly(e)}async consumeWarmSessionUses(e){return await this.warmSessionRuntime.consumeWarmSessionUses(e)}async clearVolatileWarmSessionMaterial(e){await this.warmSessionRuntime.clearVolatileWarmSessionMaterial(e)}async requestTransactionSigningChallenge(e){return await this.exportRecoveryRuntime.requestTransactionSigningChallenge(e)}async requestExportChallenge(e){return await this.exportRecoveryRuntime.requestExportChallenge(e)}async exportEcdsaKeyWithDurableAuthorization(e){return await this.exportRecoveryRuntime.exportEcdsaKeyWithDurableAuthorization(e)}async exportEd25519YaoSeedWithFreshEmailOtpLane(e){return await this.exportRecoveryRuntime.exportEd25519YaoSeedWithFreshEmailOtpLane(e)}async loginWithEcdsaCapabilityForSigning(e){return await this.ecdsaLifecycleRuntime.loginWithEcdsaCapabilityForSigning(e)}async loginWithEcdsaCapabilityInternal(e){return await this.ecdsaLifecycleRuntime.loginWithEcdsaCapabilityInternal(e)}};function fL(e){let t=new dL({configs:e.seamsWebConfigs,signerWorkerManager:e.signerWorkerManager,getRpId:()=>e.touchIdPrompt.getRpId(),getSignerWorkerContext:e.getSignerWorkerContext,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),ownerLaneScopeStores:{getWalletAuthMethodV2:G.getWalletAuthMethodV2.bind(G),listWalletAuthMethodsForWallet:G.listWalletAuthMethodsForWallet.bind(G),getWalletPasskeyAuthenticator:G.getWalletPasskeyAuthenticator.bind(G)},readExactWalletSessionAuthorization:K.readExactWithOperationCredential.bind(K),provisionThresholdEcdsaSession:e.provisionThresholdEcdsaSession,withThresholdEcdsaSigningQueue:t=>pd({queueByKey:e.thresholdEcdsaSigningQueueByKey,...t}),provisionEmailOtpEcdsaExplicitExportSession:e.provisionEmailOtpEcdsaExplicitExportSession,commitEvmFamilyThresholdEcdsaSessions:t=>uF({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,bootstrapStore:e.ecdsaBootstrapStore,persistEcdsaRoleLocalReadyRecord:e.persistEcdsaRoleLocalReadyRecord,ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap:t=>Gu(e.ensureSealedRefreshStartupParity,t)},t),listActiveEcdsaCapabilityManifestsForWallet:t=>e.listActiveEcdsaCapabilityManifestsForWallet(String(t)),resolveCurrentEcdsaCapabilityRuntime:e.resolveActiveEcdsaCapabilityRuntime,writeExactSealedSession:e.sealedSessionStore.writeExactSealedSession,readExactSealedSession:e.sealedSessionStore.readExactSealedSession,listExactSealedSessionsForWallet:e.sealedSessionStore.listExactSealedSessionsForWallet,acquireSigningSessionRestoreLease:e.sealedSessionStore.acquireSigningSessionRestoreLease,releaseSigningSessionRestoreLease:e.sealedSessionStore.releaseSigningSessionRestoreLease,updateExactSealedSessionPolicy:e.sealedSessionStore.updateExactSealedSessionPolicy}),n=SP({base:e.passkeyMpcSession,secondary:{readWarmSessionStatusOnly:e=>t.readWarmSessionStatusOnly({kind:`ecdsa`,thresholdSessionId:String(e)}),clearVolatileWarmSessionMaterial:e=>t.clearVolatileWarmSessionMaterial({kind:`ecdsa`,thresholdSessionId:String(e.scope.thresholdSessionId)})}});return{emailOtpSessions:t,touchConfirm:e.baseTouchConfirm,passkeyMpcSession:n}}function pL(e){return fL({resolveActiveEcdsaCapabilityRuntime:jv,seamsWebConfigs:e.seamsWebConfigs,touchIdPrompt:e.touchIdPrompt,signerWorkerManager:e.signerWorkerManager,ecdsaBootstrapStore:e.stores.walletProfileAndSignerRecords.ecdsaBootstrapStore,sealedSessionStore:e.sealedSigningSessionStore,baseTouchConfirm:e.baseTouchConfirm,passkeyMpcSession:e.passkeyMpcSession,getSignerWorkerContext:()=>e.getEnginePorts().walletSessionActivationDeps.getSignerWorkerContext(),provisionThresholdEcdsaSession:t=>e.getEnginePorts().tempoSigningDeps.provisionThresholdEcdsaSession(t),provisionEmailOtpEcdsaExplicitExportSession:t=>Vl({queueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,activationDeps:e.getEnginePorts().walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord},t),thresholdEcdsaBootstrapQueueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:e.thresholdEcdsaSigningQueueByKey,loadWalletCustodyEd25519Material:e.loadWalletCustodyEd25519Material,restoreWalletCustodyEcdsaContinuity:e.restoreWalletCustodyEcdsaContinuity,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord,listActiveEcdsaCapabilityManifestsForWallet:e.listActiveEcdsaCapabilityManifestsForWallet,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity})}function mL(e){return{passkeyPublicDeps:VP({seamsWebConfigs:e.seamsWebConfigs,credentialStore:e.stores.recoveryAndDeviceLinking.credentialStore,touchIdPrompt:e.touchIdPrompt,passkeyMpcSession:e.passkeyMpcSession,warmSigning:e.warmSigning,thresholdEcdsaBootstrapQueueByWallet:e.thresholdEcdsaBootstrapQueueByWallet,ensureSealedRefreshStartupParity:e.ensureSealedRefreshStartupParity,walletSessionActivationDeps:e.enginePorts.walletSessionActivationDeps,persistEcdsaRoleLocalReadyRecord:e.runtimePorts.storage.persistEcdsaRoleLocalReadyRecord}),warmCapabilitiesPublicDeps:HP({seamsWebConfigs:e.seamsWebConfigs,bootstrapStore:e.stores.walletProfileAndSignerRecords.ecdsaBootstrapStore,passkeyMpcSession:e.passkeyMpcSession,warmSigning:e.warmSigning,walletSessionActivationDeps:e.enginePorts.walletSessionActivationDeps,signingSessionCoordinator:e.enginePorts.signingSessionCoordinator})}}function hL(e){return e.session.chainTargets.length===e.walletKeys.length?e.walletKeys.every((t,n)=>{let r=e.session.chainTargets[n];return r!==void 0&&z(r)===z(t.chainTarget)}):!1}function gL(e){let t=e.walletKey;return{keyScope:t.keyScope,chainTarget:t.chainTarget,walletId:t.walletId,evmFamilySigningKeySlotId:t.evmFamilySigningKeySlotId,keyHandle:t.keyHandle,ecdsaThresholdKeyId:t.ecdsaThresholdKeyId,signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,thresholdEcdsaPublicKeyB64u:t.thresholdEcdsaPublicKeyB64u,thresholdOwnerAddress:t.thresholdOwnerAddress,relayerKeyId:t.relayerKeyId,relayerVerifyingShareB64u:t.relayerVerifyingShareB64u,participantIds:t.participantIds,publicCapability:t.publicCapability,roleLocalMaterialRef:e.materialRef,ecdsaRoleLocalPublicFacts:e.publicFacts}}async function _L(e){if(!hL({session:e.session,walletKeys:e.walletKeys}))throw Error(`[SigningEngine] strict ECDSA registration requires one family activation projected to every wallet target`);let t=R(e.walletId);if(e.session.authority.walletId!==t)throw Error(`[SigningEngine] strict ECDSA registration authority does not match the target wallet`);let n=e.session.roleLocalMaterial,r=Lo({kind:`ecdsa_role_local_persisted_material_ref_v1`,durableMaterialRef:n.durableMaterialRef,bindingDigest:n.bindingDigest,materialActivation:e.session.materialActivation}),[i,...a]=e.walletKeys.map(n=>gL({walletKey:n,publicFacts:jo({walletId:t,chainTarget:n.chainTarget,keyHandle:n.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,applicationBindingDigestB64u:e.session.bootstrap.applicationBindingDigestB64u,clientParticipantId:1,relayerParticipantId:2,participantIds:n.participantIds,contextBinding32B64u:e.session.clientPublicFacts.contextBinding32B64u,derivationClientSharePublicKey33B64u:e.session.clientPublicFacts.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:e.session.clientPublicFacts.relayerPublicKey33B64u,groupPublicKey33B64u:e.session.clientPublicFacts.groupPublicKey33B64u,ethereumAddress:e.session.clientPublicFacts.ethereumAddress,publicCapability:e.session.publicCapability}),materialRef:r}));if(!i)throw Error(`[SigningEngine] strict ECDSA registration did not persist any wallet keys`);return[i,...a]}function vL(e){let t=e.clientExtensionResults.prf?.results?.first;if(typeof t!=`string`||!t)throw Error(`the replacement passkey returned no wallet-custody PRF output`);let n=F(t);if(n.length!==32)throw Error(`the replacement passkey returned an invalid wallet-custody PRF output`);return Uint8Array.from(n).buffer}function yL(e){let t=m(String(e.rawId||e.id||``).trim());if(!t.ok)throw Error(`replacement passkey credential id ${t.error.message}`);return{registration:e,credentialIdB64u:t.value,factorSecret:vL(e)}}function bL(e,t){let n=null;for(let r of e)if(r.signer.authority.authorityDigest===t){if(n&&n.durableMaterial.roleLocalBinding.keyHandle!==r.durableMaterial.roleLocalBinding.keyHandle)throw Error(`[SigningEngine][near] Email OTP ECDSA session identity is ambiguous`);n=r}if(!n)throw Error(`[SigningEngine][near] Email OTP ECDSA capability is unavailable`);return n}function xL(e){let t=ft(nl(`wallet-session-mint`));if(!t.ok)throw Error(`[SigningEngine][near] failed to generate an ECDSA Wallet Session mint id`);return{kind:`router_ab_ecdsa_post_registration_session_activation_policy_v1`,key_handle:String(e.manifest.durableMaterial.roleLocalBinding.keyHandle),session_policy:{threshold_session_id:xs.thresholdEcdsaSession(nl(`threshold-ecdsa-login`)),wallet_session_mint_id:t.value,ttl_ms:We.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.manifest.durableMaterial.runtimePolicyScope}}}async function SL(e,t){if(e.selectedFactorAuthority.factor.kind!==`email_otp`)throw Error(`Email OTP restore requires an Email OTP factor authority`);if(xa(e.selectedAuthority))return{kind:`absent`};let n=await H({authority:e.selectedFactorAuthority}),r=bL(await kv(String(e.selectedAuthority.walletId)),String(n.authorityDigest));return{kind:`required`,sessionHandleBinding:{operation:`wallet_unlock`,keyHandle:String(r.durableMaterial.roleLocalBinding.keyHandle),authSubjectId:e.selectedFactorAuthority.factor.providerUserId,chainTarget:r.signer.scope.targetMemberships[0]},runtimePolicyScope:r.durableMaterial.runtimePolicyScope,sessionPolicy:xL({manifest:r,remainingUses:t})}}function CL(e){let t=uo(e.activation.public_capability.material_activation),n=0;for(let r of e.walletSession.capabilitySubjects)r.kind===`sign`&&r.keyFamily===`ecdsa_secp256k1`&&b(r.materialActivation,t)&&(n+=1);return n===1}async function wL(e){let t=e.response.session,n=e.authorization.record,r=e.authorization.operationCredential;if(String(n.walletId)!==String(e.walletId)||String(e.response.public_capability.client_id)!==String(n.walletId)||n.authorizationId!==t.authorization_id||n.quotaId!==t.quota_id||n.expiresAtMs!==t.expires_at_ms||r.walletSessionId!==t.wallet_session_id||!CL({walletSession:n,activation:e.response}))throw Error(`[SigningEngine][near] refreshed ECDSA exact Wallet Session is inconsistent`);await K.writeExactWithOperationCredential({record:n,operationCredential:r})}async function TL(e){return await os(G,e)}async function EL(){return null}const DL={getWalletAuthMethodV2:e=>G.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>G.listWalletAuthMethodsForWallet(e),getWalletPasskeyAuthenticator:EL,readEmailOtpProviderSubjectForWallet:TL};async function OL(e){let t=(await G.listWalletAuthMethodsV2ForWallet(String(e.walletId))).filter(t=>t.kind===B.passkey&&t.status===`active`&&t.walletId===e.walletId&&String(t.rpId)===e.rpId&&String(t.credentialIdB64u)===e.credentialIdB64u),[n]=t;return t.length!==1||!n||n.kind!==B.passkey?null:await H({authority:{walletId:n.walletId,factor:{kind:B.passkey,credentialIdB64u:n.credentialIdB64u},verifier:{kind:`webauthn`,rpId:n.rpId},bindingId:n.walletAuthMethodId}})}function kL(e){let t=Wa({kind:`wallet_auth_authority_ref`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,authorityDigest:e.authorityDigestB64u});if(!t)throw Error(`[SigningEngine][near] exact Email OTP authority digest is invalid`);return t}async function AL(e){let t=await mp({authMethod:e.authMethod,stores:DL});if(!Ba(t)||t.walletId!==e.authMethod.walletId||t.bindingId!==e.authMethod.walletAuthMethodId||t.verifier.emailHashHex!==e.emailHashHex||t.factor.providerUserId!==e.providerSubject)throw Error(`[SigningEngine][near] exact Email OTP factor authority changed`);return t}function jL(e){let t=e.auth;switch(t.kind){case B.emailOtp:return{kind:e.kind,signer:e.signer,auth:t,thresholdSessionId:e.thresholdSessionId};case B.passkey:throw Error(`[SigningEngine][near] Email OTP material identity is required`);default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}async function ML(e){if(String(e.identity.signer.account.wallet.walletId)!==String(e.walletId)||String(e.identity.signer.account.nearAccountId)!==String(e.nearAccountId)||e.identity.signer.signerSlot!==e.signerSlot)return null;let t;try{t=await G.resolveSelectedWalletAuthority(String(e.walletId))}catch{return null}if(t.kind!==`resolved`)return null;let{selection:n,authMethod:r,authority:i}=t,a=i.signerActivations.ed25519;if(n.lockState!==`unlocked`||n.walletId!==e.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||r.kind!==B.emailOtp||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==i.authorityId||i.state!==`active`||i.walletId!==e.walletId||!a||a.signer.walletId!==e.walletId||!b(a.materialActivation,e.materialActivation))return null;try{let t=await H({authority:await AL({authMethod:r,emailHashHex:r.emailHashHex,providerSubject:e.identity.auth.providerSubjectId})});return t.walletId!==e.walletId||t.walletAuthMethodId!==r.walletAuthMethodId?null:t}catch{return null}}async function NL(e){let t=e.bootstrap.session,n=e.exactAuthorization?.record??await K.readExact(t.walletSessionId);if(!n||n.kind!==`active_wallet_session_v1`||n.walletId!==e.walletId||n.authorizationId!==t.authorizationId||n.quotaId!==t.quotaId||n.expiresAtMs<=Date.now())throw Error(`[SigningEngine][near] exact Email OTP activation session is unavailable`);let[r,i]=await Promise.all([G.getWalletAuthMethodV2(String(n.authMethodId)),G.getWalletAuthority(String(n.authorityId))]);if(!r||r.kind!==`email_otp`||r.status!==`active`||r.walletId!==e.walletId||r.walletAuthorityId!==n.authorityId||r.emailHashHex!==e.emailHashHex||!i||i.state!==`active`||i.walletId!==e.walletId||i.authorityId!==n.authorityId||i.authorityDigestB64u!==n.authorityDigestB64u||i.revocationEpoch!==n.authorityRevocationEpoch)throw Error(`[SigningEngine][near] exact Email OTP activation authority is unavailable`);let a=kL({walletId:e.walletId,walletAuthMethodId:r.walletAuthMethodId,authorityDigestB64u:i.authorityDigestB64u}),o=await H({authority:await AL({authMethod:r,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject})});if(e.verifiedAuthority&&(e.verifiedAuthority.walletId!==o.walletId||e.verifiedAuthority.walletAuthMethodId!==o.walletAuthMethodId))throw Error(`[SigningEngine][near] verified Email OTP activation authority changed`);let s=e.exactAuthorization;if(s){if(!Pe(s.record,n)||s.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[SigningEngine][near] exact Email OTP activation credential is unavailable`);return{authority:a,operationCredential:s.operationCredential}}let c=await K.readExactActiveForWallet({walletId:e.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId});if(c.kind!==`found`||!Pe(c.record,n)||c.operationCredential.walletSessionId!==t.walletSessionId)throw Error(`[SigningEngine][near] exact Email OTP activation credential is unavailable`);return{authority:a,operationCredential:c.operationCredential}}function PL(e){switch(e.status){case`missing`:return{kind:`missing`};case`expired`:return{kind:`expired`};case`superseded`:return{kind:`superseded`};case`authority_unavailable`:return{kind:`authority_unavailable`};case`method_unavailable`:return{kind:`method_unavailable`};case`capability_unavailable`:return{kind:`capability_unavailable`};case`invalid`:return{kind:`corrupt`};default:throw Error(`[SigningEngine][ed25519-export] unsupported exact session status`)}}async function FL(e){let t=e.subject.signer.account.wallet.walletId,n;try{n=await G.resolveSelectedWalletAuthority(String(t))}catch{return{kind:`persistence_unavailable`}}if(n.kind!==`resolved`)return n.kind===`integrity_error`?{kind:`corrupt`}:{kind:`missing`};let{selection:r,authority:i,authMethod:a}=n;if(r.lockState!==`unlocked`||r.walletId!==t||r.walletAuthMethodId!==a.walletAuthMethodId||i.state!==`active`||i.walletId!==t||a.kind!==`email_otp`||a.status!==`active`||a.walletId!==t||a.walletAuthorityId!==i.authorityId)return{kind:`corrupt`};let o;try{o=await AL({authMethod:a,emailHashHex:a.emailHashHex,providerSubject:e.subject.auth.providerSubjectId})}catch{return{kind:`corrupt`}}let s=await K.readExactActiveForWallet({walletId:t,authorityId:i.authorityId,authMethodId:a.walletAuthMethodId});switch(s.kind){case`missing`:case`upgrade_required`:case`corrupt`:case`persistence_unavailable`:return s;case`found`:break;default:throw Error(`[SigningEngine][ed25519-export] unsupported exact local session result`)}if(s.record.expiresAtMs<=Date.now())return{kind:`expired`};let c;try{c=await el({relayerUrl:e.relayerUrl,operationCredential:s.operationCredential}).read({walletSessionId:s.operationCredential.walletSessionId,quotaId:s.record.quotaId})}catch{return{kind:`persistence_unavailable`}}return c.status!==`active`&&c.status!==`exhausted`?PL(c):{kind:`found`,authorization:{selectedAuthority:i,selectedAuthMethod:a,factorAuthority:o,record:s.record,operationCredential:s.operationCredential,status:c}}}function IL(e,t){return globalThis.fetch(e,t)}function LL(e){let t=e.walletSessionState.thresholdSessionId;switch(e.subject.kind){case`exact_lane`:return{kind:`exact_lane`,laneIdentity:e.walletSessionState.signingLane.identity};case`export_exact_lane`:return{kind:`export_exact_lane`,laneIdentity:wc({signer:e.walletSessionState.signingLane.identity.signer,auth:e.walletSessionState.signingLane.identity.auth,thresholdSessionId:t}),materialActivation:e.subject.materialActivation};case`material_identity`:return{kind:`material_identity`,materialIdentity:{kind:`near_ed25519_material_identity`,signer:e.walletSessionState.signingLane.identity.signer,auth:e.walletSessionState.signingLane.identity.auth,thresholdSessionId:t}};default:return RL(e.subject)}}function RL(e){throw Error(`Unknown Ed25519 capability rehydration subject: ${String(e)}`)}async function zL(e){let t=e.walletSessionState.thresholdSessionId,n=await e.claimWarmSessionMaterial({thresholdSessionId:t,purpose:{curve:`ed25519`,materialActivation:e.materialActivation},consume:!1});if(n.ok||n.code!==`not_found`)return n;if(e.runtime.factor.kind!==`passkey`)throw Error(`[SigningEngine][near] persisted Ed25519 credential is unavailable`);let r=String(e.walletSessionState.walletSessionAuth.walletSessionToken||``).trim(),i=String(e.runtime.sealedRecord.groupId||``).trim();if(!r||!i)return{ok:!1,code:`invalid_args`,message:`Passkey Ed25519 sealed restore metadata is incomplete`};if(!b(e.runtime.sealedRecord.ed25519Restore.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] persisted Ed25519 material activation mismatch`);let a=Bo(e.runtime.sealedRecord.keyVersion),o=await e.rehydrateWarmSessionMaterial({thresholdSessionId:t,sealedSecretB64u:e.runtime.sealedRecord.sealedSecretB64u,signingSessionSealKeyVersion:a,expiresAtMs:e.runtime.sealedRecord.expiresAtMs,remainingUses:e.runtime.sealedRecord.remainingUses,transport:{curve:`ed25519`,authMethod:`passkey`,walletId:String(e.runtime.walletId),relayerUrl:e.runtime.relayerUrl,signingSessionSealKeyVersion:a,groupId:i,walletSessionToken:r,ed25519Restore:yn({rpId:e.runtime.factor.rpId,nearAccountId:e.runtime.nearAccountId,nearEd25519SigningKeyId:e.runtime.nearEd25519SigningKeyId,relayerKeyId:e.runtime.relayerKeyId,participantIds:e.runtime.participantIds,runtimePolicyScope:e.runtime.runtimePolicyScope,signerSlot:e.runtime.signerSlot,routerAbNormalSigning:e.runtime.routerAbNormalSigning,credentialIdB64u:e.runtime.factor.credentialIdB64u,materialActivation:e.materialActivation})}});return o.ok?(n=await e.claimWarmSessionMaterial({thresholdSessionId:t,purpose:{curve:`ed25519`,materialActivation:e.materialActivation},consume:!1}),n):o}async function BL(e){let t=e.identity.signer,n=(await e.store.listLanes()).filter(n=>String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.identity.thresholdSessionId)&&hR(n.auth,e.identity.auth));if(n.length>1)throw Error(`[SigningEngine][near] public Ed25519 capability lane is conflicting`);return n[0]?.materialActivation??null}function VL(e){let t=e.walletSessionState.signingLane,n=t.identity.signer;if(t.auth.kind!==`email_otp`)throw Error(`[SigningEngine][near] Email OTP recovery returned another auth lane`);return{walletId:n.account.wallet.walletId,nearAccountId:n.account.nearAccountId,thresholdSessionId:e.walletSessionState.thresholdSessionId,runtimePolicyScope:e.walletSessionState.runtimePolicyScope,materialActivation:e.materialActivation,auth:{kind:`email_otp`,providerSubjectId:t.auth.providerSubjectId},nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,signerSlot:n.signerSlot,remainingUses:e.walletSessionState.signingWalletSession.remainingUses,expiresAtMs:e.walletSessionState.signingWalletSession.expiresAtMs}}function HL(e){return e.kind===`wallet_authority_linked_signer_material_v1`&&e.keyFamily===`ed25519`}function UL(e){let t=e.selected;if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${t.kind}${e}`)}if(t.authority.provenance.kind===`wallet_registration`||t.authority.provenance.kind===`wallet_recovery`)return null;let{selection:n,authMethod:r,authority:i,signerMaterials:a,exportRoot:o}=t,s=e.subject.signer,c=i.signerActivations.ed25519;if(n.lockState!==`unlocked`||r.kind!==B.emailOtp||r.status!==`active`||i.state!==`active`||String(n.walletId)!==String(s.account.wallet.walletId)||n.walletAuthMethodId!==r.walletAuthMethodId||r.walletAuthorityId!==i.authorityId||String(r.walletId)!==String(s.account.wallet.walletId)||!i.permissions.includes(`export_keys`)||!c||!b(c.materialActivation,e.expectedMaterialActivation)||!o)throw Error(`[SigningEngine][ed25519-export] selected linked Email OTP authority has no exact export root`);let l=null;for(let t of a)if(!(!HL(t)||t.authorityId!==i.authorityId||t.walletAuthMethodId!==r.walletAuthMethodId||!b(t.materialActivation,e.expectedMaterialActivation))){if(l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous`);l=t}if(!l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is unavailable`);let u=l.targetFactor,d=l.publicFacts.applicationBinding,f=l.publicFacts.targetBinding.lifecycle,p=c.signer.registeredPublicKeyB64u;if(u.kind!==B.emailOtp||u.walletAuthMethodId!==r.walletAuthMethodId||u.emailHashHex!==r.emailHashHex||u.registrationAuthorityId!==r.registrationAuthorityId||o.authorityId!==i.authorityId||o.walletAuthMethodId!==r.walletAuthMethodId||o.walletKeyId!==c.signer.walletKeyId||o.envelope.binding.kind!==`ed25519_yao_client_root_v1`||o.envelope.binding.registeredPublicKeyB64u!==p||o.envelope.factor.kind!==B.emailOtp||d.wallet_id!==String(s.account.wallet.walletId)||d.near_ed25519_signing_key_id!==String(s.nearEd25519SigningKeyId)||d.key_creation_signer_slot!==s.signerSlot||f.account_id!==String(s.account.wallet.walletId)||f.session_id!==String(e.subject.thresholdSessionId)||f.selected_server_id!==e.expectedMaterialActivation.signingWorker||P(Uint8Array.from(l.publicFacts.activationReceipt.registered_public_key))!==p)throw Error(`[SigningEngine][ed25519-export] linked Email OTP export identity changed`);if(e.activeCapability){if(!b(e.activeCapability.materialActivation,e.expectedMaterialActivation)||P(Uint8Array.from(e.activeCapability.registeredPublicKey))!==p)throw Error(`[SigningEngine][ed25519-export] active Email OTP capability changed`);return o.envelope}return{envelope:o.envelope,source:{materialActivation:e.expectedMaterialActivation,signingWorkerId:f.selected_server_id,participantIds:l.publicFacts.participantIds,registeredPublicKeyB64u:p}}}async function WL(e){let t=null;for(let n of e.signerMaterials)if(!(!HL(n)||n.authorityId!==e.authMethod.walletAuthorityId||n.walletAuthMethodId!==e.authMethod.walletAuthMethodId)){if(t)throw Error(`[SigningEngine] linked Passkey Ed25519 signer material is conflicting`);t=n}if(!t)throw Error(`[SigningEngine] linked Passkey Ed25519 signer material is unavailable`);let n=t.publicFacts.applicationBinding,r=Ao(n.key_creation_signer_slot,{min:1}),i=t.targetFactor;if(!r||n.wallet_id!==String(e.walletId)||String(t.materialActivation.materialOwner)!==String(e.walletId)||i.kind!==B.passkey||i.walletAuthMethodId!==e.authMethod.walletAuthMethodId||String(i.rpId)!==String(e.authMethod.rpId)||String(i.credentialIdB64u)!==String(e.authMethod.credentialIdB64u))throw Error(`[SigningEngine] linked Passkey Ed25519 signer material identity is invalid`);let a=0;for(let i of await e.publicLaneStore.listLanes())i.auth.kind===`passkey`&&(String(i.walletId)!==String(e.walletId)||String(i.auth.rpId)!==String(e.authMethod.rpId)||i.auth.credentialIdB64u!==e.authMethod.credentialIdB64u||String(i.nearEd25519SigningKeyId)!==String(n.near_ed25519_signing_key_id)||i.signerSlot!==r||!b(i.materialActivation,t.materialActivation)||(a+=1));if(a===0)throw Error(`[SigningEngine] linked Passkey Ed25519 public lane is unavailable`);if(a!==1)throw Error(`[SigningEngine] linked Passkey Ed25519 public lane is ambiguous`);return r}async function GL(e){let t=e.laneIdentity.signer,n=(await e.store.listLanes()).filter(n=>n.auth.kind===B.emailOtp&&e.laneIdentity.auth.kind===B.emailOtp&&n.auth.providerSubjectId===e.laneIdentity.auth.providerSubjectId&&String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.laneIdentity.thresholdSessionId)&&b(n.materialActivation,e.materialActivation));if(n.length!==1)throw Error(n.length===0?`[SigningEngine][near] Email OTP public lane is unavailable`:`[SigningEngine][near] Email OTP public lane is ambiguous`);return n[0]}async function KL(e){if(e.laneIdentity.auth.kind!==B.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);let t=e.laneIdentity.auth,n=e.laneIdentity.signer,r=(await e.store.listLanes()).filter(r=>r.auth.kind===B.passkey&&r.auth.rpId===t.rpId&&r.auth.credentialIdB64u===t.credentialIdB64u&&String(r.walletId)===String(n.account.wallet.walletId)&&String(r.nearAccountId)===String(n.account.nearAccountId)&&String(r.nearEd25519SigningKeyId)===String(n.nearEd25519SigningKeyId)&&r.signerSlot===n.signerSlot&&String(r.thresholdSessionId)===String(e.laneIdentity.thresholdSessionId));if(r.length!==1)throw Error(r.length===0?`[SigningEngine][near] Passkey public lane is unavailable`:`[SigningEngine][near] Passkey public lane is ambiguous`);return r[0]}async function qL(e){let t=e.identity.signer,n=(await e.store.listLanes()).filter(n=>String(n.walletId)===String(t.account.wallet.walletId)&&String(n.nearAccountId)===String(t.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&n.signerSlot===t.signerSlot&&String(n.thresholdSessionId)===String(e.identity.thresholdSessionId)&&hR(n.auth,e.identity.auth)&&b(n.materialActivation,e.materialActivation));if(n.length!==1)throw Error(n.length===0?`[SigningEngine][near] exact Ed25519 public lane is unavailable`:`[SigningEngine][near] exact Ed25519 public lane is ambiguous`);return n[0]}async function JL(e){if(e.reference.auth.kind!==B.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);if(e.authorization.selectedAuthMethod.kind!==B.passkey||String(e.authorization.session.walletId)!==String(e.reference.walletId))throw Error(`[SigningEngine][near] Passkey Wallet Session authority does not match lane`);let t=await G.getWalletAuthMethodV2(e.authorization.selectedAuthMethod.walletAuthMethodId);if(!t||t.kind!==B.passkey||t.status!==`active`||String(t.walletId)!==String(e.reference.walletId)||String(t.rpId)!==String(e.reference.auth.rpId)||String(t.credentialIdB64u)!==String(e.reference.auth.credentialIdB64u))throw Error(`[SigningEngine][near] Passkey Wallet Session method does not match lane`);let n=await H({authority:{walletId:t.walletId,factor:{kind:B.passkey,credentialIdB64u:t.credentialIdB64u},verifier:{kind:`webauthn`,rpId:t.rpId},bindingId:t.walletAuthMethodId}}),r=await H({authority:e.authorization.selectedFactorAuthority});if(n.authorityDigest!==r.authorityDigest||n.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`[SigningEngine][near] Passkey Wallet Session authority changed`);return n}async function YL(e){if(e.reference.auth.kind!==B.passkey)throw Error(`[SigningEngine][near] Passkey public lane authority is required`);if(!jc({session:e.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] Passkey Wallet Session material changed`);let t=await JL({reference:e.reference,authorization:e.authorization}),n=gt(e.authorization.session.authorizationId);if(!n.ok||e.authorization.operationCredential.token.trim().length===0)throw Error(`[SigningEngine][near] Passkey Ed25519 Wallet Session credential is unavailable`);let r=e.material.facts,i=dn({walletId:String(e.reference.walletId),nearAccountId:String(e.reference.nearAccountId),nearEd25519SigningKeyId:String(e.reference.nearEd25519SigningKeyId),walletSessionId:e.authorization.operationCredential.walletSessionId,authorizationId:n.value,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.reference.thresholdSessionId,remainingUses:e.authorization.status.remainingUses,expiresAtMs:e.authorization.status.expiresAtMs,runtimePolicyScope:r.runtimePolicyScope,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,routerAbNormalSigning:r.routerAbNormalSigning,walletSessionToken:e.authorization.operationCredential.token,home:e.authorization.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`[SigningEngine][near] Passkey Wallet Session is unusable (${i.reason})`);return Hn({walletId:e.reference.walletId,nearAccountId:e.reference.nearAccountId,nearEd25519SigningKeyId:e.reference.nearEd25519SigningKeyId,signerSlot:e.reference.signerSlot,rpId:e.reference.auth.rpId,credentialIdB64u:e.reference.auth.credentialIdB64u,relayerUrl:e.relayerUrl,authority:t,signingWalletSession:i.value})}async function XL(e){let t=await Pt(e);if(t.kind!==`resolved`)throw tf(t.kind===`conflict`?`runtime_conflict`:`missing_runtime`);return t.runtime}async function ZL(e){let t=await At(hd({authMethod:e.laneIdentity.auth.kind,materialActivation:e.materialActivation}));if(!t||t.curve!==`ed25519`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is missing`);let n=pn(t);if(!n||String(n.walletId)!==String(e.walletId)||String(n.nearAccountId)!==String(e.laneIdentity.signer.account.nearAccountId)||String(n.nearEd25519SigningKeyId)!==String(e.laneIdentity.signer.nearEd25519SigningKeyId)||n.signerSlot!==e.laneIdentity.signer.signerSlot||String(n.thresholdSessionId)!==String(e.laneIdentity.thresholdSessionId)||!hR(n.auth,e.laneIdentity.auth)||!b(n.sealedRecord.ed25519Restore.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime identity mismatch`);return n}async function QL(e){let t=(await Yn({walletId:e.walletId,filter:{authMethod:e.identity.auth.kind,curve:`ed25519`}})).filter(e=>e.curve===`ed25519`).map(pn).filter(t=>t!==null&&gR({runtime:t,identity:e.identity}));if(t.length===0)throw tf(`missing_runtime`);if(t.length!==1)throw tf(`runtime_conflict`);return t[0]}function $L(e){let{selection:t,authMethod:n,authority:r}=e.selected;if(t.lockState!==`unlocked`||t.walletId!==e.walletId||t.walletAuthMethodId!==n.walletAuthMethodId||n.walletId!==e.walletId||n.walletAuthorityId!==r.authorityId||r.walletId!==e.walletId)return!1;switch(e.proof.kind){case`passkey`:return n.kind===B.passkey&&e.proof.authority.walletId===e.walletId&&e.proof.authority.bindingId===n.walletAuthMethodId&&e.proof.authority.factor.credentialIdB64u===n.credentialIdB64u&&e.proof.authority.verifier.rpId===n.rpId;case`email_otp`:return n.kind===B.emailOtp&&e.proof.authorityRef.walletId===e.walletId&&e.proof.authorityRef.walletAuthMethodId===n.walletAuthMethodId;default:throw e.proof,Error(`[SigningEngine][near] unsupported operation step-up proof`)}}async function eR(e){let t=await G.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][near] selected Wallet Authority is ${t.kind}${e}`)}if(!$L({walletId:e.walletId,proof:e.proof,selected:t}))throw Error(`[SigningEngine][near] operation step-up authority does not match selection`);let n=await Gm({selected:{authMethod:t.authMethod,authority:t.authority},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(n.kind!==`resolved`)throw Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${n.reason.kind})`);let r=Xv(await K.readExactWithOperationCredential({walletId:e.walletId,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId}),`[SigningEngine][near] exact Wallet Session requires a newer client`),i=r?.record.capabilitySubjects.filter(e=>e.kind===`sign`&&e.keyFamily===`ed25519`&&b(e.materialActivation,n.value.materialActivation)).length===1;if(!r||r.record.walletId!==e.walletId||r.record.authorityId!==t.authority.authorityId||r.record.authMethodId!==t.authMethod.walletAuthMethodId||r.record.authorityDigestB64u!==t.authority.authorityDigestB64u||r.record.authorityRevocationEpoch!==t.authority.revocationEpoch||r.record.expiresAtMs<=Date.now()||!i)throw Error(`[SigningEngine][near] exact Wallet Session is unavailable for operation step-up`);return r.operationCredential}async function tR(e){let t=await cv(e.runtime.walletId,e.relayerUrl,new J);if(!t)throw Error(`[SigningEngine][near] active Wallet Session authorization is unavailable`);return await hr({runtime:e.runtime,authorization:t,nowMs:Date.now()})}async function nR(e){let{identity:t}=e;if(t.auth.kind!==B.passkey)throw tf(`binding_mismatch`);let n=await G.resolveSelectedWalletAuthority(String(e.walletId));if(n.kind!==`resolved`||n.selection.lockState!==`unlocked`||n.selection.walletId!==e.walletId||n.authMethod.kind!==B.passkey||String(n.authMethod.rpId)!==String(t.auth.rpId)||n.authMethod.credentialIdB64u!==t.auth.credentialIdB64u)throw tf(`binding_mismatch`);let r=await Gm({selected:{authMethod:n.authMethod,authority:n.authority},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(r.kind!==`resolved`)throw tf(`missing_capability`);let i=await OL({walletId:e.walletId,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u});if(!i||i.walletAuthMethodId!==n.authMethod.walletAuthMethodId)throw tf(`binding_mismatch`);let a=await vr({store:G,walletId:String(e.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,authority:i});if(a.kind!==`available`)throw tf(`missing_runtime`);if(!b(a.locator.materialActivation,r.value.materialActivation))throw tf(`binding_mismatch`);let o=a.locator.stableServerScope,s=be(o.runtimePolicyScope);if(!s.signingRootVersion)throw tf(`binding_mismatch`);let c={walletId:String(e.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),thresholdSessionId:String(t.thresholdSessionId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,signingRootId:s.signingRootId,signingRootVersion:s.signingRootVersion,signingWorkerId:o.routerAbNormalSigning.signingWorkerId},l={kind:`available`,walletId:c.walletId,nearAccountId:c.nearAccountId,signerSlot:c.signerSlot,materialActivation:a.locator.materialActivation},u=await iR({store:G,identity:c,authority:i,publicLocator:l});if(u.kind===`blocked`)throw nf(u.plan.reason);return{prepared:u,localIdentity:c,authority:i,publicLocator:l,facts:{thresholdSessionId:t.thresholdSessionId,signer:t.signer,signingRootId:s.signingRootId,signingRootVersion:s.signingRootVersion,routerAbNormalSigning:o.routerAbNormalSigning,runtimePolicyScope:o.runtimePolicyScope,relayerUrl:e.relayerUrl},participantIds:o.participantIds}}function rR(e){if(e.factor.kind!==B.passkey)throw tf(`binding_mismatch`);return{walletId:String(e.walletId),nearAccountId:String(e.nearAccountId),nearEd25519SigningKeyId:String(e.nearEd25519SigningKeyId),thresholdSessionId:String(e.thresholdSessionId),signerSlot:e.signerSlot,rpId:String(e.factor.rpId),credentialIdB64u:e.factor.credentialIdB64u,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,signingWorkerId:e.routerAbNormalSigning.signingWorkerId}}async function iR(e){try{return await Mn(e)}catch{throw tf(`binding_mismatch`)}}async function aR(e){try{return await mr(e)}catch{throw tf(`corrupt`)}}function oR(e){if(!e||e.activeClient.status().kind!==`active`)return{kind:`absent`};let t=Cc(e.activeClient.metadata());return{kind:`live`,runtime:yc(t),materialActivation:t}}function sR(e){return e.laneIdentity===void 0?e.materialIdentity:{kind:`near_ed25519_material_identity`,signer:e.laneIdentity.signer,auth:e.laneIdentity.auth,thresholdSessionId:e.laneIdentity.thresholdSessionId}}function cR(e){return sR(e).auth}function lR(e){return e.auth===void 0?e.materialIdentity.auth:e.auth}function uR(e){return sR(e).signer}function dR(e){return String(sR(e).thresholdSessionId)}function fR(e){if(e.laneIdentity===void 0||e.auth===void 0)throw Error(`[SigningEngine][near] authorized lane identity is required`);return{walletId:e.walletId,nearAccountId:e.nearAccountId,laneIdentity:e.laneIdentity,auth:e.auth}}function pR(e){return{walletId:e.walletId,nearAccountId:e.nearAccountId,materialIdentity:sR(e)}}async function mR(e){if(e.reference.auth.kind!==B.emailOtp)throw Error(`[SigningEngine][near] Email OTP public lane authority is required`);if(!jc({session:e.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] Email OTP Wallet Session material changed`);let t=gt(e.authorization.session.authorizationId);if(!t.ok||e.authorization.operationCredential.token.trim().length===0)throw Error(`[SigningEngine][near] Email OTP Ed25519 Wallet Session credential is unavailable`);let n=await H({authority:e.authorization.selectedFactorAuthority}),r=e.material.facts,i=dn({walletId:String(e.reference.walletId),nearAccountId:String(e.reference.nearAccountId),nearEd25519SigningKeyId:String(e.reference.nearEd25519SigningKeyId),walletSessionId:e.authorization.operationCredential.walletSessionId,authorizationId:t.value,quotaId:e.authorization.session.quotaId,thresholdSessionId:e.reference.thresholdSessionId,remainingUses:e.authorization.status.remainingUses,expiresAtMs:e.authorization.status.expiresAtMs,runtimePolicyScope:r.runtimePolicyScope,signingRootId:r.signingRootId,signingRootVersion:r.signingRootVersion,routerAbNormalSigning:r.routerAbNormalSigning,walletSessionToken:e.authorization.operationCredential.token,home:e.authorization.operationCredential.home,nowMs:Date.now()});if(!i.ok)throw Error(`[SigningEngine][near] Email OTP Wallet Session is unusable (${i.reason})`);return Wn({walletId:e.reference.walletId,nearAccountId:e.reference.nearAccountId,nearEd25519SigningKeyId:e.reference.nearEd25519SigningKeyId,providerSubjectId:e.reference.auth.providerSubjectId,signerSlot:e.reference.signerSlot,relayerUrl:e.relayerUrl,authority:n,signingWalletSession:i.value})}function hR(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case B.passkey:return t.kind===B.passkey&&e.rpId===t.rpId&&e.credentialIdB64u===t.credentialIdB64u;case B.emailOtp:return t.kind===B.emailOtp&&e.providerSubjectId===t.providerSubjectId;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}function gR(e){let t=e.identity.signer;return String(e.runtime.walletId)===String(t.account.wallet.walletId)&&String(e.runtime.nearAccountId)===String(t.account.nearAccountId)&&String(e.runtime.nearEd25519SigningKeyId)===String(t.nearEd25519SigningKeyId)&&e.runtime.signerSlot===t.signerSlot&&String(e.runtime.thresholdSessionId)===String(e.identity.thresholdSessionId)&&hR(e.runtime.auth,e.identity.auth)}function _R(e){let t=be(e.publicLane.runtimePolicyScope);if(!t.signingRootVersion)throw Error(`[SigningEngine][near] Email OTP lane requires a signing-root version`);return{thresholdSessionId:e.publicLane.thresholdSessionId,signer:uR(e.input),signingRootId:t.signingRootId,signingRootVersion:t.signingRootVersion,routerAbNormalSigning:{kind:Ye,signingWorkerId:String(e.publicLane.materialActivation.signingWorker)},runtimePolicyScope:e.publicLane.runtimePolicyScope,relayerUrl:e.relayerUrl}}function vR(e){let t=cR(e),n=lR(e);if(t.kind!==n.kind)throw Error(`[SigningEngine][near] prepared material factor changed`);switch(n.kind){case B.passkey:if(t.kind!==B.passkey||t.rpId!==n.rpId||t.credentialIdB64u!==n.credentialIdB64u)throw Error(`[SigningEngine][near] prepared Passkey material binding changed`);return;case B.emailOtp:if(t.kind!==B.emailOtp||t.providerSubjectId!==n.providerSubjectId)throw Error(`[SigningEngine][near] prepared Email OTP material binding changed`);return;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}function yR(e){let t=e.material.facts,n=e.material.activeClient.metadata(),r=dR(e.input),i=uR(e.input),a=t.signer;if(String(t.thresholdSessionId)!==r)throw Error(`[SigningEngine][near] active Ed25519 Yao capability session mismatch`);if(n.scope.threshold_session_id!==String(t.thresholdSessionId))throw Error(`[SigningEngine][near] active Ed25519 Yao metadata session mismatch`);if(n.scope.account_id!==String(e.input.walletId)||n.applicationBinding.wallet_id!==String(e.input.walletId))throw Error(`[SigningEngine][near] active Ed25519 Yao capability subject mismatch`);if(String(a.account.wallet.walletId)!==String(i.account.wallet.walletId)||String(a.account.nearAccountId)!==String(i.account.nearAccountId)||a.signerSlot!==i.signerSlot||String(a.nearEd25519SigningKeyId)!==String(i.nearEd25519SigningKeyId))throw Error(`[SigningEngine][near] active Ed25519 Yao capability signer mismatch`);let o=Cc(n);if(!b(e.expectedActivation,o))throw Error(`[SigningEngine][near] active Ed25519 Yao capability activation mismatch`);return e.material}async function bR(e){let t=Cc(e.material.activeClient.metadata());if(!jc({session:e.authorization.session,materialActivation:t}))throw Error(`Owner Ed25519 execution-lane material changed`);yR({material:e.material,input:e.input,expectedActivation:t});let n=await yr({runtime:e.sealedRuntime,walletAuthMethodId:e.authorization.selectedAuthMethod.walletAuthMethodId}),r=await H({authority:e.authorization.selectedFactorAuthority});if(n.walletId!==r.walletId||n.walletAuthMethodId!==r.walletAuthMethodId||n.authorityDigest!==r.authorityDigest)throw Error(`Owner Ed25519 execution-lane authority does not match sealed material`);if(oR(e.material).kind!==`live`)throw Error(`Owner Ed25519 signing requires active Yao material`)}function xR(e){let t=e.hydration.materialActivation;if(!t)throw Error(`[SigningEngine][near] prepared material has no activation`);return t}function SR(e){let t=xR(e.preparation);if(!e.context.materialActivation||!b(e.context.materialActivation,t))throw Error(`[SigningEngine][near] prepared material boundary changed activation`);return t}function CR(e){return ws({credential:e,firstPrfOutput:!0,secondPrfOutput:!0})}async function wR(e,t){return e.current?await e.current.storage.loadEcdsaRoleLocalReadyRecord(t):{ok:!1,code:`unavailable`,message:`Signing runtime storage is not initialized`}}function TR(e){let t=e.event;switch(t){case`signing_session.expired`:return`${String(e.walletId)}:${String(e.walletSessionId)}`;case`registration.near_provisioning_changed`:return`${String(e.walletId)}:${e.state.status}:${e.state.updatedAtMs}`;default:return ER(t)}}function ER(e){throw Error(`Unsupported SDK lifecycle event: ${String(e)}`)}async function DR(e){if(!G.isDisabled())return await G.getAppState(e)}async function OR(e,t){G.isDisabled()||await G.setAppState(e,t)}const kR={readCacheEntry:DR,writeCacheEntry:OR};function AR(e,t){switch(e){case`add_email_code`:return{title:`Enter email code to add sign-in`,body:`This one-time code confirms ${t} can unlock this wallet.`,operation:`Add email code sign-in`,warning:`Adding email code lets anyone with access to your inbox try to unlock this wallet.`};case`add_passkey`:return{title:`Enter email code to add a passkey`,body:`This code confirms you can add a new passkey to this wallet.`,operation:`Add passkey`};case`remove_auth_method`:return{title:`Enter email code to remove sign-in`,body:`This code confirms removal of a wallet authentication method.`,operation:`Remove authentication method`};case`move_wallet`:return{title:`Enter email code to move wallet`,body:`This code confirms a wallet region move.`,operation:`Move wallet`};case`recovery_status`:return{title:`Enter email code to check recovery codes`,body:`This code confirms you can view this wallet’s recovery-code status.`,operation:`Check recovery-code status`};case`recovery_unlock`:return{title:`Enter email code to prepare new recovery codes`,body:`This code unlocks your wallet seed to create a new recovery-code set.`,operation:`Prepare recovery-code rotation`};case`recovery_rotate`:return{title:`Enter email code to rotate recovery codes`,body:`This code confirms the new recovery-code set replaces the old set.`,operation:`Rotate recovery codes`};case`recovery_backup_acknowledge`:return{title:`Enter email code to confirm backup`,body:`This code confirms you saved the recovery codes shown by this wallet.`,operation:`Confirm recovery-code backup`}}}var jR=class{touchConfirm;passkeyMpcSession;signerWorkerManager;touchIdPrompt;userPreferencesManager;nearClient;nonceCoordinator;workerBaseOrigin=``;appearance;thresholdEcdsaBootstrapQueueByWallet=new Map;thresholdEcdsaSigningQueueByKey=new Map;thresholdEd25519CommitQueueByKey=new Map;nearEd25519CapabilityRehydrationBySubject=new Map;emailOtpSessions;warmSigning;passkeyPublicDeps;warmCapabilitiesPublicDeps;sessionPublicDeps;emailOtpPublicDeps;recoveryPublicDeps;sealedRefreshStartupParityPromise;hostWarmCriticalResourcesTask=null;sealedRefreshStartupParityError=null;runtimePorts;enginePorts;ecdsaBootstrapStore;ed25519YaoPageLifecycleOwner;ed25519YaoPublicCapabilityReferences;sdkLifecycleEventListeners=new Set;deliveredSdkLifecycleEventKeys=new Set;signingSessionLifecycleSubscription;nearProvisioningUnsubscribe;walletAuthenticationState={kind:`signed_out`};volatileWarmSigningMaterialCleanupInFlight=null;seamsWebConfigs;readNearEd25519SigningCandidate(e){return ov(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new J,e)}readExactNearEd25519WalletSessionAuthorization(e){return sv(String(this.seamsWebConfigs.network.relayer?.url||``).trim(),new J,e)}resolveActiveNearEd25519WalletSessionAuthorization(e,t){return cv(e,String(this.seamsWebConfigs.network.relayer?.url||``).trim(),t)}listPreprocessingCapabilities;constructor(e,t,n){Lt(kR),this.seamsWebConfigs=e,this.ed25519YaoPublicCapabilityReferences=n.ed25519YaoPublicCapabilityReferences,this.appearance=e.ui.appearance,this.nearClient=t,this.ecdsaBootstrapStore=n.signingEngineStores.walletProfileAndSignerRecords.ecdsaBootstrapStore,this.sealedRefreshStartupParityPromise=SN({configs:this.seamsWebConfigs}).catch(e=>{this.sealedRefreshStartupParityError=e instanceof Error?e:Error(String(e||`sealed refresh parity check failed`))});let r={current:null},i=wR.bind(null,r),a=lN({resolveActiveEcdsaCapabilityRuntime:jv,resolveOperationStepUpCredential:this.resolveOperationStepUpCredential.bind(this),stores:n.managerStores,seamsWebConfigs:this.seamsWebConfigs,nearClient:this.nearClient,loadEcdsaRoleLocalReadyRecord:i,getTheme:()=>this.appearance.theme.mode,getAppearance:()=>this.appearance,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey});this.touchIdPrompt=a.touchIdPrompt,this.userPreferencesManager=a.userPreferencesManager,this.nonceCoordinator=a.nonceCoordinator,this.signerWorkerManager=a.signerWorkerManager;let o=n.createRuntime({config:this.seamsWebConfigs,workerCtx:this.signerWorkerManager.getContext(),accountLifecycle:{accountStore:n.signingEngineStores.walletProfileAndSignerRecords.accountStore,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator},ecdsaBootstrapStore:this.ecdsaBootstrapStore,getWarmSessionMaterialWriter:()=>this.passkeyMpcSession,getNearSigningDeps:()=>this.enginePorts.nearSigningDeps,getEvmFamilySigningDeps:()=>this.enginePorts.tempoSigningDeps});r.current=o.runtimePorts;let s=o.state.ecdsaSessions;this.runtimePorts=o.runtimePorts;let c=pL({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,signerWorkerManager:this.signerWorkerManager,stores:n.signingEngineStores,runtimePorts:this.runtimePorts,sealedSigningSessionStore:n.sealedSigningSessionStore,baseTouchConfirm:a.touchConfirm,passkeyMpcSession:a.passkeyMpcSession,getEnginePorts:()=>this.enginePorts,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,loadWalletCustodyEd25519Material:this.loadEmailOtpWalletCustodyEd25519Material.bind(this),restoreWalletCustodyEcdsaContinuity:this.restoreWalletCustodyEcdsaContinuity.bind(this),getWarmSigning:()=>this.warmSigning,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),listActiveEcdsaCapabilityManifestsForWallet:kv});this.emailOtpSessions=c.emailOtpSessions,this.touchConfirm=c.touchConfirm,this.passkeyMpcSession=c.passkeyMpcSession,this.warmSigning=BP({resolveActiveEcdsaCapabilityRuntime:jv,resolveActiveEcdsaCapabilityRuntimeForChain:Mv,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,getEmailOtpWarmSessionStatus:e=>this.emailOtpSessions.readWarmSessionStatusOnly(e),signingSessionSeal:this.seamsWebConfigs.signing.sessionSeal,ecdsaExportArtifacts:s,resolveActiveEcdsaWalletSessionAuthorization:hv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),resolveActiveEd25519WalletSessionAuthorization:this.resolveActiveNearEd25519WalletSessionAuthorization.bind(this)}),this.listPreprocessingCapabilities=mv.bind(null,{seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore}),this.sessionPublicDeps=UP({seamsWebConfigs:this.seamsWebConfigs,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,emailOtpSessions:this.emailOtpSessions,ed25519YaoPublicCapabilityLanes:n.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:this.isEd25519YaoPublicCapabilityActive.bind(this),readActiveWalletSessionAuthorization:sv.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>Cv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),getWalletSessionStatus:$_({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore})}),this.emailOtpPublicDeps={relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,groupId:Xe,getSignerWorkerContext:()=>this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext(),emailOtpSessions:this.emailOtpSessions},this.recoveryPublicDeps=G_({seamsWebConfigs:this.seamsWebConfigs,runtimePorts:this.runtimePorts,signerWorkerManager:this.signerWorkerManager,warmSigning:this.warmSigning,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,passkeyMpcExport:a.passkeyMpcExport,emailOtpSessions:this.emailOtpSessions,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,thresholdEd25519CommitQueueByKey:this.thresholdEd25519CommitQueueByKey,getWalletSessionActivationDeps:()=>this.enginePorts.walletSessionActivationDeps,resolvePasskeyEd25519YaoExportContext:this.resolveExactPasskeyEd25519YaoExportContext.bind(this),resolveEmailOtpEd25519YaoExportContext:this.resolveEmailOtpEd25519YaoExportContext.bind(this),getSigningSessionCoordinator:()=>this.enginePorts.signingSessionCoordinator,getTheme:()=>this.appearance.theme.mode,ed25519YaoPublicCapabilityLanes:n.ed25519YaoPublicCapabilityReferences,isEd25519YaoPublicCapabilityActive:this.isEd25519YaoPublicCapabilityActive.bind(this),readActiveWalletSessionAuthorization:sv.bind(null,this.seamsWebConfigs.network.relayer.url),listEcdsaSigningCapabilitiesForWallet:(e,t)=>Cv({seamsWebConfigs:this.seamsWebConfigs,touchIdPrompt:this.touchIdPrompt,stores:n.signingEngineStores,emailOtpSessions:this.emailOtpSessions,sealedSigningSessionStore:n.sealedSigningSessionStore},e,t),resolveOwnerLaneScope:e=>this.resolveSelectedOwnerLaneScope(e)}),this.enginePorts=Fv({runtimePorts:this.runtimePorts,stores:n.signingEngineStores,ed25519YaoPublicCapabilityReferences:n.ed25519YaoPublicCapabilityReferences,seamsWebConfigs:this.seamsWebConfigs,nearClient:this.nearClient,touchIdPrompt:this.touchIdPrompt,userPreferencesManager:this.userPreferencesManager,nonceCoordinator:this.nonceCoordinator,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,passkeyMpcExport:a.passkeyMpcExport,signerWorkerManager:this.signerWorkerManager,emailOtpSessions:this.emailOtpSessions,warmSigning:this.warmSigning,sealedSigningSessionStore:n.sealedSigningSessionStore,ecdsaBootstrapStore:this.ecdsaBootstrapStore,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,thresholdEcdsaSigningQueueByKey:this.thresholdEcdsaSigningQueueByKey,thresholdEd25519CommitQueueByKey:this.thresholdEd25519CommitQueueByKey,getWorkerBaseOrigin:()=>this.workerBaseOrigin,shouldPrewarmUiConfirmUi:n.shouldPrewarmUiConfirmUi,getTheme:()=>this.appearance.theme.mode,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),resolveOwnerLaneScope:e=>this.resolveSelectedOwnerLaneScope(e),getEnginePorts:()=>this.enginePorts,prepareNearEd25519YaoMaterialBoundary:this.prepareExactNearEd25519YaoMaterialBoundary.bind(this)}),this.signingSessionLifecycleSubscription=this.enginePorts.signingSessionCoordinator.subscribeLifecycle(this.publishSdkLifecycleEvent.bind(this)),this.nearProvisioningUnsubscribe=zt(this.publishNearProvisioningLifecycleEvent.bind(this)),this.ed25519YaoPageLifecycleOwner=new DO(typeof window>`u`?null:window,this.enginePorts.ed25519YaoActiveClients);let l=mL({seamsWebConfigs:this.seamsWebConfigs,stores:n.signingEngineStores,touchIdPrompt:this.touchIdPrompt,touchConfirm:this.touchConfirm,passkeyMpcSession:this.passkeyMpcSession,warmSigning:this.warmSigning,runtimePorts:this.runtimePorts,thresholdEcdsaBootstrapQueueByWallet:this.thresholdEcdsaBootstrapQueueByWallet,ensureSealedRefreshStartupParity:()=>this.ensureSealedRefreshStartupParity(),enginePorts:this.enginePorts});this.passkeyPublicDeps=l.passkeyPublicDeps,this.warmCapabilitiesPublicDeps=l.warmCapabilitiesPublicDeps,rr(e=>{this.persistUpgradedWalletCustodyEnvelopeV1(e)}),n.initializeRuntime({userPreferencesManager:this.userPreferencesManager,getWorkerBaseOrigin:()=>this.workerBaseOrigin,setWorkerBaseOrigin:e=>{this.workerBaseOrigin=e,this.signerWorkerManager.setWorkerBaseOrigin(e),this.touchConfirm.setWorkerBaseOrigin?.(e),a.passkeyMpcExport.setWorkerBaseOrigin(e),this.passkeyMpcSession.setWorkerBaseOrigin(e)}})}async resolveOperationStepUpCredential(e){let t=await eR({walletId:e.walletId,proof:e.proof});return{kind:`wallet_session_opaque`,walletSessionToken:t.token,home:t.home}}async ensureSealedRefreshStartupParity(){if(await this.sealedRefreshStartupParityPromise,this.sealedRefreshStartupParityError)throw this.sealedRefreshStartupParityError}async establishWalletCustodyNearEd25519KeySet(e){let t=new Tn({routerOrigin:e.routerOrigin,routing:e.home,authorization:{kind:`bearer`,value:e.authorization},fetch:globalThis.fetch,...e.traceContext?{traceContext:e.traceContext}:{}}),n=null,r=await sr({runStep:Vn(this.walletCustodyCeremonyTransportV1()),walletId:e.walletId,...e.factor,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,registrationCeremonyId:e.registrationCeremonyId,yaoAdmission:e.admissionReceipt,yaoApplication:e.admissionRequest.application_binding,participantIds:e.participantIds,runRouterRound:async r=>{let i=e.executeWithProof?await e.executeWithProof(r):null;return i===null?(n=await BO({executeRequestJson:r,transport:t}),n):(n=i,n)}});if(!n)throw Error(`the wallet custody NEAR run completed without a Router activation result`);if(!r.localMaterial)throw Error(`the wallet custody NEAR run sealed no local material`);return{recoveryCodes:r.recoveryCodes,commitPayload:r.commitPayload,activationReference:r.activationReference,localMaterial:r.localMaterial,metadata:OO({admissionRequest:e.admissionRequest,activationResultJson:n})}}async recoverWalletCustodyManifest(e){return await $O({...e,runStep:Vn(this.walletCustodyCeremonyTransportV1()),workerCtx:this.signerWorkerManager.getContext()})}async createWalletRecoveryReplacementCredential(e){let t=Ct(`wallet-recovery:${e.registration.challengeId}`),n=yL(CR(await this.touchIdPrompt.generateRegistrationCredentialsInternal({kind:`wallet_recovery`,walletId:e.walletId,intendedUserName:e.walletId,recoveryRegistration:e.registration,prompt:{kind:`immediate`,requestId:t,cancellation:e.cancellation}})));return{registration:Es(n.registration),credentialIdB64u:n.credentialIdB64u,factorSecret:n.factorSecret}}async joinWalletCustodyNearEd25519KeySet(e){let t=new Tn({routerOrigin:e.routerOrigin,routing:e.routing,authorization:{kind:`bearer`,value:e.authorization},fetch:globalThis.fetch,...e.traceContext?{traceContext:e.traceContext}:{}}),n=null,r=await jn({runStep:Vn(this.walletCustodyCeremonyTransportV1()),preparation:e.preparation,beforeRouterRound:e.beforeRouterRound,custodyJson:e.custodyJson,factorSecret:e.factorSecret,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,registrationCeremonyId:e.registrationCeremonyId,yaoAdmission:e.admissionReceipt,yaoApplication:e.admissionRequest.application_binding,participantIds:e.participantIds,runRouterRound:async e=>(n=await BO({executeRequestJson:e,transport:t}),n)});if(!n||!r.localMaterial)throw Error(`the wallet custody NEAR join produced no local signing material`);return{commitPayload:r.commitPayload,activationReference:r.activationReference,localMaterial:r.localMaterial,metadata:OO({admissionRequest:e.admissionRequest,activationResultJson:n})}}async rejoinWalletCustodyNearEd25519KeySet(e){let t=new Tn({routerOrigin:e.routerOrigin,routing:{kind:`discovery`},authorization:{kind:`bearer`,value:`Bearer ${e.walletSessionToken}`},fetch:globalThis.fetch}),n=await PO({basis:e.recoveryBasis}),r=await FO({request:n,transport:t}),i=await Zn({runStep:Vn(this.walletCustodyCeremonyTransportV1()),walletId:e.walletId,custodyJson:e.custodyJson,factorSecret:e.factorSecret,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,recoveryLifecycleId:n.scope.lifecycle_id,yaoAdmission:r.receipt,yaoApplication:r.request.application_binding,participantIds:e.recoveryBasis.participantIds,registeredPublicKeyB64u:P(Uint8Array.from(e.recoveryBasis.registeredPublicKey)),runRouterRound:e=>IO({executeRequestJson:e,transport:t}),activateRouterRecovery:e=>LO({request:n,protocolResultJson:e,transport:t})});if(!i.localMaterial)throw Error(`the wallet custody NEAR cold rejoin produced no local signing material`);return{commitPayload:i.commitPayload,activationReference:i.activationReference,localMaterial:i.localMaterial,metadata:kO({admissionRequest:n,activationResultJson:i.activationResultJson,activationReceipt:i.activationReceipt})}}async establishWalletCustodyEvmFamilyKeySet(e){return await tr({...e,runStep:Vn(this.walletCustodyCeremonyTransportV1())})}async joinWalletCustodyEvmFamilyKeySet(e){return await Gn({...e,runStep:Vn(this.walletCustodyCeremonyTransportV1())})}async rejoinWalletCustodyEvmFamilyKeySet(e){return await Fn({...e,runStep:Vn(this.walletCustodyCeremonyTransportV1())})}async restoreWalletCustodyEcdsaContinuity(e){let t=await oc({...e,store:new as});if(t.kind!==`committed`)throw Error(`wallet custody ECDSA import returned ${t.kind}`);let n=uo(e.publicCapability.material_activation),r=await Tu({workerCtx:this.signerWorkerManager.getContext(),authority:e.authority,materialActivation:n});if(!r.ok)throw Error(`wallet custody ECDSA material open returned ${r.reason}`);return{materialActivation:n,materialRef:r.materialRef}}async persistWalletCustodyEd25519Material(e){await sc({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,binding:e.binding,sealed:e.sealed})}async loadWalletCustodyEd25519Material(e){return await rc({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:e.expectedRegisteredPublicKeyB64u})}async loadEmailOtpWalletCustodyEd25519Material(e){let t=await this.loadWalletCustodyEd25519Material({nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,expectedRegisteredPublicKeyB64u:``});return t.kind===`found`?t:{kind:`absent`}}async deleteWalletCustodyEd25519Material(e){await ic({store:this.signerWorkerManager.getContext().nearKeyMaterialStore,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot})}async assertSealedRefreshStartupParity(){await this.ensureSealedRefreshStartupParity()}async discoverPersistedSessionsForWallet(e){return await $m(this.sessionPublicDeps,e)}isEd25519YaoPublicCapabilityActive(e){switch(e.auth.kind){case B.emailOtp:return!0;case B.passkey:return this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:e.materialActivation})!==null;default:throw e.auth,Error(`Unsupported Ed25519 public capability auth method`)}}async readPersistedAvailableSigningLanes(e,t){return await eh(this.sessionPublicDeps,e,t)}async readOwnerScopedSigningLanes(e,t){return await th(this.sessionPublicDeps,e,t)}async resolveSelectedOwnerLaneScope(e){let t=o(e);if(!t.ok)throw Error(t.error.message);let n={getWalletAuthMethodV2:e=>G.getWalletAuthMethodV2(e),listWalletAuthMethodsForWallet:e=>G.listWalletAuthMethodsForWallet(e),getWalletPasskeyAuthenticator:e=>G.getWalletPasskeyAuthenticator(e),readEmailOtpProviderSubjectForWallet:e=>os(G,e)},r=await G.resolveSelectedWalletAuthority(String(t.value));if(r.kind===`resolved`){let{selection:e,authMethod:i,authority:a}=r;if(e.walletId!==t.value||e.walletAuthMethodId!==i.walletAuthMethodId||i.walletId!==t.value||i.walletAuthorityId!==a.authorityId||a.walletId!==t.value)throw Error(`[SigningEngine] selected Wallet Authority identity mismatch`);if(e.lockState!==`unlocked`)throw ef(`wallet_locked`);if(i.status!==`active`)throw ef(`method_unavailable`);if(a.state!==`active`)throw ef(`authority_unavailable`);if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ed25519)return hp({authMethod:i,signerSlot:await WL({walletId:t.value,authMethod:i,signerMaterials:r.signerMaterials,publicLaneStore:this.ed25519YaoPublicCapabilityReferences})});if(a.provenance.kind===`device_link`&&i.kind===`passkey`&&a.signerActivations.ecdsa)return gp({authMethod:i});if(a.provenance.kind===`device_link`&&i.kind===`email_otp`&&a.signerActivations.ecdsa){let e=cd({walletId:t.value,materialActivation:a.signerActivations.ecdsa.materialActivation});if(!e||e.authorityId!==a.authorityId||!Ba(e.factorAuthority))throw Error(`[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime`);let n=await H({authority:e.factorAuthority});if(n.walletId!==t.value||n.walletAuthMethodId!==i.walletAuthMethodId)throw Error(`[SigningEngine] selected linked Email OTP authority has no exact ECDSA holder runtime`);return _p({authMethod:i,factorAuthority:e.factorAuthority,authorityRef:n})}return await yp({authMethod:i,stores:n})}let i=r.kind===`integrity_error`?`: ${r.reason}`:``;throw Error(`[SigningEngine] selected Wallet Authority is ${r.kind}${i}`)}readWalletAuthenticationState(){return this.walletAuthenticationState}async retireActiveWalletSessionAuthorizationForLock(e){let t=Date.now();(await K.retireExactActiveForWallet({walletId:e,reason:`wallet_locked`,retiredAtMs:t})).length>0&&this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`wallet`,walletId:String(e)})}async advanceWalletLockGeneration(e){return G.advanceWalletLockGeneration({walletId:e,lockedAtMs:Date.now()})}async markWalletSelectionUnlocked(e){await G.markWalletSelectionUnlocked({walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,unlockedAtMs:Date.now()})}async markSelectedEmailOtpWalletAuthorityUnlocked(e){await this.markWalletSelectionUnlocked(e)}setWalletAuthenticated(e){let t=this.walletAuthenticationState;t.kind===`authenticated`&&String(t.walletId)!==String(e.walletId)&&this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`wallet`,walletId:String(t.walletId)}),this.walletAuthenticationState=e,this.userPreferencesManager.setCurrentWallet(e.walletId)}clearWalletAuthentication(){this.walletAuthenticationState={kind:`signed_out`},this.destroyUnlockedWalletEd25519ExportRootCapabilitiesV1({kind:`all`})}clearWalletAuthenticationIfCurrent(e){return this.walletAuthenticationState===e?(this.clearWalletAuthentication(),!0):!1}walletCustodyCeremonyTransportV1(){let e=this.getSignerWorkerContext();return{requestOperation:Un.bind(void 0,e)}}async establishUnlockedWalletEd25519ExportRootCapabilityV1(e){try{let t=e.existingEnvelope.binding;if(!Pi(t)&&t.kind!==`ed25519_yao_client_root_v1`)return;if(e.existingEnvelope.factor.kind!==`passkey`)throw Error(`unlocked export-root capability requires a passkey envelope factor`);let n=F(e.passkeyPrfFirstB64u);try{await fr(this.walletCustodyCeremonyTransportV1(),{existingEnvelope:e.existingEnvelope,existingFactorSecret:n,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,walletSessionId:e.walletSessionId,expiresAtMs:e.expiresAtMs})}finally{n.fill(0)}}catch(e){console.warn(`[BrowserSigningSurface] unlocked Ed25519 export-root capability was not established:`,e instanceof Error?e.message:String(e||`unknown error`))}}async persistUpgradedWalletCustodyEnvelopeV1(e){try{let t=String(this.seamsWebConfigs.network.relayer?.url||``).trim();if(!t)return;let n=o(e.walletId);if(!n.ok)return;let r=(await cv(n.value,t,new J))?.operationCredential.token;if(!r)return;let i=await GE({relayUrl:t,walletId:e.walletId,walletSessionToken:String(r),envelope:e.envelope});if(i.kind===`upgraded`||i.kind===`already_owned`)return;console.warn(`[BrowserSigningSurface] the upgraded custody envelope was not stored:`,i.message)}catch(e){console.warn(`[BrowserSigningSurface] the upgraded custody envelope was not stored:`,e instanceof Error?e.message:String(e||`unknown error`))}}async destroyUnlockedWalletEd25519ExportRootCapabilitiesV1(e){await Pn(this.walletCustodyCeremonyTransportV1(),e)}async runWarmCriticalResources(e){try{await this.ensureSealedRefreshStartupParity()}catch(e){if(!$u(e))throw e;console.warn(`[BrowserSigningSurface] warmCriticalResources skipped retryable sealed-refresh capability fetch failure`,e instanceof Error?e.message:String(e||`unknown error`))}return await this.enginePorts.getManagerConveniencePorts().warmCriticalResources(e)}async warmCriticalResources(e){if(hl()&&e===void 0){let e=this.hostWarmCriticalResourcesTask;if(e)return await e;let t=this.runWarmCriticalResources();return this.hostWarmCriticalResourcesTask=t,t.catch(()=>{this.hostWarmCriticalResourcesTask===t&&(this.hostWarmCriticalResourcesTask=null)}),await t}return await this.runWarmCriticalResources(e)}prewarmNearSigner(){this.signerWorkerManager.prewarmNearSigner()}prewarmEmailOtpYao(e){return this.signerWorkerManager.prewarmEmailOtpYao(e)}prewarmEcdsaRegistrationCrypto(){return this.signerWorkerManager.prewarmEcdsaRegistrationCrypto()}getRpId(){return this.touchIdPrompt.getRpId()}getSignerWorkerContext(){return this.enginePorts.walletSessionActivationDeps.getSignerWorkerContext()}getNonceCoordinator(){return this.nonceCoordinator}setAppearance(e){this.appearance=e}setWalletIframeSurfaceMeasurementBinding(e){this.touchConfirm.getContext().surfaceMeasurementBinding=e}getWalletIframeSurfaceMeasurementBinding(){return this.touchConfirm.getContext().surfaceMeasurementBinding}getUserPreferences(){return this.userPreferencesManager}async signNear(e){let t=e.args.commandSubject.walletSession.walletId;try{return await Bd(this.enginePorts.nearSigningDeps,e)}catch(e){throw rf(e)&&await this.terminateWalletStateAfterSigningFailure(t),e}}async terminateWalletStateAfterSigningFailure(e){let t=this.readWalletAuthenticationState(),n=!1;try{await this.advanceWalletLockGeneration(e)}catch{}try{await this.retireActiveWalletSessionAuthorizationForLock(e)}catch{}try{n=this.clearWalletAuthenticationIfCurrent(t)}catch{}if(n){try{this.nonceCoordinator.clearAll()}catch{}try{this.clearThresholdEcdsaSigningQueue()}catch{}}try{await this.clearVolatileWarmSigningMaterial(e)}catch{}}async ensureNearEd25519YaoCapabilityForSigning(e){let t=RN(e),n=this.nearEd25519CapabilityRehydrationBySubject.get(t);if(n){let e=await n,t=await this.resolveActiveNearEd25519YaoSigningLane(e.subject);if(t)return t;throw Error(`[SigningEngine][near] joined rehydration did not publish an active lane`)}let r=this.rehydrateNearEd25519YaoCapabilityForSigning(e);this.nearEd25519CapabilityRehydrationBySubject.set(t,r);try{return(await r).material}finally{this.nearEd25519CapabilityRehydrationBySubject.get(t)===r&&this.nearEd25519CapabilityRehydrationBySubject.delete(t)}}async rehydrateExactPasskeyEd25519YaoCapabilityForSigning(e){let t=sR(e);return await this.ensureNearEd25519YaoCapabilityForSigning(e.laneIdentity===void 0?{kind:`material_identity`,materialIdentity:t}:{kind:`exact_lane`,laneIdentity:e.laneIdentity})}async prepareMaterialIdentityNearEd25519YaoSigning(e){let t=e.materialIdentity,n=this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId}),r=await BL({store:this.ed25519YaoPublicCapabilityReferences,identity:t}),i=t.auth.kind===B.passkey?await this.readNearEd25519SigningCandidate(e.walletId):null,a=i?Ic(i):null;if(t.auth.kind===B.passkey&&r){let e=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:r}),n=oR(e);if(e&&n.kind===`live`){if(a?.kind===`authorized`){let e=a.authorization;if(e.selectedAuthMethod.kind!==B.passkey)throw Error(`[SigningEngine][near] active Wallet Session method is unavailable`);return await Uc({hydration:bc({authority:await H({authority:e.selectedFactorAuthority}),runtime:n.runtime,materialActivation:r}),requirement:t.auth,authorization:e})}if(a?.kind!==`operation_step_up`)throw a?.kind===`full_login_required`?ef(a.reason):Error(`[SigningEngine][near] Wallet Session status is temporarily unavailable`)}}if(a?.kind===`full_login_required`)throw ef(a.reason);if(a?.kind===`temporarily_unavailable`)throw Error(`[SigningEngine][near] Wallet Session persistence is temporarily unavailable`);if(t.auth.kind===B.passkey&&a?.kind===`operation_step_up`)return Vc({hydration:(await nR({walletId:e.walletId,identity:t,relayerUrl:this.seamsWebConfigs.network.relayer.url})).prepared.plan,requirement:t.auth});let o=t.auth.kind===B.passkey?await QL({walletId:e.walletId,identity:t}):null,s=o?.sealedRecord.ed25519Restore.materialActivation??(n?Cc(n.activeClient.metadata()):r);if(!s)throw tf(`missing_capability`);let c=oR(this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:s})),l;switch(t.auth.kind){case B.passkey:{if(!o)throw tf(`missing_runtime`);if(a?.kind!==`authorized`)throw Error(`[SigningEngine][near] exact Passkey authorization is unavailable`);let n={kind:`found`,authorization:a.authorization},r=await hr({runtime:o,authorization:a.authorization,nowMs:Date.now()}),i=await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:o,walletSessionState:r,materialActivation:s}),u;try{u=await iv({walletId:e.walletId,runtime:o,authorizationRead:n})}catch{throw tf(`binding_mismatch`)}let d=rR(o),f=await vr({store:G,walletId:String(t.signer.account.wallet.walletId),nearAccountId:String(t.signer.account.nearAccountId),nearEd25519SigningKeyId:String(t.signer.nearEd25519SigningKeyId),signerSlot:t.signer.signerSlot,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,authority:u}),p={kind:`available`,walletId:String(t.signer.account.wallet.walletId),nearAccountId:String(t.signer.account.nearAccountId),signerSlot:t.signer.signerSlot,materialActivation:s,authority:u};l=Sc({publicLocator:p,sealed:f.kind===`available`?{kind:`available`,authority:f.locator.authority,materialActivation:f.locator.materialActivation,sealedMaterial:f.locator.sealedMaterial}:{kind:`missing`},runtime:c,unlockSource:i.ok?{kind:`available`,authority:u}:{kind:`unavailable`}}),l.kind===`blocked`&&l.reason===`missing_material`&&(l=(await iR({store:G,identity:d,authority:u,publicLocator:p})).plan);break}case B.emailOtp:l=await this.resolveWalletCustodyEmailOtpHydration({walletId:e.walletId,nearAccountId:e.nearAccountId,identity:jL(t),signerSlot:t.signer.signerSlot,materialActivation:s});break;default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(l.kind===`blocked`)throw l.reason===`persistence_unavailable`?Error(`[SigningEngine][near] signing material persistence is unavailable`):nf(l.reason);return Vc({hydration:l,requirement:t.auth})}async resolveWalletCustodyEmailOtpHydration(e){let t=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:e.materialActivation}),n=await this.readNearEd25519SigningCandidate(e.walletId),r;if(n.kind===`found`){if(n.authorization.selectedAuthMethod.kind!==B.emailOtp)return vc({capability:e.materialActivation.capability,reason:`missing_material`});if(r=await H({authority:n.authorization.selectedFactorAuthority}),t)return bc({authority:r,runtime:yc(e.materialActivation),materialActivation:e.materialActivation})}else if(n.kind===`exhausted`){let n=await ML({walletId:e.walletId,nearAccountId:e.nearAccountId,identity:e.identity,signerSlot:e.signerSlot,materialActivation:e.materialActivation,authorizationRead:{kind:`exhausted`}});if(!n)return vc({capability:e.materialActivation.capability,reason:`missing_material`});if(r=n,t)try{yR({material:t,input:{walletId:e.walletId,nearAccountId:e.nearAccountId,materialIdentity:e.identity},expectedActivation:e.materialActivation})}catch{return vc({capability:e.materialActivation.capability,reason:`binding_mismatch`})}}else return vc({capability:e.materialActivation.capability,reason:`missing_material`});if(t)return bc({authority:r,runtime:yc(e.materialActivation),materialActivation:e.materialActivation});let i=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.nearAccountId),signerSlot:e.signerSlot});return i.kind===`found`&&i.material.binding.walletId===String(e.walletId)&&i.material.binding.nearAccountId===String(e.nearAccountId)&&i.material.binding.signerSlot===e.signerSlot&&String(e.materialActivation.materialOwner)===String(e.walletId)&&(n.kind===`found`||i.material.binding.nearEd25519SigningKeyId===String(e.identity.signer.nearEd25519SigningKeyId)&&i.material.binding.signingWorkerId===String(e.materialActivation.signingWorker))?hc({authority:r,materialActivation:e.materialActivation,sealedMaterial:b_(JSON.stringify([i.material.binding.walletId,i.material.binding.nearAccountId,i.material.binding.signerSlot,e.materialActivation.activationId]))}):vc({capability:e.materialActivation.capability,reason:`missing_material`})}async rehydrateActiveEmailOtpEd25519YaoSessionMaterial(e){let t=fR(e.input);if(t.auth.kind!==B.emailOtp)throw Error(`[SigningEngine][near] Email OTP session restore requires Email OTP material`);let n=await GL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity,materialActivation:e.materialActivation}),r=await this.getUserBySignerSlot(t.nearAccountId,t.laneIdentity.signer.signerSlot);if(!r||String(r.walletId)!==String(t.walletId)||String(r.nearAccountId)!==String(t.nearAccountId)||r.signerSlot!==t.laneIdentity.signer.signerSlot||r.authMethod!==B.emailOtp)throw Error(`[SigningEngine][near] Email OTP signer record is unavailable`);let i=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(t.nearAccountId),signerSlot:r.signerSlot}),a=e.authorization.operationCredential;if(i.kind!==`found`)throw Error(`[SigningEngine][near] Email OTP session material is unavailable`);let o=await SL(e.authorization,e.remainingUses),s=await this.signerWorkerManager.requestWorkerOperation({kind:`emailOtp`,request:{type:`rehydrateActiveEmailOtpEd25519YaoSessionMaterial`,payload:{relayUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim(),walletId:String(t.walletId),walletAuthMethodId:String(e.authorization.selectedAuthMethod.walletAuthMethodId),orgId:n.runtimePolicyScope.orgId,providerSubjectId:t.auth.providerSubjectId,nearAccountId:String(t.nearAccountId),signerSlot:r.signerSlot,remainingUses:e.remainingUses,expectedOperationalPublicKey:r.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,operationCredential:a,ecdsa:o,walletCustodyEd25519Material:i}}});switch(s.ecdsa.kind){case`activated`:if(o.kind!==`required`)throw Error(`NEAR-only restore returned ECDSA activation`);await wL({walletId:t.walletId,authorization:s.walletSessionAuthorization,response:s.ecdsa.session});break;case`absent`:if(o.kind!==`absent`)throw Error(`Combined restore omitted ECDSA activation`);break;default:throw s.ecdsa,Error(`Unsupported Email OTP restore result`)}return await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:{walletId:t.walletId,walletSessionUserId:String(t.walletId)},providerSubject:t.auth.providerSubjectId,emailHashHex:await A(r.loginDisplayName.trim().toLowerCase()),signerSlot:r.signerSlot,expectedOperationalPublicKey:r.operationalPublicKey,expectedThresholdSessionId:String(n.thresholdSessionId),bootstrap:s.bootstrap,activeClientHandle:s.activeClientHandle,metadata:s.metadata,exactAuthorization:s.walletSessionAuthorization}),s.ecdsa.kind===`absent`&&await K.writeExactWithOperationCredential({record:s.walletSessionAuthorization.record,operationCredential:s.walletSessionAuthorization.operationCredential}),bc({authority:await H({authority:e.authorization.selectedFactorAuthority}),runtime:yc(e.materialActivation),materialActivation:e.materialActivation})}async prepareExactNearEd25519YaoSigning(e){if(e.laneIdentity!==void 0&&e.auth?.kind===B.emailOtp){let t=await this.prepareMaterialIdentityNearEd25519YaoSigning(pR(e)),n=await this.readNearEd25519SigningCandidate(e.walletId);if(n.kind!==`found`||n.authorization.selectedAuthMethod.kind!==B.emailOtp)return t;let r=n.authorization;switch(t.hydration.kind){case`use_live_runtime`:break;case`rehydrate_material_activation`:t=Vc({hydration:await this.rehydrateActiveEmailOtpEd25519YaoSessionMaterial({input:e,materialActivation:t.hydration.materialActivation,authorization:r,remainingUses:r.status.remainingUses}),requirement:e.auth});break;case`reauthorize_public_anchor`:case`blocked`:return t;default:throw t.hydration,Error(`[SigningEngine][near] unsupported Email OTP hydration state`)}let i=await this.readNearEd25519SigningCandidate(e.walletId);return i.kind!==`found`||i.authorization.selectedAuthMethod.kind!==B.emailOtp?t:await Uc({hydration:t.hydration,requirement:e.auth,authorization:i.authorization})}if(e.laneIdentity===void 0)return await this.prepareMaterialIdentityNearEd25519YaoSigning(e);let t=await this.readNearEd25519SigningCandidate(e.walletId);switch(t.kind){case`found`:{let n=t.authorization;if(n.selectedAuthMethod.kind!==e.auth.kind)return await this.prepareMaterialIdentityNearEd25519YaoSigning(pR(e));let r=await Pt({walletId:e.walletId,laneIdentity:e.laneIdentity});if(r.kind===`missing`&&e.auth.kind===B.passkey){let t=await KL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:e.laneIdentity}),r=t.materialActivation,i=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:r});if(!i)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);let a=yR({material:i,input:e,expectedActivation:r}),o=await YL({reference:t,material:a,authorization:n,materialActivation:r,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()}),s=oR(a);if(s.kind!==`live`)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);return await Uc({hydration:bc({authority:o.authority,runtime:s.runtime,materialActivation:r}),requirement:e.auth,authorization:n})}if(r.kind!==`resolved`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${r.kind}`);let i=r.runtime,a=i.sealedRecord.ed25519Restore.materialActivation,o=await hr({runtime:i,authorization:n,nowMs:Date.now()}),s=o.signingLane.identity.signer,c={kind:`available`,walletId:String(s.account.wallet.walletId),nearAccountId:String(s.account.nearAccountId),signerSlot:s.signerSlot,materialActivation:a},l=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:s.account.wallet.walletId,nearAccountId:s.account.nearAccountId,materialActivation:a}),u=e.auth.kind===B.passkey?await this.passkeyMpcSession.claimWarmSessionMaterial({thresholdSessionId:i.thresholdSessionId,purpose:{curve:`ed25519`,materialActivation:a},consume:!1}):null,d={kind:`unavailable`};u?.ok===!0&&(d={kind:`available`,passkeyPrfFirstB64u:u.prfFirstB64u});let f=await this.resolveExactNearEd25519YaoSigningHydration({args:e,walletSessionState:o,publicLocator:c,runtime:oR(l),unlockSource:d});if(f.kind===`use_live_runtime`){if(!l)throw Error(`[SigningEngine][near] live Ed25519 material is unavailable`);await bR({input:e,authorization:n,sealedRuntime:i,material:l})}return await Uc({hydration:f,requirement:e.auth,authorization:n})}case`missing`:case`expired`:case`exhausted`:case`superseded`:case`authority_unavailable`:case`method_unavailable`:case`capability_unavailable`:case`unavailable`:return await this.prepareMaterialIdentityNearEd25519YaoSigning(pR(e));case`upgrade_required`:throw new Cs(`[SigningEngine][near] Wallet Session authorization requires a newer client`);case`corrupt`:case`persistence_unavailable`:throw Error(`[SigningEngine][near] Wallet Session authorization is ${t.kind}`);default:throw Error(`[SigningEngine][near] unsupported Wallet Session authorization state`)}}async prepareExactNearEd25519YaoMaterialBoundary(e){vR(e);let t=await this.prepareExactNearEd25519YaoSigning(e),n={input:e,materialActivation:t.hydration.materialActivation||null};return{preparation:t,executor:{resolveSigningKeyMaterial:this.resolveExactNearEd25519SigningKeyMaterial.bind(this,n),resolve:this.resolveExactNearEd25519YaoPreparedMaterial.bind(this,n),resolveWalletSessionState:this.resolveExactNearEd25519YaoWalletSessionState.bind(this,n),resolveFundingSession:this.resolveExactNearEd25519FundingSession.bind(this,n),preparePasskeyOperationStepUp:this.prepareExactNearEd25519YaoOperationStepUpAtBoundary.bind(this,n),prepareEmailOtpOperationStepUp:this.prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary.bind(this,n)}}}async resolveExactNearEd25519SigningKeyMaterial(e){let t=sR(e.input),n=t.signer,r=t.auth,i=e.materialActivation;if(!i)throw Error(`[SigningEngine][near] prepared material has no activation`);if(String(n.account.wallet.walletId)!==String(e.input.walletId)||String(n.account.nearAccountId)!==String(e.input.nearAccountId))throw Error(`[SigningEngine][near] selected Ed25519 lane identity changed`);let a=await G.resolveSelectedWalletAuthority(String(e.input.walletId));if(a.kind!==`resolved`){let e=a.kind===`integrity_error`?`: ${a.reason}`:``;throw Error(`[SigningEngine][near] selected Wallet Authority is ${a.kind}${e}`)}let{selection:o,authMethod:s,authority:c,signerMaterials:l}=a,u;switch(r.kind){case B.passkey:u=s.kind===B.passkey&&String(s.rpId)===String(r.rpId)&&s.credentialIdB64u===r.credentialIdB64u;break;case B.emailOtp:u=s.kind===B.emailOtp;break;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(o.lockState!==`unlocked`||c.state!==`active`||s.status!==`active`||String(o.walletId)!==String(e.input.walletId)||o.walletAuthMethodId!==s.walletAuthMethodId||s.walletAuthorityId!==c.authorityId||String(s.walletId)!==String(e.input.walletId)||!u)throw Error(`[SigningEngine][near] selected Wallet Authority does not match the lane`);let d=await Gm({selected:{authMethod:s,authority:c},operation:{kind:`near_sign`,operation:`sign`,keyFamily:`ed25519`}});if(d.kind!==`resolved`)throw Error(`[SigningEngine][near] selected Wallet Authority rejected signing (${d.reason.kind})`);let f=d.value;if(f.keyFamily!==`ed25519`||String(f.walletId)!==String(e.input.walletId)||f.authMethodId!==s.walletAuthMethodId||!b(f.materialActivation,i))throw Error(`[SigningEngine][near] selected Wallet Authority activation changed`);if(c.signerActivations.keyFamilies[0]!==`ed25519`||c.signerActivations.ed25519===void 0||!b(c.signerActivations.ed25519.materialActivation,i)||c.signerActivations.ed25519.signer.registeredPublicKeyB64u!==f.registeredPublicKeyB64u)throw Error(`[SigningEngine][near] selected Ed25519 authority activation changed`);let p=F(f.registeredPublicKeyB64u);if(p.byteLength!==32)throw Error(`[SigningEngine][near] selected Ed25519 public key is invalid`);let m=i.signingWorker,h=[1,2],g=null;if(c.provenance.kind===`device_link`){await qL({store:this.ed25519YaoPublicCapabilityReferences,identity:t,materialActivation:i});for(let e of l)if(!(!HL(e)||e.authorityId!==c.authorityId||e.walletAuthMethodId!==s.walletAuthMethodId||!b(e.materialActivation,i))){if(g)throw Error(`[SigningEngine][near] linked Ed25519 signer material is ambiguous`);g=e}if(!g)throw Error(`[SigningEngine][near] linked Ed25519 signer material is unavailable`);let a=g.publicFacts.applicationBinding,o=g.publicFacts.targetBinding,u=o.lifecycle,d=g.targetFactor,p;switch(r.kind){case B.passkey:p=d.kind===B.passkey&&d.walletAuthMethodId===s.walletAuthMethodId&&String(d.rpId)===String(r.rpId)&&d.credentialIdB64u===r.credentialIdB64u;break;case B.emailOtp:p=d.kind===B.emailOtp&&s.kind===B.emailOtp&&d.walletAuthMethodId===s.walletAuthMethodId&&d.emailHashHex===s.emailHashHex;break;default:throw Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}if(a.wallet_id!==String(e.input.walletId)||a.near_ed25519_signing_key_id!==String(n.nearEd25519SigningKeyId)||a.key_creation_signer_slot!==n.signerSlot||u.account_id!==String(e.input.walletId)||u.session_id!==String(t.thresholdSessionId)||u.selected_server_id!==String(m)||!b(uo(o.material_activation),i)||!b(uo(g.publicFacts.activationReceipt.material_activation),i)||P(Uint8Array.from(g.publicFacts.activationReceipt.registered_public_key))!==f.registeredPublicKeyB64u||!p)throw Error(`[SigningEngine][near] linked Ed25519 signer identity changed`);h=g.publicFacts.participantIds}let _=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.input.walletId,nearAccountId:e.input.nearAccountId,materialActivation:i});if(_){let r=yR({material:_,input:e.input,expectedActivation:i}),a=r.activeClient.metadata(),o=r.facts;if(P(a.registeredPublicKey)!==f.registeredPublicKeyB64u||a.participantIds[0]!==h[0]||a.participantIds[1]!==h[1]||a.applicationBinding.wallet_id!==String(e.input.walletId)||a.applicationBinding.near_ed25519_signing_key_id!==String(n.nearEd25519SigningKeyId)||a.applicationBinding.key_creation_signer_slot!==n.signerSlot||a.scope.account_id!==String(e.input.walletId)||a.scope.threshold_session_id!==String(t.thresholdSessionId)||a.scope.signing_worker_id!==String(m)||o.routerAbNormalSigning.signingWorkerId!==String(m)||o.signingRootId!==a.applicationBinding.signing_root_id||o.signingRootVersion!==a.scope.root_share_epoch)throw Error(`[SigningEngine][near] active Ed25519 public material changed`);if(g){let e=g.publicFacts.applicationBinding,t=g.publicFacts.targetBinding.lifecycle;if(a.applicationBinding.wallet_id!==e.wallet_id||a.applicationBinding.near_ed25519_signing_key_id!==e.near_ed25519_signing_key_id||a.applicationBinding.signing_root_id!==e.signing_root_id||a.applicationBinding.key_creation_signer_slot!==e.key_creation_signer_slot||a.scope.lifecycle_id!==t.lifecycle_id||a.scope.root_share_epoch!==t.root_share_epoch||a.scope.account_id!==t.account_id||a.scope.threshold_session_id!==t.session_id||a.scope.signing_worker_id!==t.selected_server_id)throw Error(`[SigningEngine][near] linked Ed25519 runtime identity changed`)}}let v=`ed25519:${Tr(p)}`;return{nearAccountId:e.input.nearAccountId,signerSlot:n.signerSlot,kind:`threshold_ed25519_v1`,publicKey:v,relayerKeyId:m,keyVersion:Ar,participants:ye({clientParticipantId:h[0],relayerParticipantId:h[1],relayerKeyId:m,clientShareDerivation:`prf_first_v1`}),timestamp:c.activatedAtMs}}async resolveExactNearEd25519YaoPreparedMaterial(e,t){let n=SR({context:e,preparation:t});switch(t.hydration.kind){case`use_live_runtime`:{let t=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.input.walletId,nearAccountId:e.input.nearAccountId,materialActivation:n});if(!t)throw Error(`[SigningEngine][near] active Ed25519 Yao capability is unavailable`);return yR({material:t,input:e.input,expectedActivation:n})}case`rehydrate_material_activation`:{let t=fR(e.input);switch(t.auth.kind){case B.passkey:{let e=await this.rehydrateExactPasskeyEd25519YaoCapabilityForSigning(t);try{let r=await this.readNearEd25519SigningCandidate(t.walletId);if(r.kind!==`found`||r.authorization.selectedAuthMethod.kind!==B.passkey)throw Error(`[SigningEngine][near] Wallet Session authorization is ${r.kind}`);let i=await XL({walletId:t.walletId,laneIdentity:t.laneIdentity});return await bR({input:t,authorization:r.authorization,sealedRuntime:i,material:e}),yR({material:e,input:t,expectedActivation:n})}catch(t){throw e.activeClient.dispose(),t}}case B.emailOtp:throw Error(`[SigningEngine][near] Email OTP custody cache is unavailable; link the device before signing`);default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] retired material requires reauthorization`);case`blocked`:throw Error(`[SigningEngine][near] prepared material is blocked: ${t.hydration.reason}`);default:throw t.hydration,Error(`[SigningEngine][near] unsupported prepared material hydration`)}}async resolveExactNearEd25519YaoWalletSessionState(e){let t=fR(e.input);if(t.auth.kind===B.emailOtp){if(!e.materialActivation)throw Error(`[SigningEngine][near] prepared material has no activation`);let n=await GL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity,materialActivation:e.materialActivation}),r=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:e.materialActivation});if(!r)throw Error(`[SigningEngine][near] active Email OTP Ed25519 material is unavailable`);let i=await this.readNearEd25519SigningCandidate(t.walletId);if(i.kind!==`found`||i.authorization.selectedAuthMethod.kind!==B.emailOtp)throw Error(`[SigningEngine][near] Wallet Session authorization is ${i.kind}`);return await mR({reference:n,material:yR({material:r,input:t,expectedActivation:e.materialActivation}),authorization:i.authorization,materialActivation:e.materialActivation,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}let n=await Pt({walletId:t.walletId,laneIdentity:t.laneIdentity});if(n.kind===`missing`&&t.auth.kind===B.passkey){if(!e.materialActivation)throw Error(`[SigningEngine][near] prepared material has no activation`);let n=await KL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:t.laneIdentity});if(!b(n.materialActivation,e.materialActivation))throw Error(`[SigningEngine][near] Passkey public lane activation changed`);let r=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.walletId,nearAccountId:t.nearAccountId,materialActivation:e.materialActivation});if(!r)throw Error(`[SigningEngine][near] active Passkey Ed25519 material is unavailable`);let i=yR({material:r,input:t,expectedActivation:e.materialActivation}),a=await this.readNearEd25519SigningCandidate(t.walletId);if(a.kind!==`found`||a.authorization.selectedAuthMethod.kind!==B.passkey)throw Error(`[SigningEngine][near] Wallet Session authorization is ${a.kind}`);return await YL({reference:n,material:i,authorization:a.authorization,materialActivation:e.materialActivation,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}if(n.kind!==`resolved`)throw Error(`[SigningEngine][near] exact persisted Ed25519 runtime is ${n.kind}`);let r=n.runtime,i=await this.readNearEd25519SigningCandidate(t.walletId);if(i.kind!==`found`)throw Error(`[SigningEngine][near] Wallet Session authorization is ${i.kind}`);return await hr({runtime:r,authorization:i.authorization,nowMs:Date.now()})}async resolveExactNearEd25519FundingSession(e){let t=sR(e.input),n=await this.readExactNearEd25519WalletSessionAuthorization(t.signer.account.wallet.walletId);if(n.kind!==`found`||n.authorization.selectedAuthMethod.kind!==t.auth.kind)throw Error(`[SigningEngine][near] authenticated funding session is unavailable`);if(!e.materialActivation)throw Error(`[SigningEngine][near] funding session material activation is unavailable`);if(!jc({session:n.authorization.session,materialActivation:e.materialActivation}))throw Error(`[SigningEngine][near] authenticated funding session material changed`);let r=n.authorization.operationCredential.token;if(n.authorization.session.walletId!==t.signer.account.wallet.walletId||n.authorization.selectedAuthMethod.kind!==t.auth.kind||!n.authorization.operationCredential.walletSessionId||!n.authorization.session.quotaId)throw Error(`[SigningEngine][near] funding session identity does not match`);return{kind:`near_ed25519_funding_session`,signer:t.signer,thresholdSessionId:t.thresholdSessionId,walletSessionToken:r}}async prepareExactNearEd25519YaoOperationStepUpAtBoundary(e,t){if(lR(e.input).kind!==B.passkey)throw Error(`[SigningEngine][near] Email OTP material cannot use Passkey rehydration`);let n=SR({context:e,preparation:t}),r=await this.prepareExactPasskeyEd25519YaoOperationStepUpForSigning(e.input);if(!b(n,r.materialActivation))throw Error(`[SigningEngine][near] operation step-up changed material activation`);return r}async prepareExactNearEmailOtpEd25519YaoOperationStepUpAtBoundary(e,t){let n=sR(e.input);if(n.auth.kind!==B.emailOtp)throw Error(`[SigningEngine][near] Passkey material cannot use Email OTP rehydration`);let r=SR({context:e,preparation:t});switch(t.hydration.kind){case`use_live_runtime`:return{kind:`live`,materialActivation:r,material:await this.resolveExactNearEd25519YaoPreparedMaterial(e,t)};case`rehydrate_material_activation`:{let t=await GL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:n,materialActivation:r}),i=await this.getUserBySignerSlot(e.input.nearAccountId,n.signer.signerSlot);if(!i||String(i.walletId)!==String(e.input.walletId)||String(i.nearAccountId)!==String(e.input.nearAccountId)||i.signerSlot!==n.signer.signerSlot||i.authMethod!==B.emailOtp)throw Error(`[SigningEngine][near] Email OTP signer record is unavailable`);let a=await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.input.nearAccountId),signerSlot:i.signerSlot});if(a.kind!==`found`)throw Error(`[SigningEngine][near] Email OTP custody material is unavailable`);if(`ed25519:${Tr(F(a.material.binding.registeredPublicKeyB64u))}`!==i.operationalPublicKey||a.material.binding.walletId!==String(e.input.walletId)||a.material.binding.nearAccountId!==String(e.input.nearAccountId)||a.material.binding.signerSlot!==i.signerSlot||a.material.binding.signingWorkerId!==String(r.signingWorker))throw Error(`[SigningEngine][near] Email OTP custody material binding changed`);let o=this.seamsWebConfigs.network.relayer?.url||``;if(!o)throw Error(`[SigningEngine][near] Email OTP recovery requires a relay URL`);let s={input:e.input,materialActivation:r,facts:_R({input:e.input,publicLane:t,relayerUrl:o}),publicLane:t,sealedMaterial:a.material,operationalPublicKey:i.operationalPublicKey,emailHashHex:await A(i.loginDisplayName.trim().toLowerCase())};return{kind:`sealed`,materialActivation:r,facts:s.facts,authorizeAndRehydrate:this.authorizeAndRehydrateEmailOtpEd25519OperationMaterial.bind(this,s)}}case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] retired Email OTP material cannot sign`);case`blocked`:throw Error(`[SigningEngine][near] Email OTP operation material is blocked: ${t.hydration.reason}`);default:throw t.hydration,Error(`[SigningEngine][near] unsupported Email OTP operation material`)}}async authorizeAndRehydrateEmailOtpEd25519OperationMaterial(e,t){let n=sR(e.input);if(n.auth.kind!==B.emailOtp||t.proof.providerSubjectId!==n.auth.providerSubjectId)throw Error(`[SigningEngine][near] Email OTP operation authority changed`);let r=await eR({walletId:e.input.walletId,proof:t.proof}),i={kind:`exact_ed25519_export_material`,signer:n.signer,auth:n.auth,thresholdSessionId:n.thresholdSessionId},a=await KN({subject:i,expectedMaterialActivation:e.materialActivation,authorization:await this.readExactEmailOtpEd25519ExportAuthorization({subject:i,expectedMaterialActivation:e.materialActivation}),source:{signingWorkerId:e.sealedMaterial.binding.signingWorkerId,participantIds:e.sealedMaterial.binding.participantIds,registeredPublicKeyB64u:e.sealedMaterial.binding.registeredPublicKeyB64u},relayerUrl:e.facts.relayerUrl,fetch:globalThis.fetch.bind(globalThis)}),o=await iP({workerCtx:this.signerWorkerManager.getContext(),payload:{relayUrl:e.facts.relayerUrl,walletId:String(e.input.walletId),orgId:e.publicLane.runtimePolicyScope.orgId,providerSubjectId:n.auth.providerSubjectId,nearAccountId:String(e.input.nearAccountId),signerSlot:e.publicLane.signerSlot,expectedOperationalPublicKey:e.operationalPublicKey,expectedThresholdSessionId:e.publicLane.thresholdSessionId,expectedMaterialActivation:e.materialActivation,ed25519YaoRecovery:{kind:la,signerSlot:e.publicLane.signerSlot,remainingUses:Ue,orgId:e.publicLane.runtimePolicyScope.orgId},walletCustodyEd25519Material:{kind:`found`,material:e.sealedMaterial},bootstrap:a,normalSigningRequest:t.normalSigningRequest,displayDigest:t.displayDigest,proof:t.proof,operationCredential:r}});if(o.walletCustodyEd25519Material)try{await this.persistWalletCustodyEd25519Material(o.walletCustodyEd25519Material)}catch(e){throw await ty({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:o.activeClientHandle}).catch(()=>void 0),e}let s=new ny(this.signerWorkerManager.getContext(),o.activeClientHandle,o.metadata),c;try{c=yR({material:{activeClient:s,facts:e.facts},input:e.input,expectedActivation:e.materialActivation})}catch(e){throw s.dispose(),e}return{material:c,issuedAuthorization:{kind:o.issuedAuthorization.kind,authorization:o.issuedAuthorization.authorization,expiresAtMs:o.issuedAuthorization.expiresAtMs}}}async resolveExactNearEd25519YaoSigningHydration(e){let t=fR(e.args);switch(t.auth.kind){case B.passkey:{let n=await this.resolvePasskeyEd25519YaoHydration({walletSessionState:e.walletSessionState,credentialIdB64u:t.auth.credentialIdB64u,publicLocator:e.publicLocator,unlockSource:e.unlockSource}),r;switch(n.kind){case`live`:case`blocked`:r=n.plan;break;case`rehydrated`:n.activeClient.dispose(),r=n.plan;break;default:throw Error(`[SigningEngine][near] unsupported Passkey hydration result`)}return r.kind===`blocked`&&r.reason===`missing_material`?(await Mn({store:G,identity:On(e.walletSessionState,t.auth.rpId,t.auth.credentialIdB64u),authority:e.walletSessionState.authority,publicLocator:e.publicLocator})).plan:r}case B.emailOtp:if(e.publicLocator.kind!==`available`)throw Error(`[SigningEngine][near] Email OTP custody locator is unavailable`);return await this.resolveWalletCustodyEmailOtpHydration({walletId:t.walletId,nearAccountId:t.nearAccountId,identity:jL(sR(t)),signerSlot:t.laneIdentity.signer.signerSlot,materialActivation:e.publicLocator.materialActivation});default:throw t.auth,Error(`[SigningEngine][near] unsupported Ed25519 material authority`)}}async prepareExactPasskeyEd25519YaoOperationStepUpForSigning(e){let t=sR(e);if(t.auth.kind!==B.passkey)throw Error(`[SigningEngine][near] Passkey operation step-up requires Passkey material`);if(!await this.resolveNearEd25519YaoSigningLane({...e.laneIdentity===void 0?{kind:`material_identity`,materialIdentity:t}:{kind:`exact_lane`,laneIdentity:e.laneIdentity}}))throw Error(`[SigningEngine][near] sealed Ed25519 operation lane is unavailable`);let n=await nR({walletId:e.walletId,identity:t,relayerUrl:this.seamsWebConfigs.network.relayer.url});return{materialActivation:n.prepared.plan.materialActivation,facts:n.facts,participantIds:[...n.participantIds],rehydrate:this.rehydratePreparedPasskeyEd25519YaoOperationStepUp.bind(this,{input:e,identity:n.localIdentity,facts:n.facts,authority:n.authority,rpId:t.auth.rpId,credentialIdB64u:t.auth.credentialIdB64u,publicLocator:n.publicLocator,materialActivation:n.prepared.plan.materialActivation})}}async rehydratePreparedPasskeyEd25519YaoOperationStepUp(e,t){if(String(t.rawId||t.id||``).trim()!==e.credentialIdB64u)throw tf(`binding_mismatch`);let n=Ld({credential:t,rpId:e.rpId}),r=await aR({store:G,identity:e.identity,authority:e.authority,publicLocator:e.publicLocator,unlockSource:{kind:`available`,passkeyPrfFirstB64u:n.secretSource.prfFirstB64u},liveMaterial:null});if(r.kind===`blocked`)throw nf(r.plan.reason);if(r.kind!==`rehydrated`)throw tf(`corrupt`);if(!b(e.materialActivation,r.plan.materialActivation))throw r.activeClient.dispose(),tf(`binding_mismatch`);let i={activeClient:r.activeClient,facts:e.facts};try{return yR({material:i,input:e.input,expectedActivation:e.materialActivation})}catch{throw i.activeClient.dispose(),tf(`binding_mismatch`)}}async resolveExactPasskeyEd25519YaoExportContext(e){let t=String(this.seamsWebConfigs.network.relayer?.url||``).trim();if(!t)throw Error(`[SigningEngine][ed25519-export] passkey export requires relayerUrl`);let n=R(String(e.laneIdentity.signer.account.wallet.walletId));if(!await At(hd({authMethod:e.laneIdentity.auth.kind,materialActivation:e.materialActivation})))return await this.resolveLinkedPasskeyEd25519YaoExportContext({...e,walletId:n,relayerUrl:t});let r=await ZL({walletId:n,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation}),i=e.laneIdentity.thresholdSessionId,a=await cv(r.walletId,t,new J);if(a){let t=await hr({runtime:r,authorization:a,nowMs:Date.now()});(await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:r,walletSessionState:t,materialActivation:e.materialActivation})).ok&&(i=t.thresholdSessionId)}return await fk({subject:{kind:`owner_sealed_runtime`,walletId:R(String(e.laneIdentity.signer.account.wallet.walletId)),nearAccountId:String(e.laneIdentity.signer.account.nearAccountId),nearEd25519SigningKeyId:String(e.laneIdentity.signer.nearEd25519SigningKeyId),signerSlot:e.laneIdentity.signer.signerSlot,thresholdSessionId:i,materialActivation:e.materialActivation},relayerUrl:t,fetch:IL},{readExactEd25519SealedSession:At,readPasskeyCustodySessionEnvelope:Ft,resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),readExactWalletSessionAuthorization:K.readExactActiveForWallet.bind(K),resolveExactPasskeyWalletAuthAuthorityRef:OL,nowMs:this.runtimePorts.clock.nowMs})}async resolveLinkedPasskeyEd25519YaoExportContext(e){if(e.laneIdentity.auth.kind!==B.passkey)throw Error(`[SigningEngine][ed25519-export] linked export requires a Passkey lane`);let t=await G.resolveSelectedWalletAuthority(String(e.walletId));if(t.kind!==`resolved`){let e=t.kind===`integrity_error`?`: ${t.reason}`:``;throw Error(`[SigningEngine][ed25519-export] selected Wallet Authority is ${t.kind}${e}`)}let{selection:n,authMethod:r,authority:i,signerMaterials:a,exportRoot:o}=t;if(n.lockState!==`unlocked`||r.kind!==B.passkey||r.status!==`active`||i.state!==`active`||i.provenance.kind!==`device_link`||String(r.walletId)!==String(e.walletId)||r.walletAuthorityId!==i.authorityId||r.walletAuthMethodId!==n.walletAuthMethodId||String(r.rpId)!==String(e.laneIdentity.auth.rpId)||r.credentialIdB64u!==e.laneIdentity.auth.credentialIdB64u)throw Error(`[SigningEngine][ed25519-export] selected linked Passkey authority is unavailable`);let c=i.signerActivations.ed25519;if(!i.permissions.includes(`export_keys`)||!c||!b(c.materialActivation,e.materialActivation)||!o)throw Error(`[SigningEngine][ed25519-export] selected authority has no exact Ed25519 export capability`);let l=null;for(let t of a)if(!(!HL(t)||t.authorityId!==i.authorityId||t.walletAuthMethodId!==r.walletAuthMethodId||!b(t.materialActivation,e.materialActivation))){if(l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is ambiguous`);l=t}if(!l)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 material is unavailable`);let u=l.targetFactor;if(u.kind!==B.passkey||u.walletAuthMethodId!==r.walletAuthMethodId||u.rpId!==r.rpId||u.credentialIdB64u!==r.credentialIdB64u)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 factor binding changed`);let d=Xv(await K.readExactWithOperationCredential({walletId:e.walletId,authorityId:i.authorityId,authMethodId:r.walletAuthMethodId}),`[SigningEngine][ed25519-export] exact linked Wallet Session requires a newer client`),f=!1;if(d){for(let t of d.record.capabilitySubjects)if(t.kind===`export_keys`&&t.keyFamily===`ed25519`&&b(t.materialActivation,e.materialActivation)){f=!0;break}}if(!d||!f||d.record.authorityDigestB64u!==i.authorityDigestB64u||d.record.authorityRevocationEpoch!==i.revocationEpoch||d.record.expiresAtMs<=Date.now())throw Error(`[SigningEngine][ed25519-export] exact linked Wallet Session is unavailable`);let p=await KL({store:this.ed25519YaoPublicCapabilityReferences,laneIdentity:e.laneIdentity});if(!b(p.materialActivation,e.materialActivation))throw Error(`[SigningEngine][ed25519-export] linked public lane activation changed`);let m=await H({authority:{walletId:r.walletId,factor:{kind:B.passkey,credentialIdB64u:r.credentialIdB64u},verifier:{kind:`webauthn`,rpId:r.rpId},bindingId:r.walletAuthMethodId}});if(m.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ed25519-export] Passkey Wallet Session authority changed`);let h=this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e.walletId,nearAccountId:e.laneIdentity.signer.account.nearAccountId,materialActivation:e.materialActivation});if(!h||h.activeClient.status().kind!==`active`)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 runtime is unavailable`);let g=h.activeClient.metadata(),_=Cc(g),v=h.facts,y=e.laneIdentity.signer,x=l.publicFacts.applicationBinding,S=P(g.registeredPublicKey),C=Number(g.stateEpoch),w=s(g.scope.threshold_session_id),T=v.runtimePolicyScope,E=p.runtimePolicyScope;if(!w.ok||!Number.isSafeInteger(C)||C<1||!b(_,e.materialActivation)||String(v.thresholdSessionId)!==String(e.laneIdentity.thresholdSessionId)||String(v.signer.account.wallet.walletId)!==String(e.walletId)||String(v.signer.account.nearAccountId)!==String(y.account.nearAccountId)||String(v.signer.nearEd25519SigningKeyId)!==String(y.nearEd25519SigningKeyId)||v.signer.signerSlot!==y.signerSlot||x.wallet_id!==String(e.walletId)||x.near_ed25519_signing_key_id!==String(y.nearEd25519SigningKeyId)||x.key_creation_signer_slot!==y.signerSlot||g.applicationBinding.wallet_id!==x.wallet_id||g.applicationBinding.near_ed25519_signing_key_id!==x.near_ed25519_signing_key_id||g.applicationBinding.signing_root_id!==x.signing_root_id||g.applicationBinding.key_creation_signer_slot!==x.key_creation_signer_slot||g.scope.lifecycle_id!==l.publicFacts.targetBinding.lifecycle.lifecycle_id||g.scope.root_share_epoch!==l.publicFacts.targetBinding.lifecycle.root_share_epoch||g.scope.account_id!==String(e.walletId)||g.scope.threshold_session_id!==String(e.laneIdentity.thresholdSessionId)||g.scope.signing_worker_id!==v.routerAbNormalSigning.signingWorkerId||v.signingRootId!==x.signing_root_id||v.signingRootVersion!==g.scope.root_share_epoch||T.orgId!==E.orgId||T.projectId!==E.projectId||T.envId!==E.envId||T.signingRootVersion!==E.signingRootVersion||l.publicFacts.participantIds[0]!==g.participantIds[0]||l.publicFacts.participantIds[1]!==g.participantIds[1]||P(Uint8Array.from(l.publicFacts.activationReceipt.registered_public_key))!==S||c.signer.registeredPublicKeyB64u!==S)throw Error(`[SigningEngine][ed25519-export] linked Ed25519 runtime identity changed`);let D={authority:m,walletId:y.account.wallet.walletId,nearAccountId:y.account.nearAccountId,nearEd25519SigningKeyId:String(y.nearEd25519SigningKeyId),signerSlot:y.signerSlot,operationalPublicKey:`ed25519:${Tr(g.registeredPublicKey)}`,relayerKeyId:g.scope.signing_worker_id,credentialIdB64u:r.credentialIdB64u,capability:{materialActivation:_,activeCapabilityBinding:[...g.activeCapabilityBinding],registeredPublicKey:[...g.registeredPublicKey],nearAccountId:y.account.nearAccountId,applicationBinding:g.applicationBinding,participantIds:g.participantIds,runtimePolicyScope:v.runtimePolicyScope,lifecycle:{lifecycleId:g.scope.lifecycle_id,rootShareEpoch:g.scope.root_share_epoch,accountId:g.scope.account_id,thresholdSessionId:w.value,signerSetId:g.scope.signer_set_id,signingWorkerId:g.scope.signing_worker_id},stateEpoch:C}};return{kind:`ready`,context:{kind:`passkey_ed25519_yao_export_context_v1`,selectedLaneMaterialActivation:e.materialActivation,material:D,authorization:d,relayerUrl:e.relayerUrl,rpId:r.rpId,walletCustodyEnvelope:o.envelope}}}readExactEmailOtpEd25519ExportAuthorization(e){return FL({subject:e.subject,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()})}async activateRecoveredEmailOtpEd25519ExportCapability(e,t){let n=t.activation;await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({commitQueue:`acquire`,walletSession:{walletId:e.signer.account.wallet.walletId,walletSessionUserId:String(e.signer.account.wallet.walletId)},providerSubject:e.auth.providerSubjectId,emailHashHex:n.emailHashHex,signerSlot:e.signer.signerSlot,expectedOperationalPublicKey:`ed25519:${Tr(n.metadata.registeredPublicKey)}`,expectedThresholdSessionId:String(e.thresholdSessionId),bootstrap:n.bootstrap,activeClientHandle:n.activeClientHandle,metadata:n.metadata,credentialExpectation:{kind:`expect_exact_operation_credential`,operationCredential:t.operationCredential}})}async resolveEmailOtpEd25519YaoExportContext(e){return await QN({subject:e.laneIdentity,expectedMaterialActivation:e.materialActivation,readExactWalletSessionAuthorization:this.readExactEmailOtpEd25519ExportAuthorization.bind(this),resolveActiveCapability:(e,t,n)=>this.enginePorts.ed25519YaoActiveClients.resolve({walletId:e,nearAccountId:Or(t),materialActivation:n}),resolveEd25519YaoClientRootEnvelope:async({subject:e,capability:t,selectedMaterialActivation:n})=>UL({selected:await G.resolveSelectedWalletAuthority(String(e.signer.account.wallet.walletId)),subject:e,expectedMaterialActivation:n,activeCapability:t}),loadWalletCustodyMaterial:()=>this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(e.laneIdentity.signer.account.nearAccountId),signerSlot:e.laneIdentity.signer.signerSlot}),relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,fetch:IL,activateRecoveredCapability:this.activateRecoveredEmailOtpEd25519ExportCapability.bind(this,e.laneIdentity)})}async resolveActiveNearEd25519YaoSigningLane(e){if(!await this.resolveNearEd25519YaoSigningLane(e))return null;let t=IN(e),n=e.kind===`export_exact_lane`?this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId,materialActivation:e.materialActivation}):this.enginePorts.ed25519YaoActiveClients.resolveForWalletAccount({walletId:t.signer.account.wallet.walletId,nearAccountId:t.signer.account.nearAccountId});return n?.activeClient.status().kind===`active`?n:null}async resolveNearEd25519YaoSigningLane(e){let t=IN(e).signer.account.wallet.walletId,n=await this.readPersistedAvailableSigningLanes({walletId:t,ownerScope:await this.resolveSelectedOwnerLaneScope(t)},new J),r=[];for(let t of n.candidates.ed25519.near)LN(t,e)&&(!yd(t)||t.curve!==`ed25519`||r.push(t));if(r.length>1)throw Error(`[SigningEngine][near] local Ed25519 material lane is ambiguous`);return r[0]||null}async ensurePasskeyEd25519WarmSessionForSigning(e){let t=await zL({...e,claimWarmSessionMaterial:this.passkeyMpcSession.claimWarmSessionMaterial.bind(this.passkeyMpcSession),rehydrateWarmSessionMaterial:this.passkeyMpcSession.rehydrateWarmSessionMaterial.bind(this.passkeyMpcSession)});return t.ok&&e.runtime.factor.kind===`passkey`&&String(e.runtime.thresholdSessionId)!==String(e.walletSessionState.thresholdSessionId)&&await Wt({persistence:this,session:e.walletSessionState,prfFirstB64u:t.prfFirstB64u,ed25519Restore:yn({rpId:e.runtime.factor.rpId,nearAccountId:e.runtime.nearAccountId,nearEd25519SigningKeyId:e.runtime.nearEd25519SigningKeyId,relayerKeyId:e.runtime.relayerKeyId,participantIds:e.runtime.participantIds,runtimePolicyScope:e.runtime.runtimePolicyScope,signerSlot:e.runtime.signerSlot,routerAbNormalSigning:e.runtime.routerAbNormalSigning,credentialIdB64u:e.runtime.factor.credentialIdB64u,materialActivation:e.materialActivation}),materialActivation:e.materialActivation}),t}async rehydrateNearEd25519YaoCapabilityForSigning(e){let t=IN(e),n=await this.resolveNearEd25519YaoSigningLane(e);if(!n)throw Error(`[SigningEngine][near] local Ed25519 material lane is unavailable`);let r;if(e.kind===`export_exact_lane`)r=await ZL({walletId:t.signer.account.wallet.walletId,laneIdentity:e.laneIdentity,materialActivation:e.materialActivation});else{let i=e.kind===`exact_lane`?e.laneIdentity:MN(n);r=await XL({walletId:t.signer.account.wallet.walletId,laneIdentity:i})}let i=await tR({runtime:r,relayerUrl:String(this.seamsWebConfigs.network.relayer?.url||``).trim()});if(r.factor.kind!==`passkey`)throw Error(`[SigningEngine][near] persisted Ed25519 credential is unavailable`);let a=r.factor.credentialIdB64u,o=r.sealedRecord.ed25519Restore.materialActivation;if(!b(o,n.materialActivation))throw Error(`[SigningEngine][near] persisted Ed25519 material activation mismatch`);let s=await this.ensurePasskeyEd25519WarmSessionForSigning({runtime:r,walletSessionState:i,materialActivation:o}),c={kind:`available`,walletId:String(i.signingLane.identity.signer.account.wallet.walletId),nearAccountId:String(i.signingLane.identity.signer.account.nearAccountId),signerSlot:i.signingLane.identity.signer.signerSlot,materialActivation:o},l=await this.resolvePasskeyEd25519YaoHydration({walletSessionState:i,credentialIdB64u:a,publicLocator:c,unlockSource:s.ok?{kind:`available`,passkeyPrfFirstB64u:s.prfFirstB64u}:{kind:`unavailable`}});if(l.kind===`live`){let t=await this.resolveActiveNearEd25519YaoSigningLane(e);if(!t)throw Error(`[SigningEngine][near] local material rehydration did not publish a lane`);return{subject:e,material:t}}if(l.kind===`rehydrated`){if(!s.ok)throw l.activeClient.dispose(),Error(`[SigningEngine][near] local material rehydration lost the PRF secret`);try{await Wt({persistence:this,session:i,prfFirstB64u:s.prfFirstB64u,ed25519Restore:yn({rpId:r.factor.rpId,nearAccountId:r.nearAccountId,nearEd25519SigningKeyId:r.nearEd25519SigningKeyId,relayerKeyId:r.relayerKeyId,participantIds:r.participantIds,runtimePolicyScope:r.runtimePolicyScope,signerSlot:r.signerSlot,routerAbNormalSigning:r.routerAbNormalSigning,credentialIdB64u:a,materialActivation:o}),materialActivation:o}),await this.enginePorts.ed25519YaoActiveClients.activate({activeClient:l.activeClient,facts:kn(i)});let t=LL({subject:e,walletSessionState:i}),n=await this.resolveActiveNearEd25519YaoSigningLane(t);if(!n)throw Error(`[SigningEngine][near] local material rehydration did not publish an active lane`);return{subject:t,material:n}}catch(e){throw l.activeClient.dispose(),e}}throw l.plan.reason===`missing_material`?Error(`[SigningEngine][near] local threshold Ed25519 material requires Passkey reauthorization`):Error(`[SigningEngine][near] local threshold Ed25519 hydration blocked: ${l.plan.reason}`)}async resolvePasskeyEd25519YaoHydration(e){let t=e.walletSessionState.signingLane.identity.signer;return mr({store:G,identity:On(e.walletSessionState,this.getRpId(),e.credentialIdB64u),authority:e.walletSessionState.authority,publicLocator:e.publicLocator,unlockSource:e.unlockSource,liveMaterial:e.publicLocator.kind===`available`?this.enginePorts.ed25519YaoActiveClients.resolve({walletId:t.account.wallet.walletId,nearAccountId:t.account.nearAccountId,materialActivation:e.publicLocator.materialActivation}):null})}async signEvmFamily(e){return await Qu(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastAccepted(e){await Zu(this.enginePorts.tempoSigningDeps,e)}async reportTempoBroadcastRejected(e){await ed(this.enginePorts.tempoSigningDeps,e)}async reportTempoFinalized(e){await Vu(this.enginePorts.tempoSigningDeps,e)}async reportTempoDroppedOrReplaced(e){await Ju(this.enginePorts.tempoSigningDeps,e)}async reconcileTempoNonceLane(e){return await td(this.enginePorts.tempoSigningDeps,e)}storeUserData(e){return tc(this.enginePorts.registrationAccountLifecycleDeps,e)}async storeNearThresholdKeyMaterial(e){await mg({clientDB:G,keyMaterialStore:G},e)}getAllUsers(){return Gs(this.enginePorts.registrationAccountLifecycleDeps)}getUserBySignerSlot(e,t){return Ys(this.enginePorts.registrationAccountLifecycleDeps,e,t)}getLastUser(){return Vs(this.enginePorts.registrationAccountLifecycleDeps)}nearAuthenticatorsByAccount(e){return qs(this.enginePorts.registrationAccountLifecycleDeps,e)}setLastUser(e,t){return $s(this.enginePorts.registrationAccountLifecycleDeps,e,t)}activateAuthenticatedWalletState(e){return Qs(this.enginePorts.registrationAccountLifecycleDeps,e)}async upsertEd25519YaoPublicCapabilityReference(e){await this.ed25519YaoPublicCapabilityReferences.upsert(e)}async upsertEd25519YaoPublicCapabilityLaneReference(e){await ls(this.ed25519YaoPublicCapabilityReferences,e)}setWalletNearProvisioningState(e){return nc(this.enginePorts.registrationAccountLifecycleDeps,e)}getWalletNearProvisioningState(e){return Zs(this.enginePorts.registrationAccountLifecycleDeps,e)}storeAuthenticator(e){return Hs(this.enginePorts.registrationAccountLifecycleDeps,e)}rollbackUserRegistration(e){return Ws(this.enginePorts.registrationAccountLifecycleDeps,e)}hasPasskeyCredential(e){return Us(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEd25519RegistrationData(e){return zs(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletMixedRegistrationData(e){return As(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEd25519RecoveryRegistrationData(e){return ec(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpEd25519RegistrationData(e){return Ls(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpMixedRegistrationData(e){return Ks(this.enginePorts.registrationAccountLifecycleDeps,e)}finalizeWalletEd25519SignerRegistration(e){return Xs(this.enginePorts.registrationAccountLifecycleDeps,e)}rollbackWalletEd25519SignerRegistration(e){return Bs(this.enginePorts.registrationAccountLifecycleDeps,e)}createRouterAbEcdsaRegistrationCeremony(e){return this.runtimePorts.signerCrypto.createRouterAbEcdsaRegistrationCeremony(e)}verifyRouterAbEcdsaRegistrationClientProofs(e){return this.runtimePorts.signerCrypto.verifyRouterAbEcdsaRegistrationClientProofs(e)}persistInitialCanonicalEcdsaActivation(e){return this.runtimePorts.signerCrypto.persistInitialCanonicalEcdsaActivation(e)}finalizeRouterAbEcdsaRegistrationActivation(e){return this.runtimePorts.signerCrypto.finalizeRouterAbEcdsaRegistrationActivation(e)}closeRouterAbEcdsaRegistrationCeremony(e){return this.runtimePorts.signerCrypto.closeRouterAbEcdsaRegistrationCeremony(e)}finalizeWalletRegistrationEcdsaSessions(e){return _L(e)}storeWalletEcdsaSignerRecords(e){return js(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEcdsaRecoverySignerRecords(e){return Rs(this.enginePorts.registrationAccountLifecycleDeps,e)}storeWalletEmailOtpEcdsaSignerRecords(e){return Ms(this.enginePorts.registrationAccountLifecycleDeps,e)}finalizeWalletEcdsaRegistration(e){return Js(this.enginePorts.registrationAccountLifecycleDeps,e)}async activateVerifiedNearEd25519YaoMaterial(e){return await this.enginePorts.ed25519YaoActiveClients.activate(e)}async withExactEd25519MaterialOwner(e){return await af({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:bd({materialActivation:e.materialActivation}),nearAccountId:e.nearAccountId,enabled:!0,task:e.task})}storeWalletEmailOtpEcdsaRegistrationData(e){return Ns(this.enginePorts.registrationAccountLifecycleDeps,e)}requestWorkerOperation=e=>this.signerWorkerManager.getContext().requestWorkerOperation(e);prepareSigningSessionHydration(e){return this.passkeyMpcSession.prepareSigningSessionHydration(e)}readPreparedSigningSessionHydration(e){return this.passkeyMpcSession.readPreparedSigningSessionHydration(e)}discardSigningSessionHydration(e){return this.passkeyMpcSession.discardSigningSessionHydration(e)}hydrateSigningSession(e){return qP(this.warmCapabilitiesPublicDeps,e)}persistSigningSessionSealForThresholdSession(e){return this.passkeyMpcSession.persistSigningSessionSealForThresholdSession(e)}async requestEmailOtpOwnerConfirmation(e){let t=AR(e.purpose,e.emailAddress),n=e.onResend,r=e.challengeId,i={challengeId:e.challengeId,...e.emailHint?{emailHint:e.emailHint}:{},title:e.confirmerText?.title||t.title,body:e.confirmerText?.body||t.body,helperText:`Enter the 6-digit code sent to your email`,...n?{onResend:async()=>{let e=await n();return r=e.challengeId,{challengeId:e.challengeId,...e.emailHint?{emailHint:e.emailHint}:{},delivery:{mode:`email_provider`}}}}:{}},a=await this.touchConfirm.requestUserConfirmation({requestId:Be(`wallet-owner-email-otp`,32,`Wallet owner Email OTP UI ids`),type:Y.SIGN_INTENT_DIGEST,summary:{type:e.purpose===`add_email_code`||e.purpose===`add_passkey`?`add_auth_method`:`wallet_owner_confirmation`,operation:t.operation,title:i.title,body:i.body,...t.warning?{warning:t.warning}:{}},payload:{signingSubject:{kind:`evm_wallet`,walletId:e.walletId},challengeB64u:e.challengeId,signingAuthPlan:{kind:Zd.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:i},emailOtpPrompt:i},intentDigest:`wallet-owner-email-otp:${e.purpose}:${e.walletId}`,...e.confirmationConfigOverride?{confirmationConfigOverride:e.confirmationConfigOverride}:{}});if(!a.confirmed)throw Error(a.error||`Email code confirmation was cancelled`);let o=String(a.otpCode||``).replace(/\D/g,``).slice(0,6);if(o.length!==6)throw Error(`Email code confirmation requires a 6-digit code`);return{challengeId:String(a.emailOtpChallengeId||r).trim(),otpCode:o}}requestRegistrationCredentialConfirmation(e){return bk(this.enginePorts.registrationSessionDeps,e)}openRegistrationPreparationModal(e){return this.touchConfirm.openRegistrationPreparationModal(e)}closeRegistrationPreparationModal(){this.touchConfirm.closeRegistrationPreparationModal()}startPreparedPasskeyRegistrationCredential(e){if(this.touchIdPrompt.getRpId()!==e.expectedRpId)throw Error(`Prepared registration rpId does not match the wallet runtime`);return this.touchIdPrompt.generateRegistrationCredentialsInternal({kind:`wallet_registration`,walletId:e.walletId,challengeB64u:e.challengeB64u,signerSlot:e.signerSlot,intendedUserName:e.walletId,prompt:{kind:`reserved`,reservation:e.reservation,owner:e.owner,cancellation:e.cancellation}}).then(CR)}getAuthenticationCredentialsSerialized(e){return e.cancellation?this.touchIdPrompt.getAuthenticationCredentialsSerializedForChallengeB64u(e):xk(this.enginePorts.registrationSessionDeps,e)}async exportKeypairWithUI(e){return await vk(this.recoveryPublicDeps,e)}async resolveExactKeyExportLane(e){return await yk(this.recoveryPublicDeps,e)}async connectEd25519Session(e){return await rF(this.passkeyPublicDeps,e)}async bootstrapEcdsaSession(e){return await iF(this.passkeyPublicDeps,e)}async loginWithEmailOtpEcdsaCapabilityInternal(e){return await Fk(this.emailOtpPublicDeps,e)}async resolveEmailOtpEd25519CustodyProjectionInternal(e){let t=String(e.walletSession.walletId),n;switch(e.selector.kind){case`material_activation`:n=e.selector.materialActivation;break;case`wallet_auth_method`:{let r=await G.resolveWalletAuthorityForMethod(t,e.selector.walletAuthMethodId);n=r.kind===`resolved`&&r.authority.state===`active`?r.authority.signerActivations.ed25519?.materialActivation:void 0;break}case`selected_wallet_authority`:{let e=await G.resolveSelectedWalletAuthority(t);n=e.kind===`resolved`&&e.authority.state===`active`?e.authority.signerActivations.ed25519?.materialActivation:void 0;break}default:e.selector}return n?await jN({listPublicCapabilityReferences:this.ed25519YaoPublicCapabilityReferences.list.bind(this.ed25519YaoPublicCapabilityReferences),listUsers:this.getAllUsers.bind(this)},e.walletSession,e.providerSubjectId,n):null}async resolveOwnerAuthorityEd25519UnlockRequestInternal(e){let t=await this.resolveEmailOtpEd25519CustodyProjectionInternal({walletSession:e.walletSession,providerSubjectId:e.providerSubjectId,selector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId}});if(!t)return null;let n=t.user.signerSlot;return{kind:`owner_authority`,signerSlot:n,remainingUses:e.remainingUses,recovery:{ed25519YaoRecovery:{kind:la,signerSlot:n,remainingUses:e.remainingUses,orgId:t.identity.runtimePolicyScope.orgId},providerSubject:t.providerSubject,nearAccountId:String(t.identity.nearAccountId),expectedOperationalPublicKey:t.user.operationalPublicKey,expectedThresholdSessionId:String(t.identity.thresholdSessionId),walletCustodyEd25519Material:await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:String(t.identity.nearAccountId),signerSlot:n})}}}async activateOwnerAuthorityEd25519RuntimeInternal(e){let t=await this.resolveEmailOtpEd25519CustodyProjectionInternal({walletSession:e.walletSession,providerSubjectId:e.providerSubjectId,selector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId}});if(!t)throw Error(`Owner Email OTP Ed25519 activation has no signer projection`);await this.activateEmailOtpEd25519CustodyCapabilityInternal({walletSession:e.walletSession,providerSubject:t.providerSubject,emailHashHex:e.emailHashHex,signerSlot:t.user.signerSlot,expectedOperationalPublicKey:t.user.operationalPublicKey,expectedThresholdSessionId:String(t.identity.thresholdSessionId),bootstrap:e.bootstrap,activeClientHandle:e.activeClientHandle,metadata:e.metadata,authority:e.authority,commitQueue:`acquire`})}async activateEmailOtpEd25519RegistrationMaterialInternal(e){let t=await this.signerWorkerManager.requestWorkerOperation({kind:`emailOtp`,request:{type:`activateEmailOtpEd25519YaoRegistrationMaterial`,payload:{material:e.material,bootstrap:e.bootstrap,envelope:e.envelope,factorSecret32:e.factorSecret32},transfer:[e.factorSecret32]}});try{let n=await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:e.walletSession,providerSubject:e.providerSubject,emailHashHex:e.emailHashHex,signerSlot:e.signerSlot,expectedOperationalPublicKey:e.expectedOperationalPublicKey,expectedThresholdSessionId:e.expectedThresholdSessionId,bootstrap:e.bootstrap,activeClientHandle:t.activeClientHandle,metadata:t.metadata});return await NL({walletId:e.walletSession.walletId,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject,bootstrap:e.bootstrap}),n}catch(n){try{await nP({worker:this.signerWorkerManager.getContext(),target:{kind:`ed25519_yao`,thresholdSessionId:e.bootstrap.session.thresholdSessionId,materialActivation:t.metadata.materialActivation}})}catch{}try{await ty({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:t.activeClientHandle})}catch{}throw n}}async activateEmailOtpEd25519CustodyCapabilityInternal(e){return await this.activateEmailOtpEd25519CustodyCapabilityWithExactCredential({...e,credentialExpectation:{kind:`resolve_exact_operation_credential`}})}async activateEmailOtpEd25519CustodyCapabilityWithExactCredential(e){let t=await NL({walletId:e.walletSession.walletId,emailHashHex:e.emailHashHex,providerSubject:e.providerSubject,bootstrap:e.bootstrap,...e.authority?{verifiedAuthority:e.authority}:{},...e.exactAuthorization?{exactAuthorization:e.exactAuthorization}:{}});if(e.credentialExpectation.kind===`expect_exact_operation_credential`&&(e.credentialExpectation.operationCredential.walletSessionId!==t.operationCredential.walletSessionId||e.credentialExpectation.operationCredential.token!==t.operationCredential.token))throw Error(`[SigningEngine][near] expected Email OTP operation credential changed`);return await af({queueByKey:this.thresholdEd25519CommitQueueByKey,queueKey:bd({materialActivation:e.metadata.materialActivation}),nearAccountId:Or(e.bootstrap.session.nearAccountId),enabled:e.commitQueue===`acquire`,task:async()=>{let n=await kN({walletSession:e.walletSession,nearAccountId:e.bootstrap.session.nearAccountId,providerSubject:e.providerSubject,relayerUrl:this.seamsWebConfigs.network.relayer?.url||``,authority:t.authority,signerSlot:e.signerSlot,expectedOperationalPublicKey:e.expectedOperationalPublicKey,expectedThresholdSessionId:e.expectedThresholdSessionId,bootstrap:e.bootstrap,operationCredential:t.operationCredential,activeClientHandle:e.activeClientHandle,metadata:e.metadata,workerContext:this.signerWorkerManager.getContext(),activateCapability:this.enginePorts.ed25519YaoActiveClients.activate.bind(this.enginePorts.ed25519YaoActiveClients)}),r=n.walletSessionState;if(await this.upsertEd25519YaoPublicCapabilityLaneReference(VL({walletSessionState:r,materialActivation:n.material.activeClient.metadata().materialActivation})),!this.enginePorts.ed25519YaoActiveClients.resolve({walletId:r.signingLane.identity.signer.account.wallet.walletId,nearAccountId:r.signingLane.identity.signer.account.nearAccountId,materialActivation:n.material.activeClient.metadata().materialActivation}))throw Error(`[SigningEngine][near] wallet custody activation was superseded`);return r.signingLane.identity.signer}})}async loginWithEmailOtpWalletCustodyEd25519Internal(e){if(e.authoritySelector.kind!==`wallet_auth_method`)throw Error(`Email OTP Ed25519 unlock requires an exact wallet auth method`);let t=e.authoritySelector.walletAuthMethodId,n=e.ed25519Selection,r=await ar({walletSession:e.walletSession,authoritySelector:e.authoritySelector,relayUrl:this.seamsWebConfigs.network.relayer?.url||``,groupId:Xe,verification:{kind:`otp`,challengeId:e.challengeId,otpCode:e.otpCode},routePlan:cn({freshRouteFamily:`login`,operation:Vr}),workerCtx:this.signerWorkerManager.getContext(),providerSubject:e.providerSubjectId,signerSlot:n.signerSlot,remainingUses:e.remainingUses,orgId:n.runtimePolicyScope.orgId,nearAccountId:n.nearAccountId,expectedOperationalPublicKey:n.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,walletCustodyEd25519Material:await this.loadEmailOtpWalletCustodyEd25519Material({nearAccountId:n.nearAccountId,signerSlot:n.signerSlot})});if(r.kind===`wallet_custody_cache_absent`)throw Error(`Email OTP wallet custody material is unavailable; recover with a recovery code`);try{await pk({walletId:String(e.walletSession.walletId),walletAuthMethodId:t,projection:r.recovery.verifiedAuthorityProjection});let i=await mk({walletId:String(e.walletSession.walletId),walletAuthMethodId:t,providerSubject:e.providerSubjectId,emailHashHex:e.emailHashHex,projection:r.recovery.verifiedAuthorityProjection});r.walletCustodyEd25519Material&&await this.persistWalletCustodyEd25519Material(r.walletCustodyEd25519Material),await K.replaceExactActive({active:r.walletSessionAuthorization.record,operationCredential:r.walletSessionAuthorization.operationCredential});let a=await this.activateEmailOtpEd25519CustodyCapabilityInternal({commitQueue:`acquire`,walletSession:e.walletSession,providerSubject:e.providerSubjectId,emailHashHex:e.emailHashHex,signerSlot:n.signerSlot,expectedOperationalPublicKey:n.operationalPublicKey,expectedThresholdSessionId:n.thresholdSessionId,bootstrap:r.ed25519YaoCapability,activeClientHandle:r.activeClientHandle,metadata:r.metadata,authority:i,exactAuthorization:r.walletSessionAuthorization});return await fr(this.walletCustodyCeremonyTransportV1(),{existingEnvelope:r.ed25519ExportRootCustody.existingEnvelope,existingFactorSecret:r.ed25519ExportRootCustody.factorSecret32,walletId:String(e.walletSession.walletId),walletAuthMethodId:String(r.walletSessionAuthorization.record.authMethodId),walletSessionId:String(r.walletSessionAuthorization.operationCredential.walletSessionId),expiresAtMs:r.walletSessionAuthorization.record.expiresAtMs}),a}catch(e){throw await ty({workerContext:this.signerWorkerManager.getContext(),activeClientHandle:r.activeClientHandle}).catch(()=>void 0),e}finally{r.ed25519ExportRootCustody.factorSecret32.fill(0)}}async prepareEmailOtpRegistrationEnrollmentMaterialInternal(e){return await Ik(this.emailOtpPublicDeps,e)}async getWarmThresholdEd25519SessionStatus(e){let t=R(e.walletId),n=await hn({walletId:t,nearAccountId:Or(e.nearAccountId),nearEd25519SigningKeyId:Oo(e.nearEd25519SigningKeyId)});if(n.kind===`missing`)return null;if(n.kind!==`resolved`)throw Error(`[WarmSessionStore] Ed25519 sealed runtime is ${n.kind}`);let r=await this.readExactNearEd25519WalletSessionAuthorization(t);return await GP(this.warmCapabilitiesPublicDeps,{runtime:n.runtime,authorization:r.kind===`found`?r.authorization:null,nowMs:Date.now()})}async scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill(e,t){let n=await this.listPreprocessingCapabilities({walletId:e.walletId,chainTargets:[e.chainTarget]},t),r=n.length===1?n[0]:null;return r?await KP(this.warmCapabilitiesPublicDeps,{capability:r,waitForPoolReady:e.waitForPoolReady}):{status:`skipped`,reason:`exact_wallet_session_unavailable`,walletSessionId:null}}async clearVolatileWarmSigningMaterial(e){let t=this.clearVolatileWarmSigningMaterialInternal(e);this.volatileWarmSigningMaterialCleanupInFlight=t;try{await t}finally{this.volatileWarmSigningMaterialCleanupInFlight===t&&(this.volatileWarmSigningMaterialCleanupInFlight=null)}}async clearVolatileWarmSigningMaterialInternal(e){try{e?this.enginePorts.ed25519YaoActiveClients.disposeWallet(e):this.enginePorts.ed25519YaoActiveClients.dispose()}finally{try{await JP(this.warmCapabilitiesPublicDeps,e)}finally{try{e===void 0?await this.clearLinkedEcdsaHolderMaterials():await this.clearLinkedEcdsaHolderMaterialsForWallet(e)}finally{await this.signerWorkerManager.clearEcdsaClientWorkerState(e===void 0?{kind:`all`}:{kind:`wallet`,walletId:e})}}}}onSdkLifecycleEvent(e){return this.sdkLifecycleEventListeners.add(e),this.removeSdkLifecycleEventListener.bind(this,e)}publishSdkLifecycleEvent(e){let t=TR(e);if(!this.deliveredSdkLifecycleEventKeys.has(t)){this.deliveredSdkLifecycleEventKeys.add(t);for(let t of Array.from(this.sdkLifecycleEventListeners))t(e)}}publishNearProvisioningLifecycleEvent(e,t){this.publishSdkLifecycleEvent(Ko({walletId:e,state:t}))}removeSdkLifecycleEventListener(e){this.sdkLifecycleEventListeners.delete(e)}dispose(){this.signingSessionLifecycleSubscription.unsubscribe(),this.nearProvisioningUnsubscribe(),this.sdkLifecycleEventListeners.clear(),this.deliveredSdkLifecycleEventKeys.clear(),this.ed25519YaoPageLifecycleOwner.dispose()}clearThresholdEcdsaSigningQueue(){Sd(this.thresholdEcdsaSigningQueueByKey)}async clearLinkedEcdsaHolderMaterials(){await Ou({workerCtx:this.signerWorkerManager.getContext()}),od()}async clearLinkedEcdsaHolderMaterialsForWallet(e){let t=md(e),n;for(let e of t)try{await gu({holderHandleIds:[e.holderHandleId],workerCtx:this.signerWorkerManager.getContext()}),sd(e)}catch(e){n??=e}if(n!==void 0)throw n}};function MR(e){return Array.isArray(e)?e.filter(e=>[`ble`,`hybrid`,`internal`,`nfc`,`smart-card`,`usb`].includes(String(e))):[]}function NR(e){let t=new Set;for(let n of e.authMethods)n.kind===`passkey`&&n.status===`active`&&n.walletId===e.walletId&&t.add(n.credentialIdB64u);let n=[];for(let r of e.authenticators){let i=String(r.credentialId||``).trim();!i||i===e.excludeCredentialIdB64u||!t.has(i)||n.push({id:i,type:`public-key`,transports:MR(r.transports)})}return n}async function PR(e){let[t,n]=await Promise.all([G.listProfileAuthenticators(String(e.walletId)),G.listWalletAuthMethodsV2ForWallet(String(e.walletId))]);return NR({walletId:e.walletId,authenticators:t,authMethods:n,excludeCredentialIdB64u:e.excludeCredentialIdB64u})}async function FR(e){let t=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:e.operationFingerprintDigest,allowCredentials:e.allowCredentials,includeSecondPrfOutput:!1}),n=Xc(t);if(!n||!e.allowCredentials.some(e=>e.id===n))throw Error(`registration.removeAuthMethod used a credential outside the wallet`);return{kind:`webauthn_assertion`,rpId:e.rpId,credential:Os(t),expectedChallengeDigestB64u:e.operationFingerprintDigest}}async function IR(e){let[t,...n]=(await G.listWalletAuthMethodsForWallet(String(e.walletId))).filter(t=>t.kind===`email_otp`&&t.status===`active`&&String(t.walletId)===String(e.walletId)&&String(t.authority.bindingId)!==String(e.targetWalletAuthMethodId)&&(e.source.kind===`surviving_method`||String(t.authority.bindingId)===String(e.source.walletAuthMethodId)));if(!t||n.length>0||t.kind!==`email_otp`)throw Error(`registration.removeAuthMethod needs exactly one other active method to authorize with`);let r=String(t.authority.bindingId),i=async()=>await gr({relayUrl:e.relayerUrl,walletId:String(e.walletId),walletAuthMethodId:r,operation:Ur,operationFingerprintDigest:St(e.operationFingerprintDigest)}),a=await i(),o=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:`remove_auth_method`,walletId:String(e.walletId),emailAddress:String(a.emailHint||``),challengeId:a.challengeId,...a.emailHint?{emailHint:a.emailHint}:{},onResend:async()=>{let e=await i();return e.emailHint?{challengeId:e.challengeId,emailHint:e.emailHint}:{challengeId:e.challengeId}}});return{kind:`email_otp`,challengeId:o.challengeId,otpCode:o.otpCode,ownerProofBindingDigest:a.ownerProofBindingDigest}}async function LR(e,t,n){let r=String(e.configs.network.relayer.url||``).trim();if(!r)throw Error(`registration.removeAuthMethod requires relayer.url`);let a=i(String(e.signingEngine.getRpId()||``).trim());if(!a.ok)throw Error(`registration.removeAuthMethod ${a.error.message}`);let o=Date.now(),s=await wo({walletId:n.walletId,targetWalletAuthMethodId:n.walletAuthMethodId,requestedAtMs:o}),c=await G.getWalletAuthMethodV2(n.walletAuthMethodId),l=c&&c.kind===`passkey`?String(c.credentialIdB64u):null,u=await PR({walletId:n.walletId,excludeCredentialIdB64u:l});if(t.kind===`selected_method`){let e=await G.getWalletAuthMethodV2(t.walletAuthMethodId);if(!e||e.status!==`active`||e.walletId!==n.walletId||e.walletAuthMethodId===n.walletAuthMethodId)throw Error(`Removal requires a different active method on this wallet`);if(u=e.kind===`passkey`?u.filter(t=>t.id===e.credentialIdB64u):[],e.kind===`passkey`&&u.length===0)throw Error(`Selected passkey is unavailable for removal authorization`)}let d;d=u.length>0?B.passkey:B.emailOtp;let f;switch(d){case B.passkey:f=await FR({context:e,walletId:n.walletId,rpId:a.value,operationFingerprintDigest:String(s),allowCredentials:u});break;case B.emailOtp:f=await IR({context:e,relayerUrl:r,walletId:n.walletId,targetWalletAuthMethodId:n.walletAuthMethodId,source:t,operationFingerprintDigest:String(s)});break;default:throw Error(`registration.removeAuthMethod encountered an unsupported source method`)}return{relayerUrl:r,requestedAtMs:o,sourceProof:f}}async function RR(e){let{relayerUrl:t,requestedAtMs:n,sourceProof:r}=await LR(e.context,{kind:`surviving_method`},{walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId}),i=await fc({relayerUrl:t,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,requestedAtMs:n,sourceProof:r});if(!i.ok||i.authMethod.status!==`revoked`)throw Error(`registration.removeAuthMethod did not revoke the method`);let a=await G.getWalletAuthMethodV2(e.walletAuthMethodId);if(a&&a.status!==`revoked`){let e=Date.now(),t=a.status===`active`?a.activatedAtMs:e,n=To({...a,status:`revoked`,activatedAtMs:t,revokedAtMs:e,updatedAtMs:e});n&&await G.upsertWalletAuthMethodV2(n)}return{ok:!0,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,authMethod:i.authMethod}}async function zR(e){let t=ko(String(e.walletId||``).trim()),n=c(String(e.walletAuthMethodId||``).trim());if(!n.ok)throw Error(`registration.removeAuthMethod requires a wallet auth method id`);try{return await RR({context:e.context,walletId:t,walletAuthMethodId:n.value})}catch(e){throw I(e)}}const BR=`/wallet/device-linking/v1/sessions`,VR=4e3,HR=[`ok`,`outcome`,`session`],UR=[`ok`,`outcome`,`session`,`targetCredential`],WR=[`ok`,`code`,`message`],GR=[`ok`,`outcome`,`code`,`message`],KR=[`ok`,`outcome`,`expectedRevision`,`actualRevision`,`session`],qR=[`ok`,`outcome`,`session`],JR=[`ok`,`outcome`,`state`,`session`],YR=[`ok`,`outcome`,`reason`,`session`];function XR(e,t){let n=Math.min(e,VR),r=Math.min(Math.max(t,0),5),i=Math.min(VR,n*2**r),a=Math.max(1,Math.min(n,i/4)),o=Math.floor(Math.random()*a);return Math.min(VR,i+o)}async function ZR(e){let t=e.options.nowMs()+6e4,n=0;for(;e.options.nowMs()<t;){let t=await az({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:vz(e.linkSessionId,`approval`),linkSessionId:e.linkSessionId});if(t.status!==204)return Qr(t.body);let r=XR(e.options.pollIntervalMs,n);await new Promise(e=>setTimeout(e,r)),n+=1}throw Error(`committed authority packages were not ready before the activation deadline`)}function QR(e){let t=gz(e.relayerUrl);if(!Number.isSafeInteger(e.pollIntervalMs)||e.pollIntervalMs<=0)throw Error(`linked-device session poll interval must be a positive integer`);return{...ez(e),...$R(e),createUnclaimedSessionV1:async n=>{await iz({options:e,baseUrl:t,method:`POST`,canonicalPath:BR,linkSessionId:n.payload.linkSessionId,body:{kind:`linked_device_session_create_request_v1`,payload:n.payload}})},getSessionV1:async({linkSessionId:n})=>await rz({options:e,baseUrl:t,linkSessionId:n}),getApprovalV1:async({linkSessionId:n})=>wi((await az({options:e,baseUrl:t,method:`GET`,canonicalPath:vz(n,`approval`),linkSessionId:n})).body).approval,getTargetPreparationV1:async({linkSessionId:n,deliveryRecipientPublicKey65B64u:r})=>{let i=Qi({kind:`linked_device_target_preparation_request_v1`,linkSessionId:n,deliveryRecipientPublicKey65B64u:r});return Ei((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n,`target-preparation`),linkSessionId:n,body:i})).body)},startTargetEmailOtpChallengeV1:async({request:n})=>{let r=qi(n);return Li((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(r.linkSessionId,`email-otp/challenge`),linkSessionId:r.linkSessionId,body:r})).body)},resendTargetEmailOtpChallengeV1:async({request:n})=>{let r=Di(n);return Li((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(r.linkSessionId,`email-otp/challenge/resend`),linkSessionId:r.linkSessionId,body:r})).body)},verifyTargetEmailOtpChallengeV1:async({request:n})=>{let r=Oi(n);return Ri((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(r.linkSessionId,`email-otp/challenge/verify`),linkSessionId:r.linkSessionId,body:r})).body)},registerTargetCredentialV1:async({registration:n})=>lz((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n.linkSessionId,`credential`),linkSessionId:n.linkSessionId,body:n})).body),registerEd25519ExportRootRecipientV1:async({recipient:n})=>{let r=nz(n.linkSessionId);await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(r,`ed25519-export-root-recipient`),linkSessionId:r,body:n})},getEd25519ExportRootPackageV1:async({linkSessionId:n})=>{let r=await az({options:e,baseUrl:t,method:`GET`,canonicalPath:vz(n,`ed25519-export-root`),linkSessionId:n});return r.status===204?null:ei(r.body)},retryCommittedDeliveryV1:async({request:n})=>{await iz({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n.linkSessionId,`retry`),linkSessionId:n.linkSessionId,body:n})},cancelSessionV1:async({request:n})=>{await iz({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n.linkSessionId,`cancel`),linkSessionId:n.linkSessionId,body:n})},subscribeSessionV1:async({linkSessionId:n,onEvent:r})=>await sz({options:e,baseUrl:t,linkSessionId:n,onEvent:r})}}function $R(e){let t=gz(e.relayerUrl);return{acknowledgeLocalAuthorityActivationWithWalletSessionV1:async({acknowledgement:n,operationCredential:r})=>{let i=Xr(n),a=De(r);if(a.walletSessionId!==i.walletSessionId)throw Error(`linked-device acknowledgement credential does not match Wallet Session`);await oz({options:e,baseUrl:t,linkSessionId:i.linkSessionId,token:a.token,body:i})}}}function ez(e){let t=gz(e.relayerUrl);return{receiveCommittedAuthorityPackagesV1:async({linkSessionId:n})=>await ZR({options:e,baseUrl:t,linkSessionId:n}),activateInstalledAuthorityV1:async({linkSessionId:n,receipt:r})=>{let i=yi(r);return $i((await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n,`receipt`),linkSessionId:n,body:i})).body)},acknowledgeLocalAuthorityActivationV1:async({acknowledgement:n})=>{let r=Xr(n);await az({options:e,baseUrl:t,method:`POST`,canonicalPath:vz(n.linkSessionId,`receipt`),linkSessionId:n.linkSessionId,body:r})}}}function tz(e){return{...e.owner,createAuthenticatedSessionTransportV1:({keyMaterial:t,devicePublicKeyB64u:n})=>QR({http:e.http,relayerUrl:e.relayerUrl,publishableKey:e.publishableKey,projectEnvironmentId:e.projectEnvironmentId,keyMaterial:e.keyMaterial,keyMaterialHandle:t,devicePublicKeyB64u:n,nowMs:e.nowMs,pollIntervalMs:e.pollIntervalMs})}}function nz(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}async function rz(e){return cz((await az({options:e.options,baseUrl:e.baseUrl,method:`GET`,canonicalPath:_z(e.linkSessionId),linkSessionId:e.linkSessionId})).body).session}async function iz(e){return cz((await az(e)).body)}async function az(e){let t=e.options.publishableKey.trim(),n=e.options.projectEnvironmentId.trim();if(!t||!n)throw Error(`linked-device Passkey ceremony requires registration API credentials`);let r=await xt(hz(e.body)),i=e.options.nowMs();if(!Number.isSafeInteger(i)||i<=0)throw Error(`linked-device request clock is invalid`);let a=i+di,o=ze(32,`linked-device request proof nonce`),s=await ni(e.options.devicePublicKeyB64u),c=await e.options.keyMaterial.signDeviceSessionRequestV1({handle:e.options.keyMaterialHandle,linkSessionId:e.linkSessionId,method:e.method,canonicalPath:e.canonicalPath,bodyDigestB64u:r,devicePublicKeyDigestB64u:s,challengeB64u:o,issuedAtMs:i,expiresAtMs:a}),l={kind:`linked_device_request_proof_v1`,linkSessionId:e.linkSessionId,devicePublicKeyDigestB64u:s,requestNonceB64u:o,method:e.method,canonicalPath:e.canonicalPath,bodyDigestB64u:r,issuedAtMs:i,expiresAtMs:a,signatureB64u:c.signatureB64u},u=P(new TextEncoder().encode(JSON.stringify(l))),d=await e.options.http.request({method:e.method,url:`${e.baseUrl}${e.canonicalPath}`,headers:{Accept:`application/json`,Authorization:`Bearer ${t}`,"Content-Type":`application/json`,"X-Seams-Environment-Id":n,[li]:u},...e.body===void 0?{}:{body:e.body}});if(!d.ok)throw Error(`linked-device request failed: ${d.message}`);if(d.value.status<200||d.value.status>=300)throw Error(dz(d.value));return d.value}async function oz(e){let t=e.token.trim(),n=e.options.projectEnvironmentId.trim();if(!t||!n)throw Error(`linked-device Wallet Session acknowledgement requires session credentials`);let r=await e.options.http.request({method:`POST`,url:`${e.baseUrl}${vz(e.linkSessionId,`receipt`)}`,headers:{Accept:`application/json`,Authorization:`Bearer ${t}`,"Content-Type":`application/json`,"X-Seams-Environment-Id":n},body:e.body});if(!r.ok)throw Error(`linked-device request failed: ${r.message}`);if(r.value.status<200||r.value.status>=300)throw Error(dz(r.value))}async function sz(e){let t=!1,n,r=null,i=!0,a=0,o=null,s=async()=>{if(!t)try{let t=await rz({...e});r===null||t.revision!==r?(r=t.revision,a=0,e.onEvent(Ni({kind:`linked_device_session_event_v1`,linkSessionId:t.linkSessionId,state:t.state,emittedAtMs:t.updatedAtMs}))):a+=1}catch(e){if(i)throw t=!0,e;a+=1}finally{i=!1,t||(n=setTimeout(()=>{o=s()},XR(e.options.pollIntervalMs,Math.max(0,a-1))))}};return await(o=s()),{close:async()=>{t=!0,n!==void 0&&clearTimeout(n),await o?.catch(()=>void 0)}}}function cz(e){let t=fz(e);if(t===null)throw Error(`linked-device response must be an object`);if(!mz(t,HR))throw Error(`linked-device response contains invalid fields`);if(t.ok!==!0)throw Error(`linked-device response outcome is invalid`);switch(t.outcome){case`applied`:return{ok:!0,outcome:`applied`,session:Wi(t.session)};case`replayed`:return{ok:!0,outcome:`replayed`,session:Wi(t.session)};default:throw Error(`linked-device response outcome is invalid`)}}function lz(e){let t=fz(e);if(t===null)throw Error(`linked-device target credential response must be an object`);if(!mz(t,UR))throw Error(`linked-device target credential response contains invalid fields`);if(t.ok!==!0)throw Error(`linked-device target credential response outcome is invalid`);switch(t.outcome){case`applied`:return uz(t,`applied`);case`replayed`:return uz(t,`replayed`);default:throw Error(`linked-device target credential response outcome is invalid`)}}function uz(e,t){let n=Wi(e.session),r=Ji(e.targetCredential);if(r.outcome!==t)throw Error(`linked-device target credential response outcome does not match its result`);if(r.linkSessionId!==n.linkSessionId)throw Error(`linked-device target credential response session identity differs`);return r}function dz(e){let t=fz(e.body);if(t===null||t.ok!==!1)return`linked-device request failed with HTTP ${e.status}`;if(mz(t,WR)&&typeof t.code==`string`&&typeof t.message==`string`&&t.message.trim()||mz(t,GR)&&typeof t.outcome==`string`&&typeof t.code==`string`&&typeof t.message==`string`&&t.message.trim())return`linked-device request failed: ${t.message}`;switch(t.outcome){case`conflict`:if(mz(t,KR))return`linked-device request failed: conflict`;break;case`expired`:if(mz(t,qR))return`linked-device request failed: expired`;break;case`invalid_state`:if(mz(t,JR))return`linked-device request failed: invalid_state`;break;case`integrity_error`:if(mz(t,YR))return`linked-device request failed: integrity_error`;break;default:break}return`linked-device request failed with HTTP ${e.status}`}function fz(e){return pz(e)?e:null}function pz(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;try{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}catch{return!1}}function mz(e,t){try{return q(e,t)}catch{return!1}}function hz(e){if(e===void 0)return new Uint8Array;let t=JSON.stringify(e);if(typeof t!=`string`)throw Error(`linked-device request body is not JSON serializable`);return new TextEncoder().encode(t)}function gz(e){let t=e.trim().replace(/\/+$/,``);if(!t)throw Error(`linked-device relayer URL is required`);return t}function _z(e){return`${BR}/${String(e)}`}function vz(e,t){return`${_z(e)}/${t}`}function yz(e){return e?String(e.linkSessionId):`link-device-scan`}function bz(e){return new X(e,Z.INVALID_QR_DATA,`authorization`)}function xz(e,t){try{e?.(t)}catch{}}function Sz(e,t,n){e?.(Go({flowId:yz(t),...n,data:{role:`scanner`,...n.data??{}}}))}function Cz(e,t){if(e.walletSessionId!==t.walletSessionId||e.authorizationId!==t.authorizationId)throw Error(`wallet-session authorization source changed during linking`)}function wz(e){if(e instanceof X)return e;let t=L(e)||`Device linking failed`;return/expired|expiry/i.test(t)?new X(t,Z.SESSION_EXPIRED,`authorization`):new X(t,Z.REGISTRATION_FAILED,`registration`)}function Tz(e){let t;try{t=Zi(e)}catch(e){throw bz(L(e)||`Invalid linked-device QR payload`)}let n=Date.now();if(t.issuedAtMs>n+6e4)throw bz(`QR payload was issued in the future`);if(t.expiresAtMs<=n)throw new X(`QR code expired`,Z.SESSION_EXPIRED,`authorization`);return t}async function Ez(e,t,n,r,i){let a=null,o=null;Sz(n.onEvent,a,{phase:Zo.STEP_02_QR_SCAN_STARTED,status:`started`,message:`Scanning QR code`,interaction:{kind:`qr_scan`,overlay:`hide`}});try{a=Tz(t);let e=await r.ownerAuthorization.authenticateOwnerForLinkingV1({payload:a,requestedAtMs:Date.now()});Cz(e.ownerAuthorization,e.authentication.source);let s=await r.transport.claimSessionV1({request:qr(a),authentication:e.authentication});if(s.linkSessionId!==a.linkSessionId||s.devicePublicKeyB64u!==a.devicePublicKeyB64u||s.walletId!==e.walletId)throw Error(`linked-device claim does not match the scanned QR payload`);o={linkSessionId:s.linkSessionId,expectedRevision:s.sessionRevision,authentication:e.authentication},i?.(o);let c=await Oz({targetFactor:a.targetFactor,targetEmail:a.targetFactor.kind===`email_otp`?a.targetEmail:void 0,linkSessionId:s.linkSessionId,sessionRevision:s.sessionRevision,transport:r.transport,authentication:e.authentication,onEmailOtpBaseFactorRequired:n.onEmailOtpBaseFactorRequired}),l=xi({linkSessionId:s.linkSessionId,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId,linkPublicKeyB64u:a.linkPublicKeyB64u,devicePublicKeyB64u:s.devicePublicKeyB64u,targetFactor:c,permission:a.requestedPermission,ownerAuthorization:e.ownerAuthorization,approvedAtMs:Date.now(),expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs)});Nz(await r.transport.recordOwnerApprovalV1({approval:l,authentication:e.authentication})),o=null,await zz({transport:r.transport,linkSessionId:s.linkSessionId,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId,expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs),exportRootRequirement:e.exportRootRequirement,ed25519ExportRootCapability:e.exportRootRequirement===`required`?e.ed25519ExportRootCapability:void 0,ed25519ExportRoot:r.ed25519ExportRoot,authentication:e.authentication}),await Pz({transport:r.transport,sourceContribution:r.sourceContribution,ed25519ExportRootCapability:e.exportRootRequirement===`required`?e.ed25519ExportRootCapability:void 0,initialApproval:l,authentication:e.authentication,expiresAtMs:Math.min(e.expiresAtMs,s.claimExpiresAtMs)});let u={success:!0,kind:`approval_recorded`,walletId:s.walletId,enrollmentId:s.enrollmentId,deviceId:s.deviceId};return Sz(n.onEvent,a,{phase:Zo.STEP_02_QR_SCAN_STARTED,status:`succeeded`,message:`Device-link approval recorded`,walletId:String(s.walletId),data:{enrollmentId:String(s.enrollmentId)},interaction:{kind:`qr_scan`,overlay:`hide`}}),await n.afterCall?.(!0,u),u}catch(e){o&&(await Dz(r.transport,o),i?.(null));let t=wz(e);throw Sz(n.onEvent,a,{phase:Zo.FAILED,status:`failed`,message:t.message,interaction:{kind:`qr_scan`,overlay:`hide`},error:{code:t.code,message:t.message,retryable:t.code!==Z.SESSION_EXPIRED}}),xz(n.onError,t),await n.afterCall?.(!1,void 0,t),t}}async function Dz(e,t){t&&await e.cancelClaimedSessionV1(t).catch(()=>void 0)}async function Oz(e){if(e.targetFactor.kind===`passkey_prf`)return{kind:`passkey_prf`};let t=jz(e.targetEmail),n=await e.transport.resolveEmailOtpBaseFactorV1({linkSessionId:e.linkSessionId,request:{kind:`resolve`,expectedRevision:e.sessionRevision},authentication:e.authentication});switch(Az(n,e.sessionRevision),n.resolution.kind){case`selected`:return{kind:`email_otp`,targetEmail:t,enrollment:{kind:`existing_enrollment`},baseWalletAuthMethodId:n.resolution.choice.baseWalletAuthMethodId};case`selection_required`:return await kz(e,n.resolution.choices);case`unavailable`:return{kind:`email_otp`,targetEmail:t,enrollment:{kind:`new_enrollment`}}}}async function kz(e,t){if(!e.onEmailOtpBaseFactorRequired)throw Error(`Choose the Email OTP method to use for the linked device`);let n=await e.onEmailOtpBaseFactorRequired(t);if(!Mz(t,n))throw Error(`The selected Email OTP method is unavailable for this linked device`);let r=await e.transport.resolveEmailOtpBaseFactorV1({linkSessionId:e.linkSessionId,request:{kind:`select`,expectedRevision:e.sessionRevision,baseWalletAuthMethodId:n},authentication:e.authentication});if(Az(r,e.sessionRevision),r.resolution.kind!==`selected`||r.resolution.choice.baseWalletAuthMethodId!==n)throw Error(`The selected Email OTP method is unavailable for this linked device`);return{kind:`email_otp`,targetEmail:jz(e.targetEmail),enrollment:{kind:`existing_enrollment`},baseWalletAuthMethodId:n}}function Az(e,t){if(e.revision!==t)throw e.resolution.kind===`unavailable`?Error(`linked-device Email OTP target-factor resolution failed: ${e.resolution.reason}`):Error(`linked-device Email OTP target-factor resolution changed the session`)}function jz(e){if(!e)throw Error(`Email OTP linked-device QR omitted its target email`);return e}function Mz(e,t){for(let n of e)if(n.baseWalletAuthMethodId===t)return!0;return!1}function Nz(e){switch(e.outcome){case`pending`:return;case`replayed`:if(e.replay.state===`pending`)return;throw Error(`linked-device approval replay returned an unsupported session state`);default:{let t=e;throw Error(`unsupported linked-device approval result: ${String(t)}`)}}}async function Pz(e){let t=null,n=0;for(;Date.now()<e.expiresAtMs&&(t=await e.transport.getSourceContributionPreparationV1({linkSessionId:e.initialApproval.linkSessionId,authentication:e.authentication}),!t);)await Hz(n),n+=1;if(!t)throw new X(`Device-link approval expired before target source preparation was published`,Z.SESSION_EXPIRED,`registration`);let r=await Iz({preparation:t,ports:e.sourceContribution,ed25519ExportRootCapability:e.ed25519ExportRootCapability,authentication:e.authentication}),i=Fz(e.initialApproval,r);Rz(await e.transport.recordSourceContributionV1({approval:i,authentication:e.authentication}))}function Fz(e,t){return e.targetFactor.kind,xi({linkSessionId:e.linkSessionId,walletId:e.walletId,enrollmentId:e.enrollmentId,deviceId:e.deviceId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,targetFactor:e.targetFactor,permission:e.permission,ownerAuthorization:e.ownerAuthorization,approvedAtMs:e.approvedAtMs,expiresAtMs:e.expiresAtMs,sourceContribution:t})}async function Iz(e){let t=e.preparation[0];if(!t)throw Error(`source contribution preparation is empty`);if(Lz(t)){if(!e.ed25519ExportRootCapability)throw Error(`Ed25519 export-root capability is required for source contribution`);let n=await e.ports.ed25519.produceSourceContributionV1({preparation:t,capability:e.ed25519ExportRootCapability,authentication:e.authentication}),r=e.preparation[1];if(!r)return[n];if(Lz(r))throw Error(`source contribution preparation repeats Ed25519`);return[n,await e.ports.ecdsa.produceSourceContributionV1({preparation:r})]}if(e.preparation.length!==1)throw Error(`ECDSA source contribution preparation is out of order`);return[await e.ports.ecdsa.produceSourceContributionV1({preparation:t})]}function Lz(e){return`kind`in e}function Rz(e){if(e.state.state!==`authority_pending_local_install`&&e.state.state!==`active`)throw Error(`source contribution acknowledgement did not commit the linked device`)}async function zz(e){if(e.exportRootRequirement===`not_required`)return;if(!e.ed25519ExportRootCapability)throw Error(`Ed25519 export-root capability is required for this authority`);let t=null,n=0;for(;Date.now()<e.expiresAtMs;){if(!t){let n=await e.transport.getEd25519ExportRootRecipientV1({linkSessionId:e.linkSessionId,authentication:e.authentication});if(n){if(String(n.linkSessionId)!==String(e.linkSessionId)||String(n.walletId)!==String(e.walletId)||String(n.enrollmentId)!==String(e.enrollmentId)||String(n.deviceId)!==String(e.deviceId))throw Error(`Ed25519 export-root recipient differs from the approved linked-device session`);t=await e.ed25519ExportRoot.sealForLinkedDeviceV1({recipient:n,capability:e.ed25519ExportRootCapability,sealedAtMs:Date.now()})}}if(t)try{await e.transport.submitEd25519ExportRootPackageV1({submission:{kind:`linked_device_ed25519_export_root_submission_v1`,linkSessionId:e.linkSessionId,package:t},authentication:e.authentication});return}catch(e){let t=Bz(e);if(t!==null&&t!==408&&t!==429&&t<500)throw e}await Hz(n),n+=1}throw new X(`Device-link approval expired before the export root recipient was published`,Z.SESSION_EXPIRED,`registration`)}function Bz(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=Reflect.get(e,`status`);return typeof t==`number`&&Number.isSafeInteger(t)?t:null}function Vz(e,t){setTimeout(e,XR(250,t))}async function Hz(e){await new Promise(t=>Vz(t,e))}async function Uz(e){let t=await e.ed25519ExportRoot.createRecipientV1({identity:e.identity,registeredAtMs:e.registeredAtMs});try{await e.transport.registerEd25519ExportRootRecipientV1({recipient:t.registration})}catch(n){throw await Gz(e.ed25519ExportRoot,t),n}return t}async function Wz(e){let t=e.nowMs??Date.now,n=await Kz({transport:e.transport,recipient:e.recipient.registration,expiresAtMs:e.expiresAtMs,assertCurrentRun:e.assertCurrentRun,waitForPollV1:e.waitForPollV1,now:t});return await e.ed25519ExportRoot.acceptTransferV1({recipient:e.recipient,transferPackage:n,replacementEnvelope:e.replacementEnvelope,replacementFactorSecret:e.replacementFactorSecret})}async function Gz(e,t){try{await e.discardRecipientV1(t)}catch{}}async function Kz(e){let t=g(e.recipient.linkSessionId);if(!t.ok)throw Error(t.error.message);let n=0;for(;e.now()<e.expiresAtMs;){e.assertCurrentRun();let r=await e.transport.getEd25519ExportRootPackageV1({linkSessionId:t.value});if(r){if(!qz(r,e.recipient))throw new X(`Device-link Ed25519 export-root package is addressed to another device`,Z.REGISTRATION_FAILED,`registration`);return r}await e.waitForPollV1(n),n+=1}throw new X(`Device-link session expired before the Ed25519 export root was sealed`,Z.SESSION_EXPIRED,`registration`)}function qz(e,t){return e.linkSessionId===t.linkSessionId&&e.walletId===t.walletId&&e.walletKeyId===t.walletKeyId&&e.enrollmentId===t.enrollmentId&&e.deviceId===t.deviceId&&e.applicationBindingDigestB64u===t.applicationBindingDigestB64u&&e.registeredPublicKeyB64u===t.registeredPublicKeyB64u&&e.targetFactor.kind===t.targetFactor.kind&&e.revocationEpoch===t.revocationEpoch&&e.recipientPublicKeyB64u===t.recipientPublicKeyB64u}function Jz(e){if(e.binding.kind!==`ed25519_yao_client_root_v1`)throw Error(`Ed25519 export-root replacement binding has the wrong custody kind`);if(!Number.isSafeInteger(e.createdAtMs)||e.createdAtMs<0)throw Error(`Ed25519 export-root replacement timestamp is invalid`);return{envelopeId:e.envelopeId,walletId:e.walletId,ownership:e.ownership,binding:e.binding,factor:e.factor,createdAtMs:e.createdAtMs}}function Yz(e){return{async createRecipientV1(t){let n=$z(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`createLinkedDeviceEd25519ExportRootRecipient`,payload:{}}}),`Ed25519 export-root recipient`);return{recipientHandleId:eB(n.recipientHandleId),registration:Ii({kind:`linked_device_ed25519_export_root_recipient_v1`,linkSessionId:t.identity.linkSessionId,walletId:t.identity.walletId,walletKeyId:t.identity.walletKeyId,enrollmentId:t.identity.enrollmentId,deviceId:t.identity.deviceId,transferAlg:_i,applicationBindingDigestB64u:t.identity.applicationBindingDigestB64u,registeredPublicKeyB64u:t.identity.registeredPublicKeyB64u,targetFactor:t.identity.targetFactor,revocationEpoch:t.identity.revocationEpoch,recipientPublicKeyB64u:ui(n.recipientPublicKeyB64u),registeredAtMs:t.registeredAtMs})}},async sealForLinkedDeviceV1(t){let n=t.recipient;if(t.capability.walletId!==String(n.walletId))throw Error(`Ed25519 export-root capability names another wallet`);let r=ti({linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,targetFactor:n.targetFactor,enrollmentId:n.enrollmentId,deviceId:n.deviceId,revocationEpoch:n.revocationEpoch,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,recipientPublicKeyB64u:n.recipientPublicKeyB64u}),i=$z(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`sealEd25519ExportRootForLinkedDevice`,payload:{capability:t.capability,transferBindingJson:Yr(r)}}}),`Ed25519 export-root seal`);return{kind:`linked_device_ed25519_export_root_package_v1`,linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,enrollmentId:n.enrollmentId,deviceId:n.deviceId,transferAlg:_i,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,targetFactor:n.targetFactor,revocationEpoch:n.revocationEpoch,recipientPublicKeyB64u:n.recipientPublicKeyB64u,ephemeralPublicKeyB64u:ui(i.ephemeralPublicKeyB64u,`Ed25519 export-root ephemeralPublicKeyB64u`),nonceB64u:Ae(i.nonceB64u,`Ed25519 export-root nonceB64u`),sealedExportRootB64u:_e(i.sealedExportRootB64u,`Ed25519 export-root sealedExportRootB64u`),bindingDigestB64u:ue(i.bindingDigestB64u,`Ed25519 export-root bindingDigestB64u`),ciphertextDigestB64u:ue(i.ciphertextDigestB64u,`Ed25519 export-root ciphertextDigestB64u`),sealedAtMs:t.sealedAtMs}},async acceptTransferV1(t){let n=t.recipient.registration,r=t.transferPackage;if(!Xz(r,n))throw Error(`Ed25519 export-root package is addressed to another device`);let i=ti({linkSessionId:n.linkSessionId,walletId:n.walletId,walletKeyId:n.walletKeyId,targetFactor:n.targetFactor,enrollmentId:n.enrollmentId,deviceId:n.deviceId,revocationEpoch:n.revocationEpoch,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,recipientPublicKeyB64u:n.recipientPublicKeyB64u}),a=t.replacementEnvelope;if(a.walletId!==n.walletId||a.binding.kind!==`ed25519_yao_client_root_v1`||a.binding.walletKeyId!==n.walletKeyId||a.binding.linkSessionId!==n.linkSessionId||a.binding.enrollmentId!==n.enrollmentId||a.binding.deviceId!==n.deviceId||a.binding.applicationBindingDigestB64u!==n.applicationBindingDigestB64u||a.binding.registeredPublicKeyB64u!==n.registeredPublicKeyB64u||a.binding.revocationEpoch!==n.revocationEpoch||!Zz(n.targetFactor,a.factor))throw Error(`Ed25519 export-root replacement envelope identity is invalid`);let o=gi({walletId:a.walletId,envelopeId:a.envelopeId,factor:a.factor,envelopeRevision:ce(1),binding:a.binding,ownership:a.ownership}),s=t.replacementFactorSecret.slice();try{let n=$z(await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`acceptLinkedDeviceEd25519ExportRoot`,payload:{recipientHandleId:t.recipient.recipientHandleId,transferBindingJson:Yr(i),ephemeralPublicKeyB64u:String(r.ephemeralPublicKeyB64u),nonceB64u:String(r.nonceB64u),sealedExportRootB64u:String(r.sealedExportRootB64u),bindingDigestB64u:String(r.bindingDigestB64u),ciphertextDigestB64u:String(r.ciphertextDigestB64u),replacementEnvelopeBindingJson:o,replacementFactorSecret:s.buffer},transfer:[s.buffer]}}),`Ed25519 export-root acceptance`);return{envelope:$r(Zr({envelopeId:a.envelopeId,walletId:a.walletId,ownership:a.ownership,binding:a.binding,factor:a.factor,envelopeRevision:ce(1),nonceB64u:Ae(n.nonceB64u,`Ed25519 export-root resealed nonceB64u`),sealedCustodySecretB64u:_e(n.sealedExportRootB64u,`Ed25519 export-root resealed ciphertext`),aadHashB64u:ue(n.aadHashB64u,`Ed25519 export-root resealed aadHashB64u`),ciphertextDigestB64u:ue(n.ciphertextDigestB64u,`Ed25519 export-root resealed ciphertextDigestB64u`),lifecycle:Ti({activatedAtMs:a.createdAtMs}),createdAtMs:a.createdAtMs,updatedAtMs:a.createdAtMs}))}}finally{s.byteLength>0&&s.fill(0)}},async discardRecipientV1(t){await e.requestOperation({kind:`walletCustodyCeremony`,request:{type:`discardLinkedDeviceEd25519ExportRootRecipient`,payload:{recipientHandleId:t.recipientHandleId}}})}}}function Xz(e,t){return e.linkSessionId===t.linkSessionId&&e.walletId===t.walletId&&e.walletKeyId===t.walletKeyId&&e.enrollmentId===t.enrollmentId&&e.deviceId===t.deviceId&&e.applicationBindingDigestB64u===t.applicationBindingDigestB64u&&e.registeredPublicKeyB64u===t.registeredPublicKeyB64u&&e.targetFactor.kind===t.targetFactor.kind&&e.revocationEpoch===t.revocationEpoch&&e.recipientPublicKeyB64u===t.recipientPublicKeyB64u}function Zz(e,t){switch(e.kind){case`passkey_prf`:return t.kind===`passkey`;case`email_otp`:return t.kind===`email_otp`}return Qz(e)}function Qz(e){throw Error(`Unsupported linked-device target factor kind: ${String(e)}`)}function $z(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`${t} returned no result`);return e}function eB(e){if(typeof e!=`string`||!e||e.trim()!==e)throw Error(`Ed25519 export-root recipient handle is invalid`);return e}const tB=`linked_device_committed_resume_v1`,nB=`linked_device_pending_ack_v1`,rB=`device-linking/committed-resume/v1/`,iB=`device-linking/pending-ack/v1/`,aB=[`kind`,`acknowledgement`],oB=[`kind`,`linkSessionId`,`walletId`,`enrollmentId`,`authorityId`,`authMethodId`,`deviceId`,`targetFactorKind`,`targetFactorVerificationDigestB64u`,`authorityDigestB64u`,`signerActivationSetDigestB64u`,`signerActivations`,`packageSetDigestB64u`,`committedAtMs`];function sB(e){return`${rB}${String(e)}`}function cB(e){return`${iB}${String(e)}`}function lB(e){return{kind:nB,acknowledgement:Xr(e)}}function uB(e){let t=hB(e);if(t===null||!q(t,aB)||t.kind!==nB)return null;try{return{kind:nB,acknowledgement:Xr(t.acknowledgement)}}catch{return null}}function dB(e){let t=e.committed.authority;if(t.provenance.kind!==`device_link`)throw Error(`committed link authority provenance is invalid`);if(t.provenance.linkSessionId!==e.linkSessionId)throw Error(`committed link session identity differs from authority provenance`);if(e.committed.authMethod.walletAuthMethodId!==e.targetFactor.authMethod.walletAuthMethodId)throw Error(`committed link auth method differs from target factor`);if(!Number.isSafeInteger(e.committedAtMs)||e.committedAtMs<=0)throw Error(`committed link resume timestamp is invalid`);return{kind:tB,linkSessionId:e.linkSessionId,walletId:t.walletId,enrollmentId:t.provenance.enrollmentId,authorityId:t.authorityId,authMethodId:e.committed.authMethod.walletAuthMethodId,deviceId:t.principal.deviceId,targetFactorKind:e.targetFactor.kind,targetFactorVerificationDigestB64u:e.targetFactor.verificationDigestB64u,authorityDigestB64u:t.authorityDigestB64u,signerActivationSetDigestB64u:t.signerActivationSetDigestB64u,signerActivations:t.signerActivations,packageSetDigestB64u:e.committed.packageSetDigestB64u,committedAtMs:e.committedAtMs}}function fB(e){let t=dB({linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor,committedAtMs:e.resume.committedAtMs});return e.resume.authorityId===t.authorityId?e.resume.linkSessionId!==t.linkSessionId||e.resume.enrollmentId!==t.enrollmentId?{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.resume.packageSetDigestB64u,actualPackageSetDigestB64u:t.packageSetDigestB64u}:e.resume.walletId===t.walletId?e.resume.authMethodId===t.authMethodId?e.resume.deviceId===t.deviceId?e.resume.targetFactorKind!==t.targetFactorKind||e.resume.targetFactorVerificationDigestB64u!==t.targetFactorVerificationDigestB64u?{kind:`installation_receipt_mismatch`,field:`targetFactorVerificationDigestB64u`}:e.resume.signerActivationSetDigestB64u===t.signerActivationSetDigestB64u?e.resume.authorityDigestB64u!==t.authorityDigestB64u||e.resume.packageSetDigestB64u!==t.packageSetDigestB64u?{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.resume.packageSetDigestB64u,actualPackageSetDigestB64u:t.packageSetDigestB64u}:_B(e.resume.signerActivations,t.signerActivations)?null:{kind:`installation_receipt_mismatch`,field:`installedActivationRefs`}:{kind:`installation_receipt_mismatch`,field:`installedActivationRefs`}:{kind:`installation_receipt_mismatch`,field:`deviceId`}:{kind:`installation_receipt_mismatch`,field:`authMethodId`}:{kind:`installation_receipt_mismatch`,field:`walletId`}:{kind:`authority_id_mismatch`,expectedAuthorityId:e.resume.authorityId,actualAuthorityId:t.authorityId}}function pB(e){let t=hB(e);if(t===null||!q(t,oB)||t.kind!==tB)return null;let n=g(t.linkSessionId),i=o(t.walletId),a=S(t.enrollmentId),s=r(t.authorityId),l=c(t.authMethodId),u=ht(t.deviceId);if(!n.ok||!i.ok||!a.ok||!s.ok||!l.ok||!u.ok||t.targetFactorKind!==`verified_passkey_target_v1`&&t.targetFactorKind!==`verified_email_otp_target_v1`)return null;let d=Ma(t.signerActivations);if(!d.ok)return null;let f=t.committedAtMs;if(typeof f!=`number`||!Number.isSafeInteger(f)||f<=0)return null;try{return{kind:tB,linkSessionId:n.value,walletId:i.value,enrollmentId:a.value,authorityId:s.value,authMethodId:l.value,deviceId:u.value,targetFactorKind:t.targetFactorKind,targetFactorVerificationDigestB64u:St(t.targetFactorVerificationDigestB64u),authorityDigestB64u:St(t.authorityDigestB64u),signerActivationSetDigestB64u:St(t.signerActivationSetDigestB64u),signerActivations:d.value,packageSetDigestB64u:St(t.packageSetDigestB64u),committedAtMs:f}}catch{return null}}async function mB(e){let[t,n]=await Promise.all([e.installation.listCommittedDeliveryResumesV1(),e.installation.listPendingActivationAcknowledgementsV1()]),r=t.filter(t=>t.authorityId===e.authorityId),i=n.filter(t=>t.authorityId===e.authorityId);if(i.length===0)return{kind:`none`};for(let t of i){let n=r.find(e=>e.linkSessionId===t.linkSessionId&&e.packageSetDigestB64u===t.packageSetDigestB64u);if(!n)throw Error(`durable linked-device acknowledgement has no matching resume`);if(n.walletId!==e.walletId||n.authMethodId!==e.authMethodId)throw Error(`durable linked-device acknowledgement identity changed`);await e.transport.acknowledgeLocalAuthorityActivationWithWalletSessionV1({acknowledgement:t,operationCredential:e.operationCredential}),await e.installation.clearPendingActivationAcknowledgementV1({authorityId:t.authorityId}),await e.installation.clearCommittedDeliveryResumeV1({authorityId:t.authorityId})}return{kind:`replayed`}}function hB(e){return gB(e)?e:null}function gB(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;try{let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}catch{return!1}}function _B(e,t){let n=ya(e),r=ya(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function vB(e,t){let n=String(e.walletId);switch(e.kind){case`passkey`:{let t=String(e.credentialIdB64u);return{profile:{profileId:n,defaultSignerSlot:1,passkeyCredential:{id:t,rawId:t}},authenticator:{profileId:n,signerSlot:1,credentialId:t,credentialPublicKey:F(e.credentialPublicKeyB64u),registered:new Date(e.createdAtMs).toISOString(),syncedAt:new Date(e.updatedAtMs).toISOString()},localAuthMethod:null}}case`email_otp`:{if(t.kind!==`verified_email_otp_target_v1`||t.authMethod.walletAuthMethodId!==e.walletAuthMethodId||t.authMethod.walletId!==e.walletId||t.authMethod.emailHashHex!==e.emailHashHex||t.authMethod.registrationAuthorityId!==e.registrationAuthorityId)throw Error(`linked Email OTP target factor does not match the committed auth method`);let r=Ha({walletId:e.walletId,provider:t.enrollment.kind===`existing_enrollment`?`google`:`email`,providerUserId:t.providerUserId,emailHashHex:e.emailHashHex});return{profile:{profileId:n,defaultSignerSlot:1},authenticator:null,localAuthMethod:{version:`wallet_auth_method_v1`,kind:`email_otp`,status:`active`,localStatus:`synced`,walletId:e.walletId,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,authority:{walletId:r.walletId,factor:r.factor,verifier:r.verifier,bindingId:e.walletAuthMethodId},createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs}}}default:{let t=e;throw Error(`Unsupported linked-device auth method: ${String(t)}`)}}}function yB(e){return{...bB({indexedDB:e.indexedDB}),persistCommittedDeliveryResumeV1:async t=>{let n=dB(t);await e.indexedDB.setAppState(sB(n.authorityId),n)},readCommittedDeliveryResumeV1:async({authorityId:t})=>pB(await e.indexedDB.getAppState(sB(t))),persistPendingActivationAcknowledgementV1:async({acknowledgement:t})=>{let n=lB(t);await e.indexedDB.setAppState(cB(t.authorityId),n)},readPendingActivationAcknowledgementV1:async({authorityId:t})=>uB(await e.indexedDB.getAppState(cB(t)))?.acknowledgement??null,readLocalAuthorityInstallationReceiptV1:async({authorityId:t})=>await e.indexedDB.getLocalAuthorityInstallationReceipt(t),installLocalAuthorityV1:t=>xB({...t,...e}),publishLocalAuthorityActivationV1:({active:t,expectedLockGeneration:n})=>SB({indexedDB:e.indexedDB,active:t,expectedLockGeneration:n}),finalizeLocalAuthorityActivationV1:({active:t,operationCredential:n,expectedLockGeneration:r})=>CB({indexedDB:e.indexedDB,active:t,operationCredential:n,expectedLockGeneration:r})}}function bB(e){return{listCommittedDeliveryResumesV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(rB)).flatMap(e=>{if(e.value===null)return[];let t=pB(e.value);if(!t||sB(t.authorityId)!==e.key)throw Error(`durable linked-device delivery resume is corrupt`);return[t]}),listPendingActivationAcknowledgementsV1:async()=>(await e.indexedDB.listAppStateEntriesByPrefix(iB)).flatMap(e=>{if(e.value===null)return[];let t=uB(e.value);if(!t||cB(t.acknowledgement.authorityId)!==e.key)throw Error(`durable linked-device acknowledgement is corrupt`);return[t.acknowledgement]}),clearCommittedDeliveryResumeV1:async({authorityId:t})=>{await e.indexedDB.setAppState(sB(t),null)},clearPendingActivationAcknowledgementV1:async({authorityId:t})=>{await e.indexedDB.setAppState(cB(t),null)}}}async function xB(e){let t=await e.indexedDB.getLocalAuthorityInstallationReceipt(e.committed.authority.authorityId);if(t)return AB({committed:e.committed,targetFactor:e.targetFactor,receipt:t}),t;let n=await e.sealing.sealCommittedAuthorityPackagesV1({committed:e.committed,targetFactor:e.targetFactor,keyMaterial:e.keyMaterial,resealedExportRoot:e.resealedExportRoot});kB({committed:e.committed,sealed:n});let r=vB(e.committed.authMethod,e.targetFactor),i=e.nowMs();if(!Number.isSafeInteger(i)||i<=0)throw Error(`local authority installation clock is invalid`);let a={kind:`local_authority_installation_receipt_v1`,authorityId:e.committed.authority.authorityId,walletId:e.committed.authority.walletId,authMethodId:e.committed.authMethod.walletAuthMethodId,deviceId:e.committed.authority.principal.deviceId,packageSetDigestB64u:e.committed.packageSetDigestB64u,installedActivationRefs:e.committed.authority.signerActivations,installedRecordSetDigestB64u:n.installedRecordSetDigestB64u,targetFactorVerificationDigestB64u:e.targetFactor.verificationDigestB64u,installedAtMs:i},o=await e.indexedDB.installLocalAuthority({authority:e.committed.authority,authMethod:e.committed.authMethod,profile:r.profile,authenticator:r.authenticator,localAuthMethod:r.localAuthMethod,signerMaterials:n.signerMaterials,exportRoot:n.exportRoot,receipt:a,expectedLockGeneration:e.expectedLockGeneration});switch(o.kind){case`installed`:case`idempotent_replay`:return o.receipt;case`stale_lock_generation`:throw Error(`local authority installation lock generation is stale (expected ${o.expectedLockGeneration}, actual ${o.actualLockGeneration})`);case`integrity_error`:throw Error(`local authority installation integrity error: ${o.reason}`)}}async function SB(e){let t=await e.indexedDB.publishLocalAuthorityActivation({authority:e.active.authority,authMethod:e.active.authMethod,expectedLockGeneration:e.expectedLockGeneration});switch(t.kind){case`published`:return;case`stale_lock_generation`:throw Error(`local authority activation lock generation is stale (expected ${t.expectedLockGeneration}, actual ${t.actualLockGeneration})`);case`wallet_locked`:throw Error(`local authority activation refused while wallet is locked at generation ${t.lockGeneration}`);default:throw Error(`local authority activation publication returned an unknown result`)}}async function CB(e){let t={authority:e.active.authority,authMethod:e.active.authMethod,walletSession:e.active.walletSession,operationCredential:e.operationCredential,expectedLockGeneration:e.expectedLockGeneration},n=await e.indexedDB.finalizeLocalAuthorityActivation(t);switch(n.kind){case`finalized`:return;case`stale_lock_generation`:throw Error(`local authority activation lock generation is stale (expected ${n.expectedLockGeneration}, actual ${n.actualLockGeneration})`);case`wallet_locked`:throw Error(`local authority activation refused while wallet is locked at generation ${n.lockGeneration}`);default:throw Error(`local authority activation returned an unknown result`)}}async function wB(e){let t=EB({committed:e.committed,sessionState:e.sessionState});if(t)return t;let n=await e.installation.readCommittedDeliveryResumeV1({authorityId:e.committed.authority.authorityId});if(n){let t=fB({resume:n,linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor});if(t)return{kind:`integrity_error`,reason:t}}else await e.installation.persistCommittedDeliveryResumeV1({linkSessionId:e.linkSessionId,committed:e.committed,targetFactor:e.targetFactor,committedAtMs:e.nowMs()});let r=await e.installation.installLocalAuthorityV1({committed:e.committed,targetFactor:e.targetFactor,keyMaterial:e.keyMaterial,resealedExportRoot:e.resealedExportRoot,expectedLockGeneration:e.expectedLockGeneration}),i=await e.transport.activateInstalledAuthorityV1({linkSessionId:e.linkSessionId,receipt:r});switch(i.kind){case`pending_local_install`:return{kind:`pending_local_install`,authorityId:i.authorityId,packageSetDigestB64u:r.packageSetDigestB64u};case`integrity_error`:return i;case`active`:{let t=DB({active:i,receipt:r});if(t)return t;await e.installation.publishLocalAuthorityActivationV1({active:i,expectedLockGeneration:e.expectedLockGeneration}),await ii(i.sealedDelivery),await OB({active:i,receipt:r,linkSessionId:e.linkSessionId,deliveryRecipientPublicKey65B64u:e.deliveryRecipientPublicKey65B64u}),await e.installation.persistPendingActivationAcknowledgementV1({acknowledgement:await TB({active:i,receipt:r,linkSessionId:e.linkSessionId,acknowledgedAtMs:e.nowMs()})});let n=await e.keyMaterialPort.openWalletSessionCredentialDeliveryV1({keyMaterial:e.keyMaterial,delivery:i.sealedDelivery,expected:{linkSessionId:e.linkSessionId,walletId:i.walletSession.walletId,authorityId:i.walletSession.authorityId,walletAuthMethodId:i.walletSession.authMethodId,authorizationId:i.walletSession.authorizationId,walletSessionId:i.sealedDelivery.aad.walletSessionId,quotaId:i.walletSession.quotaId,deliveryBinding:i.deliveryBinding,credentialDigestB64u:i.sealedDelivery.aad.credentialDigestB64u,installationReceiptDigestB64u:i.sealedDelivery.installationReceiptDigestB64u,recipientPublicKey65B64u:e.deliveryRecipientPublicKey65B64u,issuedAtMs:i.walletSession.issuedAtMs,expiresAtMs:i.walletSession.expiresAtMs}});return await e.installation.finalizeLocalAuthorityActivationV1({active:i,operationCredential:n,expectedLockGeneration:e.expectedLockGeneration}),{kind:`active`,session:i.walletSession,operationCredential:n}}}}async function TB(e){if(!Number.isSafeInteger(e.acknowledgedAtMs)||e.acknowledgedAtMs<=0)throw Error(`linked-device acknowledgement clock is invalid`);return{kind:`local_authority_activation_final_ack_v1`,linkSessionId:e.linkSessionId,authorityId:e.active.authority.authorityId,packageSetDigestB64u:e.receipt.packageSetDigestB64u,authorizationId:e.active.sealedDelivery.aad.authorizationId,walletSessionId:e.active.sealedDelivery.aad.walletSessionId,credentialDigestB64u:e.active.sealedDelivery.aad.credentialDigestB64u,installationReceiptDigestB64u:await ci(e.receipt),acknowledgedAtMs:e.acknowledgedAtMs}}function EB(e){return e.sessionState.state===`provisioning`?null:e.committed.authority.authorityId===e.sessionState.authorityId?e.sessionState.state!==`active`&&e.committed.packageSetDigestB64u!==e.sessionState.packageSetDigestB64u?{kind:`integrity_error`,reason:{kind:`package_set_digest_mismatch`,expectedPackageSetDigestB64u:e.sessionState.packageSetDigestB64u,actualPackageSetDigestB64u:e.committed.packageSetDigestB64u}}:null:{kind:`integrity_error`,reason:{kind:`authority_id_mismatch`,expectedAuthorityId:e.sessionState.authorityId,actualAuthorityId:e.committed.authority.authorityId}}}function DB(e){return e.active.authority.authorityId===e.receipt.authorityId?e.active.authority.walletId!==e.receipt.walletId||e.active.walletSession.walletId!==e.receipt.walletId?{kind:`integrity_error`,reason:{kind:`installation_receipt_mismatch`,field:`walletId`}}:e.active.authMethod.walletAuthMethodId!==e.receipt.authMethodId||e.active.walletSession.authMethodId!==e.receipt.authMethodId?{kind:`integrity_error`,reason:{kind:`installation_receipt_mismatch`,field:`authMethodId`}}:null:{kind:`integrity_error`,reason:{kind:`authority_id_mismatch`,expectedAuthorityId:e.receipt.authorityId,actualAuthorityId:e.active.authority.authorityId}}}async function OB(e){let t=e.active.sealedDelivery.aad,n=e.active.deliveryBinding,r=e.active.sealedDelivery.installationReceiptDigestB64u,i=await ci(e.receipt);if(n.namespace!==t.namespace||n.orgId!==t.orgId||n.projectId!==t.projectId||n.envId!==t.envId||n.tenantId!==t.tenantId||n.principalId!==t.principalId||t.linkSessionId!==e.linkSessionId||t.walletId!==e.receipt.walletId||t.authorityId!==e.receipt.authorityId||t.walletAuthMethodId!==e.receipt.authMethodId||t.authorizationId!==e.active.walletSession.authorizationId||t.quotaId!==e.active.walletSession.quotaId||String(t.principalId)!==`linked-device:${String(e.active.authority.principal.deviceId)}`||t.recipientPublicKey65B64u!==e.deliveryRecipientPublicKey65B64u||t.issuedAtMs!==e.active.walletSession.issuedAtMs||t.expiresAtMs!==e.active.walletSession.expiresAtMs||r!==i)throw Error(`linked-device Wallet Session credential delivery identity changed`)}function kB(e){let t=e.committed.authority,n=e.committed.authMethod,r=NB(t.signerActivations);if(e.sealed.signerMaterials.length!==r.length)throw Error(`sealed signer material count does not match committed authority`);for(let i=0;i<r.length;i+=1){let a=r[i],o=e.sealed.signerMaterials[i];if(!o||o.authorityId!==t.authorityId||o.walletAuthMethodId!==n.walletAuthMethodId||o.keyFamily!==a.keyFamily||o.activationId!==a.materialActivation.activationId||o.materialActivation.activationId!==a.materialActivation.activationId)throw Error(`sealed signer material identity does not match committed authority`)}if((MB(t.signerActivations)&&t.permissions.includes(`export_keys`))!==(e.sealed.exportRoot!==null))throw Error(`sealed Ed25519 export root presence does not match committed authority`);if(e.sealed.exportRoot&&(e.sealed.exportRoot.authorityId!==t.authorityId||e.sealed.exportRoot.walletAuthMethodId!==n.walletAuthMethodId))throw Error(`sealed export root identity does not match committed authority`);St(e.sealed.installedRecordSetDigestB64u)}function AB(e){if(e.receipt.authorityId!==e.committed.authority.authorityId||e.receipt.walletId!==e.committed.authority.walletId||e.receipt.authMethodId!==e.committed.authMethod.walletAuthMethodId||e.receipt.deviceId!==e.committed.authority.principal.deviceId||e.receipt.packageSetDigestB64u!==e.committed.packageSetDigestB64u||e.receipt.targetFactorVerificationDigestB64u!==e.targetFactor.verificationDigestB64u||!jB(e.receipt.installedActivationRefs,e.committed.authority.signerActivations))throw Error(`stored local authority receipt does not match committed packages`)}function jB(e,t){let n=ya(e),r=ya(t);if(n.byteLength!==r.byteLength)return!1;for(let e=0;e<n.byteLength;e+=1)if(n[e]!==r[e])return!1;return!0}function MB(e){return e.keyFamilies.length===2||e.keyFamilies[0]===`ed25519`}function NB(e){if(e.keyFamilies.length===1&&e.keyFamilies[0]===`ed25519`){if(!e.ed25519)throw Error(`Ed25519 activation is missing`);return[{keyFamily:`ed25519`,materialActivation:e.ed25519.materialActivation}]}if(e.keyFamilies.length===1&&e.keyFamilies[0]===`ecdsa_secp256k1`){if(!e.ecdsa)throw Error(`ECDSA activation is missing`);return[{keyFamily:`ecdsa_secp256k1`,materialActivation:e.ecdsa.materialActivation}]}if(e.keyFamilies.length===2){if(!e.ed25519||!e.ecdsa)throw Error(`combined signer activations are incomplete`);return[{keyFamily:`ed25519`,materialActivation:e.ed25519.materialActivation},{keyFamily:`ecdsa_secp256k1`,materialActivation:e.ecdsa.materialActivation}]}throw Error(`committed signer activation families are invalid`)}function PB(e,t){switch(t.targetFactor.kind){case`verified_passkey_target_v1`:return{kind:`authenticated`,walletId:e.walletId,authMethod:B.passkey};case`verified_email_otp_target_v1`:return{kind:`authenticated`,walletId:e.walletId,authMethod:B.emailOtp};default:return t.targetFactor}}function FB(){let e=g(Be(`link-session`,32));if(!e.ok)throw Error(e.error.message);return e.value}function IB(){return Be(`link-flow`,16)}function LB(e,t){try{e?.(t)}catch{}}function RB(e){console.info(`[Device2Linking]`,{flowId:e.flowId,linkSessionId:e.linkSessionId,stage:e.stage,...e.details})}function zB(e){console.error(`[Device2Linking] failed`,{flowId:e.flowId,linkSessionId:e.linkSessionId,state:e.state,error:L(e.error)})}function BB(e,t){setTimeout(e,XR(250,t))}async function VB(e){await new Promise(t=>BB(t,e))}function HB(e){switch(e.state){case`displaying_qr`:case`expired`:case`cancelled`:return Zo.STEP_01_QR_PREPARE_STARTED;case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:case`authority_pending_local_install`:case`active`:return Zo.STEP_02_QR_SCAN_STARTED;case`failed_before_commit`:return Zo.FAILED;default:return Fi(e)}}function UB(e,t){return e instanceof X?e:new X(L(e)||`Device linking failed`,Z.REGISTRATION_FAILED,t)}function WB(e){let t=L(e).toLowerCase();return t.includes(`device-linking key handle is unknown or discarded`)||t.includes(`recipient handle lost`)?`recipient_private_handle_lost`:t.includes(`linked-device wallet session credential delivery is expired`)?`sealed_delivery_expired`:null}function GB(e){switch(e){case`recipient_private_handle_lost`:case`sealed_delivery_expired`:return`The linked device is ready. Return to sign in and unlock the new method to finish setup.`;default:return e}}var KB=class extends Error{constructor(){super(`Device-link flow was cancelled or reset`),this.name=`LinkDeviceFlowSupersededError`}};async function qB(t){let n;try{n=await import(`./browser-DkCRXFkk.js`).then(t=>e(t.default,1))}catch{throw new X(`Device-link QR generation requires the optional qrcode package`,Z.UNSUPPORTED,`generation`)}return await n.toDataURL(t,{errorCorrectionLevel:`M`,margin:2})}function JB(e){let t=de();return e.target.targetFactor.kind===`email_otp`?Ki({linkSessionId:e.linkSessionId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,requestedPermission:t,targetFactor:{kind:`email_otp`},targetEmail:Of(e.target.targetEmail),issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs}):Ki({linkSessionId:e.linkSessionId,linkPublicKeyB64u:e.linkPublicKeyB64u,devicePublicKeyB64u:e.devicePublicKeyB64u,requestedPermission:t,targetFactor:{kind:`passkey_prf`},issuedAtMs:e.issuedAtMs,expiresAtMs:e.expiresAtMs})}function YB(e){return e.targetFactor.kind===`passkey_prf`}function XB(e){return e.targetFactor.kind===`email_otp`}function ZB(e){return{event:e.event,state:e.state,runEpoch:e.runEpoch,deviceId:e.deviceId,preparation:e.preparation,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,exportRoot:e.exportRoot}}function QB(e){if(e.kind!==`completed`||!e.factorSecret||typeof e.providerUserId!=`string`)throw Error(`linked-device Email OTP factor runtime is unavailable`);return{kind:`completed`,runEpoch:e.runEpoch,enrollment:e.enrollment,factorSecret:e.factorSecret,providerUserId:e.providerUserId}}function $B(e){throw Error(`Unknown Email OTP target activation state: ${String(e)}`)}function eV(e){throw Error(`Unknown target credential activation state: ${String(e)}`)}function tV(e){switch(e.targetFactor.kind){case`verified_passkey_target_v1`:{let t=e.targetCredentialActivationState;if(t.kind!==`factor_ready`||t.runEpoch!==e.runEpoch)throw Error(`linked-device Passkey factor runtime is unavailable`);return{factor:{kind:`passkey`,walletId:e.walletId},factorSecret32:t.factorSecret}}case`verified_email_otp_target_v1`:{let t=QB(e.emailOtpTargetActivationState);if(t.runEpoch!==e.runEpoch)throw Error(`linked-device Email OTP factor runtime is unavailable`);return{factor:{kind:`email_otp`,walletId:e.walletId,walletAuthMethodId:e.walletAuthMethodId,emailHashHex:e.targetFactor.authMethod.emailHashHex,providerIdentity:{provider:iV(t.enrollment),providerSubjectId:t.providerUserId}},factorSecret32:t.factorSecret}}default:return nV(e.targetFactor)}}function nV(e){throw Error(`Unknown verified target factor kind: ${String(e)}`)}function rV(e){e.byteLength>0&&e.fill(0)}function iV(e){return e.kind===`existing_enrollment`?`google`:`email`}function aV(e){return e.passkeyCreationOptions.rpId}function oV(e){if(!XB(e))throw Error(`linked-device Email OTP preparation is unavailable`);return e}function sV(){let e=C(Be(`linked-device-ed25519-export-root-envelope`,24,`export-root envelope ids`));if(!e.ok)throw Error(e.error.message);return e.value}function cV(){return crypto.getRandomValues(new Uint8Array(32))}async function lV(e){let t=e.factorSecret.slice();try{let n=await e.context.signingEngine.prepareEmailOtpRegistrationEnrollmentMaterialInternal({relayUrl:String(e.context.configs.network.relayer.url||``).trim(),walletId:e.walletId,userId:e.targetEmail,clientSecret32:t});if(n.emailOtpSessionHandle.kind!==`not_requested`)throw Error(`Strict linked-device Email OTP enrollment received obsolete ECDSA material`);return{enrollmentId:n.enrollmentId,enrollment:n.emailOtpEnrollment}}finally{rV(t)}}function uV(e){if(!e)throw Error(`new linked-device Email OTP enrollment material is unavailable`);return e}var dV=class{pendingActivationCompletion=null;options;ports;getAuthenticationContext;flowId;session=null;keyMaterialHandle=null;deliveryRecipientPublicKey65B64u=null;resealedExportRoot=null;targetCredentialRegistrationResult=null;committedAuthorityPackages=null;deliveryRecoveryReason=null;ordinarySignerMaterialRecipientPreparation=null;authenticatedTransport=null;subscription=null;error;cancelled=!1;runEpoch=0;generationInProgress=!1;discardInProgress=null;targetCredentialActivationState={kind:`idle`};emailOtpTargetActivationState={kind:`idle`};handledStates=new Set;sessionEventQueue=Promise.resolve();constructor(e,t,n=null){this.options=e,this.flowId=IB(),this.ports=t,this.getAuthenticationContext=n}async generateQR(){if(this.generationInProgress||this.keyMaterialHandle||this.subscription||this.session&&!this.cancelled)throw Error(`Device-link QR flow is already running`);let e=this.startRun(),t=this.ports;this.emit({phase:Zo.STEP_01_QR_PREPARE_STARTED,status:`started`,message:`Preparing device link`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}});try{let n=await t.keyMaterial.createBootstrapKeyMaterialV1();if(!this.isCurrentRun(e))throw this.keyMaterialHandle=n.handle,await this.discardKeyMaterial(),new KB;this.keyMaterialHandle=n.handle,this.deliveryRecipientPublicKey65B64u=n.deliveryRecipientPublicKey65B64u;let r=Date.now(),i=FB(),a=JB({linkSessionId:i,linkPublicKeyB64u:n.linkPublicKeyB64u,devicePublicKeyB64u:n.devicePublicKeyB64u,target:this.options,issuedAtMs:r,expiresAtMs:r+900*1e3}),o={state:`displaying_qr`},s=t.transport.createAuthenticatedSessionTransportV1({keyMaterial:n.handle,devicePublicKeyB64u:n.devicePublicKeyB64u});this.authenticatedTransport=s,this.session={linkSessionId:i,state:o,qrData:a},RB({flowId:this.flowId,linkSessionId:i,stage:`session_create_started`}),await s.createUnclaimedSessionV1({payload:a,state:o}),this.assertCurrentRun(e);let c=await s.subscribeSessionV1({linkSessionId:i,onEvent:this.handleSessionTransportEvent.bind(this)});if(!this.isCurrentRun(e))throw await c.close(),new KB;this.subscription=c,RB({flowId:this.flowId,linkSessionId:i,stage:`session_subscription_ready`});let l=await qB(hi(a));this.assertCurrentRun(e);let u={qrData:a,qrCodeDataURL:l};return this.emit({phase:Zo.STEP_01_QR_PREPARE_STARTED,status:`succeeded`,message:`Device-link QR ready`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}}),await this.options.options?.afterCall?.(!0,u),u}catch(e){try{await this.cleanupLocalResources()}catch{}if(e instanceof KB)throw e;this.session=null,this.authenticatedTransport=null,this.handledStates.clear();let t=UB(e,`generation`);throw this.error=t,this.emitFailure(t,`generation`),LB(this.options.options?.onError,t),await this.options.options?.afterCall?.(!1,void 0,t),t}finally{this.generationInProgress=!1}}getState(){return{phase:this.session?HB(this.session.state):Zo.STEP_01_QR_PREPARE_STARTED,session:this.session,...this.error?{error:this.error}:{},cancelled:this.cancelled}}async cancel(){if(this.hasCommittedDeliveryState())throw Error(`Device-link authority delivery is committed and must be resumed`);if(this.cancelled){await this.cleanupLocalResources();return}this.cancelled=!0,this.runEpoch+=1;let e=this.session,t=this.keyMaterialHandle,n=this.authenticatedTransport;try{if(e&&t&&n){let t=Date.now();switch(e.state.state){case`displaying_qr`:await n.cancelSessionV1({request:fi({linkSessionId:e.linkSessionId,requestedAtMs:t})}),this.session={...e,state:{state:`cancelled`,cancelledAtMs:t}};break;case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:await this.cancelClaimedSessionV1(n,e.linkSessionId,t),this.session={...e,state:{state:`cancelled`,cancelledAtMs:t}};break;case`authority_pending_local_install`:break;case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:break;default:Fi(e.state)}}}finally{await this.cleanupLocalResources()}this.emit({phase:Zo.CANCELLED,status:`cancelled`,message:`Device-link flow cancelled`,interaction:{kind:`qr_display`,overlay:`hide`}})}async resolveLinkIdentityV1(e){let t=this.targetCredentialRegistrationResult;if(t&&t.linkSessionId===e)return{enrollmentId:t.enrollmentId,deviceId:t.deviceId};let n=await this.requireAuthenticatedTransport().getTargetPreparationV1({linkSessionId:e,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u()});return{enrollmentId:n.enrollmentId,deviceId:n.deviceId}}async cancelClaimedSessionV1(e,t,n){let r=await this.resolveLinkIdentityV1(t);await e.cancelSessionV1({request:Si({linkSessionId:t,enrollmentId:r.enrollmentId,deviceId:r.deviceId,reason:`user_cancelled`,requestedAtMs:n})})}async handleSessionEvent(e){if(this.cancelled||this.deliveryRecoveryReason!==null||!this.session||e.linkSessionId!==this.session.linkSessionId)return;RB({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`session_event_received`,details:{state:e.state.state,emittedAtMs:e.emittedAtMs,runEpoch:this.runEpoch}});let t=this.runEpoch;if(this.handledStates.has(e.state.state)){RB({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`session_event_already_handled`,details:{state:e.state.state}});return}switch(this.session={...this.session,state:e.state},this.handledStates.add(e.state.state),e.state.state){case`displaying_qr`:return;case`claimed`:this.emit({phase:Zo.STEP_02_QR_SCAN_STARTED,status:`running`,message:`Device link claimed by owner`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}});return;case`awaiting_target_factor`:await this.prepareTargetCredentialActivation(e,t);return;case`awaiting_source_contribution`:return;case`provisioning`:case`authority_pending_local_install`:{let n=await this.activateAuthorityForStateV1(e.state,t);if(n.kind===`pending_local_install`)return;if(n.kind===`integrity_error`)throw new X(`Linked-device authority installation failed: ${n.reason}`,Z.REGISTRATION_FAILED,`registration`);if(n.kind===`failed_before_commit`)throw new X(`Linked-device authority activation cannot continue`,Z.REGISTRATION_FAILED,`registration`);await this.finishActiveAuthorityV1(e.state,n.session,n.operationCredential,t);return}case`active`:await this.replayCommittedAuthorityV1(e.state,t);return;case`expired`:{let e=new X(`Device-link session expired`,Z.SESSION_EXPIRED,`registration`);this.error=e,this.emitFailure(e,`registration`),LB(this.options.options?.onError,e),this.runEpoch+=1,await this.cleanupLocalResources();return}case`cancelled`:this.cancelled=!0,this.emit({phase:Zo.CANCELLED,status:`cancelled`,message:`The other device cancelled this linking request.`,interaction:{kind:`qr_display`,overlay:`show`}}),this.runEpoch+=1,await this.cleanupLocalResources();return;case`failed_before_commit`:this.cancelled=!0,this.runEpoch+=1,await this.cleanupLocalResources();return;default:return Fi(e.state)}}async prepareTargetCredentialActivation(e,t){if(e.state.state!==`awaiting_target_factor`)throw Error(`target passkey activation requires an awaiting session`);let n=e.state;if(!this.keyMaterialHandle||!this.session)throw Error(`device-link key material is unavailable`);let r=this.requireAuthenticatedTransport();this.assertCurrentRun(t);let i=await r.getTargetPreparationV1({linkSessionId:e.linkSessionId,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u()});this.assertCurrentRun(t),this.assertTargetPreparationMatchesSession({preparation:i,state:n,linkSessionId:e.linkSessionId});let a=i.deviceId;if(this.ordinarySignerMaterialRecipientPreparation=await this.ports.keyMaterial.createOrdinarySignerMaterialRecipientRequestsV1({keyMaterial:this.keyMaterialHandle,requirements:i.ordinarySignerMaterialRecipientRequirements}),this.assertCurrentRun(t),this.requireSessionTargetFactorV1().kind===`email_otp`){await this.prepareTargetEmailOtpActivation({event:e,state:n,runEpoch:t,deviceId:a,preparation:i});return}if(!YB(i))throw Error(`Passkey session returned a non-Passkey target preparation`);let o=this.options.options?.onTargetFactorRequired;if(!o)throw new X(`Confirm passkey creation on Device 2 to continue linking`,Z.UNSUPPORTED,`registration`);o({kind:`linked_device_target_passkey_activation_v1`,createPasskey:this.activateTargetCredential.bind(this,{event:e,state:n,runEpoch:t,deviceId:a,preparation:i})})}async prepareTargetEmailOtpActivation(e){if(!XB(e.preparation))throw Error(`Email OTP session returned a non-Email OTP target preparation`);if(!this.keyMaterialHandle||!this.session||!this.deliveryRecipientPublicKey65B64u)throw Error(`Email OTP target key material is unavailable`);if(!this.options.options?.onTargetFactorRequired)throw new X(`Enter the Email OTP on Device 2 to continue linking`,Z.UNSUPPORTED,`registration`);let t=this.requireAuthenticatedTransport(),n=e.preparation.ed25519ExportRoot,r=n===null?{kind:`not_required`}:{kind:`required`,recipient:await Uz({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:t,identity:{linkSessionId:e.event.linkSessionId,walletId:e.preparation.walletId,walletKeyId:n.walletKeyId,enrollmentId:e.preparation.enrollmentId,deviceId:e.deviceId,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,targetFactor:e.preparation.targetFactor,revocationEpoch:n.revocationEpoch},registeredAtMs:Date.now()})};this.assertCurrentRun(e.runEpoch);let i={event:e.event,state:e.state,runEpoch:e.runEpoch,deviceId:e.deviceId,preparation:e.preparation,ordinarySignerMaterialRecipientRequests:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientRequests,exportRoot:r};this.emailOtpTargetActivationState={kind:`available`,context:i},await this.startTargetEmailOtpChallengeV1(i)}notifyEmailOtpActivationV1(e){let t=this.options.options?.onTargetFactorRequired;t&&t({kind:`linked_device_target_email_otp_activation_v1`,state:e,sendCode:this.sendTargetEmailOtpCodeV1.bind(this),submitCode:this.submitTargetEmailOtpCodeV1.bind(this),resendCode:this.resendTargetEmailOtpCodeV1.bind(this)})}sendTargetEmailOtpCodeV1(){let e=this.emailOtpTargetActivationState;switch(e.kind){case`available`:{let t=this.startTargetEmailOtpChallengeV1(e.context);return this.emailOtpTargetActivationState={kind:`starting`,context:e.context,promise:t},t}case`starting`:return e.promise;case`resending`:return e.promise;case`awaiting_code`:case`submitting`:case`completed`:return Promise.resolve();case`failed`:return Promise.reject(Error(e.message));case`idle`:return Promise.reject(Error(`Email OTP activation is unavailable`));default:return $B(e)}}async startTargetEmailOtpChallengeV1(e){try{this.assertCurrentRun(e.runEpoch);let t=this.deliveryRecipientPublicKey65B64u;if(!t)throw Error(`Email OTP factor-release recipient is unavailable`);let n=await this.requireAuthenticatedTransport().startTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_start_request_v1`,linkSessionId:e.event.linkSessionId,workerEphemeralPublicKey65B64u:t}});this.assertCurrentRun(e.runEpoch),this.awaitTargetEmailOtpCodeV1(e,n)}catch(t){throw this.isCurrentRun(e.runEpoch)&&(this.emailOtpTargetActivationState={kind:`available`,context:e},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:L(t)})),t}}awaitTargetEmailOtpCodeV1(e,t){this.emailOtpTargetActivationState={kind:`awaiting_code`,context:{...ZB(e),challenge:t}},this.notifyEmailOtpActivationV1({kind:`code_input`,maskedEmailHint:t.maskedEmailHint,expiresAtMs:t.expiresAtMs,resendAvailableAtMs:t.resendAvailableAtMs})}resendTargetEmailOtpCodeV1(){let e=this.emailOtpTargetActivationState;if(e.kind===`resending`)return e.promise;if(e.kind!==`awaiting_code`)return Promise.reject(Error(`Email OTP challenge is not ready to resend`));try{this.assertCurrentRun(e.context.runEpoch)}catch(e){return Promise.reject(e)}let t=this.runTargetEmailOtpResendV1(e.context);return this.emailOtpTargetActivationState={kind:`resending`,context:e.context,promise:t},this.notifyEmailOtpActivationV1({kind:`resending`,maskedEmailHint:e.context.challenge.maskedEmailHint}),t}async runTargetEmailOtpResendV1(e){try{let t=await this.requireAuthenticatedTransport().resendTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_resend_request_v1`,linkSessionId:e.event.linkSessionId,challengeId:e.challenge.challengeId}});this.assertCurrentRun(e.runEpoch),this.awaitTargetEmailOtpCodeV1(e,t)}catch(t){if(this.isCurrentRun(e.runEpoch)){let n=L(t)||`Email OTP resend is unavailable`;this.emailOtpTargetActivationState={kind:`available`,context:ZB(e)},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:n})}throw t}}submitTargetEmailOtpCodeV1(e){let t=this.emailOtpTargetActivationState;if(t.kind!==`awaiting_code`)return Promise.reject(Error(`Email OTP challenge is not ready for verification`));this.assertCurrentRun(t.context.runEpoch);let n=this.completeTargetEmailOtpActivationV1(t.context,e);return this.emailOtpTargetActivationState={kind:`submitting`,context:t.context,promise:n},this.notifyEmailOtpActivationV1({kind:`submitting`,maskedEmailHint:t.context.challenge.maskedEmailHint,expiresAtMs:t.context.challenge.expiresAtMs,resendAvailableAtMs:t.context.challenge.resendAvailableAtMs}),n}async completeTargetEmailOtpActivationV1(e,t){let n;try{n=await this.requireAuthenticatedTransport().verifyTargetEmailOtpChallengeV1({request:{kind:`linked_device_email_otp_challenge_verify_request_v1`,linkSessionId:e.event.linkSessionId,challengeId:e.challenge.challengeId,otpCode:t}})}catch(t){throw this.isCurrentRun(e.runEpoch)&&(this.emailOtpTargetActivationState={kind:`awaiting_code`,context:e},Date.now()>=e.challenge.expiresAtMs?this.notifyEmailOtpActivationV1({kind:`expired`,maskedEmailHint:e.challenge.maskedEmailHint,message:L(t)}):this.notifyEmailOtpActivationV1({kind:`incorrect`,maskedEmailHint:e.challenge.maskedEmailHint,expiresAtMs:e.challenge.expiresAtMs,resendAvailableAtMs:e.challenge.resendAvailableAtMs,message:L(t)})),t}this.assertCurrentRun(e.runEpoch);let r=oV(e.preparation),i=e.exportRoot.kind===`required`?e.exportRoot.recipient:null,a=null,o=null,s=null,c=null,l=null,u=null,d=r.enrollment.kind===`existing_enrollment`;try{let t=await ai(r);if(n.verificationGrant.targetEmail!==r.targetEmail)throw Error(`linked-device Email OTP verification target email changed`);if(d){let i=n.verificationGrant;if(i.enrollment.kind!==`existing_enrollment`)throw Error(`linked-device Email OTP verification enrollment changed`);let o=i.baseWalletAuthMethodId;if(!o)throw Error(`linked-device Email OTP base auth method is unavailable`);let u=n.factorRelease;if(!u)throw Error(`linked-device Email OTP factor release is unavailable`);let d=await this.ports.keyMaterial.openEmailOtpFactorReleaseV1({keyMaterial:this.requireKeyMaterialHandleV1(),walletId:r.walletId,linkSessionId:r.linkSessionId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,baseWalletAuthMethodId:o,targetPreparationDigestB64u:t,expectedChallengeId:e.challenge.challengeId,verificationGrant:i,factorRelease:u});a=d.factorSecret,s=d.verificationGrant,c=u.enrollmentId,l=u.enrollmentSealKeyVersion}else{let e=n.verificationGrant;if(e.enrollment.kind!==`new_enrollment`)throw Error(`linked-device Email OTP verification enrollment changed`);if(n.factorRelease!==null)throw Error(`new linked-device Email OTP enrollment returned a factor release`);let t=this.getAuthenticationContext?.();if(!t)throw Error(`linked-device authentication context is unavailable`);let i=cV();a=i.buffer;let o=await lV({context:t,walletId:r.walletId,targetEmail:r.targetEmail,factorSecret:i});c=o.enrollmentId,l=o.enrollment.enrollmentSealKeyVersion,u=o.enrollment,s=e}if(!a||!s||!c||!l)throw Error(`linked-device Email OTP factor material is unavailable`);if(this.assertCurrentRun(e.runEpoch),e.exportRoot.kind===`required`){if(!i)throw Error(`linked-device Ed25519 export-root recipient is unavailable`);let t=r.ed25519ExportRoot;if(!t)throw Error(`linked-device Ed25519 export-root preparation is unavailable`);let n=sV(),o=Xi({enrollmentId:c,enrollmentSealKeyVersion:l});this.resealedExportRoot=await this.acceptTargetExportRootV1({preparation:r,exportRoot:t,recipient:i,envelopeId:n,factor:o,replacementFactorSecret:new Uint8Array(a),runEpoch:e.runEpoch}),i=null}let f=ki(d?{linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,targetFactor:{kind:`email_otp`},targetEmail:r.targetEmail,emailOtpVerificationGrant:s,targetPreparationDigestB64u:t,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,registeredAtMs:Date.now()}:{linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:r.walletAuthMethodId,targetFactor:{kind:`email_otp`},targetEmail:r.targetEmail,emailOtpVerificationGrant:s,emailOtpEnrollment:uV(u),targetPreparationDigestB64u:t,ordinarySignerMaterialRecipientRequests:e.ordinarySignerMaterialRecipientRequests,registeredAtMs:Date.now()}),p=await this.requireAuthenticatedTransport().registerTargetCredentialV1({registration:f});if(this.assertCurrentRun(e.runEpoch),this.targetCredentialRegistrationResult=p,o=new Uint8Array(a).slice(),await this.ports.keyMaterial.prepareOrdinarySignerMaterialV1({keyMaterial:this.requireKeyMaterialHandleV1(),targetFactor:p.targetFactor,preparations:p.ordinarySignerMaterialPreparations,recipientRequests:p.ordinarySignerMaterialRecipientRequests,recipientInputs:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientInputs,factorSecret:a}),a=null,this.assertCurrentRun(e.runEpoch),RB({flowId:this.flowId,linkSessionId:e.preparation.linkSessionId,stage:`ordinary_signer_material_prepared`}),!o)throw Error(`linked-device Email OTP factor runtime is unavailable`);this.emailOtpTargetActivationState={kind:`completed`,runEpoch:e.runEpoch,enrollment:d?{kind:`existing_enrollment`}:{kind:`new_enrollment`},factorSecret:o,providerUserId:s.providerUserId},o=null,this.notifyEmailOtpActivationV1({kind:`completed`,maskedEmailHint:e.challenge.maskedEmailHint})}catch(t){if(a&&a.byteLength>0&&new Uint8Array(a).fill(0),o?.fill(0),i&&await Gz(this.ports.ed25519ExportRoot,i),this.isCurrentRun(e.runEpoch)){let n=L(t)||`Email OTP activation is unavailable`;this.emailOtpTargetActivationState={kind:`failed`,runEpoch:e.runEpoch,message:n},this.notifyEmailOtpActivationV1({kind:`unavailable`,message:n}),await this.cancelFailedPrecommitSession(e.event).catch(()=>void 0)}throw t}}activateTargetCredential(e){if(!this.isCurrentRun(e.runEpoch))return Promise.reject(new KB);switch(this.targetCredentialActivationState.kind){case`idle`:break;case`in_progress`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?this.targetCredentialActivationState.promise:Promise.reject(new KB);case`factor_ready`:return this.targetCredentialActivationState.runEpoch===e.runEpoch?Promise.reject(Error(`Device-link target passkey activation has already completed`)):Promise.reject(new KB);default:return eV(this.targetCredentialActivationState)}let t=this.runTargetCredentialActivation(e);return this.targetCredentialActivationState={kind:`in_progress`,runEpoch:e.runEpoch,promise:t},t}async runTargetCredentialActivation(e){try{let t=await this.createTargetCredential(e),n=this.targetCredentialActivationState;if(!this.isCurrentRun(e.runEpoch)||n.kind!==`in_progress`||n.runEpoch!==e.runEpoch)throw rV(t),new KB;this.targetCredentialActivationState={kind:`factor_ready`,runEpoch:e.runEpoch,factorSecret:t}}catch(t){throw this.isCurrentRun(e.runEpoch)&&await this.handleSessionTransportFailure(e.event,t),t}finally{let t=this.targetCredentialActivationState;t.kind===`in_progress`&&t.runEpoch===e.runEpoch&&(this.targetCredentialActivationState={kind:`idle`})}}async waitForTargetCredentialActivation(){switch(this.requireSessionTargetFactorV1().kind){case`passkey_prf`:{let e=this.targetCredentialActivationState;if(e.kind===`in_progress`&&await e.promise,this.targetCredentialActivationState.kind!==`factor_ready`)throw Error(`linked-device target Passkey activation is incomplete`);return}case`email_otp`:{let e=this.emailOtpTargetActivationState;if(e.kind===`submitting`&&await e.promise,this.emailOtpTargetActivationState.kind!==`completed`)throw Error(`linked-device target Email OTP activation is incomplete`);return}default:throw Error(`linked-device target factor is unsupported`)}}clearTargetCredentialActivationState(){let e=this.targetCredentialActivationState;e.kind===`factor_ready`&&rV(e.factorSecret),this.targetCredentialActivationState={kind:`idle`}}async createTargetCredential(e){let{runEpoch:t,deviceId:n,preparation:r}=e;if(!this.keyMaterialHandle||!this.session)throw Error(`device-link key material is unavailable`);let i=this.requireAuthenticatedTransport();RB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`target_passkey_prompt_started`});let a=r.ed25519ExportRoot,o=a===null?Promise.resolve(null):Uz({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:i,identity:{linkSessionId:r.linkSessionId,walletId:r.walletId,walletKeyId:a.walletKeyId,enrollmentId:r.enrollmentId,deviceId:n,applicationBindingDigestB64u:a.applicationBindingDigestB64u,registeredPublicKeyB64u:a.registeredPublicKeyB64u,targetFactor:r.targetFactor,revocationEpoch:a.revocationEpoch},registeredAtMs:Date.now()});o.catch(()=>void 0);let s=null,c=null;try{if(s=await this.ports.targetCredential.createTargetCredentialV1({preparation:r,keyMaterial:this.keyMaterialHandle}),s.walletAuthMethodId!==r.walletAuthMethodId)throw Error(`linked-device target credential returned a different auth method`);if(RB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`target_passkey_created`}),this.emit({phase:Zo.STEP_02_QR_SCAN_STARTED,status:`running`,message:`Finishing linked-device setup`,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`show`}}),c=await o,c&&RB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`export_root_recipient_published`}),this.assertCurrentRun(t),a!==null){if(!c)throw Error(`linked-device Ed25519 export-root recipient is unavailable`);let e=sV(),n=Yi({rpId:aV(r),credentialIdB64u:s.webauthnRegistration.credentialIdB64u}),i=await this.acceptTargetExportRootV1({preparation:r,exportRoot:a,recipient:c,envelopeId:e,factor:n,replacementFactorSecret:s.factorSecret,runEpoch:t});RB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`export_root_accepted`}),this.resealedExportRoot=i,c=null}this.assertCurrentRun(t);let e=await ai(r),n=ki({linkSessionId:r.linkSessionId,walletId:r.walletId,enrollmentId:r.enrollmentId,deviceId:r.deviceId,walletAuthMethodId:s.walletAuthMethodId,targetFactor:{kind:`passkey_prf`},targetPreparationDigestB64u:e,webauthnRegistration:s.webauthnRegistration,ordinarySignerMaterialRecipientRequests:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientRequests,registeredAtMs:Date.now()}),l=await i.registerTargetCredentialV1({registration:n});return this.assertCurrentRun(t),this.targetCredentialRegistrationResult=l,await this.ports.keyMaterial.prepareOrdinarySignerMaterialV1({keyMaterial:this.requireKeyMaterialHandleV1(),targetFactor:l.targetFactor,preparations:l.ordinarySignerMaterialPreparations,recipientRequests:l.ordinarySignerMaterialRecipientRequests,recipientInputs:this.requireOrdinarySignerMaterialRecipientPreparationV1().recipientInputs,factorSecret:s.factorSecret.slice().buffer}),this.assertCurrentRun(t),RB({flowId:this.flowId,linkSessionId:r.linkSessionId,stage:`ordinary_signer_material_prepared`}),s.factorSecret}catch(e){if(s&&rV(s.factorSecret),!c)try{c=await o}catch{}throw c&&await Gz(this.ports.ed25519ExportRoot,c),e}}async acceptTargetExportRootV1(e){let{preparation:t,exportRoot:n}=e,r=Jr({linkSessionId:t.linkSessionId,walletKeyId:n.walletKeyId,targetFactor:t.targetFactor,applicationBindingDigestB64u:n.applicationBindingDigestB64u,registeredPublicKeyB64u:n.registeredPublicKeyB64u,enrollmentId:t.enrollmentId,deviceId:t.deviceId,revocationEpoch:n.revocationEpoch});return await Wz({ed25519ExportRoot:this.ports.ed25519ExportRoot,transport:this.requireAuthenticatedTransport(),recipient:e.recipient,replacementEnvelope:Jz({walletId:t.walletId,ownership:mi(t.walletAuthMethodId),envelopeId:e.envelopeId,factor:e.factor,binding:r,createdAtMs:Date.now()}),replacementFactorSecret:e.replacementFactorSecret,expiresAtMs:Math.min(t.expiresAtMs,this.requireSessionV1().qrData.expiresAtMs),assertCurrentRun:()=>this.assertCurrentRun(e.runEpoch),waitForPollV1:VB})}assertTargetPreparationMatchesSession(e){let t=this.requireSessionTargetFactorV1(),n=this.requireSessionV1().qrData;if(e.preparation.linkSessionId!==e.linkSessionId||String(e.preparation.deviceId)!==String(e.state.deviceId)||e.preparation.targetFactor.kind!==t.kind||e.preparation.deliveryRecipientPublicKey65B64u!==this.requireDeliveryRecipientPublicKey65B64u()||e.preparation.expiresAtMs<=Date.now())throw Error(`linked-device target preparation does not match the claimed session`);if(t.kind===`email_otp`&&n.targetFactor.kind===`email_otp`&&e.preparation.targetFactor.kind===`email_otp`&&e.preparation.targetEmail!==n.targetEmail)throw Error(`linked-device target preparation email does not match the QR session`)}async activateAuthorityForStateV1(e,t){this.assertCurrentRun(t),await this.waitForTargetCredentialActivation(),this.assertCurrentRun(t);let n=this.targetCredentialRegistrationResult;if(!n)throw Error(`linked-device target credential registration is unavailable`);let r=this.requireKeyMaterialHandleV1(),i=this.requireAuthenticatedTransport(),a=await this.ports.readExpectedLockGenerationV1(n.walletId);this.assertCurrentRun(t);let o=this.committedAuthorityPackages||await i.receiveCommittedAuthorityPackagesV1({linkSessionId:this.requireSessionV1().linkSessionId});this.committedAuthorityPackages=o,await this.ports.authorityInstallation.persistCommittedDeliveryResumeV1({linkSessionId:this.requireSessionV1().linkSessionId,committed:o,targetFactor:n.targetFactor,committedAtMs:Date.now()}),this.assertCurrentRun(t);let s=this.requireSessionV1().qrData.expiresAtMs,c=0;for(;Date.now()<s;){let s=await wB({transport:i,committed:o,installation:this.ports.authorityInstallation,sessionState:e,linkSessionId:this.requireSessionV1().linkSessionId,targetFactor:n.targetFactor,keyMaterialPort:this.ports.keyMaterial,keyMaterial:r,deliveryRecipientPublicKey65B64u:this.requireDeliveryRecipientPublicKey65B64u(),resealedExportRoot:this.resealedExportRoot,expectedLockGeneration:a,nowMs:()=>Date.now()});if(s.kind!==`pending_local_install`)return s;await VB(c),this.assertCurrentRun(t),c+=1}throw new X(`Linked-device authority activation did not complete before the link session expired`,Z.REGISTRATION_FAILED,`registration`)}async finishActiveAuthorityV1(e,t,n,r){this.assertCurrentRun(r);let i=this.requireSessionV1(),a=this.targetCredentialRegistrationResult;if(!a||a.walletId!==t.walletId)throw Error(`linked-device activation identity is unavailable`);this.handledStates.add(`provisioning`),this.handledStates.add(`authority_pending_local_install`),this.handledStates.add(`active`);let o=this.getAuthenticationContext?.();if(!o)throw Error(`linked-device authentication context is unavailable`);let s=tV({targetFactor:a.targetFactor,walletAuthMethodId:a.walletAuthMethodId,targetCredentialActivationState:this.targetCredentialActivationState,emailOtpTargetActivationState:this.emailOtpTargetActivationState,walletId:t.walletId,runEpoch:r});await ux({context:o,factor:s.factor,walletSession:t,operationCredential:n,factorSecret32:s.factorSecret32});let c=this.committedAuthorityPackages;if(!c)throw Error(`linked-device committed authority packages are unavailable for acknowledgement`);let l=await this.ports.authorityInstallation.readLocalAuthorityInstallationReceiptV1({authorityId:t.authorityId});if(!l)throw Error(`linked-device installation receipt is unavailable for acknowledgement`);let u={kind:`local_authority_activation_final_ack_v1`,linkSessionId:i.qrData.linkSessionId,authorityId:t.authorityId,packageSetDigestB64u:c.packageSetDigestB64u,authorizationId:t.authorizationId,walletSessionId:n.walletSessionId,credentialDigestB64u:await pi(n),installationReceiptDigestB64u:await ci(l),acknowledgedAtMs:Date.now()};await this.ports.authorityInstallation.persistPendingActivationAcknowledgementV1({acknowledgement:u});let d={walletSession:t,deviceId:e.deviceId,runEpoch:r};this.pendingActivationCompletion=d,await this.sendActivationAcknowledgementV1(u),await this.completeAcknowledgedActivationV1(d)}async completeAcknowledgedActivationV1(e){this.assertCurrentRun(e.runEpoch);let{walletSession:t}=e,n=this.requireSessionV1(),r=this.targetCredentialRegistrationResult,i=this.getAuthenticationContext?.();if(!r||!i)throw Error(`linked-device activation completion is unavailable`);this.session={linkSessionId:n.linkSessionId,qrData:n.qrData,state:{state:`active`,deviceId:e.deviceId,authorityId:t.authorityId,activatedAtMs:t.issuedAtMs}},i.signingEngine.setWalletAuthenticated(PB(t,r)),await this.cleanupCompletedLocalResources(),RB({flowId:this.flowId,linkSessionId:n.qrData.linkSessionId,stage:`post_link_runtime_ready`}),this.emit({phase:Zo.STEP_02_QR_SCAN_STARTED,status:`succeeded`,message:`Device link active`,walletId:String(t.walletId),data:{role:`display`,enrollmentId:String(r.enrollmentId)},interaction:{kind:`qr_display`,overlay:`hide`}})}requireAuthenticatedTransport(){if(!this.authenticatedTransport)throw new X(`Authenticated link-session transport is unavailable`,Z.UNSUPPORTED,`registration`);return this.authenticatedTransport}requireSessionTargetFactorV1(){if(!this.session)throw Error(`device-link session is unavailable`);return this.session.qrData.targetFactor}requireSessionV1(){if(!this.session)throw Error(`device-link session is unavailable`);return this.session}requireKeyMaterialHandleV1(){if(!this.keyMaterialHandle)throw Error(`device-link key material is unavailable`);return this.keyMaterialHandle}requireDeliveryRecipientPublicKey65B64u(){if(!this.deliveryRecipientPublicKey65B64u)throw Error(`device-link delivery recipient is unavailable`);return this.deliveryRecipientPublicKey65B64u}requireOrdinarySignerMaterialRecipientPreparationV1(){let e=this.ordinarySignerMaterialRecipientPreparation;if(!e)throw Error(`ordinary signer material recipient preparation is unavailable`);return e}startRun(){return this.clearRunActivationStateV1(),this.committedAuthorityPackages=null,this.deliveryRecoveryReason=null,this.runEpoch+=1,this.generationInProgress=!0,this.cancelled=!1,this.error=void 0,this.handledStates.clear(),this.runEpoch}isCurrentRun(e){return!this.cancelled&&this.runEpoch===e}assertCurrentRun(e){if(!this.isCurrentRun(e))throw new KB}handleSessionTransportEvent(e){this.sessionEventQueue=this.sessionEventQueue.then(this.handleSessionEvent.bind(this,e)).catch(this.handleSessionTransportFailure.bind(this,e))}async handleSessionTransportFailure(e,t){if(t instanceof KB)return;if(this.hasCommittedDeliveryState()){await this.handleCommittedDeliveryFailureV1(e,t);return}zB({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t}),this.handledStates.delete(e.state.state);let n=UB(t,`registration`);this.error=n,this.emitFailure(n,`registration`),LB(this.options.options?.onError,n),await this.cancelFailedPrecommitSession(e).catch(()=>void 0),this.runEpoch+=1;try{await this.cleanupLocalResources()}catch{}}async handleCommittedDeliveryFailureV1(e,t){let n=WB(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}RB({flowId:this.flowId,linkSessionId:e.linkSessionId,stage:`committed_delivery_retry_started`,details:{state:e.state.state,error:L(t)}}),this.handledStates.delete(e.state.state);try{await this.retryCommittedDeliveryV1(e)}catch(t){let n=WB(t);if(n){await this.requireExactMethodUnlockForCommittedDeliveryV1(e,n);return}zB({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t})}}async requireExactMethodUnlockForCommittedDeliveryV1(e,t){this.deliveryRecoveryReason=t,this.handledStates.clear(),this.runEpoch+=1;let n=new X(GB(t),Z.DELIVERY_RECOVERY_REQUIRED,`registration`);this.error=n;try{await this.cleanupCompletedLocalResources()}catch(t){zB({flowId:this.flowId,linkSessionId:e.linkSessionId,state:e.state.state,error:t})}this.clearRunActivationStateV1(),this.committedAuthorityPackages=null,this.keyMaterialHandle=null,this.deliveryRecipientPublicKey65B64u=null,this.authenticatedTransport=null,this.subscription=null,this.emitFailure(n,`registration`),LB(this.options.options?.onError,n)}async retryCommittedDeliveryV1(e){if(!await this.replayPendingActivationAcknowledgementV1())switch(e.state.state){case`provisioning`:case`authority_pending_local_install`:case`active`:await this.replayCommittedAuthorityV1(e.state,this.runEpoch);return;default:throw Error(`committed link delivery cannot resume from ${e.state.state}`)}}async replayCommittedAuthorityV1(e,t){let n=await this.activateAuthorityForStateV1(e,t);if(n.kind!==`pending_local_install`){if(n.kind===`integrity_error`)throw new X(`Linked-device authority replay failed: ${n.reason}`,Z.REGISTRATION_FAILED,`registration`);if(n.kind===`failed_before_commit`)throw new X(`Linked-device authority replay cannot continue`,Z.REGISTRATION_FAILED,`registration`);await this.finishActiveAuthorityV1(e,n.session,n.operationCredential,t)}}async replayPendingActivationAcknowledgementV1(){let e=this.committedAuthorityPackages;if(!e)return!1;let t=await this.ports.authorityInstallation.readPendingActivationAcknowledgementV1({authorityId:e.authority.authorityId});if(!t)return!1;let n=this.requireSessionV1();if(t.linkSessionId!==n.qrData.linkSessionId||t.authorityId!==e.authority.authorityId||t.packageSetDigestB64u!==e.packageSetDigestB64u)throw Error(`pending linked-device acknowledgement identity is inconsistent`);let r=this.pendingActivationCompletion;if(!r||r.walletSession.authorizationId!==t.authorizationId)throw Error(`pending linked-device activation completion is unavailable`);return await this.sendActivationAcknowledgementV1(t),await this.completeAcknowledgedActivationV1(r),!0}async sendActivationAcknowledgementV1(e){await this.closeSessionSubscriptionV1();let t=this.requireAuthenticatedTransport();for(let n=1;n<=3;n+=1)try{await t.acknowledgeLocalAuthorityActivationV1({acknowledgement:e});break}catch(e){if(WB(e)||n===3)throw e}await this.ports.authorityInstallation.clearPendingActivationAcknowledgementV1({authorityId:e.authorityId}),await this.ports.authorityInstallation.clearCommittedDeliveryResumeV1({authorityId:e.authorityId})}async cancelFailedPrecommitSession(e){let t=this.authenticatedTransport;if(t)switch(e.state.state){case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:{let n=Date.now();await this.cancelClaimedSessionV1(t,e.linkSessionId,n),this.session?.linkSessionId===e.linkSessionId&&(this.session={...this.session,state:{state:`cancelled`,cancelledAtMs:n}});return}case`displaying_qr`:case`authority_pending_local_install`:case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:return;default:Fi(e.state)}}async cleanupLocalResources(e=!1){if(!e&&this.hasCommittedDeliveryState())return;let t=e&&this.hasCommittedDeliveryState();t||this.clearRunActivationStateV1();let n,r=this.subscription;if(r)try{await r.close(),this.subscription===r&&(this.subscription=null)}catch(e){n=e}if(!n)try{await this.discardKeyMaterial()}catch(e){n=e}if(n)throw n;t&&(this.clearRunActivationStateV1(),this.committedAuthorityPackages=null)}clearRunActivationStateV1(){this.pendingActivationCompletion=null,this.clearTargetCredentialActivationState(),this.clearEmailOtpTargetActivationState(),this.resealedExportRoot=null,this.targetCredentialRegistrationResult=null,this.ordinarySignerMaterialRecipientPreparation=null}async closeSessionSubscriptionV1(){let e=this.subscription;e&&(await e.close(),this.subscription===e&&(this.subscription=null))}async cleanupCompletedLocalResources(){await this.cleanupLocalResources(!0)}clearEmailOtpTargetActivationState(){let e=this.emailOtpTargetActivationState;e.kind===`completed`&&QB(e).factorSecret.fill(0),this.emailOtpTargetActivationState={kind:`idle`}}hasCommittedDeliveryState(){return this.committedAuthorityPackages!==null||this.keyMaterialHandle!==null&&(this.session?.state.state===`authority_pending_local_install`||this.session?.state.state===`active`)}async discardKeyMaterial(){let e=this.keyMaterialHandle;if(!e)return;if(this.discardInProgress)return await this.discardInProgress;let t=this.ports.keyMaterial.discardKeyMaterialV1({handle:e});this.discardInProgress=t;try{await t,this.keyMaterialHandle===e&&(this.keyMaterialHandle=null,this.deliveryRecipientPublicKey65B64u=null,this.authenticatedTransport=null)}finally{this.discardInProgress===t&&(this.discardInProgress=null)}}emitFailure(e,t){this.emit({phase:t===`generation`?Zo.STEP_01_QR_PREPARE_STARTED:Zo.FAILED,status:`failed`,message:e.message,data:{role:`display`},interaction:{kind:`qr_display`,overlay:`hide`},error:{code:e.code,message:e.message,retryable:e.code!==Z.UNSUPPORTED&&e.code!==Z.DELIVERY_RECOVERY_REQUIRED}})}emit(e){this.options.options?.onEvent?.(Go({flowId:this.flowId,...e}))}};function fV(e){let t=e.getState();if(t.cancelled||t.error||!t.session)return!0;switch(t.session.state.state){case`active`:case`expired`:case`cancelled`:case`failed_before_commit`:return!0;case`displaying_qr`:case`claimed`:case`awaiting_target_factor`:case`awaiting_source_contribution`:case`provisioning`:case`authority_pending_local_install`:return!1;default:return Fi(t.session.state)}}var pV=class{deps;activeDeviceLinkFlow=null;activeOwnerLinkCancellation=null;constructor(e){this.deps=e}async startDevice2LinkingFlow(e){if(this.activeDeviceLinkFlow&&fV(this.activeDeviceLinkFlow)&&(this.activeDeviceLinkFlow=null),this.activeDeviceLinkFlow)throw Error(`Device-link QR flow is already running`);let t=new dV(e,this.deps.ports,this.deps.getContext);this.activeDeviceLinkFlow=t;try{return await t.generateQR()}catch(e){throw this.activeDeviceLinkFlow===t&&(this.activeDeviceLinkFlow=null),e}}async cancelDeviceLinking(){if(this.activeDeviceLinkFlow&&fV(this.activeDeviceLinkFlow)&&(this.activeDeviceLinkFlow=null),this.activeDeviceLinkFlow){await this.activeDeviceLinkFlow.cancel(),this.activeDeviceLinkFlow=null;return}let e=this.activeOwnerLinkCancellation;e&&(await this.deps.ports.transport.cancelClaimedSessionV1(e),this.activeOwnerLinkCancellation===e&&(this.activeOwnerLinkCancellation=null))}async scanAndLinkDevice(e,t){return await Ez(this.deps.getContext(),e,t,this.deps.ports,this.registerOwnerLinkCancellationV1.bind(this))}registerOwnerLinkCancellationV1(e){this.activeOwnerLinkCancellation=e}};function mV(e){let t=c(e.authMethod.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u);return e.kind===`verified_passkey_target_v1`?{kind:`passkey`,walletAuthMethodId:t.value,verificationDigestB64u:n,rpId:e.authMethod.rpId,credentialIdB64u:e.authMethod.credentialIdB64u}:{kind:`email_otp`,walletAuthMethodId:t.value,verificationDigestB64u:n,emailHashHex:e.authMethod.emailHashHex,registrationAuthorityId:e.authMethod.registrationAuthorityId}}function hV(e){return{async prepareOrdinarySignerMaterialV1(t){if(!(t.factorSecret instanceof ArrayBuffer)||t.factorSecret.byteLength!==32)throw Error(`ordinary signer material factorSecret must be 32 bytes`);let n=vV(t.preparations),r=bV(t.recipientRequests),i=SV(t.recipientInputs);TV(i,r);let a=[t.factorSecret,...wV(i)];return _V(await e({kind:`device_linking_ordinary_signer_material_prepare_private_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),targetFactor:mV(t.targetFactor),preparations:n,recipientRequests:r,recipientInputs:i,factorSecret:t.factorSecret},a))},async createOrdinarySignerMaterialRecipientRequestsV1(t){return xV(await e({kind:`device_linking_ordinary_signer_material_recipient_prepare_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),requirements:yV(t.requirements)}))},async sealCommittedAuthorityPackagesV1(t){let n=Qr(t.committed);return jV(await e({kind:`device_linking_ordinary_signer_material_seal_v1`,handleId:D(t.keyMaterial.handleId,`keyMaterial.handleId`,`is required`),committed:n,targetFactor:mV(t.targetFactor),resealedExportRoot:gV(t.resealedExportRoot)}))}}}function gV(e){if(e===null)return null;if(!q(e,[`envelope`]))throw Error(`ordinary material resealed export root has unsupported fields`);return{envelope:$r(e.envelope)}}function _V(e){if(!q(e,[`kind`,`targetFactor`,`preparations`]))throw Error(`ordinary material preparation result has invalid fields`);if(e.kind!==`device_linking_ordinary_signer_material_preparation_v1`)throw Error(`ordinary material preparation result kind is invalid`);return{kind:`device_linking_ordinary_signer_material_preparation_v1`,targetFactor:kV(e.targetFactor),preparations:vV(e.preparations)}}function vV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material preparations must contain one or two entries`);let t=e.map(OV),n=t.map(e=>`kind`in e?`ed25519`:`ecdsa_secp256k1`);if(new Set(n).size!==t.length)throw Error(`ordinary signer material preparations repeat a key family`);let r=t.map(e=>`kind`in e?e.targetMaterialActivation:e.target.activation);if(r.length===2&&r[0].activationId===r[1].activationId)throw Error(`ordinary signer material preparations repeat an activation reference`);let i=t[0];if(!i)throw Error(`ordinary signer material preparations are empty`);return[i,...t.slice(1)]}function yV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient requirements must contain one or two entries`);let t=e.map((e,t)=>{if(!q(e,[`kind`,`keyFamily`,`walletKeyId`]))throw Error(`ordinary recipient requirement ${t} has invalid fields`);if(e.kind!==`ordinary_signer_material_recipient_requirement_v1`)throw Error(`ordinary recipient requirement kind is invalid`);if(e.keyFamily!==`ed25519`&&e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary recipient requirement key family is invalid`);let n=DV(e.walletKeyId);return{kind:e.kind,keyFamily:e.keyFamily,walletKeyId:n}});EV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requirements are empty`);return[n,...t.slice(1)]}function bV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient requests must contain one or two entries`);let t=e.map(e=>{if(q(e,[`kind`,`keyFamily`,`walletKeyId`,`recipientPublicKeyB64u`])){if(e.kind!==`ordinary_ed25519_signer_material_recipient_request_v1`||e.keyFamily!==`ed25519`)throw Error(`ordinary Ed25519 recipient request kind is invalid`);return{kind:`ordinary_ed25519_signer_material_recipient_request_v1`,keyFamily:`ed25519`,walletKeyId:DV(e.walletKeyId),recipientPublicKeyB64u:MV(e.recipientPublicKeyB64u,`Ed25519 recipient public key`)}}if(q(e,[`kind`,`keyFamily`,`walletKeyId`,`clientEphemeralPublicKey`])){if(e.kind!==`ordinary_ecdsa_signer_material_recipient_request_v1`||e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary ECDSA recipient request kind is invalid`);return{kind:`ordinary_ecdsa_signer_material_recipient_request_v1`,keyFamily:`ecdsa_secp256k1`,walletKeyId:DV(e.walletKeyId),clientEphemeralPublicKey:D(e.clientEphemeralPublicKey,`ECDSA client ephemeral public key`,`is required`)}}throw Error(`ordinary recipient request key family is invalid`)});EV(t);let n=t[0];if(!n)throw Error(`ordinary recipient requests are empty`);return[n,...t.slice(1)]}function xV(e){if(!q(e,[`kind`,`recipientRequests`,`recipientInputs`]))throw Error(`ordinary recipient preparation result has invalid fields`);if(e.kind!==`device_linking_ordinary_signer_material_recipient_preparation_v1`)throw Error(`ordinary recipient preparation result kind is invalid`);let t=bV(e.recipientRequests),n=SV(e.recipientInputs);return TV(n,t),{recipientRequests:t,recipientInputs:n}}function SV(e){if(!Array.isArray(e)||e.length===0||e.length>2)throw Error(`ordinary signer material recipient inputs must contain one or two entries`);let t=e.map(e=>{if(q(e,[`kind`,`keyFamily`,`walletKeyId`,`recipientPrivateKey`])){if(e.kind!==`ordinary_ed25519_signer_material_recipient_input_v1`||e.keyFamily!==`ed25519`)throw Error(`ordinary Ed25519 recipient input kind is invalid`);return{kind:`ordinary_ed25519_signer_material_recipient_input_v1`,keyFamily:`ed25519`,walletKeyId:DV(e.walletKeyId),recipientPrivateKey:CV(e.recipientPrivateKey,`Ed25519 recipient private key`)}}if(q(e,[`kind`,`keyFamily`,`walletKeyId`,`clientEphemeralPrivateKey`])){if(e.kind!==`ordinary_ecdsa_signer_material_recipient_input_v1`||e.keyFamily!==`ecdsa_secp256k1`)throw Error(`ordinary ECDSA recipient input kind is invalid`);return{kind:`ordinary_ecdsa_signer_material_recipient_input_v1`,keyFamily:`ecdsa_secp256k1`,walletKeyId:DV(e.walletKeyId),clientEphemeralPrivateKey:CV(e.clientEphemeralPrivateKey,`ECDSA client ephemeral private key`)}}throw Error(`ordinary recipient input key family is invalid`)});EV(t);let n=t[0];if(!n)throw Error(`ordinary recipient inputs are empty`);return[n,...t.slice(1)]}function CV(e,t){if(!(e instanceof ArrayBuffer)||e.byteLength!==32)throw Error(`${t} must be a 32-byte ArrayBuffer`);return e}function wV(e){return e.map(e=>e.kind===`ordinary_ed25519_signer_material_recipient_input_v1`?e.recipientPrivateKey:e.clientEphemeralPrivateKey)}function TV(e,t){if(e.length!==t.length)throw Error(`ordinary recipient inputs and requests have different lengths`);for(let n of t)if(e.filter(e=>e.walletKeyId===n.walletKeyId&&e.keyFamily===n.keyFamily).length!==1)throw Error(`ordinary recipient input for ${String(n.walletKeyId)} is missing or duplicated`)}function EV(e){let t=new Set,n=new Set;for(let r of e){if(t.has(r.keyFamily))throw Error(`ordinary recipient family repeats`);if(n.has(String(r.walletKeyId)))throw Error(`ordinary recipient wallet key repeats`);t.add(r.keyFamily),n.add(String(r.walletKeyId))}let r=e[0];if(e.length===2&&r?.keyFamily!==`ed25519`)throw Error(`ordinary recipient requests must be ordered Ed25519 then ECDSA`)}function DV(e){let t=h(e);if(!t.ok)throw Error(t.error.message);return t.value}function OV(e){return Ca(e)}function kV(e){if(q(e,[`kind`,`walletAuthMethodId`,`verificationDigestB64u`,`rpId`,`credentialIdB64u`])){if(e.kind!==`passkey`)throw Error(`ordinary material target factor kind is unsupported`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u);return{kind:`passkey`,walletAuthMethodId:t.value,verificationDigestB64u:n,rpId:D(e.rpId,`ordinary target factor rpId`,`is required`),credentialIdB64u:MV(e.credentialIdB64u,`ordinary target factor credentialIdB64u`)}}if(q(e,[`kind`,`walletAuthMethodId`,`verificationDigestB64u`,`emailHashHex`,`registrationAuthorityId`])){if(e.kind!==`email_otp`)throw Error(`ordinary material target factor kind is unsupported`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=St(e.verificationDigestB64u),r=D(e.emailHashHex,`ordinary target factor emailHashHex`,`is required`);if(!/^[0-9a-f]{64}$/.test(r))throw Error(`ordinary target factor emailHashHex is invalid`);return{kind:`email_otp`,walletAuthMethodId:t.value,verificationDigestB64u:n,emailHashHex:r,registrationAuthorityId:D(e.registrationAuthorityId,`ordinary target factor registrationAuthorityId`,`is required`)}}throw Error(`ordinary material target factor kind is unsupported`)}function AV(e){if(!q(e,[`kind`,`authorityId`,`walletAuthMethodId`,`walletKeyId`,`envelope`]))throw Error(`ordinary material export-root record has invalid fields`);if(e.kind!==`wallet_authority_export_root_v1`)throw Error(`ordinary material export-root record kind is invalid`);let t=r(e.authorityId);if(!t.ok)throw Error(t.error.message);let n=c(e.walletAuthMethodId);if(!n.ok)throw Error(n.error.message);let i=h(e.walletKeyId);if(!i.ok)throw Error(i.error.message);return{kind:`wallet_authority_export_root_v1`,authorityId:t.value,walletAuthMethodId:n.value,walletKeyId:i.value,envelope:$r(e.envelope)}}function jV(e){if(!q(e,[`signerMaterials`,`exportRoot`,`installedRecordSetDigestB64u`])||!Array.isArray(e.signerMaterials)||e.signerMaterials.length===0)throw Error(`ordinary material worker returned an invalid sealed record set`);let t=e.signerMaterials.map(e=>ts(e)),n=t[0];if(!n)throw Error(`ordinary material worker returned an invalid sealed record set`);return{signerMaterials:[n,...t.slice(1)],exportRoot:e.exportRoot===null?null:AV(e.exportRoot),installedRecordSetDigestB64u:St(e.installedRecordSetDigestB64u)}}function MV(e,t){let n=D(e,t,`is required`),r;try{r=F(n)}catch{throw Error(`${t} is invalid base64url`)}if(r.length===0||P(r)!==n)throw r.fill(0),Error(`${t} must be canonical non-empty base64url`);return r.fill(0),n}function NV(e,t){if(typeof e!=`string`||e.trim()!==e||e.length===0)throw Error(`${t} is required`);return e}function PV(e,t){try{return St(e)}catch(e){throw Error(`${t} ${e instanceof Error?e.message:`is invalid`}`)}}function FV(e,t,n){let r=NV(e,n);if(!/^[A-Za-z0-9_-]+$/.test(r))throw Error(`${n} is invalid`);let i;try{i=F(r)}catch{throw Error(`${n} is invalid`)}if(i.length!==t||P(i)!==r)throw Error(`${n} must be canonical base64url`);return i.fill(0),r}function IV(e){if(!q(e,[`kind`,`handleId`]))throw Error(`device-linking key handle has invalid fields`);let t=e;if(t.kind!==`device_linking_key_material_handle_v1`)throw Error(`device-linking key handle kind is invalid`);return{kind:`device_linking_key_material_handle_v1`,handleId:NV(t.handleId,`device-linking key handle.handleId`)}}function LV(e){if(!q(e,[`handleId`,`linkPublicKeyB64u`,`devicePublicKeyB64u`,`deliveryRecipientPublicKey65B64u`]))throw Error(`device-linking key create response has invalid fields`);let t=e;return{handle:{kind:`device_linking_key_material_handle_v1`,handleId:NV(t.handleId,`device-linking key create handleId`)},linkPublicKeyB64u:zi(t.linkPublicKeyB64u),devicePublicKeyB64u:zi(t.devicePublicKeyB64u),deliveryRecipientPublicKey65B64u:FV(t.deliveryRecipientPublicKey65B64u,65,`deliveryRecipientPublicKey65B64u`)}}function RV(e){if(!q(e,[`kind`,`verificationGrant`,`factorSecret`]))throw Error(`device-linking Email OTP factor release response has invalid fields`);let t=e;if(t.kind!==`device_linking_email_otp_factor_release_result_v1`)throw Error(`device-linking Email OTP factor release response kind is invalid`);if(!(t.factorSecret instanceof ArrayBuffer)||t.factorSecret.byteLength!==32)throw Error(`device-linking Email OTP factor release secret is invalid`);return{kind:`device_linking_email_otp_factor_release_result_v1`,verificationGrant:Vi(t.verificationGrant),factorSecret:t.factorSecret}}function zV(e){return De(e)}function BV(e){if(!q(e,[`signatureB64u`]))throw Error(`device-linking request signature response has invalid fields`);return{signatureB64u:FV(e.signatureB64u,64,`signatureB64u`)}}function VV(e){if(q(e,[`id`,`ok`,`result`])&&e.ok===!0){let t=e.id;return typeof t!=`string`||t.trim()!==t||t.length===0?null:{id:t,ok:!0,result:e.result}}if(q(e,[`id`,`ok`,`error`])&&e.ok===!1){let t=e.id;return typeof t!=`string`||t.trim()!==t||t.length===0||typeof e.error!=`string`||!e.error.trim()?null:{id:t,ok:!1,error:e.error}}return null}function HV(){if(!globalThis.crypto||typeof globalThis.crypto.getRandomValues!=`function`)throw Error(`secure randomness is unavailable for device-linking worker`);let e=globalThis.crypto.getRandomValues(new Uint8Array(16)),t=`device-linking-${P(e)}`;return e.fill(0),t}function UV(e){return e!==void 0&&Number.isSafeInteger(e)&&e>0?e:6e4}function WV(e){return e instanceof Error?e:typeof e==`string`&&e.trim()?Error(e):Error(`device-linking worker failed`)}function GV(){if(typeof Worker>`u`)throw Error(`device-linking worker is unavailable; provide an authenticated worker endpoint`);let e=Tf(void 0,{worker:`deviceLinking`});return new Worker(e,{type:`module`})}function KV(e){if(!e.startsWith(`/`)||e.includes(`?`)||e.includes(`#`)||e.trim()!==e)throw Error(`canonicalPath is invalid`);return e}function qV(e,t){if(!Number.isSafeInteger(e)||e<=0)throw Error(`${t} is invalid`);return e}function JV(e){let t=g(e.linkSessionId);if(!t.ok)throw Error(t.error.message);if(e.method!==`GET`&&e.method!==`POST`)throw Error(`method is invalid`);let n=qV(e.expiresAtMs,`expiresAtMs`),r=qV(e.issuedAtMs,`issuedAtMs`);if(n<=r)throw Error(`expiresAtMs must be after issuedAtMs`);return{kind:`device_linking_request_sign_v1`,handleId:NV(e.handle.handleId,`handle.handleId`),linkSessionId:t.value,method:e.method,canonicalPath:KV(e.canonicalPath),bodyDigestB64u:PV(e.bodyDigestB64u,`bodyDigestB64u`),devicePublicKeyDigestB64u:PV(e.devicePublicKeyDigestB64u,`devicePublicKeyDigestB64u`),challengeB64u:FV(e.challengeB64u,32,`challengeB64u`),issuedAtMs:r,expiresAtMs:n}}function YV(e={}){let t=UV(e.timeoutMs),n=new Map,i=e.endpoint??null,a=!1,s=e=>{let t=VV(e.data);if(!t)return;let r=n.get(t.id);r&&(clearTimeout(r.timeoutId),n.delete(t.id),t.ok?r.resolve(t.result):r.reject(Error(t.error)))},l=e=>{let t=WV(e.message);for(let[e,r]of n)clearTimeout(r.timeoutId),n.delete(e),r.reject(t)},u=e=>{e.addEventListener(`message`,s),e.addEventListener(`error`,l)};e.endpoint&&(u(e.endpoint),i=e.endpoint);let d=()=>{if(i)return i;let e=GV();try{return u(e),i=e,e}catch(t){throw e.terminate(),t}},p=()=>{if(a)return;a=!0;let e=i;e?.removeEventListener(`message`,s),e?.removeEventListener(`error`,l);let t=Error(`device-linking worker transport is closed`);for(let[e,r]of n)clearTimeout(r.timeoutId),n.delete(e),r.reject(t);e?.terminate(),i=null},m=(e,r)=>{if(a)return Promise.reject(Error(`device-linking worker transport is closed`));let i;try{i=d()}catch(e){return Promise.reject(WV(e))}let o=HV();return new Promise((a,s)=>{let c=setTimeout(()=>{n.delete(o),s(Error(`device-linking worker request timed out after ${t}ms`))},t);n.set(o,{resolve:a,reject:s,timeoutId:c});try{i.postMessage({id:o,request:e},r)}catch(e){clearTimeout(c),n.delete(o),s(WV(e))}})};return{...hV(m),close:p,async createBootstrapKeyMaterialV1(){return LV(await m({kind:`device_linking_key_material_create_v1`}))},async discardKeyMaterialV1(e){await m({kind:`device_linking_key_material_discard_v1`,handleId:IV(e.handle).handleId})},async openEmailOtpFactorReleaseV1(e){let t=IV(e.keyMaterial),n=o(e.walletId);if(!n.ok)throw Error(n.error.message);let r=g(e.linkSessionId);if(!r.ok)throw Error(r.error.message);let i=S(e.enrollmentId);if(!i.ok)throw Error(i.error.message);let a=f(e.deviceId);if(!a.ok)throw Error(a.error.message);let s=c(e.walletAuthMethodId);if(!s.ok)throw Error(s.error.message);let l=c(e.baseWalletAuthMethodId);if(!l.ok)throw Error(l.error.message);let u=PV(e.targetPreparationDigestB64u,`targetPreparationDigestB64u`),d=NV(e.expectedChallengeId,`expectedChallengeId`),p=Vi(e.verificationGrant),h=Ai(e.factorRelease);return RV(await m({kind:`device_linking_email_otp_factor_release_open_v1`,handleId:t.handleId,walletId:n.value,linkSessionId:r.value,enrollmentId:i.value,deviceId:a.value,walletAuthMethodId:s.value,baseWalletAuthMethodId:l.value,targetPreparationDigestB64u:u,expectedChallengeId:d,verificationGrant:p,factorRelease:h}))},async openWalletSessionCredentialDeliveryV1(e){let t=IV(e.keyMaterial),n=bi(e.delivery),i=e.expected,a=o(i.walletId);if(!a.ok)throw Error(a.error.message);let s=r(i.authorityId);if(!s.ok)throw Error(s.error.message);let l=g(i.linkSessionId);if(!l.ok)throw Error(l.error.message);let u=c(i.walletAuthMethodId);if(!u.ok)throw Error(u.error.message);return zV(await m({kind:`device_linking_wallet_session_credential_delivery_open_v1`,handleId:t.handleId,delivery:n,expected:{...i,linkSessionId:l.value,walletId:a.value,authorityId:s.value,walletAuthMethodId:u.value,deliveryBinding:vi(i.deliveryBinding)}}))},async signDeviceSessionRequestV1(e){return BV(await m(JV(e)))}}}function XV(e){return{claimSessionV1:async t=>ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(t.request.payload.linkSessionId)}/claim`,body:t.request,authentication:t.authentication}),Ci),resolveEmailOtpBaseFactorV1:async t=>ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(t.linkSessionId)}/email-otp-base-factor`,body:t.request,authentication:t.authentication}),Gi),cancelClaimedSessionV1:async t=>ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(t.linkSessionId)}/owner-cancel`,body:{expectedRevision:t.expectedRevision},authentication:t.authentication}),eH),recordOwnerApprovalV1:async t=>ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(t.approval.linkSessionId)}/approval`,body:t.approval,authentication:t.authentication}),Bi),getSourceContributionPreparationV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${rH(t.linkSessionId)}/source-contribution-preparation`,authentication:t.authentication});return n.status===204?null:ZV(n,ua)},recordSourceContributionV1:async t=>ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(t.approval.linkSessionId)}/source-contribution`,body:t.approval,authentication:t.authentication}),$V),getApprovalV1:e.approvalUpdates.getApprovalV1,getEd25519ExportRootRecipientV1:async t=>{let n=await e.request.requestOwnerV1({method:`GET`,canonicalPath:`${rH(t.linkSessionId)}/ed25519-export-root-recipient`,authentication:t.authentication});return n.status===204?null:ZV(n,Ii)},submitEd25519ExportRootPackageV1:async t=>{ZV(await e.request.requestOwnerV1({method:`POST`,canonicalPath:`${rH(iH(t.submission.linkSessionId))}/ed25519-export-root`,body:t.submission,authentication:t.authentication}),e=>e)},subscribeApprovalV1:e.approvalUpdates.subscribeApprovalV1}}function ZV(e,t){if(e.status<200||e.status>=300)throw Object.assign(Error(QV(e)),{status:e.status});return t(e.body)}function QV(e){let t=nH(e.body);return t?`linked-device owner request failed: ${t.message}`:`linked-device owner request failed with HTTP ${e.status}`}function $V(e){let t=tH(e);if(!t)throw Error(`linked-device source contribution response is invalid`);return Wi(t.session)}function eH(e){let t=tH(e);if(!t)throw Error(`linked-device session response is invalid`);return Wi(t.session)}function tH(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e)),n=[...t.keys()],r=new Set([`ok`,`outcome`,`session`]);return n.length!==r.size||!n.every(e=>r.has(e))||t.get(`ok`)!==!0||t.get(`outcome`)!==`applied`&&t.get(`outcome`)!==`replayed`?null:{session:t.get(`session`)}}function nH(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return null;let t=new Map(Object.entries(e)),n=[...t.keys()];if(n.length===0||n.length>2||!n.every(e=>e===`code`||e===`message`))return null;let r=t.get(`message`);return typeof r==`string`?{message:r}:null}function rH(e){return`${BR}/${String(e)}`}function iH(e){let t=g(e);if(!t.ok)throw Error(t.error.message);return t.value}function aH(e){let t=m(e);if(t.ok)return t.value;throw Error(t.error.message)}function oH(e){switch(e){case`ble`:case`cable`:case`hybrid`:case`internal`:case`nfc`:case`smart-card`:case`usb`:return e;default:throw Error(`linked-device WebAuthn transport ${e} is unsupported`)}}function sH(e){e.byteLength>0&&e.fill(0)}function cH(e){let t=e.credential.authenticatorAttachment;if(t!==void 0&&t!==`platform`&&t!==`cross-platform`)throw Error(`linked-device WebAuthn authenticator attachment is invalid`);return{kind:`linked_device_webauthn_registration_v1`,credentialIdB64u:aH(e.credentialIdB64u),authenticatorAttachment:t??null,clientDataJsonB64u:e.credential.response.clientDataJSON,attestationObjectB64u:e.credential.response.attestationObject,transports:e.credential.response.transports.map(oH)}}function lH(e){return{async createTargetCredentialV1(t){let n=t.preparation.passkeyCreationOptions;if(n.walletAuthMethodId!==t.preparation.walletAuthMethodId)throw Error(`linked-device passkey options are bound to a different auth method`);let r=await e.authenticator.run({kind:`create_passkey`,registrationOptions:n,requirePrfFirst:!0});if(!r.ok)throw Error(`linked-device passkey creation failed: ${r.message}`);if(r.operation!==`create_passkey`||!r.requirePrfFirst)throw Error(`linked-device passkey creation returned the wrong operation result`);let i=cH(r),a=F(r.prf.prfFirstB64u);if(a.byteLength!==32)throw sH(a),Error(`linked-device passkey PRF output must be 32 bytes`);return{walletAuthMethodId:n.walletAuthMethodId,webauthnRegistration:i,factorSecret:a}}}}function uH(e,t){return t.authorityId===e.authorityId&&t.linkSessionId===e.linkSessionId&&t.packageSetDigestB64u===e.packageSetDigestB64u}async function dH(e){let[t,n]=await Promise.all([e.installation.listCommittedDeliveryResumesV1(),e.installation.listPendingActivationAcknowledgementsV1()]);for(let r of n){let n=t.find(uH.bind(null,r));if(!n)throw Error(`durable linked-device acknowledgement has no matching resume`);let i=await e.readExactSession({walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId});i.kind!==`missing`&&await mB({installation:e.installation,transport:e.transport,walletId:n.walletId,authorityId:n.authorityId,authMethodId:n.authMethodId,operationCredential:i.operationCredential})}}async function fH(e){let t=await K.readExactWithOperationCredential(e);switch(t.kind){case`found`:return{kind:`found`,operationCredential:t.operationCredential};case`missing`:return{kind:`missing`};case`upgrade_required`:throw Error(`Linked-device acknowledgement requires a newer client`)}}function pH(e){let t=YV({...e.workerEndpoint?{endpoint:e.workerEndpoint}:{},...e.workerTimeoutMs===void 0?{}:{timeoutMs:e.workerTimeoutMs}}),n=tz({owner:XV({request:e.ownerRequest,approvalUpdates:e.ownerApprovalUpdates}),http:e.http,relayerUrl:e.relayerUrl,publishableKey:e.publishableKey,projectEnvironmentId:e.projectEnvironmentId,keyMaterial:t,nowMs:e.nowMs,pollIntervalMs:e.pollIntervalMs}),r=$R({http:e.http,relayerUrl:e.relayerUrl,projectEnvironmentId:e.projectEnvironmentId}),i=lH({authenticator:e.authenticator}),a=yB({indexedDB:G,sealing:t,nowMs:e.nowMs}),o=Yz(e.custodyCeremonyTransport);return{transport:n,ownerAuthorization:e.ownerAuthorization,sourceContribution:e.sourceContribution,keyMaterial:t,targetCredential:i,authorityInstallation:a,readExpectedLockGenerationV1:async e=>{let t=await G.resolveSelectedWalletAuthority(String(e));if(t.kind===`missing_selection`)return 0;if(t.kind!==`resolved`)throw Error(`selected wallet authority is unavailable: ${t.kind}`);return t.selection.lockGeneration},ed25519ExportRoot:o,resumePendingAcknowledgementsV1:dH.bind(null,{installation:a,transport:r,readExactSession:fH}),dispose:t.close}}const mH=`/wallet/device-linking/v1/devices`;var hH=class extends Error{code=`owner_wallet_session_reauth_required`;constructor(){super(`The owner Wallet Session must be renewed`),this.name=`OwnerWalletSessionReauthRequiredError`}};function gH(e){let t=pH(e);return{linkedDeviceManagement:_H({request:e.managementRequest,authorizeRemoval:e.authorizeRemoval}),deviceLinkingPorts:t,dispose:t.dispose}}function _H(e){return{listLinkedDevices:async({walletId:t,limit:n,cursor:r})=>{let i=ri({kind:`linked_device_list_request_v1`,walletId:t,limit:n,cursor:r}),a=`${mH}?walletId=${encodeURIComponent(String(i.walletId))}&limit=${encodeURIComponent(String(i.limit))}&cursor=${encodeURIComponent(i.cursor??``)}`,o=await e.request.request({method:`GET`,canonicalPath:a,walletId:i.walletId});return yH(o,`list linked devices`),xH(o.body)},revokeLinkedDevice:async({walletId:t,walletAuthMethodId:n})=>{let{requestedAtMs:r,sourceProof:i}=await e.authorizeRemoval({walletId:t,walletAuthMethodId:n}),a=Hi({kind:`linked_device_revoke_request_v1`,walletId:t,walletAuthMethodId:n,requestedAtMs:r}),o=async()=>await e.request.request({method:`POST`,canonicalPath:`${mH}/${encodeURIComponent(String(n))}/revoke`,body:{...a,sourceProof:i},walletId:t}),s;try{s=await o()}catch(e){if(!(e instanceof ZC)||e.code!==`network_error`)throw e;s=await o()}return vH(s)}}}function vH(e){return e.status===404?oi({kind:`not_found`}):e.status===409?oi({kind:`conflict`}):e.status===401||e.status===403?oi({kind:`unauthorized`}):(yH(e,`revoke linked device`),CH(e.body))}function yH(e,t){if(e.status<200||e.status>=300){if(e.status===401&&EH(e.body))throw new hH;let n=bH(e.body);throw Error(n?`linked-device ${t} failed with HTTP ${e.status}: ${n}`:`linked-device ${t} failed with HTTP ${e.status}`)}}function bH(e){return typeof e!=`object`||!e||Array.isArray(e)?null:TH(e)||EH(e)?e.message:null}function xH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device list response must be an object`);if(!SH(e))throw Error(`linked-device list response has unexpected fields`);if(e.ok!==!0)throw Error(`linked-device list response is not successful`);return si({devices:e.devices,ownerDevices:e.ownerDevices,nextCursor:e.nextCursor})}function SH(e){return Object.keys(e).sort().join(`|`)===`devices|nextCursor|ok|ownerDevices`}function CH(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`linked-device revoke response must be an object`);if(!wH(e))throw Error(`linked-device revoke response has unexpected fields`);if(e.ok!==!0)throw Error(`linked-device revoke response is not successful`);return oi({kind:e.kind,walletAuthMethodId:e.walletAuthMethodId,authorityId:e.authorityId,revocationEpoch:e.revocationEpoch})}function wH(e){return Object.keys(e).sort().join(`|`)===`authorityId|kind|ok|revocationEpoch|walletAuthMethodId`}function TH(e){return Object.keys(e).sort().join(`|`)!==`kind|message|ok`||!(`ok`in e)||!(`kind`in e)||!(`message`in e)?!1:e.ok===!1&&(e.kind===`invalid_input`||e.kind===`internal`)&&typeof e.message==`string`&&e.message.trim().length>0}function EH(e){return typeof e!=`object`||!e||Array.isArray(e)||Object.keys(e).sort().join(`|`)!==`code|kind|message|ok`||!(`ok`in e)||!(`kind`in e)||!(`code`in e)||!(`message`in e)?!1:e.ok===!1&&e.kind===`unauthorized`&&typeof e.code==`string`&&typeof e.message==`string`&&e.message.trim().length>0}function DH(e){if(typeof e!=`string`||!e.trim())throw Error(`Yao lane request JSON is required`);return e}async function OH(e){let t=await $l({ctx:e.workerCtx,kind:`walletCustodyCeremony`,request:{type:`openEd25519YaoLaneSource`,payload:{kind:`unlocked_ed25519_export_root_capability`,capability:e.capability,applicationBindingDigestB64u:e.applicationBindingDigestB64u,walletKeyId:e.walletKeyId,enrollmentId:e.enrollmentId,revocationEpoch:e.revocationEpoch,registeredPublicKeyB64u:e.registeredPublicKeyB64u}}});return new kH(e.workerCtx,t.sourceHandle)}var kH=class{#e=!1;constructor(e,t){this.workerCtx=e,this.sourceHandle=t}async discard(){this.#e||(this.#e=!0,await $l({ctx:this.workerCtx,kind:`walletCustodyCeremony`,request:{type:`discardEd25519YaoLaneSource`,payload:{sourceHandle:this.sourceHandle}}}))}async prepareSourcePreservingRegistration(e){if(this.#e)throw Error(`Ed25519 Yao lane source is already consumed`);return this.#e=!0,{requestJson:DH((await $l({ctx:this.workerCtx,kind:`walletCustodyCeremony`,request:{type:`prepareEd25519YaoSourcePreservingRegistration`,payload:{sourceHandle:this.sourceHandle,targetAdmission:e.targetAdmission,applicationBinding:e.applicationBinding,participantIds:e.participantIds,expectedRegisteredPublicKeyB64u:e.expectedRegisteredPublicKeyB64u,targetClientRecipientPublicKeyB64u:e.targetClientRecipientPublicKeyB64u}}})).requestJson)}}};function AH(e){return async({preparation:t})=>{let n=t.source.activation,r=e.readLinkedEcdsaHolderV1({materialActivation:n});if(r)return jH(r,n);let i=await e.readActiveEcdsaCapabilityManifestV1({materialActivation:n});return MH({sourceActivation:n,manifest:i}),{walletKeyId:NH(i),sourceDerivation:{applicationBindingDigestB64u:St(i.durableMaterial.routerAbEcdsaDerivationNormalSigning.scope.context.application_binding_digest_b64u),clientShareRetryCounter:i.durableMaterial.routerAbEcdsaDerivationNormalSigning.scope.public_identity.client_share_retry_counter,ecdsaThresholdKeyId:Po(i.durableMaterial.roleLocalBinding.ecdsaThresholdKeyId),sourceNormalSigning:i.durableMaterial.routerAbEcdsaDerivationNormalSigning}}}}function jH(e,t){if(!b(e.materialActivation,t))throw Error(`linked ECDSA holder activation does not match preparation`);let n=e.activationReceipt.normalSigning,r=n.scope,i=ao({walletId:e.walletId,signingRootId:r.signing_root_id,signingRootVersion:r.signing_root_version}),a=h(`wallet-key:ecdsa:${e.walletId}:${i}`);if(!a.ok)throw Error(`linked ECDSA source wallet key identity: ${a.error.message}`);return{walletKeyId:a.value,sourceDerivation:{applicationBindingDigestB64u:St(r.context.application_binding_digest_b64u),clientShareRetryCounter:r.public_identity.client_share_retry_counter,ecdsaThresholdKeyId:Po(e.ecdsaThresholdKeyId),sourceNormalSigning:n},linkedHolderHandleId:e.holderHandleId}}function MH(e){if(!b(e.manifest.activation.materialActivation,e.sourceActivation))throw Error(`ECDSA capability manifest activation does not match preparation`)}function NH(e){let t=ao({walletId:e.signer.walletId,signingRootId:e.signer.signingRootId,signingRootVersion:e.signer.signingRootVersion}),n=h(`wallet-key:ecdsa:${e.signer.walletId}:${t}`);if(!n.ok)throw Error(`ECDSA source wallet key identity: ${n.error.message}`);return n.value}function PH(e){return{produceSourceContributionV1:async({preparation:t,capability:n,authentication:r})=>{let i=await OH({workerCtx:e.workerContext,capability:n,applicationBindingDigestB64u:await LH(t.applicationBinding),walletKeyId:String(t.walletKeyId),enrollmentId:String(t.enrollmentId),revocationEpoch:t.sourceRevocationEpoch,registeredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u});try{let n=await i.prepareSourcePreservingRegistration({targetAdmission:t.targetAdmission,applicationBinding:t.applicationBinding,participantIds:t.participantIds,expectedRegisteredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u,targetClientRecipientPublicKeyB64u:t.targetClientRecipientPublicKeyB64u}),a=aa(await e.executeSourcePreservingV1({linkSessionId:t.linkSessionId,sourceBinding:t.sourceBinding,targetRequestJson:n.requestJson,participantIds:t.participantIds,authentication:r}));return{kind:`linked_device_ed25519_source_contribution_v1`,keyFamily:`ed25519`,linkSessionId:t.linkSessionId,enrollmentId:t.enrollmentId,sourceAuthorityId:t.sourceAuthorityId,walletKeyId:t.walletKeyId,targetDeviceId:t.targetDeviceId,targetFactorVerificationDigestB64u:t.targetFactorVerificationDigestB64u,targetMaterialActivation:t.targetMaterialActivation,targetClientRecipientPublicKeyB64u:t.targetClientRecipientPublicKeyB64u,targetSigningWorkerRecipientPublicKeyB64u:t.targetSigningWorkerRecipientPublicKeyB64u,sourceRegisteredPublicKeyB64u:t.sourceRegisteredPublicKeyB64u,sourceBinding:t.sourceBinding,reservationId:a.reservationId,targetBinding:t.targetAdmission.binding,activationReceipt:a.activationReceipt,participantIds:a.participantIds,deriver_a_client_package:a.deriver_a_client_package,deriver_b_client_package:a.deriver_b_client_package}}finally{await i.discard()}}}}function FH(e){return{ed25519:e.ed25519,ecdsa:{produceSourceContributionV1:async({preparation:t})=>await IH({workerContext:e.workerContext,readMetadataV1:e.readEcdsaMetadataV1,preparation:t})}}}async function IH(e){let t=await e.readMetadataV1({preparation:e.preparation}),n=await vu({preparation:e.preparation,workerCtx:e.workerContext,...t.linkedHolderHandleId===void 0?{}:{linkedHolderHandleId:t.linkedHolderHandleId}});return{kind:`linked_device_ecdsa_source_contribution_v1`,keyFamily:`ecdsa_secp256k1`,linkSessionId:e.preparation.linkSessionId,enrollmentId:e.preparation.enrollmentId,sourceAuthorityId:e.preparation.sourceAuthorityId,walletKeyId:t.walletKeyId,targetDeviceId:e.preparation.target.targetDeviceId,targetFactorVerificationDigestB64u:e.preparation.target.targetFactorVerificationDigestB64u,sourceSigner:e.preparation.source,sourceDerivation:t.sourceDerivation,target:e.preparation.target,package:n.package}}async function LH(e){return P(Uint8Array.from(await ja(e)))}const RH=new as;async function zH(e,t){let n=await G.resolveSelectedWalletAuthority(String(t.walletId));if(n.kind!==`resolved`)throw Error(`Unlock the wallet before removing a device`);return await LR(e,{kind:`selected_method`,walletAuthMethodId:n.authMethod.walletAuthMethodId},t)}function BH(e){let{platform:t,ownerAuthorities:n}=e,r=UH({signingEngine:e.signingEngine,ownerRequest:n.ownerRequest,readEcdsaMetadataV1:HH({signingEngine:e.signingEngine})}),i=gH({authenticator:t.authenticator,http:t.http,relayerUrl:String(e.configs.network.relayer?.url||``).trim(),publishableKey:e.configs.registration.publishableKey,projectEnvironmentId:e.configs.registration.projectEnvironmentId,ownerRequest:n.ownerRequest,ownerApprovalUpdates:VH({request:n.ownerRequest,pollIntervalMs:1e3}),ownerAuthorization:n.ownerAuthorization,sourceContribution:r,custodyCeremonyTransport:Qn(e.signingEngine.getSignerWorkerContext()),managementRequest:n.managementRequest,authorizeRemoval:zH.bind(void 0,{configs:e.configs,signingEngine:e.signingEngine}),nowMs:Date.now,pollIntervalMs:1e3}),a=new pV({getContext:e.getContext,ports:i.deviceLinkingPorts});return{domain:{linkedDeviceManagement:i.linkedDeviceManagement,startLinking:a.startDevice2LinkingFlow.bind(a),cancelLinking:a.cancelDeviceLinking.bind(a),approveLinking:a.scanAndLinkDevice.bind(a)},resumePendingAcknowledgementsV1:i.deviceLinkingPorts.resumePendingAcknowledgementsV1,dispose:i.dispose}}function VH(e){return{getApprovalV1:async t=>await WH(e.request,t),subscribeApprovalV1:async t=>GH({...e,input:t})}}function HH(e){return AH({readActiveEcdsaCapabilityManifestV1:async({materialActivation:t})=>{let n=e.signingEngine.readWalletAuthenticationState();if(n.kind!==`authenticated`)throw Error(`ECDSA source metadata requires an authenticated wallet`);let r=await RH.lookupByMaterialActivation({walletId:n.walletId,materialActivation:t});if(r.kind===`ambiguous_authority`&&(r=await vv({walletId:n.walletId,materialActivation:t,authorities:r.authorities})),r.kind!==`active`)throw Error(`ECDSA source metadata manifest is ${r.kind}`);return r.manifest},readLinkedEcdsaHolderV1:({materialActivation:t})=>{let n=e.signingEngine.readWalletAuthenticationState();return n.kind===`authenticated`?cd({walletId:n.walletId,materialActivation:t}):null}})}function UH(e){let t=e.signingEngine.getSignerWorkerContext();return FH({workerContext:t,ed25519:PH({workerContext:t,executeSourcePreservingV1:async({linkSessionId:t,targetRequestJson:n,authentication:r})=>{let i=await e.ownerRequest.requestOwnerV1({method:`POST`,canonicalPath:`${BR}/${String(t)}/source-contribution/execute`,body:JSON.parse(n),authentication:r});if(i.status<200||i.status>=300)throw Error(`Wallet-host Ed25519 source-preserving request failed with HTTP ${i.status}`);return i.body}}),readEcdsaMetadataV1:e.readEcdsaMetadataV1})}async function WH(e,t){let n=await e.requestOwnerV1({method:`GET`,canonicalPath:`${BR}/${String(t.linkSessionId)}/approval`,authentication:t.authentication});if(n.status<200||n.status>=300)throw Error(`Wallet-host approval request failed with HTTP ${n.status}`);return Bi(n.body)}function GH(e){let t=!1,n=null,r=async()=>{if(!t){try{let n=await WH(e.request,e.input);t||e.input.onResult(n)}catch{}t||(n=setTimeout(()=>void r(),e.pollIntervalMs))}};return r(),{close:()=>{t=!0,n&&clearTimeout(n),n=null}}}const KH=[`delivery`,`challengeId`,`otpCode`,`resend`,`webauthn`,`webauthnRegistration`,`webauthn_registration`,`authenticatorOptions`,`publicKey`,`passkey`,`passkeyPrfFirstB64u`],qH=[`recoveryKeys`,`recoveryCodes`,`bootstrap`,`bootstrapMaterial`,`clientSecret32`];function JH(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=0)throw Error(`${t} must be a positive integer timestamp`);return e}function YH(e,t,n){let r=t.find(t=>Object.prototype.hasOwnProperty.call(e,t));if(r)throw Error(`${n} must not include ${r}`)}function XH(e){return j(e,`offerId`)}function ZH(e,t=`candidateId`){return j(e,t)}function QH(e){let t=M(e,`registration candidate`);return YH(t,KH,`registration candidate`),YH(t,qH,`registration candidate`),{candidateId:ZH(t.candidateId),walletId:ko(j(t.walletId,`candidate.walletId`))}}function $H(e){let t=M(e,`Google Email OTP registration offer`);if(YH(t,KH,`Google Email OTP registration offer`),YH(t,qH,`Google Email OTP registration offer`),t.kind!==`google_email_otp_registration_offer_v1`)throw Error(`registration offer kind must be google_email_otp_registration_offer_v1`);if(!Array.isArray(t.candidates)||t.candidates.length<1)throw Error(`registration offer must include at least one candidate`);let n=t.candidates.map(QH),r=ZH(t.selectedCandidateId,`selectedCandidateId`);if(!n.some(e=>e.candidateId===r))throw Error(`selectedCandidateId must refer to an offered candidate`);let[i,...a]=n;return{kind:`google_email_otp_registration_offer_v1`,offerId:XH(t.offerId),expiresAtMs:JH(t.expiresAtMs,`expiresAtMs`),emailHint:j(t.emailHint,`emailHint`),candidates:[i,...a],selectedCandidateId:r}}const eU=600*1e3;function tU(e){return{ok:!0,value:e}}function nU(e,t){let n=t instanceof Error&&t.message?t.message:String(t||e),r=t&&typeof t==`object`&&`retryAfterMs`in t?Number(t.retryAfterMs):NaN;return{ok:!1,error:{code:e,message:n,...Number.isFinite(r)&&r>=0?{retryAfterMs:Math.floor(r)}:{}}}}function rU(e,t,n){let r=nU(e,n);return r.ok?r:{ok:!1,error:{...r.error,message:t}}}function iU(e){let t=e&&typeof e==`object`&&`code`in e?String(e.code||``):``;if(t.includes(`rate`))return`email_otp_rate_limited`;if(t.includes(`expired`))return`email_otp_expired`;if(t.includes(`invalid`)||t.includes(`otp`))return`email_otp_invalid_code`;let n=e instanceof Error?e.message.toLowerCase():``;return n.includes(`backup`)?`recovery_code_backup_incomplete`:n.includes(`expired`)?`email_otp_expired`:n.includes(`invalid`)||n.includes(`code`)?`email_otp_invalid_code`:`unlock_failed`}function aU(e){if((e&&typeof e==`object`&&`code`in e?String(e.code||``):``)===`already_finalized_restore_required`)return`registration_restore_required`;let t=e instanceof Error?e.message.toLowerCase():``;return t.includes(`already finalized`)||t.includes(`restore or unlock`)?`registration_restore_required`:t.includes(`backup`)?`recovery_code_backup_incomplete`:t.includes(`expired`)?`flow_expired`:`registration_failed`}function oU(e){let t=String(e.walletId||``).trim();if(!t)throw Error(`Google verification did not return a wallet id`);return ko(t)}function sU(e){let t=String(e.providerSubject||``).trim();if(!t)throw Error(`Google verification did not return a provider subject`);return t}function cU(e){let t=String(e.email||``).trim();if(!t)throw Error(`Google verification did not return an email address`);return t}function lU(e){let t=typeof e==`number`?e:typeof e==`string`?Date.parse(e):NaN;return Number.isFinite(t)&&t>Date.now()?t:Date.now()+eU}function uU(e){let t=typeof e==`number`?e:typeof e==`string`?Date.parse(e):NaN;if(!Number.isFinite(t)||t<=Date.now())throw Error(`Google Email OTP registration offer is expired or missing expiry`);return Math.floor(t)}function dU(e){return e.mode===`register`?{title:`Create your Email OTP wallet`,description:`Google verified ${e.emailHint}.`,submitLabel:`Create wallet`,helperText:``}:{title:`Check your email to unlock your wallet`,description:`Enter the 6-digit code we sent to ${e.emailHint}.`,submitLabel:`Unlock wallet`,helperText:``}}function fU(e){return e===`register_started`?`register`:`login`}function pU(e){if(!e||typeof e!=`object`||!(`code`in e))return!1;let t=String(e.code||``).trim(),n=e instanceof Error?e.message:String(e.message||``).trim();return t===`not_found`&&/Email OTP enrollment not found/i.test(n)}function mU(){return`Account doesn't exist. Create your account to continue.`}function hU(e){return!e||typeof e!=`object`||!(`code`in e)?`google_verification_failed`:Reflect.get(e,`code`)===`stale_identity_mapping`?`google_account_registration_required`:`google_verification_failed`}function gU(e,t){if(e.replaceExistingWallet===!0&&t!==`register`)throw Error(`replaceExistingWallet is only valid with register mode`);return{idToken:e.idToken,accountMode:t,relayUrl:e.relayUrl,restartRegistrationOffer:t===`register`&&e.replaceExistingWallet===!0,...e.mode===`login`&&e.loginTarget.kind===`wallet`?{loginWalletId:String(e.loginTarget.walletId)}:{}}}function _U(e){return e.providerSubject.toLowerCase()===e.verifiedEmail.toLowerCase()?`email`:`google`}async function vU(e){return await e.deps.resolveGoogleEmailOtpProvider(gU(e.input,e.input.mode))}function yU(e){let t=e.authInput.mode===`login`&&e.authInput.loginTarget.kind===`wallet`?ko(String(e.authInput.loginTarget.walletId)):oU(e.resolution),n=cU(e.resolution),r=e.resolution,i=fU(r.mode),a=r.mode===`register_started`?$H({kind:`google_email_otp_registration_offer_v1`,offerId:r?.offer?.offerId,expiresAtMs:uU(r.expiresAtMs),emailHint:n,candidates:r?.offer?.candidates,selectedCandidateId:r?.offer?.selectedCandidateId}):void 0;return{walletId:a?SU(a).walletId:t,...a?{offer:a}:{},providerSubject:sU(e.resolution),emailHint:n,requestedMode:e.authInput.mode,mode:i,expiresAtMs:r.mode===`register_started`?uU(r.expiresAtMs):lU(void 0),...r.mode===`register_started`?{registrationAttemptId:r.registrationAttemptId}:{}}}async function bU(e){if(e.state.mode!==`login`||!e.deps.resolveLinkedEmailOtpWalletAuth)return e.state;let t=await e.deps.resolveLinkedEmailOtpWalletAuth({walletId:String(e.state.walletId),email:e.state.emailHint,provider:_U({providerSubject:e.state.providerSubject,verifiedEmail:e.state.emailHint}),providerSubjectId:e.state.providerSubject});switch(t.kind){case`none`:return e.state;case`selected`:return{...e.state,linkedEmailOtpSelection:t};case`rejected`:throw Error(t.message);default:throw Error(`Google Email OTP linked auth selection is invalid`)}}function xU(e){let t=e.offer.candidates.findIndex(t=>t.walletId===e.currentWalletId);return t<0||e.offer.candidates.length<2?null:e.offer.candidates[(t+1)%e.offer.candidates.length]||null}function SU(e){let t=e.candidates.find(t=>t.candidateId===e.selectedCandidateId);if(!t)throw Error(`Google Email OTP registration offer selected candidate is missing`);return t}async function CU(e){let t=await e.deps.requestEmailOtpChallenge({walletId:e.state.walletId,...e.state.linkedEmailOtpSelection?{walletAuthMethodId:e.state.linkedEmailOtpSelection.walletAuthMethodId}:{},...e.relayUrl?{relayUrl:e.relayUrl}:{},...e.onEvent?{onEvent:e.onEvent}:{}});return{challengeId:t.challengeId,expiresAtMs:wU(t.expiresAtMs),emailHint:t.delivery.emailHint,delivery:t.delivery,walletAuthMethodId:t.walletAuthMethodId,signerSelection:t.signerSelection}}function wU(e){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<=Date.now())throw Error(`Email code challenge is expired or missing expiry`);return e}function TU(e){let t=e.policy||{kind:`configured`};return t.kind===`none`?[]:t.kind===`explicit`?t.targets:er({signerOptions:e.configs.signing.thresholdEcdsa.provisioningDefaults,chains:e.configs.network.chains}).map(e=>e.chainTarget)}function EU(e){let t=e.policy||{kind:`configured`};return t.kind===`none`?[]:t.kind===`explicit`?t.targets:ur(e.configs.network.chains).map(e=>e.chainTarget)}function DU(e){return{...e.onEvent?{onEvent:e.onEvent}:{},...e.recoveryCodeBackup?{recoveryCodeBackup:e.recoveryCodeBackup}:{}}}function OU(e){let t=Math.floor(Number(e.signing.sessionDefaults?.remainingUses)||0);return t<=0?Ue:Math.min(t,Ue)}async function kU(e){let t=Ir({walletId:e.state.walletId}),n={kind:`wallet_auth_method`,walletAuthMethodId:e.challenge.walletAuthMethodId},[r]=e.targets;if(!r){if(e.challenge.signerSelection.kind!==`ed25519_only`)throw Error(`Selected Email OTP authority requires an ECDSA chain target`);await e.deps.loginWithEmailOtpEd25519YaoCapability({walletSession:t,authoritySelector:n,providerSubjectId:e.state.providerSubject,emailOtpAuthorityEmail:e.state.emailHint,challengeId:e.challenge.challengeId,otpCode:e.otpCode,remainingUses:OU(e.deps.configs),ed25519Selection:e.challenge.signerSelection});return}let i={walletSession:t,walletAuthMethodId:n.walletAuthMethodId,providerIdentity:{provider:_U({providerSubject:e.state.providerSubject,verifiedEmail:e.state.emailHint}),providerSubjectId:e.state.providerSubject},challengeId:e.challenge.challengeId,emailOtpAuthorityEmail:e.state.emailHint,otpCode:e.otpCode,...e.input.relayUrl?{relayUrl:e.input.relayUrl}:{},...e.input.emailOtpAuthPolicy?{emailOtpAuthPolicy:e.input.emailOtpAuthPolicy}:{},...e.input.onEvent?{onEvent:e.input.onEvent}:{}};if(e.challenge.signerSelection.kind!==`ecdsa`)throw Error(`Selected Email OTP authority has no ECDSA signer`);await e.deps.loginWithEmailOtpEcdsaCapability({...i,chainTarget:r,publicationChainTargets:e.targets,keyHandle:e.challenge.signerSelection.keyHandle,ed25519Selection:e.challenge.signerSelection.ed25519})}function AU(e){return{...e.options,signerOptions:{tempo:{enabled:!1,signingSession:{kind:`jwt`,ttlMs:0,remainingUses:0}},evm:{enabled:!1,signingSession:{kind:`jwt`,ttlMs:0,remainingUses:0}}}}}async function jU(e,t){let n=await e.getWalletSession(t);if(n.appIdentity.kind!==`resolved`||String(n.appIdentity.walletId)!==String(t)||n.authentication.kind!==`authenticated`||String(n.authentication.walletId)!==String(t))throw Error(`Wallet auth completed, but the local signing session is not ready yet.`);return n}async function MU(e,t){let n=await e.getWalletSession(t);if(n.appIdentity.kind!==`resolved`||String(n.appIdentity.walletId)!==String(t))throw Error(`Wallet registration completed, but the local wallet identity is not ready.`);return n}function NU(e,t){return Ot(t)?{kind:`started`,completion:e.prewarmEmailOtpYao().catch(()=>void 0)}:{kind:`not_started`}}async function PU(e,t){let n;try{n=yU({authInput:t,resolution:await vU({deps:e,input:t})}),n=await bU({deps:e,state:n})}catch(e){return nU(hU(e),e)}if(n.mode===`register`)return tU(RU(e,{state:n,input:t,prewarm:{kind:`not_started`}}));try{let r=await CU({deps:e,state:n,...t.relayUrl?{relayUrl:t.relayUrl}:{},...t.onEvent?{onEvent:t.onEvent}:{}});return tU(BU(e,{state:n,challenge:r,input:t}))}catch(e){return pU(e)?rU(`google_account_registration_required`,mU(),e):nU(`email_otp_challenge_failed`,e)}}async function FU(e,t){if(t.method===`google`){let n=await PU(e,{mode:`login`,idToken:t.idToken,loginTarget:t.target,onEvent:t.onEvent});return n.ok?n.value.mode===`login`?tU(n.value):nU(`unlock_failed`,Error(`Email unlock requires an existing wallet`)):n}try{let n=t.email.trim().toLowerCase();if(!n)throw Error(`Email address is required`);let r=await bU({deps:e,state:{walletId:ko(t.walletId),providerSubject:n,emailHint:n,requestedMode:`login`,mode:`login`,expiresAtMs:Date.now()+eU}});return r.linkedEmailOtpSelection?tU(BU(e,{state:r,challenge:await CU({deps:e,state:r,onEvent:t.onEvent}),input:{onEvent:t.onEvent}})):nU(`unlock_failed`,Error(`No active email method matches this wallet`))}catch(e){return nU(`email_otp_challenge_failed`,e)}}function IU(e){let t=!0;return{ensureActive(){if(!t)throw Error(`Google Email OTP wallet auth flow is no longer active`);if(Date.now()>e.state.expiresAtMs)throw t=!1,Error(`Google Email OTP wallet auth flow expired`)},burn(){t=!1}}}function LU(e){return String(e.input.relayUrl||e.deps.configs.network.relayer?.url||``).trim()}function RU(e,t){let n=String(t.state.registrationAttemptId||``).trim();if(!n)throw Error(`Google Email OTP registration requires a registration attempt id`);if(!t.state.offer)throw Error(`Google Email OTP registration requires an offer`);let r=t.state.offer,i=TU({configs:e.configs,policy:t.input.ecdsaTargets}),a=DU({onEvent:t.input.onEvent,recoveryCodeBackup:t.input.recoveryCodeBackup}),o=i.length?a:AU({options:a}),s=SU(r).walletId,c={kind:`email_otp`,proofKind:`google_sso_registration`,email:t.state.emailHint,providerSubject:t.state.providerSubject,googleEmailOtpRegistrationAttemptId:n,googleEmailOtpRegistrationOfferId:r.offerId,googleEmailOtpRegistrationCandidateId:r.selectedCandidateId},l={wallet:{kind:`provided`,walletId:s},authMethod:c,signerSelection:t.input.signerSelection??ln({configs:e.configs,options:o,ecdsaChainTargets:i}),options:o},u=t.prewarm.kind===`not_started`?NU(e,l.signerSelection):t.prewarm,d=IU({state:t.state});return{kind:`google_email_otp_wallet_auth_flow_v1`,state:`registration_ready`,flowId:`google-email-otp-registration:${s}:${n}`,requestedMode:t.state.requestedMode,mode:`register`,walletId:s,emailHint:t.state.emailHint,prompt:dU({mode:`register`,emailHint:t.state.emailHint}),expiresAtMs:t.state.expiresAtMs,completeRegistration:async()=>{try{d.ensureActive();let t=await e.registerWallet(l);if(!t.success){let e=Object.assign(Error(t.error||`Wallet registration failed`),{code:t.errorCode});return nU(aU(e),e)}return d.burn(),tU({walletId:s,mode:`register`,session:await MU(e,s),registration:t})}catch(e){return nU(aU(e),e)}},rerollWalletId:async()=>{try{if(d.ensureActive(),!t.state.offer)return nU(`google_verification_failed`,Error(`Google Email OTP registration offer is missing wallet candidates`));let n=xU({offer:t.state.offer,currentWalletId:s});return n?(d.burn(),tU(RU(e,{state:{...t.state,walletId:n.walletId,offer:{...t.state.offer,selectedCandidateId:n.candidateId}},input:t.input,prewarm:u}))):nU(`google_verification_failed`,Error(`Google Email OTP registration offer has no alternate wallet candidate`))}catch(e){return nU(`google_verification_failed`,e)}},cancel:async()=>{d.burn()}}}var zU=class{state=`ready`;constructor(e){this.expiresAtMs=e}begin(){if(this.state!==`ready`)throw Error(`Email unlock flow is no longer available`);if(Date.now()>=this.expiresAtMs)throw this.state=`finished`,Error(`Email unlock flow expired`);this.state=`running`}release(){this.state===`running`&&(this.state=`ready`)}burn(){this.state=`finished`}cancel(){if(this.state===`running`)throw Error(`Email unlock operation is already in progress`);this.burn()}};function BU(e,t){let n=new zU(t.state.expiresAtMs);return{kind:`google_email_otp_wallet_auth_flow_v1`,state:`challenge_sent`,flowId:`google-email-otp-login:${t.state.walletId}:${t.challenge.challengeId}`,requestedMode:t.state.requestedMode,mode:`login`,walletId:t.state.walletId,emailHint:t.challenge.emailHint,prompt:dU({mode:`login`,emailHint:t.challenge.emailHint}),delivery:t.challenge.delivery,expiresAtMs:t.state.expiresAtMs,resend:async()=>{let r=!1;try{n.begin(),r=!0;let i=await CU({deps:e,state:t.state,...t.input.relayUrl?{relayUrl:t.input.relayUrl}:{},...t.input.onEvent?{onEvent:t.input.onEvent}:{}});return n.burn(),tU(BU(e,{state:t.state,challenge:i,input:t.input}))}catch(e){return nU(`email_otp_challenge_failed`,e)}finally{r&&n.release()}},submit:async r=>{let i=!1;try{if(n.begin(),i=!0,Date.now()>=t.challenge.expiresAtMs)return nU(`email_otp_expired`,Error(`Email code expired. Request a new code.`));let a=String(r.otpCode||``).trim();if(!/^\d{6}$/.test(a))return nU(`email_otp_invalid_code`,Error(`Enter the 6-digit code from your email.`));let o=EU({configs:e.configs,policy:t.input.ecdsaTargets}),s=t.challenge.signerSelection.kind===`ed25519_only`?[]:o;if(t.state.linkedEmailOtpSelection?.execution===`authority`){if(!e.loginWithLinkedEmailOtpWallet)throw Error(`Exact linked Email OTP wallet unlock is unavailable`);await e.loginWithLinkedEmailOtpWallet({walletId:String(t.state.walletId),walletAuthMethodId:t.state.linkedEmailOtpSelection.walletAuthMethodId,email:t.state.emailHint,providerSubjectId:t.state.providerSubject,challengeId:t.challenge.challengeId,otpCode:a,relayUrl:LU({deps:e,input:t.input})})}else await kU({deps:e,state:t.state,input:t.input,challenge:t.challenge,otpCode:a,targets:s});n.burn();let c=await jU(e,t.state.walletId);return tU({walletId:t.state.walletId,mode:`login`,session:c})}catch(e){return nU(iU(e),e)}finally{i&&n.release()}},cancel:async()=>{n.cancel()}}}async function VU(e){return await e.challenge.submit({otpCode:e.code})}function HU(){return typeof performance<`u`&&typeof performance.now==`function`?performance.now():Date.now()}function UU(){return{emailOtpProofVerificationMs:0,walletUnlockExchangeMs:0,ecdsaMaterialRestoreMs:0,signingSessionSealApplyMs:0,warmCapabilityPersistenceMs:0,activeRuntimeConstructionMs:0,emailHashLookupMs:0,workerUnlockAndSessionBootstrapMs:0,walletStateActivationMs:0,runtimePostconditionMs:0,walletIframeRoundTripMs:0}}function WU(e,t,n){GU(e,t,n)}function GU(e,t,n){let r=Math.max(0,Math.round(n));e[t]+=r,KU()&&console.info(`[EmailOtpUnlock] timing`,{bucket:t,deltaMs:r,accumulatedMs:e[t]})}function KU(){return Reflect.get(globalThis,`__SEAMS_EMAIL_OTP_UNLOCK_DIAGNOSTICS`)===!0}function qU(e){if(!KU())return;let t=Object.entries(e.timings),n=[];for(let[e,r]of t)r>0&&n.push({bucket:e,durationMs:r});n.sort(QU);let r=n.slice(0,5),i=e.error instanceof Error?e.error.message:e.error?String(e.error):``,a={kind:`email_otp_unlock_timing_summary_v1`,status:e.status,mode:e.mode,walletId:e.walletId,...e.chainTarget?{chainTarget:e.chainTarget}:{},totalElapsedMs:Math.max(0,Math.round(HU()-e.startedAtMs)),timings:e.timings,topBuckets:r,...i?{errorMessage:i}:{}};console.info(`[EmailOtpUnlock] timing summary`,a)}function JU(e,t){if(!O(e))throw Error(`[SeamsWeb] ${t} requires a concrete ECDSA chainTarget`);return jr(e)}function YU(e,t){return`email-otp-unlock:${String(e||`unknown-wallet`).trim()||`unknown-wallet`}:${String(t||`active`).trim()||`active`}`}function XU(e,t){try{e?.(qo(t))}catch{}}function ZU(e,t){let n=wt(t.error);XU(e,{...t,phase:n?W.CANCELLED:W.FAILED,status:n?`cancelled`:`failed`,interaction:t.interaction??{kind:n?`otp_input`:`none`,overlay:`hide`},error:{message:t.error.message}})}function QU(e,t){return t.durationMs-e.durationMs}async function $U(e,t){if(e.kind===`device_link`)return`authority`;let n=await G.listPendingWalletRegistrationCommits();for(let e of n)if(e.operation===`near_provisioning`&&e.signerPlanKind===`near_ed25519_and_evm_family_ecdsa`&&e.walletAuthMethodId===t)return`authority`;return`ordinary`}function eW(e){let t=c(e);if(!t.ok)throw Error(`Email OTP unlock returned an invalid wallet auth method id`);return t.value}function tW(e){let t=e.recovery.verifiedAuthorityProjection.authority,n=Wa({kind:`wallet_auth_authority_ref`,walletId:t.walletId,walletAuthMethodId:e.authorization.record.authMethodId,authorityDigest:t.authorityDigestB64u});if(!n)throw Error(`Email OTP unlock returned an invalid authority reference`);return n}function nW(e,t,n){GU(e,t,HU()-n)}function rW(e){return{kind:`email_otp_unlock_active_runtime_state_v1`,inventory:e}}function iW(e){if(e.result.authorization.record.walletId!==e.walletSession.walletId)throw Error(`Email OTP unlock authorization does not match the wallet session`);return{kind:`email_otp_unlock_activation_plan_v1`,mode:`evm_family_ecdsa`,activeAuthorization:e.result.authorization,authorizations:e.result.authorizations,runtimeState:rW(e.runtimeInventory)}}function aW(e){KU()&&console.info(`[EmailOtpUnlock] activation plan constructed`,{kind:e.kind,mode:e.mode,walletId:e.activeAuthorization.record.walletId,authorityDigest:e.activeAuthorization.record.authorityDigestB64u,walletSessionIds:e.authorizations.map(uW),runtimeTargetCount:e.runtimeState.inventory.ecdsaByTarget.size})}function oW(e,t){let n=t.chainTarget.kind===`tempo`?`Tempo`:`EVM`,r={flowId:t.flowId,walletId:t.walletId,authMethod:`email_otp`,...t.challengeId?{requestId:t.challengeId}:{}};switch(t.progress.code){case`otp.verify.succeeded`:return XU(e,{...r,phase:W.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED,status:`succeeded`,interaction:{kind:`otp_input`,overlay:`hide`}}),W.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED;case`signer.ecdsa.bootstrap.started`:return XU(e,{...r,phase:W.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Preparing ${n} signing session`,data:{chainTarget:t.chainTarget}}),W.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.prepared`:return XU(e,{...r,phase:W.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Coordinating ${n} signing session`,data:{chainTarget:t.chainTarget}}),W.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.responded`:return XU(e,{...r,phase:W.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Finalizing ${n} signing session`,data:{chainTarget:t.chainTarget}}),W.STEP_05_SIGNING_SESSION_WARMUP_STARTED;case`signer.ecdsa.bootstrap.succeeded`:return XU(e,{...r,phase:W.STEP_05_SIGNING_SESSION_WARMUP_STARTED,status:`running`,message:`Saving ${n} signing session`,data:{chainTarget:t.chainTarget}}),W.STEP_05_SIGNING_SESSION_WARMUP_STARTED;default:return null}}function sW(e){let t=new lW(e);return{requestEmailCode:t.requestEmailCode.bind(t),unlockWithEmailCode:VU,startGoogleSignIn:t.startGoogleSignInDomain.bind(t)}}function cW(e){return{curve:`ecdsa`,chainTarget:e}}var lW=class{constructor(e){this.deps=e}async readOwnerScopedSigningLanes(e){return await this.deps.getContext().signingEngine.readOwnerScopedSigningLanes(e,new J)}async requestUnlockChallenge(e){let t=YU(e.walletId);XU(e.onEvent,{flowId:t,walletId:e.walletId,authMethod:`email_otp`,phase:W.STEP_03_EMAIL_OTP_CHALLENGE_STARTED,status:`running`});try{let t=e.walletAuthMethodId;if(!t){let n=await G.resolveSelectedWalletAuthority(String(e.walletId||``).trim());n.kind===`resolved`&&n.authMethod.kind===`email_otp`&&n.authMethod.status===`active`&&String(n.authMethod.walletId)===String(e.walletId||``).trim()&&(t=String(n.authMethod.walletAuthMethodId))}if(!t)throw Error(`Email OTP challenge requires an exact walletAuthMethodId`);let n=await gr({relayUrl:String(e.relayUrl||this.deps.getContext().configs.network.relayer.url||``).trim(),walletId:String(e.walletId||``).trim(),walletAuthMethodId:t});return XU(e.onEvent,{flowId:YU(e.walletId,n.challengeId),walletId:e.walletId,authMethod:`email_otp`,phase:W.STEP_03_EMAIL_OTP_CHALLENGE_SENT,status:`succeeded`,data:{challengeId:n.challengeId,otpChannel:n.otpChannel}}),n}catch(n){let r=I(n);throw ZU(e.onEvent,{flowId:t,walletId:e.walletId,authMethod:`email_otp`,error:r}),r}}async loginWithEmailOtpEcdsaCapabilityDomain(e){let t=e.walletSession.walletId,n=YU(t,e.challengeId),r=JU(e.chainTarget,`Email OTP ECDSA unlock`),i={startedAtMs:HU(),timings:UU()};XU(e.onEvent,{flowId:n,walletId:t,authMethod:`email_otp`,phase:W.STEP_03_EMAIL_OTP_VERIFY_STARTED,status:`running`,interaction:{kind:`otp_input`,overlay:`none`},...e.challengeId?{requestId:e.challengeId}:{}});try{let a=new Set,o=dW.bind(null,a,e.onEvent,{flowId:n,walletId:t,challengeId:e.challengeId,chainTarget:r}),s=fW.bind(null,a,e.onEvent),c=HU(),l=await this.emailOtpEmailHashHex(e.emailOtpAuthorityEmail||``);nW(i.timings,`emailHashLookupMs`,c),c=HU();let u=e.ed25519Selection.kind===`present`?e.ed25519Selection:null,d=await this.deps.getContext().signingEngine.loginWithEmailOtpEcdsaCapabilityInternal({...e,authoritySelector:{kind:`wallet_auth_method`,walletAuthMethodId:e.walletAuthMethodId},chainTarget:r,emailHashHex:l,...u?{ed25519YaoRecovery:{kind:`requested`,providerSubject:e.providerIdentity.providerSubjectId,signerSlot:u.signerSlot,nearAccountId:u.nearAccountId,expectedOperationalPublicKey:u.operationalPublicKey,expectedThresholdSessionId:u.thresholdSessionId}}:{ed25519YaoRecovery:{kind:`not_requested`}},ecdsaBootstrapAuthorization:{kind:`route_plan_auth`},providerIdentity:{kind:`explicit_provider_user`,provider:e.providerIdentity.provider,providerUserId:e.providerIdentity.providerSubjectId},onProgress:o});await pk({walletId:String(t),walletAuthMethodId:String(e.walletAuthMethodId),projection:d.recovery.verifiedAuthorityProjection});let f;if(u){let t;switch(d.ed25519YaoRecovery.kind){case`capability`:t=await this.deps.getContext().signingEngine.activateEmailOtpEd25519CustodyCapabilityInternal({walletSession:e.walletSession,providerSubject:e.providerIdentity.providerSubjectId,emailHashHex:l,signerSlot:u.signerSlot,expectedOperationalPublicKey:u.operationalPublicKey,expectedThresholdSessionId:u.thresholdSessionId,bootstrap:d.ed25519YaoRecovery.bootstrap,activeClientHandle:d.ed25519YaoRecovery.activeClientHandle,metadata:d.ed25519YaoRecovery.metadata,authority:tW(d)});break;case`cache_absent`:throw Error(`Email OTP wallet custody material is unavailable; recover with a recovery code`);case`not_requested`:throw Error(`Email OTP capability unlock omitted Ed25519 Yao session material`);default:throw Error(`Email OTP capability unlock returned an invalid Ed25519 Yao state`)}f={kind:`near_ed25519_wallet`,signer:t,walletAuthMethodId:eW(e.walletAuthMethodId)}}else{if(d.ed25519YaoRecovery.kind!==`not_requested`)throw Error(`EVM-family ECDSA Email OTP unlock returned unexpected Ed25519 Yao material`);f={kind:`evm_family_ecdsa_wallet`,walletId:t,walletAuthMethodId:eW(e.walletAuthMethodId)}}let p=HU()-c;WU(i.timings,`workerUnlockAndSessionBootstrapMs`,p),WU(i.timings,`emailOtpProofVerificationMs`,d.timings.emailOtpProofVerificationMs),WU(i.timings,`ecdsaMaterialRestoreMs`,d.timings.ecdsaMaterialRestoreMs),WU(i.timings,`signingSessionSealApplyMs`,d.timings.signingSessionSealApplyMs),WU(i.timings,`warmCapabilityPersistenceMs`,d.timings.warmCapabilityPersistenceMs),c=HU(),await gk({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},f),nW(i.timings,`walletStateActivationMs`,c),c=HU();let m=await mk({walletId:String(t),walletAuthMethodId:String(e.walletAuthMethodId),providerSubject:e.providerIdentity.providerSubjectId,emailHashHex:l,projection:d.recovery.verifiedAuthorityProjection}),h=await qv({source:`wallet_unlock`,walletId:t,ownerScope:{auth:{kind:`email_otp`,providerSubjectId:e.providerIdentity.providerSubjectId},ownerAuthority:{walletAuthMethodId:m.walletAuthMethodId,authorityDigest:m.authorityDigest}},requiredTargets:[...u?[{curve:`ed25519`}]:[],...(e.publicationChainTargets??[r]).map(cW)],readOwnerScopedSigningLanes:this.readOwnerScopedSigningLanes.bind(this)});aW(iW({walletSession:e.walletSession,result:d,runtimeInventory:h}));let g=HU()-c;return WU(i.timings,`runtimePostconditionMs`,g),WU(i.timings,`activeRuntimeConstructionMs`,g),qU({status:`succeeded`,mode:`evm_family_ecdsa`,walletId:t,chainTarget:r,startedAtMs:i.startedAtMs,timings:i.timings}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:W.STEP_03_EMAIL_OTP_VERIFY_SUCCEEDED,status:`succeeded`,interaction:{kind:`otp_input`,overlay:`hide`},...e.challengeId?{requestId:e.challengeId}:{}}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:W.STEP_05_ECDSA_SIGNING_SESSION_READY,status:`succeeded`,...e.challengeId?{requestId:e.challengeId}:{},data:{chainTarget:r}}),s({flowId:n,walletId:t,authMethod:`email_otp`,phase:W.STEP_07_COMPLETED,status:`succeeded`,...e.challengeId?{requestId:e.challengeId}:{}}),d}catch(a){let o=I(a);throw qU({status:`failed`,mode:`evm_family_ecdsa`,walletId:t,chainTarget:r,startedAtMs:i.startedAtMs,timings:i.timings,error:o}),ZU(e.onEvent,{flowId:n,walletId:t,authMethod:`email_otp`,...e.challengeId?{requestId:e.challengeId}:{},error:o}),o}}async loginWithLinkedEmailOtpWalletDomain(e){let t=await Zt(ko(e.walletId));if(t){if(t.auth.kind!==`email_otp`||t.walletAuthMethodId!==e.walletAuthMethodId||t.auth.email!==e.email.trim().toLowerCase()||t.auth.providerSubject!==e.providerSubjectId)throw Error(`Pending registration requires its exact email authentication method`);let n=this.deps.getContext(),r=op({defaults:n.configs.signing.sessionDefaults,override:void 0});if(r.kind===`disabled`)throw Error(`Pending registration recovery requires an enabled signing session policy`);await un({relayerUrl:e.relayUrl,sessionPolicy:r,pending:t,exactMethod:{kind:`email_otp`,challengeId:e.challengeId,otpCode:e.otpCode},signingSurface:n.signingEngine,nearContext:n,nearCompletion:`await`,onEvent:void 0}),n.signingEngine.setWalletAuthenticated({kind:`authenticated`,walletId:t.walletId,authMethod:`email_otp`}),this.deps.resumePendingAcknowledgements();return}let n=await this.emailOtpEmailHashHex(e.email);await Cx({context:this.deps.getContext(),walletIdInput:e.walletId,emailHashHex:n,walletAuthMethodId:e.walletAuthMethodId,providerSubjectId:e.providerSubjectId,challengeId:e.challengeId,otpCode:e.otpCode,relayUrl:e.relayUrl}),this.deps.resumePendingAcknowledgements()}async requestEmailCode(e){return await FU(this.flowDependencies(),e)}async startGoogleSignInDomain(e){return await PU(this.flowDependencies(),e)}flowDependencies(){return{configs:this.deps.getContext().configs,resolveGoogleEmailOtpProvider:this.resolveGoogleEmailOtpProviderDomain.bind(this),requestEmailOtpChallenge:this.requestUnlockChallenge.bind(this),prewarmEmailOtpYao:this.prewarmEmailOtpYaoDomain.bind(this),registerWallet:this.deps.registerWallet,loginWithEmailOtpEcdsaCapability:this.loginWithEmailOtpEcdsaCapabilityDomain.bind(this),loginWithEmailOtpEd25519YaoCapability:this.loginWithEmailOtpEd25519YaoCapabilityDomain.bind(this),resolveLinkedEmailOtpWalletAuth:this.resolveLinkedEmailOtpWalletAuthDomain.bind(this),loginWithLinkedEmailOtpWallet:this.loginWithLinkedEmailOtpWalletDomain.bind(this),getWalletSession:this.getGoogleEmailOtpWalletSessionDomain.bind(this)}}async resolveGoogleEmailOtpProviderDomain(e){return await mn({relayUrl:String(e.relayUrl||this.deps.getContext().configs.network.relayer.url||``).trim(),idToken:e.idToken,accountMode:e.accountMode,...e.loginWalletId?{loginWalletId:e.loginWalletId}:{},projectEnvironmentId:this.deps.getContext().configs.registration.projectEnvironmentId,publishableKey:this.deps.getContext().configs.registration.publishableKey,...e.restartRegistrationOffer===!0?{restartRegistrationOffer:!0}:{}})}async resolveLinkedEmailOtpWalletAuthDomain(e){let t=await Zt(ko(e.walletId));if(t)return t.auth.kind!==`email_otp`||t.auth.email!==e.email.trim().toLowerCase()||t.auth.providerSubject!==e.providerSubjectId?{kind:`rejected`,message:`Pending registration requires its exact email authentication method`}:{kind:`selected`,walletAuthMethodId:t.walletAuthMethodId,execution:`authority`};let n=await this.emailOtpEmailHashHex(e.email),r=await ob({walletIdInput:e.walletId,emailHashHex:n,provider:e.provider,providerSubjectId:e.providerSubjectId});switch(r.kind){case`none`:{let t=await G.listWalletAuthMethodsV2ForWallet(e.walletId),r=[];for(let e of t)e.kind===`email_otp`&&e.status===`active`&&e.emailHashHex.toLowerCase()===n&&r.push(e);let i=r[0];if(r.length===0||!i){let t=await G.listWalletAuthMethodsForWallet(e.walletId),r=[];for(let i of t)i.kind===`email_otp`&&i.status===`active`&&i.emailHashHex.toLowerCase()===n&&Ba(i.authority)&&i.authority.factor.provider===e.provider&&i.authority.factor.providerUserId===e.providerSubjectId&&r.push(i);let i=r[0];if(r.length===0||!i)return{kind:`none`};if(r.length!==1)return{kind:`rejected`,message:`Multiple active local Email OTP factors match the verified email`};let a=i.authority;return!a||!Ba(a)?{kind:`none`}:{kind:`selected`,walletAuthMethodId:String(a.bindingId),execution:`ordinary`}}if(r.length!==1)return{kind:`rejected`,message:`Multiple active local Email OTP authorities match the verified email`};let a=await G.getWalletAuthority(String(i.walletAuthorityId));return!a||a.state!==`active`||a.walletId!==i.walletId||a.authorityId!==i.walletAuthorityId||a.provenance.kind!==`wallet_registration`&&a.provenance.kind!==`wallet_recovery`?{kind:`none`}:(await eb({authMethod:i,provider:e.provider,providerSubjectId:e.providerSubjectId}),{kind:`selected`,walletAuthMethodId:String(i.walletAuthMethodId),execution:await $U(a.provenance,i.walletAuthMethodId),keyFamilies:a.signerActivations.keyFamilies})}case`selected`:return{kind:`selected`,walletAuthMethodId:String(r.selection.authMethod.walletAuthMethodId),execution:await $U(r.selection.authority.provenance,r.selection.authMethod.walletAuthMethodId),keyFamilies:r.selection.authority.signerActivations.keyFamilies};case`rejected`:return{kind:`rejected`,message:r.message};default:throw Error(`Linked Email OTP authority resolution is invalid`)}}async prewarmEmailOtpYaoDomain(){await this.deps.getContext().signingEngine.prewarmEmailOtpYao()}async getGoogleEmailOtpWalletSessionDomain(e){return await this.deps.getWalletSession(e)}async loginWithEmailOtpEd25519YaoCapabilityDomain(e){if(e.authoritySelector.kind!==`wallet_auth_method`)throw Error(`Email OTP Ed25519 unlock requires an exact wallet auth method`);let t=await this.emailOtpEmailHashHex(e.emailOtpAuthorityEmail),n=await this.deps.getContext().signingEngine.loginWithEmailOtpWalletCustodyEd25519Internal({...e,emailHashHex:t});await gk({signingEngine:this.deps.getContext().signingEngine,nearClient:this.deps.getContext().nearClient},{kind:`near_ed25519_wallet`,signer:n,walletAuthMethodId:eW(e.authoritySelector.walletAuthMethodId)})}async emailOtpEmailHashHex(e){let t=String(e||``).trim().toLowerCase();if(!t)throw Error(`[SeamsWeb][email-otp] verified email is required for auth-method hash`);return A(t)}};function uW(e){return e.operationCredential.walletSessionId}function dW(e,t,n,r){let i=oW(t,{flowId:n.flowId,walletId:n.walletId,challengeId:n.challengeId,chainTarget:n.chainTarget,progress:r});i&&e.add(i)}function fW(e,t,n){e.has(n.phase)||XU(t,n)}function pW(e){let t=i(e.rpId);if(!t.ok)throw Error(t.error.message);let n=m(e.credentialIdB64u);if(!n.ok)throw Error(n.error.message);let r=String(e.credentialPublicKeyB64u||``).trim();if(!r)throw Error(`Wallet add-passkey finalize omitted credential public key`);if(F(r).byteLength===0)throw Error(`Wallet add-passkey finalize returned an empty credential public key`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`Wallet add-passkey finalize returned an invalid credential counter`);let a=Date.now();return{version:`wallet_auth_method_v1`,kind:`passkey`,status:`active`,localStatus:`synced`,walletId:e.walletId,rpId:t.value,credentialIdB64u:n.value,credentialPublicKeyB64u:r,counter:e.counter,createdAtMs:a,updatedAtMs:a}}async function mW(e){await G.upsertWalletAuthMethod(pW(e))}async function hW(e){await mW(e);let t=c(e.walletAuthMethodId),n=r(e.walletAuthorityId);if(!t.ok||!n.ok)throw Error(`added passkey identity is invalid`);await _W({walletId:e.walletId,walletAuthMethodId:t.value,walletAuthorityId:n.value,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u,credentialPublicKeyB64u:e.credentialPublicKeyB64u,counter:e.counter});let i=new Date().toISOString();await G.upsertProfileAuthenticator({profileId:String(e.walletId),signerSlot:e.signerSlot,credentialId:e.credentialIdB64u,credentialPublicKey:F(e.credentialPublicKeyB64u),registered:i,syncedAt:i})}function gW(e){let t=i(e.rpId),n=m(e.credentialIdB64u),a=c(e.walletAuthMethodId),o=r(e.walletAuthorityId),s=String(e.credentialPublicKeyB64u||``).trim();if(!t.ok||!n.ok||!a.ok||!o.ok)throw Error(`Synced passkey auth-method identity is invalid`);if(!s||F(s).byteLength===0)throw Error(`Synced passkey auth method omitted credential public key`);if(!Number.isSafeInteger(e.counter)||e.counter<0)throw Error(`Synced passkey auth method returned an invalid credential counter`);let l=Date.now(),u=Eo({version:`wallet_auth_method_v2`,walletAuthMethodId:a.value,walletId:e.walletId,walletAuthorityId:o.value,kind:`passkey`,status:`active`,rpId:t.value,credentialIdB64u:n.value,credentialPublicKeyB64u:s,counter:e.counter,createdAtMs:l,updatedAtMs:l,activatedAtMs:l});if(u.kind!==`passkey`||u.status!==`active`)throw Error(`Synced passkey auth method branch is invalid`);return u}async function _W(e){await G.upsertWalletAuthMethodV2(gW(e))}function vW(e){if(!e||!(e instanceof PublicKeyCredential))throw Error(`Passkey registration did not return a public-key credential`);return e}function yW(e){return{challenge:F(e.challengeB64u),rp:{id:e.rpId,name:e.rpId},user:{id:F(e.user.idB64u),name:e.user.name,displayName:e.user.displayName},pubKeyCredParams:e.pubKeyCredParams.map(e=>({type:e.type,alg:e.alg})),authenticatorSelection:e.authenticatorSelection,timeout:e.timeoutMs,attestation:e.attestation,excludeCredentials:e.excludeCredentials.map(e=>({type:e.type,id:F(e.id)})),extensions:{prf:{eval:{first:F(e.extensions.prf.eval.firstB64u),second:F(e.extensions.prf.eval.secondB64u)}}}}}function bW(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Passkey custody worker returned no resealed envelope`);let t=e;return{nonceB64u:Ae(t.nonceB64u,`resealed envelope nonceB64u`),sealedCustodySecretB64u:_e(t.sealedCustodySecretB64u,`resealed envelope sealedCustodySecretB64u`),aadHashB64u:ue(t.aadHashB64u,`resealed envelope aadHashB64u`),ciphertextDigestB64u:ue(t.ciphertextDigestB64u,`resealed envelope ciphertextDigestB64u`)}}function xW(e){if(e.kind!==`unlocked_capability`)throw Error(`wallet custody reseal source is not an unlocked capability`);return e.capability}function SW(e){let t=m(e);if(!t.ok)throw Error(`Passkey registration credential id is invalid: ${t.error.message}`);return t.value}async function CW(e){let t=e.registrationCredential?e.registrationCredential:ws({credential:vW(await navigator.credentials.create({publicKey:yW(e.registration)})),firstPrfOutput:!0,secondPrfOutput:!1}),n=Ts(t);if(!n)throw Error(`New passkey did not return PRF.first`);let r=SW(t.rawId||t.id),i=C(Be(`wallet-custody-envelope`,24,`wallet custody envelope ids`));if(!i.ok)throw Error(i.error.message);let a=Yi({rpId:e.registration.rpId,credentialIdB64u:r}),o=mi(e.walletAuthMethodId),s=gi({walletId:e.existingEnvelope.walletId,envelopeId:i.value,factor:a,envelopeRevision:ce(1),binding:e.existingEnvelope.binding,ownership:o}),c=F(n),l=e.sealSource.kind===`factor_secret`?e.sealSource.existingFactorSecret.slice():null,u;try{u=bW(l===null?await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`resealWalletCustodyFromUnlockedCapability`,payload:{capability:xW(e.sealSource),replacementEnvelopeBindingJson:s,replacementFactorSecret:c.buffer},transfer:[c.buffer]}}):await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`linkWalletCustodyPasskey`,payload:{existingEnvelope:e.existingEnvelope,existingFactorSecret:l.buffer,replacementEnvelopeBindingJson:s,replacementFactorSecret:c.buffer},transfer:[l.buffer,c.buffer]}}))}finally{l&&l.byteLength>0&&l.fill(0),c.byteLength>0&&c.fill(0)}let d=(e.nowMs??Date.now)();return{registration:t,custodyEnvelope:$r(Zr({envelopeId:i.value,walletId:e.existingEnvelope.walletId,ownership:o,binding:e.existingEnvelope.binding,factor:a,envelopeRevision:ce(1),nonceB64u:u.nonceB64u,sealedCustodySecretB64u:u.sealedCustodySecretB64u,ciphertextDigestB64u:u.ciphertextDigestB64u,aadHashB64u:u.aadHashB64u,lifecycle:{state:`active`,activatedAtMs:d},createdAtMs:d,updatedAtMs:d}))}}async function wW(e){let t=await pc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.addAuthMethodIntentDigestB64u,intent:e.intent,auth:e.auth,authority:{kind:`passkey`}});if(!t.custodyEnvelope||!t.registration)throw Error(`Passkey add-auth-method start omitted custody envelope or registration options`);let n=await CW({registration:t.registration,walletAuthMethodId:e.walletAuthMethodId,existingEnvelope:t.custodyEnvelope,sealSource:e.sealSource,worker:e.worker,...e.createRegistrationCredential?{registrationCredential:await e.createRegistrationCredential(t.registration)}:{},nowMs:e.nowMs});return{finalized:await mc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodCeremonyId:t.addAuthMethodCeremonyId,webauthnRegistration:n.registration,custodyEnvelope:n.custodyEnvelope})}}async function TW(e){let t=await G.resolveSelectedWalletAuthority(String(e));if(t.kind!==`resolved`)return{kind:`unavailable`,reason:`selected wallet authority is ${t.kind}`};if(t.authMethod.status!==`active`)return{kind:`unavailable`,reason:`selected auth method is not active`};if(t.authority.state!==`active`)return{kind:`unavailable`,reason:`selected wallet authority is not active`};if(t.selection.lockState!==`unlocked`||t.selection.walletId!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.walletId!==e||t.authMethod.walletAuthorityId!==t.authority.authorityId||t.authority.walletId!==e)return{kind:`unavailable`,reason:`selected wallet authority identity is invalid`};let n;try{n=await K.readExactWithOperationCredential({walletId:e,authorityId:t.authority.authorityId,authMethodId:t.authMethod.walletAuthMethodId})}catch{return{kind:`unavailable`,reason:`exact Wallet Session state is corrupt`}}return n.kind===`found`?n.record.walletId!==e||n.record.authorityId!==t.authority.authorityId||n.record.authMethodId!==t.authMethod.walletAuthMethodId||n.record.authorityDigestB64u!==t.authority.authorityDigestB64u||n.record.authorityRevocationEpoch!==t.authority.revocationEpoch||n.record.expiresAtMs<=Date.now()?{kind:`unavailable`,reason:`exact Wallet Session identity is invalid or expired`}:{kind:`resolved`,sourceAuthMethod:t.authMethod,source:{walletAuthorityId:t.authMethod.walletAuthorityId,walletAuthMethodId:t.authMethod.walletAuthMethodId,walletSessionId:String(n.operationCredential.walletSessionId),authorityDigestB64u:String(t.authority.authorityDigestB64u),revocationEpoch:t.authority.revocationEpoch}}:{kind:`unavailable`,reason:`exact Wallet Session is ${n.kind}`}}function EW(e){return[{id:e.credentialIdB64u,type:`public-key`,transports:[]}]}async function DW(e){if(e.finalized.walletId!==e.walletId||e.finalized.rpId!==e.rpId||e.finalized.authMethod.kind!==`passkey`||e.finalized.authMethod.status!==`active`)throw Error(`Wallet add-passkey finalize returned a mismatched auth method`);return await mW({walletId:e.finalized.walletId,rpId:e.finalized.rpId,credentialIdB64u:e.finalized.authMethod.credentialIdB64u,credentialPublicKeyB64u:e.finalized.authMethod.credentialPublicKeyB64u,counter:e.finalized.authMethod.counter}),{ok:!0,walletId:e.finalized.walletId,rpId:e.finalized.rpId,walletAuthMethodId:e.walletAuthMethodId,authMethod:{kind:`passkey`,status:`active`}}}function OW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Un.bind(void 0,t)}}async function kW(e){let t=String(e.context.configs.network.relayer.url||``).trim();if(!t)throw Error(`registration.addPasskey requires relayer.url`);let n=$t(e.context.configs);if(!n)throw Error(`registration.addPasskey requires registration.publishableKey and registration.projectEnvironmentId`);let r=await TW(e.walletId);if(r.kind!==`resolved`)throw Error(`Wallet add-passkey requires a selected active source: ${r.reason}`);let i=await xc({relayerUrl:t,walletId:e.walletId,request:{walletId:e.walletId,rpId:e.rpId,authMethod:{kind:`passkey`,rpId:e.rpId},caller:{caller:`same_device_addition`,source:r.source}},auth:{publishableKey:n.publishableKey,environmentId:n.projectEnvironmentId}});if(await Ui(i.intent)!==i.addAuthMethodIntentDigestB64u)throw Error(`Add-auth-method intent digest mismatch`);if(i.intent.walletId!==e.walletId||i.intent.authMethod.kind!==`passkey`||i.intent.authMethod.rpId!==e.rpId)throw Error(`Add-auth-method intent identity changed`);let a=await G.getProfile(String(e.walletId));if(!a||!Number.isSafeInteger(a.defaultSignerSlot)||a.defaultSignerSlot<1)throw Error(`Wallet add-passkey requires an initialized wallet profile`);if(r.sourceAuthMethod.kind===`email_otp`)return await AW({context:e.context,walletId:e.walletId,rpId:e.rpId,relayerUrl:t,profile:a,sourceWalletAuthorityId:r.source.walletAuthorityId,sourceWalletAuthMethodId:r.source.walletAuthMethodId,intentResponse:i,...e.options?{options:e.options}:{}});let o=EW(r.sourceAuthMethod),s=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:i.addAuthMethodIntentDigestB64u,allowCredentials:o,includeSecondPrfOutput:!1}),c=Xc(s);if(!c||!o.some(e=>e.id===c))throw Error(`Wallet add-passkey selected a credential outside the authorized wallet`);let l=F(Zc(s,`Wallet add-passkey custody linking`));try{let n=await wW({relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:i.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:i.addAuthMethodIntentDigestB64u,intent:i.intent,auth:{kind:`webauthn_assertion`,rpId:e.rpId,credential:Os(s),expectedChallengeDigestB64u:i.addAuthMethodIntentDigestB64u},sealSource:{kind:`factor_secret`,existingFactorSecret:l},walletAuthMethodId:i.intent.targetWalletAuthMethodId,worker:OW(e.context),createRegistrationCredential:async t=>{let n=await e.context.signingEngine.requestRegistrationCredentialConfirmation({walletId:String(e.walletId),signerSlot:a.defaultSignerSlot,confirmerText:e.options?.confirmerText,confirmationConfigOverride:e.options?.confirmationConfig,registrationOptions:t});if(!n.confirmed)throw Error(`Wallet add-passkey registration was cancelled`);return n.credential}});return await DW({walletId:e.walletId,rpId:e.rpId,walletAuthMethodId:i.intent.targetWalletAuthMethodId,finalized:n.finalized})}finally{l.fill(0)}}async function AW(e){let t=zn(String(e.walletId));if(!t)throw Error(`Wallet add-passkey from an Email OTP source requires an unlocked wallet`);let n=async()=>await dc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.intentResponse.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u}),r=await n(),i=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:`add_passkey`,walletId:String(e.walletId),emailAddress:r.emailHint||`your email`,challengeId:r.challengeId,...r.emailHint?{emailHint:r.emailHint}:{},confirmerText:{title:`Enter email code to add a passkey`,body:`This one-time code confirms you can add a new passkey to this wallet.`},...e.options?.confirmationConfig?{confirmationConfigOverride:e.options.confirmationConfig}:{},onResend:n}),a=(await wW({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.intentResponse.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u,intent:e.intentResponse.intent,auth:{kind:`email_otp`,challengeId:i.challengeId,otpCode:i.otpCode,expectedChallengeDigestB64u:e.intentResponse.addAuthMethodIntentDigestB64u},sealSource:{kind:`unlocked_capability`,capability:t},walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,worker:OW(e.context),createRegistrationCredential:async t=>{let n=await e.context.signingEngine.requestRegistrationCredentialConfirmation({walletId:String(e.walletId),signerSlot:e.profile.defaultSignerSlot,confirmerText:e.options?.confirmerText,confirmationConfigOverride:e.options?.confirmationConfig,registrationOptions:t});if(!n.confirmed)throw Error(`Wallet add-passkey registration was cancelled`);return n.credential}})).finalized;if(a.walletId!==e.walletId||a.authMethod.kind!==`passkey`||a.authMethod.status!==`active`)throw Error(`Wallet add-passkey finalize returned a mismatched auth method`);return await hW({walletId:e.walletId,walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,walletAuthorityId:e.sourceWalletAuthorityId,rpId:String(e.rpId),credentialIdB64u:a.authMethod.credentialIdB64u,credentialPublicKeyB64u:a.authMethod.credentialPublicKeyB64u,counter:a.authMethod.counter,signerSlot:e.profile.defaultSignerSlot,credential:{id:a.authMethod.credentialIdB64u,rawId:a.authMethod.credentialIdB64u}}),await lc({walletId:e.walletId,walletAuthorityId:e.sourceWalletAuthorityId,sourceWalletAuthMethodId:e.sourceWalletAuthMethodId,targetAuthority:await H({authority:a.authority})}),{ok:!0,walletId:e.walletId,rpId:String(e.rpId),walletAuthMethodId:e.intentResponse.intent.targetWalletAuthMethodId,authMethod:{kind:`passkey`,status:`active`}}}async function jW(e){let t=ko(String(e.walletId||``).trim()),n=i(String(e.rpId||``).trim());if(!n.ok)throw Error(n.error.message);try{let r=await kW({context:e.context,walletId:t,rpId:n.value,options:e.options});return await e.options?.afterCall?.(!0,r),r}catch(t){let n=I(t);try{e.options?.onError?.(n)}finally{await e.options?.afterCall?.(!1)}throw n}}function MW(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Email OTP custody worker returned no resealed envelope`);let t=e;return{nonceB64u:Ae(t.nonceB64u,`resealed envelope nonceB64u`),sealedCustodySecretB64u:_e(t.sealedCustodySecretB64u,`resealed envelope sealedCustodySecretB64u`),aadHashB64u:ue(t.aadHashB64u,`resealed envelope aadHashB64u`),ciphertextDigestB64u:ue(t.ciphertextDigestB64u,`resealed envelope ciphertextDigestB64u`)}}async function NW(e){let t=await pc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodIntentGrant:e.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:e.addAuthMethodIntentDigestB64u,intent:e.intent,auth:e.auth,authority:e.authority});if(!t.custodyEnvelope)throw Error(`Email OTP add-auth-method start omitted the source custody envelope`);let n=t.custodyEnvelope,r=crypto.getRandomValues(new Uint8Array(32)),i=r.slice(),a;try{a=await e.context.signingEngine.prepareEmailOtpRegistrationEnrollmentMaterialInternal({relayUrl:e.relayerUrl,walletId:R(String(e.walletId)),userId:e.providerSubject,clientSecret32:r})}catch(e){throw i.fill(0),e}finally{r.fill(0)}let o=C(Be(`wallet-custody-envelope`,24,`wallet custody envelope ids`));if(!o.ok)throw Error(o.error.message);let s=Xi({enrollmentId:a.enrollmentId,enrollmentSealKeyVersion:a.enrollmentSealKeyVersion}),c=mi(e.walletAuthMethodId),l=ce(1),u=gi({walletId:n.walletId,envelopeId:o.value,factor:s,envelopeRevision:l,binding:n.binding,ownership:c}),d=e.existingFactorSecret.slice(),f;try{f=MW(await e.worker.requestOperation({kind:`walletCustodyCeremony`,request:{type:`linkWalletCustodyPasskey`,payload:{existingEnvelope:n,existingFactorSecret:d.buffer,replacementEnvelopeBindingJson:u,replacementFactorSecret:i.buffer},transfer:[d.buffer,i.buffer]}}))}finally{d.byteLength>0&&d.fill(0),i.byteLength>0&&i.fill(0)}let p=(e.nowMs??Date.now)(),m=$r(Zr({envelopeId:o.value,walletId:n.walletId,ownership:c,binding:n.binding,factor:s,envelopeRevision:l,nonceB64u:f.nonceB64u,sealedCustodySecretB64u:f.sealedCustodySecretB64u,ciphertextDigestB64u:f.ciphertextDigestB64u,aadHashB64u:f.aadHashB64u,lifecycle:{state:`active`,activatedAtMs:p},createdAtMs:p,updatedAtMs:p}));return{finalized:await mc({relayerUrl:e.relayerUrl,walletId:e.walletId,addAuthMethodCeremonyId:t.addAuthMethodCeremonyId,custodyEnvelope:m,emailOtpTarget:{kind:`new_enrollment`,enrollment:a.emailOtpEnrollment}})}}async function PW(e){if(!Ba(e.authority))throw Error(`Wallet add-email-code finalize returned a non-Email authority`);let t=c(e.walletAuthMethodId);if(!t.ok)throw Error(t.error.message);let n=r(e.walletAuthorityId);if(!n.ok)throw Error(n.error.message);let i=String(e.authority.verifier.emailHashHex||``).trim();if(!i)throw Error(`Wallet add-email-code finalize returned no verified email digest`);let a=String(e.authority.factor.providerUserId||``).trim();if(!a)throw Error(`Wallet add-email-code finalize returned no provider identity`);let o=w(e.emailAddress);if(!o.ok)throw Error(o.error.message);let s=Date.now();await G.upsertWalletAuthMethod({version:`wallet_auth_method_v1`,kind:`email_otp`,status:`active`,localStatus:`synced`,walletId:e.walletId,emailHashHex:i,registrationAuthorityId:a,authority:e.authority,createdAtMs:s,updatedAtMs:s}),await G.upsertWalletAuthMethodV2(Eo({version:`wallet_auth_method_v2`,walletAuthMethodId:t.value,walletId:e.walletId,walletAuthorityId:n.value,kind:`email_otp`,status:`active`,emailHashHex:i,registrationAuthorityId:a,createdAtMs:s,updatedAtMs:s,activatedAtMs:s}));let l=await G.retainVerifiedEmailOtpLocalPresentation({walletId:e.walletId,walletAuthMethodId:t.value,emailAddress:o.value});if(l.kind!==`retained`)throw Error(`Verified Email OTP presentation was not retained: ${l.reason}`)}function FW(e){let t=e.signingEngine.getSignerWorkerContext();return{requestOperation:Un.bind(void 0,t)}}function IW(e){return e}function LW(e){let t=String(e||``).trim().toLowerCase();if(!t||!t.includes(`@`))throw Error(`registration.addEmail requires an email address`);return t}async function RW(e){let t=String(e.context.configs.network.relayer.url||``).trim();if(!t)throw Error(`registration.addEmail requires relayer.url`);let n=$t(e.context.configs);if(!n)throw Error(`registration.addEmail requires registration.publishableKey and registration.projectEnvironmentId`);let r=LW(e.emailAddress),a=IW(r),o=i(String(e.context.signingEngine.getRpId()||``).trim());if(!o.ok)throw Error(`registration.addEmail ${o.error.message}`);let s=o.value,c=await TW(e.walletId);if(c.kind!==`resolved`)throw Error(`Wallet add-email-code requires a selected active source: ${c.reason}`);if(c.sourceAuthMethod.kind!==`passkey`)throw Error(`Wallet add-email-code requires a selected active passkey source`);let l=await xc({relayerUrl:t,walletId:e.walletId,request:{walletId:e.walletId,rpId:String(s),authMethod:{kind:`email_otp`,email:r},caller:{caller:`same_device_addition`,source:c.source}},auth:{publishableKey:n.publishableKey,environmentId:n.projectEnvironmentId}});if(await Ui(l.intent)!==l.addAuthMethodIntentDigestB64u)throw Error(`Add-auth-method intent digest mismatch`);if(l.intent.walletId!==e.walletId||l.intent.authMethod.kind!==`email_otp`||l.intent.authMethod.email!==r)throw Error(`Add-auth-method intent identity changed`);let u=await G.getProfile(String(e.walletId));if(!u||!Number.isSafeInteger(u.defaultSignerSlot)||u.defaultSignerSlot<1)throw Error(`Wallet add-email-code requires an initialized wallet profile`);let d=EW(c.sourceAuthMethod),f=await e.context.signingEngine.getAuthenticationCredentialsSerialized({subjectId:String(e.walletId),challengeB64u:l.addAuthMethodIntentDigestB64u,allowCredentials:d,includeSecondPrfOutput:!1}),p=Xc(f);if(!p||!d.some(e=>e.id===p))throw Error(`Wallet add-email-code selected a credential outside the authorized wallet`);let m=Zc(f,`Wallet add-email-code custody linking`),h=async()=>await dc({relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:l.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:l.addAuthMethodIntentDigestB64u}),g=await h(),_=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:`add_email_code`,walletId:String(e.walletId),emailAddress:r,challengeId:g.challengeId,...g.emailHint?{emailHint:g.emailHint}:{},...e.options?.confirmerText?{confirmerText:e.options.confirmerText}:{},...e.options?.confirmationConfig?{confirmationConfigOverride:e.options.confirmationConfig}:{},onResend:h}),v=await Nt({authMethod:{kind:`email_otp`,proofKind:`otp_challenge`,email:r,providerSubject:a,otpCode:_.otpCode,challengeId:_.challengeId},relayUrl:t,walletId:String(e.walletId),registrationIntentDigestB64u:l.addAuthMethodIntentDigestB64u}),y=F(m);try{let n=await NW({context:e.context,relayerUrl:t,walletId:e.walletId,addAuthMethodIntentGrant:l.addAuthMethodIntentGrant,addAuthMethodIntentDigestB64u:l.addAuthMethodIntentDigestB64u,intent:l.intent,auth:{kind:`webauthn_assertion`,rpId:s,credential:Os(f),expectedChallengeDigestB64u:l.addAuthMethodIntentDigestB64u},authority:{kind:`email_otp`,emailOtpRegistrationProof:v.proof},existingFactorSecret:y,walletAuthMethodId:l.intent.targetWalletAuthMethodId,providerSubject:a,worker:FW(e.context)});if(n.finalized.walletId!==e.walletId||n.finalized.authMethod.kind!==`email_otp`||n.finalized.authMethod.status!==`active`)throw Error(`Wallet add-email-code finalize returned a mismatched auth method`);return await PW({walletId:e.walletId,walletAuthMethodId:l.intent.targetWalletAuthMethodId,walletAuthorityId:c.source.walletAuthorityId,emailAddress:r,authority:n.finalized.authority}),await lc({walletId:e.walletId,walletAuthorityId:c.source.walletAuthorityId,sourceWalletAuthMethodId:c.source.walletAuthMethodId,targetAuthority:await H({authority:n.finalized.authority})}),{ok:!0,walletId:e.walletId,emailAddress:r,walletAuthMethodId:l.intent.targetWalletAuthMethodId,authMethod:{kind:`email_otp`,status:`active`}}}finally{y.fill(0)}}async function zW(e){let t=ko(String(e.walletId||``).trim());try{let n=await RW({context:e.context,walletId:t,emailAddress:e.emailAddress,options:e.options});return await e.options?.afterCall?.(!0,n),n}catch(t){let n=I(t);try{e.options?.onError?.(n)}finally{await e.options?.afterCall?.(!1)}throw n}}function BW(e){return{registerWallet:VW.bind(null,e),getNearAccountState:HW.bind(null,e),addSigner:UW.bind(null,e),addPasskey:WW.bind(null,e),removeAuthMethod:GW.bind(null,e),addEmail:KW.bind(null,e)}}async function VW(e,t){let n=e();return await An({context:n,authMethod:t.authMethod,wallet:t.wallet,signerSelection:t.signerSelection,options:t.options||{},authenticatorOptions:gs(n.configs.webauthn.authenticatorOptions)})}async function HW(e,t){let n=R(t.walletId);return on(n)||await e().signingEngine.getWalletNearProvisioningState(n)}async function UW(e,t){return await lr({context:e(),walletId:t.walletId,rpId:t.rpId,signerSelection:t.signerSelection,options:t.options||{}})}async function WW(e,t){return await jW({context:e(),walletId:t.walletId,rpId:t.rpId,options:t.options})}async function GW(e,t){return await zR({context:e(),walletId:t.walletId,walletAuthMethodId:t.walletAuthMethodId})}async function KW(e,t){return await zW({context:e(),walletId:t.walletId,emailAddress:t.emailAddress,options:t.options})}async function qW(e){let{context:t,pending:n,options:r}=e,i=String(n.walletId);pr(r?.onEvent,i,{phase:W.STEP_01_STARTED,status:`started`,authMethod:`passkey`});try{if(n.auth.kind!==`passkey`)throw Error(`Pending registration requires its founding email authentication method`);let e=r?.unlockSelection?.mode===`ed25519_only`||r?.unlockSelection?.mode===`ed25519_and_ecdsa`;if(e&&n.signerPlanKind!==`near_ed25519_and_evm_family_ecdsa`)throw Error(`wallet unlock is missing the requested capability subject`);let a=op({defaults:t.configs.signing.sessionDefaults,override:r?.signingSession});if(a.kind===`disabled`)throw Error(`Pending registration recovery requires an enabled signing session policy`);let o=await un({relayerUrl:t.configs.network.relayer.url,sessionPolicy:a,pending:n,exactMethod:{kind:`passkey`},signingSurface:t.signingEngine,nearContext:t,nearCompletion:e?`await`:`background`,onEvent:r?.onEvent}),s=await JW({context:t,walletId:n.walletId,requireNear:e,signingSession:o.signingSession});return pr(r?.onEvent,i,{phase:W.STEP_06_SESSION_READY,status:`succeeded`,authMethod:`passkey`}),await Bn({context:t,authMethod:`passkey`,unlockSubjectId:i,loginResult:s,onEvent:r?.onEvent,afterCall:r?.afterCall})}catch(e){let t=I(e);return await Ln({unlockSubjectId:i,message:t.message,error:t,cancelled:wt(t),onEvent:r?.onEvent,onError:r?.onError,afterCall:r?.afterCall})}}async function JW(e){if(!e.requireNear)return{success:!0,kind:`ecdsa_wallet_unlocked`,walletId:e.walletId,signingSession:e.signingSession};let t=on(e.walletId);if(t?.status!==`near_ready`)throw Error(t?.status===`near_failed_retryable`?t.error:`Pending NEAR registration did not establish the requested account`);let n=await mS(e.context,e.walletId,new J);if(n.appIdentity.kind!==`resolved`||!n.appIdentity.nearAccountId||n.appIdentity.nearAccountId!==t.nearAccountId)throw Error(`Pending NEAR registration did not establish the requested account`);return{success:!0,kind:`near_wallet_unlocked`,walletId:e.walletId,nearAccountId:n.appIdentity.nearAccountId,loggedInNearAccountId:n.appIdentity.nearAccountId,operationalPublicKey:n.appIdentity.nearOperationalPublicKey,signingSession:e.signingSession}}function YW(e){return{unlock:eG.bind(null,e),lock:tG.bind(null,e),getSession:nG.bind(null,e),getRecentUnlocks:iG.bind(null,e),hasPasskey:rG}}function XW(e){return e.kind===V.passkey&&e.status===`active`}function ZW(e){switch(e?.mode){case`ed25519_only`:return{kind:`near_ed25519_only`};case`ecdsa_only`:return{kind:`evm_family_ecdsa_only`};case`ed25519_and_ecdsa`:case void 0:return{kind:`all_registered_mpc`}}throw Error(`wallet unlock selection is unsupported`)}async function QW(e){let t=await Ly({walletId:e.walletId,requestedCapabilityFamilies:ZW(e.selection)});switch(t.kind===`missing_requested_capability_subject`&&(await Sr({relayerUrl:e.relayerUrl}),t=await Ly({walletId:e.walletId,requestedCapabilityFamilies:ZW(e.selection)})),t.kind){case`resolved`:return t.subjectSet;case`missing_requested_capability_subject`:throw Error(`wallet unlock is missing the requested capability subject`);case`capability_subject_resolution_failed`:throw Error(`wallet unlock subject resolution failed: ${t.reason}`)}throw Error(`wallet unlock subject resolution returned an unknown result`)}function $W(e){let t=null;for(let n of e.subjects)if(n.kind===`near_ed25519_wallet`){if(t)throw Error(`wallet unlock resolved multiple NEAR Ed25519 subjects`);t=n}return t}async function eG(e,t,n){let r=String(t||``).trim();if(!r)throw Error(`unlock requires walletId`);let i=e(),a=await Zt(R(r));if(a)return await qW({context:i,pending:a,options:n});let o=await QW({relayerUrl:i.configs.network.relayer.url,walletId:r,selection:n?.unlockSelection}),s=await Qb(i,o,n);if(s?.success){let e=$W(o);e&&await i.signingEngine.activateAuthenticatedWalletState({walletId:e.walletId,nearAccountId:e.nearAccountId,signerSlot:e.signerSlot,nearClient:i.nearClient})}return await i.signingEngine.warmCriticalResources({kind:`none`}),s}async function tG(e){await mC(e())}async function nG(e,t){return await mS(e(),t,new J)}async function rG(e){let t=String(e||``).trim();if(!t)return!1;try{return(await G.listWalletAuthMethodsV2ForWallet(t)).some(XW)}catch{return!1}}async function iG(e){return await sC(e())}async function aG(e,t,n){let r=R(t.walletSession.walletId);return await e().signingEngine.scheduleRouterAbEcdsaDerivationLoginPresignaturePrefill({walletId:r,chainTarget:t.chainTarget},n)}async function oG(e){switch(e.state.kind){case`active_session`:break;case`wallet_unlocked_without_signing_session`:if(e.state.reason!==`exhausted`)return;break;case`wallet_locked`:case`wallet_authenticated_identity_unresolvable`:case`expired_session`:return;default:e.state;return}let t=Ir({walletId:e.state.walletId}),n=new J,r=[];for(let i of e.chainTargets)r.push(e.prefill({walletSession:t,chainTarget:i},n));await Promise.all(r)}function sG(e){switch(e.kind){case`ecdsa`:return{kind:`ecdsa`,walletSession:Ir(e.walletSession),chainTarget:jr(e.chainTarget)};case`ed25519`:return{kind:`ed25519`,walletSession:Ir(e.walletSession),nearAccount:Nr(e.nearAccount.accountId)}}}function cG(e){switch(e.kind){case`ecdsa`:return{kind:`ecdsa`,laneIdentity:Dc(e.laneIdentity)};case`ed25519`:{let t=p(e.materialActivation);if(!t.ok)throw Error(t.error.message);return{kind:`ed25519`,laneIdentity:kc(e.laneIdentity),materialActivation:t.value}}}}function lG(e,t){let n={...e.options,theme:e.options.theme??t};switch(e.kind){case`ecdsa`:{let t=Dc(e.laneIdentity);if(String(t.signer.walletId)!==String(e.walletSession.walletId))throw Error(`[SeamsWeb] key export lane wallet does not match wallet session`);if(!Pr(t.signer.chainTarget,e.chainTarget))throw Error(`[SeamsWeb] key export lane chain target does not match request target`);return{kind:`ecdsa`,chainTarget:e.chainTarget,walletSession:e.walletSession,laneIdentity:t,options:n}}case`ed25519`:{let t=kc(e.laneIdentity),r=p(e.materialActivation);if(!r.ok)throw Error(r.error.message);if(String(t.signer.account.wallet.walletId)!==String(e.walletSession.walletId))throw Error(`[SeamsWeb] Ed25519 export lane wallet does not match wallet session`);if(String(t.signer.account.nearAccountId)!==String(e.nearAccount.accountId))throw Error(`[SeamsWeb] Ed25519 export lane does not match the NEAR account`);return{kind:`ed25519`,nearAccount:Nr(e.nearAccount.accountId),walletSession:e.walletSession,laneIdentity:t,materialActivation:r.value,options:n}}}}function uG(e,t){let n=t;return{locale:Ie(n.locale??e.locale),theme:Je({value:n.theme,fallback:e.theme,legacyTokens:n.tokens}),palette:qe({value:n.palette,fallback:e.palette})}}function dG(e,t){t.event===`registration.near_provisioning_changed`&&e(t)}function fG(e){switch(e.kind){case`completed`:return;case`pending`:console.warn(`[SeamsWeb] pending wallet recovery replay remains pending:`,e.recoveryOperationId,e.failure);return;case`discarded`:console.warn(`[SeamsWeb] pending wallet recovery was refused and discarded:`,e.recoveryOperationId);return;case`corrupt`:console.warn(`[SeamsWeb] pending wallet recovery replay record is corrupt:`,e.recoveryOperationId);return}}function pG(e){e().catch(mG)}function mG(e){console.warn(`[SeamsWeb] pending linked-device acknowledgement replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}var hG=class{signingEngine;nearClient;configs;appearance;theme;prefillRestoredSession;recovery;devices;keys;preferences;auth;placement;registration;near;tempo;evm;deviceLinkingDispose;resumePendingAcknowledgementsV1;constructor(e,t){this.configs=e,hs({mode:`wallet`}),this.nearClient=t||new kd(N(this.configs.network.chains));let n=IE(G),r=new jR(this.configs,this.nearClient,{managerStores:n.managerStores,signingEngineStores:n.signingEngineStores,sealedSigningSessionStore:n.sealedSigningSessionStore,ed25519YaoPublicCapabilityReferences:n.ed25519YaoPublicCapabilityReferences,createRuntime:Bw,initializeRuntime:RE,shouldPrewarmUiConfirmUi:_G});this.signingEngine=r,this.appearance=this.configs.ui.appearance,this.theme=this.appearance.theme.mode;try{this.signingEngine.setAppearance(this.appearance)}catch{}let i=this.signingEngine.getUserPreferences(),a=zw(r.getSignerWorkerContext()),o=QC({http:a.http,relayerUrl:String(this.configs.network.relayer?.url||``).trim(),walletSessions:K,resolveSelectedWalletAuthority:G.resolveSelectedWalletAuthority.bind(G),readWalletAuthenticationState:r.readWalletAuthenticationState.bind(r),readUnlockedEd25519ExportRootCapabilityV1:In});this.placement=kw({lockWallet:this.lockAfterWalletMove.bind(this),signingEngine:r,managementRequest:o.managementRequest,readAuthentication:r.readWalletAuthenticationState.bind(r)});let s=BH({platform:a,ownerAuthorities:o,configs:this.configs,signingEngine:r,getContext:this.getContext.bind(this)});this.deviceLinkingDispose=s.dispose,this.resumePendingAcknowledgementsV1=s.resumePendingAcknowledgementsV1;let c=BW(this.getContext.bind(this)),l=YW(this.getContext.bind(this));this.prefillRestoredSession=aG.bind(null,this.getContext.bind(this));let u=sW({getContext:this.getContext.bind(this),registerWallet:c.registerWallet,getWalletSession:l.getSession,resumePendingAcknowledgements:this.resumePendingAcknowledgementsAfterExactUnlockV1.bind(this)}),d={flush:gG,setCurrentWallet:i.setCurrentWallet.bind(i),getCurrentWalletId:i.getCurrentWalletId.bind(i),onConfirmationConfigChange:i.onConfirmationConfigChange.bind(i),onCurrentWalletChange:i.onCurrentWalletChange.bind(i),setConfirmationBehavior:i.setConfirmationBehavior.bind(i),setConfirmationConfig:i.setConfirmationConfig.bind(i),getConfirmationConfig:i.getConfirmationConfig.bind(i)},f={resolveExactKeyExportLane:this.resolveExactKeyExportLaneDomain.bind(this),exportKeypairWithUI:this.exportKeypairWithUIDomain.bind(this)},p=TO({createNearCommands:_E.bind(null,this.getContext.bind(this)),createEvmFamilyCommands:yE.bind(null,this.getContext.bind(this)),nearClient:this.nearClient,configs:this.configs,preferences:d,auth:{...l,...u},registration:{...c,onNearAccountChange:this.onNearAccountChange.bind(this)},recovery:{syncAccount:this.syncAccountDomain.bind(this),getCodeStatus:this.getCodeStatusDomain.bind(this),confirmBackup:this.confirmBackupDomain.bind(this),requestWalletCustodyEmailOtpChallenge:this.requestWalletCustodyEmailOtpChallengeDomain.bind(this),rotateCodes:this.rotateCodesDomain.bind(this)},devices:{...s.domain},keys:f});this.preferences=d,this.auth=p.auth,this.registration=p.registration,this.recovery=p.recovery,this.devices=p.devices,this.keys=f,this.near=p.near,this.tempo=p.tempo,this.evm=p.evm,this.resumePendingRegistrationOnStartup(),pG(s.resumePendingAcknowledgementsV1)}async prefillRestoredWalletSession(e){await oG({state:e,chainTargets:this.configuredChainTargets(),prefill:this.prefillRestoredSession})}async lockAfterWalletMove(){MC(),await this.auth.lock()}onSdkLifecycleEvent(e){return this.signingEngine.onSdkLifecycleEvent(e)}getContext(){return{signingEngine:this.signingEngine,nearClient:this.nearClient,configs:this.configs,theme:this.theme,resumePendingAcknowledgementsV1:this.resumePendingAcknowledgementsAfterExactUnlockV1.bind(this)}}resumePendingAcknowledgementsAfterExactUnlockV1(){pG(this.resumePendingAcknowledgementsV1)}async resumePendingRegistrationOnStartup(){if(G.isDisabled())return;let e=String(this.configs.network.relayer?.url||``).trim();if(e){try{let t=await Sr({relayerUrl:e});for(let e of t)e.kind===`failed`&&console.warn(`[SeamsWeb] pending registration replay remains pending:`,e.registrationCeremonyId,e.error)}catch(e){console.warn(`[SeamsWeb] pending registration startup replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}try{let t=await Zl({relayUrl:e});for(let e of t)fG(e)}catch(e){console.warn(`[SeamsWeb] pending wallet recovery startup replay failed:`,e instanceof Error?e.message:String(e||`unknown error`))}}}dispose(){this.deviceLinkingDispose(),this.signingEngine.dispose()}setTheme(e){e!==`light`&&e!==`dark`||this.setAppearance({theme:{...this.appearance.theme,mode:e}})}chainTarget(e){return Zw(this.configs.network.chains,e)}configuredChainTargets(){return Fr(this.configs.network.chains)}setAppearance(e){let t=uG(this.appearance,e);this.appearance=t,this.theme=t.theme.mode;try{this.signingEngine.setAppearance(t)}catch{}try{document.documentElement.setAttribute(`data-seams-theme`,this.theme)}catch{}}setWalletIframeSurfaceMeasurementBinding(e){this.signingEngine.setWalletIframeSurfaceMeasurementBinding(e)}async syncAccountDomain(e){let t=e.walletId?ko(e.walletId):null;return await ZT(this.getContext(),t?String(t):null,e.options)}onNearAccountChange(e){return this.onSdkLifecycleEvent(dG.bind(null,e))}async getCodeStatusDomain(e){let t=String(this.configs.network.relayer.url||``).trim(),n=e.authorization.kind===`passkey`?await of({relayUrl:t,walletId:e.walletId,rpId:this.configs.wallet.rpId}):await cf({context:this.getContext(),relayUrl:t,walletId:e.walletId});return n.kind===`ready`?{...n,pendingLocalBackup:await $c.has(e.walletId)}:n}async preloadedCodeStatusDomain(e){return e}async confirmBackupDomain(e){let t=String(this.configs.network.relayer.url||``).trim(),n=this.getCodeStatusDomain.bind(this,e);if(e.authorization.kind===`email_otp`){let e=await n();if(e.kind!==`ready`)throw Error(e.message);n=this.preloadedCodeStatusDomain.bind(this,e)}let r=await Qc({walletId:e.walletId,loadStatus:n,loadPendingBackup:this.loadPendingWalletRecoveryCodeBackupRequest.bind(this,e.walletId)},this.signingEngine.getWalletIframeSurfaceMeasurementBinding(),{appearance:this.appearance});if(r.kind!==`wallet_recovery_codes_backed_up_v1`)throw Error(`Pending wallet recovery-code backup was not completed`);let i=e.authorization.kind===`passkey`?await uf({relayUrl:t,walletId:e.walletId,rpId:this.configs.wallet.rpId,expectedIssuedAtMs:r.issuedAtMs}):await mf({context:this.getContext(),relayUrl:t,walletId:e.walletId,expectedIssuedAtMs:r.issuedAtMs});return i.kind===`acknowledged`&&await $c.deleteIssuedAtMs(e.walletId,r.issuedAtMs),i}async loadPendingWalletRecoveryCodeBackupRequest(e){let t=await $c.read(e);if(!t)return null;if(t.kind!==`ready`)throw Error(`Recovery codes are awaiting a verified server issuance. Retry registration.`);return{kind:`wallet_recovery_code_backup_request_v1`,walletId:t.walletId,recoveryCodes:t.recoveryCodes,continuation:`pending_backup_must_finish`,issuedAtMs:t.issuedAtMs}}async requestWalletCustodyEmailOtpChallengeDomain(e){return await lf({relayUrl:String(this.configs.network.relayer.url||``).trim(),...e})}async rotateCodesDomain(e){let t=String(this.configs.network.relayer.url||``).trim();return await uD({context:this.getContext(),relayUrl:t,walletId:e.walletId,authorization:e.authorization})}async signTempoFeeTokenPreferenceInternal(e){let t=EE(e),n=await this.signingEngine.signEvmFamily({...e,request:t});if(n.chain!==`evm`||n.kind!==`eip1559`)throw Error(`[SeamsWeb][tempo] expected EVM FeeManager result, received ${n.chain}`);return n}async resolveExactKeyExportLaneDomain(e){let t=sG(e);if(eT(this.configs,t),!String(t.walletSession.walletId||``).trim())throw Error(`[SeamsWeb] key export lane resolution requires wallet session context`);return cG(await this.signingEngine.resolveExactKeyExportLane(t))}async exportKeypairWithUIDomain(e){let t=lG(e,this.theme);if(eT(this.configs,t),!String(t.walletSession.walletId||``).trim())throw Error(`[SeamsWeb] key export requires wallet session user context`);await this.signingEngine.exportKeypairWithUI(t)}};async function gG(){}function _G(e){return!(typeof window>`u`||window.Worker===void 0||e&&e!==window.location.origin)}const vG=`seams-theme-overrides`,yG=[`.seams-wallet-ui`,`.seams-auth-menu-surface`,`.seams-host-themed-dialog`],bG=yG.join(`,
2
- `),xG=yG.map(e=>`${e}[theme="light"],\n:root[data-seams-theme="light"] ${e}:not([theme="dark"])`).join(`,
3
- `);let SG=null;function CG(){return SG||=Sf({doc:document,baseCss:``,dynamicStyleDataAttr:`data-seams-theme-overrides`,nonce:()=>xf()}),SG}function wG(e){let t=e.trim();return t&&/^[A-Za-z][A-Za-z0-9_-]*$/.test(t)?t:null}function TG(e){let t=e.trim();return!t||t.length>1024||/[{};\n\r]/.test(t)?null:t}function EG(e,t){let n=[];for(let[r,i]of Object.entries(e)){let e=wG(r);if(!e)continue;let a=TG(i);a&&n.push(` --seams-${t}-${e}: ${a} !important;`)}return n}function DG(e){let t=e.theme.mode,n=e.theme.colors,r=[...EG(n,`colors`),...EG(e.theme.shape??{},`shape`)],i=[];if(r.length>0){let e=t===`light`?xG:bG;i.push(`${e} {\n${r.join(`
4
- `)}\n}`)}let a=i.join(`
5
-
6
- `).trim();if(!a){CG().deleteDynamicRule(vG);return}CG().setDynamicRule(vG,a)}function OG(){return{parentOrigin:null,port:null,configuration:{kind:`unconfigured`},preferencesRevision:0,sessionObserver:null,nearClient:null,walletRuntime:null,prefsUnsubscribe:null,lifecycleSource:null,lifecycleUnsubscribe:null,lifecycleListener:null,expiredSessionsByWallet:new Map,surfaceMeasurementBinding:{kind:`disabled`}}}function kG(e){let{configuration:t}=e;if(t.kind===`unconfigured`)throw Error(`Wallet service not configured. Call PM_SET_CONFIG first.`);let n=N(t.config.network.chains);return e.nearClient||=new kd(n),e.walletRuntime||(bl(!0),e.walletRuntime=new hG(t.config,e.nearClient),AG(e)),e.walletRuntime}function AG(e){try{let t=e.walletRuntime;if(!t)return;let n=t.theme;(n===`light`||n===`dark`)&&document.documentElement.setAttribute(`data-seams-theme`,n)}catch{}}function jG(e,t){let n=nt(e.configuration.kind===`configured`?e.configuration.config:null),r=nt(t.config);e.configuration=t;let i=t.config.ui.appearance,a=i.theme.mode;try{document.documentElement.setAttribute(`data-seams-theme`,a),document.documentElement.lang=i.locale??`en`,DG(i)}catch{}if(e.walletRuntime&&r===n)try{e.walletRuntime.setAppearance(i)}catch{}if(tt(MG(t.assetsBaseUrl)),r!==n){let t=e.walletRuntime;e.walletRuntime=null,e.sessionObserver?.dispose(),e.sessionObserver=null,e.lifecycleSource=null,e.surfaceMeasurementBinding={kind:`disabled`},e.prefsUnsubscribe?.(),e.lifecycleUnsubscribe?.(),e.prefsUnsubscribe=null,e.lifecycleUnsubscribe=null,e.nearClient=null,t?.dispose()}}function MG(e){let t=window.location.origin;try{let n=new URL(e,t);if(n.origin===t)return n.href.endsWith(`/`)?n.href:`${n.href}/`}catch{}return new URL(`/sdk/`,t).href}function NG(e,t){e.lifecycleSource!==t&&(e.lifecycleUnsubscribe?.(),e.lifecycleSource=t,e.lifecycleUnsubscribe=t.onSdkLifecycleEvent(IG.bind(null,e,t)))}function PG(e,t){e.lifecycleListener=t,e.walletRuntime&&NG(e,e.walletRuntime)}function FG(e){throw Error(`Unhandled SDK lifecycle event: ${String(e)}`)}function IG(e,t,n){if(e.lifecycleSource===t)switch(n.event){case`signing_session.expired`:{let t=e.expiredSessionsByWallet.get(n.walletId);if(t?.has(n.walletSessionId))return;t?t.add(n.walletSessionId):e.expiredSessionsByWallet.set(n.walletId,new Set([n.walletSessionId])),e.lifecycleListener?.(n);return}case`registration.near_provisioning_changed`:e.lifecycleListener?.(n);return;default:return FG(n)}}let LG=null;const RG=new Map;let zG=null;const BG=new Set([`PM_REGISTER_WALLET`,`PM_ADD_WALLET_SIGNER`,`PM_ADD_PASSKEY`,`PM_ADD_EMAIL_OTP`,`PM_REVOKE_AUTH_METHOD`,`PM_REVOKE_LINKED_DEVICE`,`PM_SIGN_TX_WITH_ACTIONS`,`PM_SIGN_AND_SEND_TX`,`PM_SIGN_DELEGATE_ACTION`,`PM_SIGN_NEP413`,`PM_UNLOCK`,`PM_SIGN_TEMPO`,`PM_ROTATE_WALLET_RECOVERY_CODES`,`PM_GET_WALLET_RECOVERY_CODE_STATUS`,`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`,`PM_SYNC_ACCOUNT_FLOW`,`PM_EXPORT_KEYPAIR_UI`,`PM_SCAN_AND_LINK_DEVICE`,`PM_START_DEVICE2_LINKING_FLOW`]);function VG(e,t){e.post({type:`SURFACE_MEASUREMENT`,payload:t})}function HG(e){if(e.type!==`PM_EXPORT_KEYPAIR_UI`)return;let t=e.payload?.options?.variant;return t===`modal`||t===`drawer`?t:`drawer`}function UG(e){let t;try{t=Ct(e.req.requestId)}catch{return null}let n=HG(e.req);return{requestId:t,binding:{kind:`wallet_iframe`,...e.transactionReview?{transactionReview:e.transactionReview}:{},requestId:t,postMeasurement:VG.bind(null,e),...n?{hostSurfaceVariant:n}:{}}}}function WG(e){return BG.has(e.req.type)}function GG(e,t){let n=e.surfaceMeasurementBinding;n.kind!==`wallet_iframe`||n.requestId!==t||(e.surfaceMeasurementBinding={kind:`disabled`},e.walletRuntime?.setWalletIframeSurfaceMeasurementBinding({kind:`disabled`}))}function KG(e,t){e.surfaceMeasurementBinding=t,kG(e).setWalletIframeSurfaceMeasurementBinding(t)}function qG(e){return zG!==e.executionGeneration&&(RG.clear(),zG=e.executionGeneration),LG||=OG(),e.onConfigurationChanged=JG.bind(null,e),LG.parentOrigin=e.parentOrigin,LG.port!==e.port&&(LG.sessionObserver?.dispose(),LG.sessionObserver=null),LG.port=e.port,e.parentOrigin!==null&&AC(e.parentOrigin),PG(LG,oK.bind(null,LG)),e.configuration.kind===`configured`&&jG(LG,e.configuration),LG}function JG(e){!LG||e.configuration.kind===`unconfigured`||qG(e)}function YG(e){let t=e.walletRuntime,n=kG(e);if(NG(e,n),t===n)return ZG(e,n),n;let r=n.preferences;e.prefsUnsubscribe?.();let i=tK.bind(null,e,n),a=r.onConfirmationConfigChange?.(i)||null,o=r.onCurrentWalletChange?.(i)||null;return e.prefsUnsubscribe=()=>{try{a?.()}catch{}try{o?.()}catch{}},ZG(e,n),Promise.resolve().then(i).catch(()=>{}),n}function XG(e,t,n,r){e.walletRuntime!==t||e.port!==n||n.postMessage(r)}function ZG(e,t){if(e.sessionObserver)return e.sessionObserver;if(!e.port)throw Error(`Wallet session observation requires a connected parent`);return e.sessionObserver=new ap(t,XG.bind(null,e,t,e.port),e.expiredSessionsByWallet,mS.bind(null,t.getContext())),e.sessionObserver}function QG(e,t,n,r){return ZG(e,nK(e,t)).observe(n,r)}function $G(e,t){return ZG(e,nK(e,t)).publishCurrentSession()}function eK(e,t){return{walletId:t.preferences.getCurrentWalletId(),confirmationConfig:t.preferences.getConfirmationConfig(),revision:e.preferencesRevision}}function tK(e,t){e.walletRuntime===t&&(e.preferencesRevision+=1,e.port?.postMessage({type:`PREFERENCES_CHANGED`,payload:eK(e,t)}))}function nK(e,t){if(t.executionGeneration!==t.state.executionGeneration)throw Error(`Wallet configuration changed during request`);return YG(e)}function rK(e,t){return eK(e,nK(e,t))}function iK(e,t){return{getWalletRuntime:nK.bind(null,e,t),readPreferences:rK.bind(null,e,t),observeSession:QG.bind(null,e,t),publishCurrentSession:$G.bind(null,e,t),post:aK.bind(null,t),postProgress:(e,n)=>{e&&aK(t,{type:`PROGRESS`,requestId:e,payload:n})},isCancelled:t.isCancelled,respondIfCancelled:t.respondIfCancelled}}function aK(e,t){e.executionGeneration===e.state.executionGeneration&&(yf(t),e.post(t))}function oK(e,t){e.sessionObserver?.onLifecycleEvent(t)}async function sK(e,t){if(e.respondIfCancelled(e.req.requestId))return;let n=qG(e.state),r=ZG(n,nK(n,e));r.beginOperation(),bf(e.req,e.post);let i=WG(e)?UG(e):null;i&&KG(n,i.binding);try{let r=nK(n,e);await Af(e.req,r.preferences.getCurrentWalletId());let i=RG.get(t);i||(i=t(iK(n,e)),RG.set(t,i));let a=i[e.req.type];if(!a)throw Error(`Unsupported wallet iframe request type: ${e.req.type}`);await a(e.req),e.executionGeneration===e.state.executionGeneration&&_f(e.req)}catch(t){throw e.executionGeneration===e.state.executionGeneration&&vf(e.req.requestId,t),t}finally{r.endOperation(),i&&e.executionGeneration===e.state.executionGeneration&&GG(n,i.requestId)}}function cK(e,t){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0}})}function lK(e,t,n){e.post({type:`PM_RESULT`,requestId:t,payload:{ok:!0,result:n}})}function uK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n)}}function dK(e,t,n){return{...n||{},onEvent:n=>e.postProgress(t,n),onTimingSpan:n=>e.postProgress(t,n)}}export{Z as C,Ff as S,Of as T,wx as _,sK as a,ip as b,QT as c,jC as d,MC as f,tx as g,ab as h,dK as i,RC as l,pC as m,lK as n,EE as o,PC as p,uK as r,ST as s,cK as t,BC as u,Qb as v,kf as w,Hf as x,Ly as y};