@seams/wallet 0.9.2 → 0.9.4

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 (322) hide show
  1. package/README.md +3 -3
  2. package/THIRD_PARTY_NOTICES.md +33 -1
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +4 -9
  5. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +10 -2
  6. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +6 -1
  7. package/dist/esm/react/components/VoiceAssistantCard.css +313 -0
  8. package/dist/esm/react/components/VoiceAssistantCard.js +150 -0
  9. package/dist/esm/react/index.js +3 -1
  10. package/dist/esm/react/styles/styles.css +314 -0
  11. package/dist/esm/react/styles.css +1 -0
  12. package/dist/esm/sdk/{ConfirmationDrawer-DY0_yeUV.js → ConfirmationDrawer-Frj3uEee.js} +1 -1
  13. package/dist/{public/sdk/NonceCoordinator-CFFq8-Q9.js → esm/sdk/NonceCoordinator-S5ZbrkDp.js} +1 -1
  14. package/dist/{public/sdk/accountLifecycle-CAMVowDl.js → esm/sdk/accountLifecycle-HEUmDLus.js} +1 -1
  15. package/dist/esm/sdk/activeWalletSession-WdZkhtBB.js +1 -0
  16. package/dist/esm/sdk/{adapters-DdDOQzl4.js → adapters-DYPu0nK9.js} +2 -2
  17. package/dist/esm/sdk/{canonicalPrimitives-CKPGgpxg.js → canonicalPrimitives-Dsbsxgxc.js} +1 -1
  18. package/dist/esm/sdk/{capabilityKinds-CKQ4Uqnv.js → capabilityKinds-N8xo_IEh.js} +1 -1
  19. package/dist/esm/sdk/{chains-CiYQT1K4.js → chains-C_X_fNuS.js} +1 -1
  20. package/dist/esm/sdk/challengeDelivery-5lIu9spR.js +1 -0
  21. package/dist/{public/sdk/clientSessionPersistenceState-CImFWDj6.js → esm/sdk/clientSessionPersistenceState-DRdve9rC.js} +1 -1
  22. package/dist/esm/sdk/{commitQueue-iBNUt9Bz.js → commitQueue-qjvY_zWn.js} +1 -1
  23. package/dist/esm/sdk/{configHelpers-D8Ivi6p8.js → configHelpers-B-hs0mTO.js} +1 -1
  24. package/dist/esm/sdk/digestEncoding-CkUc5vtR.js +1 -0
  25. package/dist/esm/sdk/{display-ClqZq-Xt.js → display-DjoWrSgE.js} +1 -1
  26. package/dist/esm/sdk/domainIds-BzkGsRqO.js +1 -0
  27. package/dist/{public/sdk/ecdsaCapabilityManifest-BlzJAQF8.js → esm/sdk/ecdsaCapabilityManifest-ChszYCC0.js} +1 -1
  28. package/dist/esm/sdk/{ecdsaChainTarget-C8ZtMZ8l.js → ecdsaChainTarget-DJBXHzbH.js} +1 -1
  29. package/dist/{public/sdk/ecdsaDerivationClientWasm-CVeNEou2.js → esm/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js} +1 -1
  30. package/dist/{public/sdk/ecdsaDerivationExport-BZFHSMCv.js → esm/sdk/ecdsaDerivationExport-C1cE5m0t.js} +1 -1
  31. package/dist/esm/sdk/{ecdsaWalletRecords-D4WeYc7H.js → ecdsaWalletRecords-Di_NUxD_.js} +1 -1
  32. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-p0C1CQva.js +1 -0
  33. package/dist/esm/sdk/{enrichDisplayModelWithAbi-69bNckvi.js → enrichDisplayModelWithAbi-DZIhvE-x.js} +1 -1
  34. package/dist/esm/sdk/{evmCryptoWasm-BXsIyRon.js → evmCryptoWasm-DeobzyP-.js} +1 -1
  35. package/dist/{public/sdk/export-viewer-host-CsFeiIhd.js → esm/sdk/export-viewer-host-DUMwD6zP.js} +1 -1
  36. package/dist/{public/sdk/exportKeypairOperation-DGQIYML3.js → esm/sdk/exportKeypairOperation-DYCzCbqL.js} +1 -1
  37. package/dist/esm/sdk/{helpers-Ddy72ULN.js → helpers-BnkILY2_.js} +1 -1
  38. package/dist/esm/sdk/host-h55onlkx.js +1 -0
  39. package/dist/esm/sdk/{intentDigest-CE-tLw87.js → intentDigest-DJBrMyLJ.js} +1 -1
  40. package/dist/esm/sdk/{lanes-DnBwWv4l.js → lanes-Ck81oEGv.js} +1 -1
  41. package/dist/esm/sdk/{localOnly-ClCo6602.js → localOnly-KvZeKkH5.js} +1 -1
  42. package/dist/{public/sdk/messages-vxz27Way.js → esm/sdk/messages-DgJlG9NU.js} +1 -1
  43. package/dist/esm/sdk/{mountExportPrivateKeySurface-CBZ0wRYj.js → mountExportPrivateKeySurface-B4gH1Sel.js} +1 -1
  44. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-B1qhFF6G.js → esm/sdk/mountRecoveryCodeBackupSurface-BA2ttbTM.js} +1 -1
  45. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-CvDs4RtV.js +1 -0
  46. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-B0d1AG3u.js → nearEd25519YaoSigningPreparation-Eiq_ikXk.js} +1 -1
  47. package/dist/esm/sdk/{nonceLaneKeys-Fkvk2UPy.js → nonceLaneKeys-Do5Vs-De.js} +1 -1
  48. package/dist/esm/sdk/{normalization-DCvuCvh0.js → normalization-DJPmcXTg.js} +1 -1
  49. package/dist/esm/sdk/{operationFingerprint-CTR9G1NT.js → operationFingerprint-CUrnoh-M.js} +1 -1
  50. package/dist/esm/sdk/passkey-custody-Cd_yyoRa.js +1 -0
  51. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-yJN8VAHn.js → pendingWalletRecoveryCodeBackup-BkIrbd6Q.js} +1 -1
  52. package/dist/esm/sdk/presignaturePool-CLHu7HaU.js +1 -0
  53. package/dist/esm/sdk/{prfCache-BMpqZZ-v.js → prfCache-DCkuB8Lu.js} +1 -1
  54. package/dist/esm/sdk/primitives-CqrjmIAH.js +1 -0
  55. package/dist/{public/sdk/recovery-entrypoint-Bl5GgbW9.js → esm/sdk/recovery-entrypoint-DoXswV9I.js} +1 -1
  56. package/dist/esm/sdk/{registration-C4sALQZO.js → registration-BFHEYmgh.js} +1 -1
  57. package/dist/esm/sdk/registration-Cfg9rWhA.js +1 -0
  58. package/dist/esm/sdk/{registrationAccounts-D4RVetMz.js → registrationAccounts-DP-32yCK.js} +1 -1
  59. package/dist/esm/sdk/{registrationAuthMethodInput-6ccY2Vuh.js → registrationAuthMethodInput-BBCeWDmw.js} +1 -1
  60. package/dist/esm/sdk/{registrationIds-CdPqm-Ya.js → registrationIds-ByuReLUc.js} +1 -1
  61. package/dist/esm/sdk/registrationIntent-BHU5k2Q-.js +1 -0
  62. package/dist/esm/sdk/{registrationSignerPlan-B9GCvpTV.js → registrationSignerPlan-dY9Rp0m_.js} +1 -1
  63. package/dist/esm/sdk/{requireStepUpAuth-DCVqmeee.js → requireStepUpAuth-C67sluoC.js} +1 -1
  64. package/dist/esm/sdk/routerAbNormalSigning-DVKFBYgV.js +1 -0
  65. package/dist/esm/sdk/{runtime-auth-BKFyLISf.js → runtime-auth-Ch4qvKL2.js} +1 -1
  66. package/dist/{public/sdk/runtime-device-link-ENxdEXQW.js → esm/sdk/runtime-device-link-DtNpEjq5.js} +1 -1
  67. package/dist/{public/sdk/runtime-ecdsa-tempo-DhGEb9U7.js → esm/sdk/runtime-ecdsa-tempo-Bntp_Zgx.js} +1 -1
  68. package/dist/esm/sdk/{runtime-email-otp-dgsP7XZi.js → runtime-email-otp-DEFt-Y-_.js} +1 -1
  69. package/dist/esm/sdk/{runtime-export-D2RCm5Gk.js → runtime-export-DE_umiS1.js} +1 -1
  70. package/dist/{public/sdk/runtime-near-Bf-9MFBQ.js → esm/sdk/runtime-near-uXqcLEz8.js} +1 -1
  71. package/dist/esm/sdk/runtime-preferences-C49p0VLC.js +1 -0
  72. package/dist/esm/sdk/runtime-recovery-D7wklehP.js +1 -0
  73. package/dist/esm/sdk/{runtime-recovery-codes-BZMiAR_5.js → runtime-recovery-codes-Dn-NccpU.js} +1 -1
  74. package/dist/esm/sdk/{sdkSentEvents-D3q1h-Uo.js → sdkSentEvents-DiQ3YVlj.js} +1 -1
  75. package/dist/esm/sdk/{secp256k1-DSLttQND.js → secp256k1-C-AETUpI.js} +1 -1
  76. package/dist/esm/sdk/{secureRandomId-BIekT8bE.js → secureRandomId-LwBFx84B.js} +1 -1
  77. package/dist/esm/sdk/{sessionPolicy-J-RrlPZQ.js → sessionPolicy-CBTZQe1n.js} +1 -1
  78. package/dist/esm/sdk/shared-D6RYxvYR.js +6 -0
  79. package/dist/{public/sdk/signEvmFamily-KUNWKVeh.js → esm/sdk/signEvmFamily-DjD3tn8e.js} +1 -1
  80. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Dc57bJ3V.js → signEvmFamilyWithUiConfirmForTempo-CwRFbaLM.js} +1 -1
  81. package/dist/esm/sdk/{signEvmWithUiConfirm-CqxL7UbT.js → signEvmWithUiConfirm-BHG0dwVG.js} +1 -1
  82. package/dist/esm/sdk/signNear-DR50cpes.js +1 -0
  83. package/dist/esm/sdk/{signatureUses-CjJ233KX.js → signatureUses-8c8Ku_Fw.js} +1 -1
  84. package/dist/esm/sdk/{signerDomain-vQmlnsbF.js → signerDomain-DqLCvI-D.js} +1 -1
  85. package/dist/esm/sdk/{signingFlow-vrXxrhlG.js → signingFlow-Mym5j6aw.js} +1 -1
  86. package/dist/esm/sdk/signingQueue-2pr7lAUS.js +1 -0
  87. package/dist/esm/sdk/thresholdEcdsa-D-QMyevW.js +1 -0
  88. package/dist/esm/sdk/{trace-BvbCxdXF.js → trace-QLsbYdld.js} +1 -1
  89. package/dist/esm/sdk/{transaction-activity-D40ih2j-.js → transaction-activity-Cb2JyYKv.js} +1 -1
  90. package/dist/{public/sdk/transactionReviewAdmission-C-a3ctCJ.js → esm/sdk/transactionReviewAdmission-CIvR4W5_.js} +1 -1
  91. package/dist/{public/sdk/transactionState-DVinJk4K.js → esm/sdk/transactionState-CGULLokO.js} +1 -1
  92. package/dist/esm/sdk/{types-D3GM-uHR.js → types-WGrFMQSw.js} +1 -1
  93. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  94. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  95. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  96. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  97. package/dist/esm/sdk/wallet-recovery-D7ywcIHw.js +1 -0
  98. package/dist/{public/sdk/walletAuthMethodRecord-CXedSgpV.js → esm/sdk/walletAuthMethodRecord-CnBw27ED.js} +1 -1
  99. package/dist/esm/sdk/walletAuthority-BWvfaKIX.js +1 -0
  100. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B8aO2NFb.js +1 -0
  101. package/dist/esm/sdk/{walletOwnershipGeneration-DoXVMDWe.js → walletOwnershipGeneration-CAycHv-H.js} +1 -1
  102. package/dist/esm/sdk/walletRecoveryCommit-C3EgMjo-.js +1 -0
  103. package/dist/esm/sdk/walletRecoveryRotate-D_1a8Agl.js +1 -0
  104. package/dist/esm/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +1 -0
  105. package/dist/esm/sdk/walletSessionAuthorizationStatus-BLyzJbU8.js +1 -0
  106. package/dist/esm/sdk/{walletSessionAuthorizationStore-gEYPmu-G.js → walletSessionAuthorizationStore-BiKGIBWQ.js} +1 -1
  107. package/dist/esm/sdk/warmSessionHydration-B7-kCnJh.js +1 -0
  108. package/dist/esm/sdk/{webauthnP256-BEz4DEAs.js → webauthnP256-DZCusNY9.js} +1 -1
  109. package/dist/{public/sdk/webauthnPromptCoordinator-BEudHQBr.js → esm/sdk/webauthnPromptCoordinator-CS4Xc_jZ.js} +1 -1
  110. package/dist/public/headers.manifest.json +1 -1
  111. package/dist/public/sdk/{ConfirmationDrawer-DY0_yeUV.js → ConfirmationDrawer-Frj3uEee.js} +1 -1
  112. package/dist/{esm/sdk/NonceCoordinator-CFFq8-Q9.js → public/sdk/NonceCoordinator-S5ZbrkDp.js} +1 -1
  113. package/dist/{esm/sdk/accountLifecycle-CAMVowDl.js → public/sdk/accountLifecycle-HEUmDLus.js} +1 -1
  114. package/dist/public/sdk/activeWalletSession-WdZkhtBB.js +1 -0
  115. package/dist/public/sdk/{adapters-DdDOQzl4.js → adapters-DYPu0nK9.js} +2 -2
  116. package/dist/public/sdk/{canonicalPrimitives-CKPGgpxg.js → canonicalPrimitives-Dsbsxgxc.js} +1 -1
  117. package/dist/public/sdk/{capabilityKinds-CKQ4Uqnv.js → capabilityKinds-N8xo_IEh.js} +1 -1
  118. package/dist/public/sdk/{chains-CiYQT1K4.js → chains-C_X_fNuS.js} +1 -1
  119. package/dist/public/sdk/challengeDelivery-5lIu9spR.js +1 -0
  120. package/dist/{esm/sdk/clientSessionPersistenceState-CImFWDj6.js → public/sdk/clientSessionPersistenceState-DRdve9rC.js} +1 -1
  121. package/dist/public/sdk/{commitQueue-iBNUt9Bz.js → commitQueue-qjvY_zWn.js} +1 -1
  122. package/dist/public/sdk/{configHelpers-D8Ivi6p8.js → configHelpers-B-hs0mTO.js} +1 -1
  123. package/dist/public/sdk/digestEncoding-CkUc5vtR.js +1 -0
  124. package/dist/public/sdk/{display-ClqZq-Xt.js → display-DjoWrSgE.js} +1 -1
  125. package/dist/public/sdk/domainIds-BzkGsRqO.js +1 -0
  126. package/dist/{esm/sdk/ecdsaCapabilityManifest-BlzJAQF8.js → public/sdk/ecdsaCapabilityManifest-ChszYCC0.js} +1 -1
  127. package/dist/public/sdk/{ecdsaChainTarget-C8ZtMZ8l.js → ecdsaChainTarget-DJBXHzbH.js} +1 -1
  128. package/dist/{esm/sdk/ecdsaDerivationClientWasm-CVeNEou2.js → public/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js} +1 -1
  129. package/dist/{esm/sdk/ecdsaDerivationExport-BZFHSMCv.js → public/sdk/ecdsaDerivationExport-C1cE5m0t.js} +1 -1
  130. package/dist/public/sdk/{ecdsaWalletRecords-D4WeYc7H.js → ecdsaWalletRecords-Di_NUxD_.js} +1 -1
  131. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-p0C1CQva.js +1 -0
  132. package/dist/public/sdk/{enrichDisplayModelWithAbi-69bNckvi.js → enrichDisplayModelWithAbi-DZIhvE-x.js} +1 -1
  133. package/dist/public/sdk/{evmCryptoWasm-BXsIyRon.js → evmCryptoWasm-DeobzyP-.js} +1 -1
  134. package/dist/{esm/sdk/export-viewer-host-CsFeiIhd.js → public/sdk/export-viewer-host-DUMwD6zP.js} +1 -1
  135. package/dist/{esm/sdk/exportKeypairOperation-DGQIYML3.js → public/sdk/exportKeypairOperation-DYCzCbqL.js} +1 -1
  136. package/dist/public/sdk/{helpers-Ddy72ULN.js → helpers-BnkILY2_.js} +1 -1
  137. package/dist/public/sdk/host-h55onlkx.js +1 -0
  138. package/dist/public/sdk/{intentDigest-CE-tLw87.js → intentDigest-DJBrMyLJ.js} +1 -1
  139. package/dist/public/sdk/{lanes-DnBwWv4l.js → lanes-Ck81oEGv.js} +1 -1
  140. package/dist/public/sdk/{localOnly-ClCo6602.js → localOnly-KvZeKkH5.js} +1 -1
  141. package/dist/{esm/sdk/messages-vxz27Way.js → public/sdk/messages-DgJlG9NU.js} +1 -1
  142. package/dist/public/sdk/{mountExportPrivateKeySurface-CBZ0wRYj.js → mountExportPrivateKeySurface-B4gH1Sel.js} +1 -1
  143. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-B1qhFF6G.js → public/sdk/mountRecoveryCodeBackupSurface-BA2ttbTM.js} +1 -1
  144. package/dist/public/sdk/nearEd25519YaoMaterialActivation-CvDs4RtV.js +1 -0
  145. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-B0d1AG3u.js → nearEd25519YaoSigningPreparation-Eiq_ikXk.js} +1 -1
  146. package/dist/public/sdk/{nonceLaneKeys-Fkvk2UPy.js → nonceLaneKeys-Do5Vs-De.js} +1 -1
  147. package/dist/public/sdk/{normalization-DCvuCvh0.js → normalization-DJPmcXTg.js} +1 -1
  148. package/dist/public/sdk/{operationFingerprint-CTR9G1NT.js → operationFingerprint-CUrnoh-M.js} +1 -1
  149. package/dist/public/sdk/passkey-custody-Cd_yyoRa.js +1 -0
  150. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-yJN8VAHn.js → pendingWalletRecoveryCodeBackup-BkIrbd6Q.js} +1 -1
  151. package/dist/public/sdk/presignaturePool-CLHu7HaU.js +1 -0
  152. package/dist/public/sdk/{prfCache-BMpqZZ-v.js → prfCache-DCkuB8Lu.js} +1 -1
  153. package/dist/public/sdk/primitives-CqrjmIAH.js +1 -0
  154. package/dist/{esm/sdk/recovery-entrypoint-Bl5GgbW9.js → public/sdk/recovery-entrypoint-DoXswV9I.js} +1 -1
  155. package/dist/public/sdk/{registration-C4sALQZO.js → registration-BFHEYmgh.js} +1 -1
  156. package/dist/public/sdk/registration-Cfg9rWhA.js +1 -0
  157. package/dist/public/sdk/{registrationAccounts-D4RVetMz.js → registrationAccounts-DP-32yCK.js} +1 -1
  158. package/dist/public/sdk/{registrationAuthMethodInput-6ccY2Vuh.js → registrationAuthMethodInput-BBCeWDmw.js} +1 -1
  159. package/dist/public/sdk/{registrationIds-CdPqm-Ya.js → registrationIds-ByuReLUc.js} +1 -1
  160. package/dist/public/sdk/registrationIntent-BHU5k2Q-.js +1 -0
  161. package/dist/public/sdk/{registrationSignerPlan-B9GCvpTV.js → registrationSignerPlan-dY9Rp0m_.js} +1 -1
  162. package/dist/public/sdk/{requireStepUpAuth-DCVqmeee.js → requireStepUpAuth-C67sluoC.js} +1 -1
  163. package/dist/public/sdk/routerAbNormalSigning-DVKFBYgV.js +1 -0
  164. package/dist/public/sdk/{runtime-auth-BKFyLISf.js → runtime-auth-Ch4qvKL2.js} +1 -1
  165. package/dist/{esm/sdk/runtime-device-link-ENxdEXQW.js → public/sdk/runtime-device-link-DtNpEjq5.js} +1 -1
  166. package/dist/{esm/sdk/runtime-ecdsa-tempo-DhGEb9U7.js → public/sdk/runtime-ecdsa-tempo-Bntp_Zgx.js} +1 -1
  167. package/dist/public/sdk/{runtime-email-otp-dgsP7XZi.js → runtime-email-otp-DEFt-Y-_.js} +1 -1
  168. package/dist/public/sdk/{runtime-export-D2RCm5Gk.js → runtime-export-DE_umiS1.js} +1 -1
  169. package/dist/{esm/sdk/runtime-near-Bf-9MFBQ.js → public/sdk/runtime-near-uXqcLEz8.js} +1 -1
  170. package/dist/public/sdk/runtime-preferences-C49p0VLC.js +1 -0
  171. package/dist/public/sdk/runtime-recovery-D7wklehP.js +1 -0
  172. package/dist/public/sdk/{runtime-recovery-codes-BZMiAR_5.js → runtime-recovery-codes-Dn-NccpU.js} +1 -1
  173. package/dist/public/sdk/{sdkSentEvents-D3q1h-Uo.js → sdkSentEvents-DiQ3YVlj.js} +1 -1
  174. package/dist/public/sdk/{secp256k1-DSLttQND.js → secp256k1-C-AETUpI.js} +1 -1
  175. package/dist/public/sdk/{secureRandomId-BIekT8bE.js → secureRandomId-LwBFx84B.js} +1 -1
  176. package/dist/public/sdk/{sessionPolicy-J-RrlPZQ.js → sessionPolicy-CBTZQe1n.js} +1 -1
  177. package/dist/public/sdk/shared-D6RYxvYR.js +6 -0
  178. package/dist/{esm/sdk/signEvmFamily-KUNWKVeh.js → public/sdk/signEvmFamily-DjD3tn8e.js} +1 -1
  179. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Dc57bJ3V.js → signEvmFamilyWithUiConfirmForTempo-CwRFbaLM.js} +1 -1
  180. package/dist/public/sdk/{signEvmWithUiConfirm-CqxL7UbT.js → signEvmWithUiConfirm-BHG0dwVG.js} +1 -1
  181. package/dist/public/sdk/signNear-DR50cpes.js +1 -0
  182. package/dist/public/sdk/{signatureUses-CjJ233KX.js → signatureUses-8c8Ku_Fw.js} +1 -1
  183. package/dist/public/sdk/{signerDomain-vQmlnsbF.js → signerDomain-DqLCvI-D.js} +1 -1
  184. package/dist/public/sdk/{signingFlow-vrXxrhlG.js → signingFlow-Mym5j6aw.js} +1 -1
  185. package/dist/public/sdk/signingQueue-2pr7lAUS.js +1 -0
  186. package/dist/public/sdk/thresholdEcdsa-D-QMyevW.js +1 -0
  187. package/dist/public/sdk/{trace-BvbCxdXF.js → trace-QLsbYdld.js} +1 -1
  188. package/dist/public/sdk/{transaction-activity-D40ih2j-.js → transaction-activity-Cb2JyYKv.js} +1 -1
  189. package/dist/{esm/sdk/transactionReviewAdmission-C-a3ctCJ.js → public/sdk/transactionReviewAdmission-CIvR4W5_.js} +1 -1
  190. package/dist/{esm/sdk/transactionState-DVinJk4K.js → public/sdk/transactionState-CGULLokO.js} +1 -1
  191. package/dist/public/sdk/{types-D3GM-uHR.js → types-WGrFMQSw.js} +1 -1
  192. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  193. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  194. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  195. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  196. package/dist/public/sdk/wallet-recovery-D7ywcIHw.js +1 -0
  197. package/dist/{esm/sdk/walletAuthMethodRecord-CXedSgpV.js → public/sdk/walletAuthMethodRecord-CnBw27ED.js} +1 -1
  198. package/dist/public/sdk/walletAuthority-BWvfaKIX.js +1 -0
  199. package/dist/public/sdk/walletCustodyEcdsaContinuity-B8aO2NFb.js +1 -0
  200. package/dist/public/sdk/{walletOwnershipGeneration-DoXVMDWe.js → walletOwnershipGeneration-CAycHv-H.js} +1 -1
  201. package/dist/public/sdk/walletRecoveryCommit-C3EgMjo-.js +1 -0
  202. package/dist/public/sdk/walletRecoveryRotate-D_1a8Agl.js +1 -0
  203. package/dist/public/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +1 -0
  204. package/dist/public/sdk/walletSessionAuthorizationStatus-BLyzJbU8.js +1 -0
  205. package/dist/public/sdk/{walletSessionAuthorizationStore-gEYPmu-G.js → walletSessionAuthorizationStore-BiKGIBWQ.js} +1 -1
  206. package/dist/public/sdk/warmSessionHydration-B7-kCnJh.js +1 -0
  207. package/dist/public/sdk/{webauthnP256-BEz4DEAs.js → webauthnP256-DZCusNY9.js} +1 -1
  208. package/dist/{esm/sdk/webauthnPromptCoordinator-BEudHQBr.js → public/sdk/webauthnPromptCoordinator-CS4Xc_jZ.js} +1 -1
  209. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  210. package/dist/public/wallet-assets.manifest.json +264 -240
  211. package/dist/public/wallet-service/index.html +4 -4
  212. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistrationSetupPrewarm.d.ts +4 -0
  213. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signatureOnlySigning.d.ts +2 -2
  214. package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +38 -0
  215. package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +2 -0
  216. package/dist/types/wallet/src/react/index.d.ts +5 -1
  217. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  218. package/package.json +3 -2
  219. package/dist/esm/sdk/activeWalletSession-DiZcKjB_.js +0 -1
  220. package/dist/esm/sdk/challengeDelivery-DxXAkOfS.js +0 -1
  221. package/dist/esm/sdk/digestEncoding-Dzc1rzWV.js +0 -1
  222. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-B8HzTh4T.js +0 -1
  223. package/dist/esm/sdk/host-c1__wJwz.js +0 -1
  224. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-fWQI3rYj.js +0 -1
  225. package/dist/esm/sdk/normalize-kUDm5zfS.js +0 -1
  226. package/dist/esm/sdk/passkey-custody-BQj44jEM.js +0 -1
  227. package/dist/esm/sdk/presignaturePool-DwlTReFO.js +0 -1
  228. package/dist/esm/sdk/primitives-CAcl7ON7.js +0 -1
  229. package/dist/esm/sdk/registration-CEqVAgNJ.js +0 -1
  230. package/dist/esm/sdk/registrationIntent-DOkZcKSP.js +0 -1
  231. package/dist/esm/sdk/routerAbNormalSigning-BG75eyI2.js +0 -1
  232. package/dist/esm/sdk/runtime-preferences-LQ8SPE7o.js +0 -1
  233. package/dist/esm/sdk/runtime-recovery-BuEzJzuZ.js +0 -1
  234. package/dist/esm/sdk/shared-8ffIBYw2.js +0 -6
  235. package/dist/esm/sdk/signNear-BhTkDm2-.js +0 -1
  236. package/dist/esm/sdk/signingQueue-BrGJXBqe.js +0 -1
  237. package/dist/esm/sdk/thresholdEcdsa-CO7xo1So.js +0 -1
  238. package/dist/esm/sdk/wallet-recovery-C1kesLCF.js +0 -1
  239. package/dist/esm/sdk/walletAuthority-B5hXHWpK.js +0 -1
  240. package/dist/esm/sdk/walletCustodyEcdsaContinuity-abNZ_dvX.js +0 -1
  241. package/dist/esm/sdk/walletRecoveryCommit-Cc9AqHr0.js +0 -1
  242. package/dist/esm/sdk/walletRecoveryRotate-DWTAFYiv.js +0 -1
  243. package/dist/esm/sdk/walletSessionAuthorizationStatus-o1VgsLhA.js +0 -1
  244. package/dist/esm/sdk/warmSessionHydration-DgjuUacN.js +0 -1
  245. package/dist/public/sdk/activeWalletSession-DiZcKjB_.js +0 -1
  246. package/dist/public/sdk/challengeDelivery-DxXAkOfS.js +0 -1
  247. package/dist/public/sdk/digestEncoding-Dzc1rzWV.js +0 -1
  248. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-B8HzTh4T.js +0 -1
  249. package/dist/public/sdk/host-c1__wJwz.js +0 -1
  250. package/dist/public/sdk/nearEd25519YaoMaterialActivation-fWQI3rYj.js +0 -1
  251. package/dist/public/sdk/normalize-kUDm5zfS.js +0 -1
  252. package/dist/public/sdk/passkey-custody-BQj44jEM.js +0 -1
  253. package/dist/public/sdk/presignaturePool-DwlTReFO.js +0 -1
  254. package/dist/public/sdk/primitives-CAcl7ON7.js +0 -1
  255. package/dist/public/sdk/registration-CEqVAgNJ.js +0 -1
  256. package/dist/public/sdk/registrationIntent-DOkZcKSP.js +0 -1
  257. package/dist/public/sdk/routerAbNormalSigning-BG75eyI2.js +0 -1
  258. package/dist/public/sdk/runtime-preferences-LQ8SPE7o.js +0 -1
  259. package/dist/public/sdk/runtime-recovery-BuEzJzuZ.js +0 -1
  260. package/dist/public/sdk/shared-8ffIBYw2.js +0 -6
  261. package/dist/public/sdk/signNear-BhTkDm2-.js +0 -1
  262. package/dist/public/sdk/signingQueue-BrGJXBqe.js +0 -1
  263. package/dist/public/sdk/thresholdEcdsa-CO7xo1So.js +0 -1
  264. package/dist/public/sdk/wallet-recovery-C1kesLCF.js +0 -1
  265. package/dist/public/sdk/walletAuthority-B5hXHWpK.js +0 -1
  266. package/dist/public/sdk/walletCustodyEcdsaContinuity-abNZ_dvX.js +0 -1
  267. package/dist/public/sdk/walletRecoveryCommit-Cc9AqHr0.js +0 -1
  268. package/dist/public/sdk/walletRecoveryRotate-DWTAFYiv.js +0 -1
  269. package/dist/public/sdk/walletSessionAuthorizationStatus-o1VgsLhA.js +0 -1
  270. package/dist/public/sdk/warmSessionHydration-DgjuUacN.js +0 -1
  271. /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DITtYj-z.js} +0 -0
  272. /package/dist/esm/sdk/{authenticatorOptions-DMLnDWT2.js → authenticatorOptions-C9aCKgeF.js} +0 -0
  273. /package/dist/esm/sdk/{authorizationAdmission-Ckx6q6tp.js → authorizationAdmission-CGinGhXH.js} +0 -0
  274. /package/dist/esm/sdk/{base64-CsEj-_bC.js → base64-DW79QA0h.js} +0 -0
  275. /package/dist/esm/sdk/{browser-D4wUl_77.js → browser-DkCRXFkk.js} +0 -0
  276. /package/dist/esm/sdk/{bytes-BBYkulRB.js → bytes-DZRW2UDg.js} +0 -0
  277. /package/dist/esm/sdk/{canonicalSignerErrorCode-DEHsPxNm.js → canonicalSignerErrorCode-Cz48v4oy.js} +0 -0
  278. /package/dist/esm/sdk/{configBuilder-ZiZwFKt4.js → configBuilder-BMawmNpz.js} +0 -0
  279. /package/dist/esm/sdk/{errors-BZO3LF6G.js → errors-DIWY1KR9.js} +0 -0
  280. /package/dist/esm/sdk/{events-DsQJQ0Cl.js → events-1dzC4Ocx.js} +0 -0
  281. /package/dist/esm/sdk/{executeWorkerOperation-BInr8RYN.js → executeWorkerOperation-DKCRRq5E.js} +0 -0
  282. /package/dist/esm/sdk/{jsonRpc-DrCYQIM9.js → jsonRpc-YKL5n8VL.js} +0 -0
  283. /package/dist/esm/sdk/{jsxRuntime.module-BcZNe_OA.js → jsxRuntime.module-C8JOKu_4.js} +0 -0
  284. /package/dist/esm/sdk/{keccak-B02Fekdh.js → keccak-BArcwgbj.js} +0 -0
  285. /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-CeZT7ob0.js} +0 -0
  286. /package/dist/esm/sdk/{presignatures-DB2IPD-A.js → presignatures-DZm0d6Wy.js} +0 -0
  287. /package/dist/esm/sdk/{profileAccountProjection-DmmfMood.js → profileAccountProjection-B3LXAUmo.js} +0 -0
  288. /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-B8RprJhO.js} +0 -0
  289. /package/dist/esm/sdk/{signerSlot-Dto7dObP.js → signerSlot-B4Eq8Oe2.js} +0 -0
  290. /package/dist/esm/sdk/{signingSessionSeal-CDLUmAFY.js → signingSessionSeal-DX41aXUL.js} +0 -0
  291. /package/dist/esm/sdk/{surface-measurement-reporter-IlPOI3QK.js → surface-measurement-reporter-DvVHPu_O.js} +0 -0
  292. /package/dist/esm/sdk/{theme-_AUTWLS_.js → theme-BKaFqCAj.js} +0 -0
  293. /package/dist/esm/sdk/{types-BNUuaUtl.js → types-DhtByIcQ.js} +0 -0
  294. /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  295. /package/dist/esm/sdk/{walletSessionAuthorizationProjection-DWBksIJR.js → walletSessionAuthorizationProjection-DuU6w0FP.js} +0 -0
  296. /package/dist/esm/sdk/{walletSessionFailure-Bu4VPKTz.js → walletSessionFailure-YuhraC3P.js} +0 -0
  297. /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DITtYj-z.js} +0 -0
  298. /package/dist/public/sdk/{authenticatorOptions-DMLnDWT2.js → authenticatorOptions-C9aCKgeF.js} +0 -0
  299. /package/dist/public/sdk/{authorizationAdmission-Ckx6q6tp.js → authorizationAdmission-CGinGhXH.js} +0 -0
  300. /package/dist/public/sdk/{base64-CsEj-_bC.js → base64-DW79QA0h.js} +0 -0
  301. /package/dist/public/sdk/{browser-D4wUl_77.js → browser-DkCRXFkk.js} +0 -0
  302. /package/dist/public/sdk/{bytes-BBYkulRB.js → bytes-DZRW2UDg.js} +0 -0
  303. /package/dist/public/sdk/{canonicalSignerErrorCode-DEHsPxNm.js → canonicalSignerErrorCode-Cz48v4oy.js} +0 -0
  304. /package/dist/public/sdk/{configBuilder-ZiZwFKt4.js → configBuilder-BMawmNpz.js} +0 -0
  305. /package/dist/public/sdk/{errors-BZO3LF6G.js → errors-DIWY1KR9.js} +0 -0
  306. /package/dist/public/sdk/{events-DsQJQ0Cl.js → events-1dzC4Ocx.js} +0 -0
  307. /package/dist/public/sdk/{executeWorkerOperation-BInr8RYN.js → executeWorkerOperation-DKCRRq5E.js} +0 -0
  308. /package/dist/public/sdk/{jsonRpc-DrCYQIM9.js → jsonRpc-YKL5n8VL.js} +0 -0
  309. /package/dist/public/sdk/{jsxRuntime.module-BcZNe_OA.js → jsxRuntime.module-C8JOKu_4.js} +0 -0
  310. /package/dist/public/sdk/{keccak-B02Fekdh.js → keccak-BArcwgbj.js} +0 -0
  311. /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-CeZT7ob0.js} +0 -0
  312. /package/dist/public/sdk/{presignatures-DB2IPD-A.js → presignatures-DZm0d6Wy.js} +0 -0
  313. /package/dist/public/sdk/{profileAccountProjection-DmmfMood.js → profileAccountProjection-B3LXAUmo.js} +0 -0
  314. /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-B8RprJhO.js} +0 -0
  315. /package/dist/public/sdk/{signerSlot-Dto7dObP.js → signerSlot-B4Eq8Oe2.js} +0 -0
  316. /package/dist/public/sdk/{signingSessionSeal-CDLUmAFY.js → signingSessionSeal-DX41aXUL.js} +0 -0
  317. /package/dist/public/sdk/{surface-measurement-reporter-IlPOI3QK.js → surface-measurement-reporter-DvVHPu_O.js} +0 -0
  318. /package/dist/public/sdk/{theme-_AUTWLS_.js → theme-BKaFqCAj.js} +0 -0
  319. /package/dist/public/sdk/{types-BNUuaUtl.js → types-DhtByIcQ.js} +0 -0
  320. /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  321. /package/dist/public/sdk/{walletSessionAuthorizationProjection-DWBksIJR.js → walletSessionAuthorizationProjection-DuU6w0FP.js} +0 -0
  322. /package/dist/public/sdk/{walletSessionFailure-Bu4VPKTz.js → walletSessionFailure-YuhraC3P.js} +0 -0
@@ -1 +1 @@
1
- import{f as e}from"./normalize-kUDm5zfS.js";import{c as t}from"./chains-CiYQT1K4.js";import{r as n}from"./secureRandomId-BIekT8bE.js";import"./primitives-CAcl7ON7.js";import"./sessionPolicy-J-RrlPZQ.js";import"./signingSessionSeal-CDLUmAFY.js";import{t as r}from"./activeWalletSession-DiZcKjB_.js";import"./capabilityKinds-CKQ4Uqnv.js";import{o as i}from"./canonicalPrimitives-CKPGgpxg.js";import{i as a,t as o}from"./errors-BZO3LF6G.js";import"./digestEncoding-Dzc1rzWV.js";import{d as s,t as c}from"./accountIds-BzZs7YoX.js";import{c as l,o as u,s as ee,u as d}from"./ecdsaChainTarget-C8ZtMZ8l.js";import"./signerDomain-vQmlnsbF.js";import"./singletons-8UH3gOnZ.js";import"./walletAuthority-B5hXHWpK.js";import{Dt as f,Et as p,Mt as m,a as h,en as te,g,ht as ne,tn as re}from"./emailOtpEcdsaDerivationIdentity-B8HzTh4T.js";import{t as ie}from"./challengeDelivery-DxXAkOfS.js";import{i as ae}from"./walletAuthMethodRecord-CXedSgpV.js";import"./registrationIds-CdPqm-Ya.js";import{a as oe,n as _,u as se}from"./sdkSentEvents-D3q1h-Uo.js";import{s as ce}from"./types-D3GM-uHR.js";import{i as le}from"./helpers-Ddy72ULN.js";import{C as ue,D as v,b as de,j as fe,x as pe}from"./nearEd25519YaoSigningPreparation-B0d1AG3u.js";import{l as y,u as me}from"./trace-BvbCxdXF.js";import{n as he,r as ge,t as _e,w as ve,x as ye}from"./ecdsaDerivationExport-BZFHSMCv.js";import{i as be}from"./walletSessionFailure-Bu4VPKTz.js";import{i as xe,n as Se,r as Ce,s as we}from"./signingQueue-BrGJXBqe.js";import{h as b,i as x,l as Te,n as Ee,s as S}from"./clientSessionPersistenceState-CImFWDj6.js";import{t as C}from"./types-BNUuaUtl.js";import{i as w}from"./appearance-ZGVLwA4N.js";import{n as T,t as E}from"./export-viewer-host-CsFeiIhd.js";function D(e){return e.chainTarget.kind}function De(e){return e}function Oe(e){return!e||e.curve!==`ecdsa`||!e.chainTarget||!b(e)||!String(e.publicFacts.keyHandle||``).trim()?!1:e.source===`active_wallet_authority`?e.runtime.requiredCapability===`export_keys`&&e.state===`deferred`&&e.authorizationState===`authorization_required`:e.authorization?!0:e.state===`deferred`}function O(e){if(e.length!==2)throw Error(`[SigningEngine][ecdsa-export] ECDSA participant set must contain two parties`);let t=e[0],n=e[1];if(!Number.isSafeInteger(t)||!Number.isSafeInteger(n)||t<=0||n<=0||t===n)throw Error(`[SigningEngine][ecdsa-export] ECDSA participant set is invalid`);return[t,n]}function k(t){let{exportLane:n,label:r}=t,i=n.capability,a=i.manifest.signer;if(a.walletId!==n.key.walletId||!a.scope.targetMemberships.some(e=>ee(e,n.chainTarget)))throw Error(`[SigningEngine][ecdsa-export] ${r} capability target mismatch`);if(!t.authMatches())throw Error(`[SigningEngine][ecdsa-export] ${r} capability auth mismatch`);if(!e(i.manifest.activation.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] ${r} material activation mismatch`);h({expected:n.publicFacts,actual:a.registeredPublicFacts,context:`canonical ${r} export lane`});let o=i.material.publicFacts;if(o.walletId!==a.walletId||String(o.keyHandle)!==String(n.publicFacts.keyHandle)||String(o.groupPublicKey33B64u)!==String(n.publicFacts.publicKeyB64u)||String(o.ethereumAddress)!==String(n.publicFacts.thresholdOwnerAddress)||o.participantIds.length!==n.publicFacts.participantIds.length||o.participantIds.some((e,t)=>e!==n.publicFacts.participantIds[t]))throw Error(`[SigningEngine][ecdsa-export] canonical ${r} export material mismatch`);let s=i.manifest.durableMaterial,c=s.runtimePolicyScope,l=String(t.deps.relayerUrl).trim().replace(/\/+$/g,``);if(!c)throw Error(`[SigningEngine][ecdsa-export] ${r} runtime policy scope is missing`);if(!l)throw Error(`[SigningEngine][ecdsa-export] ${r} export relayer URL is missing`);return{durable:s,runtimePolicyScope:c,relayerUrl:l}}function ke(e){let{exportLane:t}=e,n=t.capability,r=n.authority;if(!p(r))throw Error(`[SigningEngine][ecdsa-export] Email OTP capability authority mismatch`);let{durable:i,runtimePolicyScope:a,relayerUrl:o}=k({deps:e.deps,exportLane:t,label:`Email OTP`,authMatches:()=>t.laneIdentity.auth.kind===`email_otp`&&t.laneIdentity.auth.providerSubjectId===r.factor.providerUserId});return{source:`canonical_capability`,kind:`fresh_email_otp_route_auth_ready`,chainTarget:t.chainTarget,publicFacts:t.publicFacts,runtimePolicyScope:a,persistedMaterial:n.material,normalSigning:i.routerAbEcdsaDerivationNormalSigning,relayerKeyId:String(i.roleLocalBinding.relayerKeyId),participantIds:O(i.roleLocalBinding.participantIds),relayerUrl:o,authorization:{kind:`fresh_operation_authorization_required`,authority:r}}}function Ae(e){let{exportLane:t}=e,n=t.capability,r=n.authority;if(!f(r))throw Error(`[SigningEngine][ecdsa-export] passkey capability authority mismatch`);let{durable:i,runtimePolicyScope:a,relayerUrl:o}=k({deps:e.deps,exportLane:t,label:`passkey`,authMatches:()=>t.laneIdentity.auth.kind===`passkey`&&t.laneIdentity.auth.credentialIdB64u===r.factor.credentialIdB64u});return{source:`canonical_capability`,kind:`fresh_passkey_needs_authorization`,chainTarget:t.chainTarget,publicFacts:t.publicFacts,runtimePolicyScope:a,publicCapability:i.roleLocalPublicFacts.publicCapability,existingRoleLocalMaterial:n.material,normalSigning:i.routerAbEcdsaDerivationNormalSigning,relayerKeyId:String(i.roleLocalBinding.relayerKeyId),participantIds:O(i.roleLocalBinding.participantIds),relayerUrl:o}}function je(t){let{exportLane:n,resolution:r}=t;if(n.laneIdentity.auth.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime auth mismatch`);if(r.runtime.authBinding.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime authority mismatch`);if(n.laneIdentity.auth.providerSubjectId!==r.runtime.authBinding.providerSubjectId)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime auth mismatch`);if(!e(r.runtime.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] Email OTP material activation mismatch`);let i=r.runtime.runtimePolicyScope;if(!i)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime policy scope is missing`);let a=xe({authority:r.manifest.signer.authority,materialActivation:r.manifest.activation.materialActivation,publicFacts:r.manifest.durableMaterial.roleLocalPublicFacts});return{source:`canonical_capability`,kind:`fresh_email_otp_route_auth_ready`,chainTarget:n.chainTarget,publicFacts:n.publicFacts,runtimePolicyScope:i,persistedMaterial:a,normalSigning:r.runtime.normalSigning,relayerKeyId:r.runtime.relayerKeyId,participantIds:r.runtime.participantIds,relayerUrl:r.runtime.relayerUrl,authorization:{kind:`fresh_operation_authorization_required`,authority:r.runtime.authBinding.emailOtpAuthority}}}function Me(t){let{exportLane:n}=t,r=n.runtime;if(r.requiredCapability!==`export_keys`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority lane lacks export_keys capability`);if(r.walletId!==n.key.walletId)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority wallet mismatch`);if(!e(r.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority material activation mismatch`);h({expected:n.publicFacts,actual:r.publicFacts,context:`active Wallet Authority ECDSA export lane`});let i=r.normalSigning,a=i.scope;if(a.wallet_id!==String(r.walletId)||a.ecdsa_threshold_key_id!==r.ecdsaThresholdKeyId||a.public_identity.threshold_public_key33_b64u!==r.publicFacts.publicKeyB64u||!e(te(a.material_activation),r.materialActivation))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority normal-signing identity mismatch`);let o=String(t.deps.relayerUrl).trim().replace(/\/+$/g,``);if(!o)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority export relayer URL is missing`);let s=O(r.publicFacts.participantIds);if(r.auth.kind===`passkey`){if(!f(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority mismatch`);if(r.factorAuthority.factor.credentialIdB64u!==r.auth.credentialIdB64u||r.factorAuthority.bindingId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ecdsa-export] active passkey factor identity mismatch`);return{source:`active_wallet_authority`,kind:`active_wallet_authority_passkey_needs_authorization`,chainTarget:n.chainTarget,publicFacts:r.publicFacts,normalSigning:i,relayerKeyId:r.relayerKeyId,participantIds:s,relayerUrl:o,runtime:r,factorAuthority:r.factorAuthority,authMethod:`passkey`}}if(!p(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority mismatch`);if(r.factorAuthority.factor.providerUserId!==r.auth.providerSubjectId||r.factorAuthority.bindingId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor identity mismatch`);return{source:`active_wallet_authority`,kind:`active_wallet_authority_email_otp_needs_authorization`,chainTarget:n.chainTarget,publicFacts:r.publicFacts,normalSigning:i,relayerKeyId:r.relayerKeyId,participantIds:s,relayerUrl:o,runtime:r,factorAuthority:r.factorAuthority,authMethod:`email_otp`}}async function A(e,t){if(t.source!==`canonical_capability`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority Email OTP material uses its holder runtime`);if(t.authMethod!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] fresh Email OTP export requires Email OTP lane`);let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.key.walletId,chainTarget:t.chainTarget});if(n.kind===`blocked`&&n.reason===`missing_material`)return ke({deps:e,exportLane:t});if(n.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] Email OTP capability runtime unavailable: ${n.reason}`);return je({exportLane:t,resolution:n})}async function j(t,n){if(n.source===`active_wallet_authority`)return Me({deps:t,exportLane:n});if(n.authMethod===`email_otp`)return await A(t,n);let r=await t.resolveActiveEcdsaCapabilityRuntime({walletId:n.key.walletId,chainTarget:n.chainTarget});if(r.kind===`blocked`&&r.reason===`missing_material`)return Ae({deps:t,exportLane:n});if(r.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] passkey capability runtime unavailable: ${r.reason}`);if(!e(r.runtime.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] passkey material activation mismatch`);if(r.runtime.authBinding.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] passkey authority binding mismatch`);let i=r.manifest.signer.registeredPublicFacts;h({expected:n.publicFacts,actual:i,context:`canonical passkey export lane`});let a=r.runtime.runtimePolicyScope;if(!a)throw Error(`[SigningEngine][ecdsa-export] durable passkey export requires runtimePolicyScope`);return{source:`canonical_capability`,kind:`fresh_passkey_needs_authorization`,chainTarget:n.chainTarget,publicFacts:i,runtimePolicyScope:a,publicCapability:r.manifest.durableMaterial.roleLocalPublicFacts.publicCapability,existingRoleLocalMaterial:xe({authority:r.manifest.signer.authority,materialActivation:r.manifest.durableMaterial.materialActivation,publicFacts:r.manifest.durableMaterial.roleLocalPublicFacts}),normalSigning:r.runtime.normalSigning,relayerKeyId:r.runtime.relayerKeyId,participantIds:r.runtime.participantIds,relayerUrl:r.runtime.relayerUrl}}function Ne(e){return n(e,32,`Email OTP export UI request IDs`)}function Pe(e){switch(e.kind){case`near_account`:return String(c(e.nearAccountId));case`wallet_session`:{let t=String(e.walletId||``).trim();if(!t)throw Error(`Email OTP export requires wallet identity`);return t}default:return e}}function Fe(e){switch(e.kind){case`near_account`:if(!String(e.walletId||``).trim())throw Error(`Email OTP NEAR export requires wallet identity`);return{kind:`near_wallet`,walletId:String(e.walletId).trim(),nearAccountId:String(c(e.nearAccountId))};case`wallet_session`:{let t=String(e.walletId||``).trim();if(!t)throw Error(`Email OTP export requires wallet identity`);return{kind:`evm_wallet`,walletId:t}}default:return e}}function Ie(e){return{challengeId:e.challenge.challengeId,...e.challenge.emailHint?{emailHint:e.challenge.emailHint}:{},title:`Enter email code to export`,body:`This one-time code authorizes private key export only.`,helperText:`Enter the 6-digit code sent to your email`,onResend:e.onResend}}async function M(e){let t=Pe(e.identity),n=async()=>{let t=await e.challengeSource.requestChallenge(),n=String(t.challengeId||``).trim();if(!n)throw Error(`Email OTP export challenge response did not include challengeId`);let r=String(t.emailHint||``).trim();if(!r)throw Error(`Email OTP export challenge response did not include emailHint`);let i={challengeId:n,emailHint:r,delivery:t.delivery};return e.onChallenge?.(i),i},r=await n(),i=Ie({challenge:r,onResend:async()=>(r=await n(),r)}),a=Fe(e.identity),o=await e.confirmer.requestUserConfirmation({requestId:Ne(`export-${e.curve}-email-otp-auth`),type:w.SIGN_INTENT_DIGEST,summary:{operation:`Export Private Key`,accountId:t,publicKey:e.publicKey,warning:`Enter the email code to export this key. Anyone with the private key can fully control the account.`},payload:{signingSubject:a,challengeB64u:r.challengeId,signingAuthPlan:{kind:C.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:i},emailOtpPrompt:i},intentDigest:`export-keys:${t}:${e.chain}:${e.curve}:email-otp`});if(!o.confirmed)throw Error(o.error||`User cancelled Email OTP export request`);let s=String(o.otpCode||``).replace(/\D/g,``).slice(0,6);if(s.length!==6)throw Error(`Email OTP export requires a 6-digit code`);return{challengeId:String(o.emailOtpChallengeId||r.challengeId).trim(),otpCode:s}}function N(e){throw Error(`[SigningEngine][export] unsupported authorization identity: ${String(e)}`)}function Le(e){throw Error(`[SigningEngine][export] unsupported step-up method: ${String(e)}`)}function Re(e){let t=String(e.walletSessionUserId||``).trim();if(!t)throw Error(`[SigningEngine][export] missing export step-up authorization identity`);let n=String(e.publicKey||``).trim();if(!n)throw Error(`[SigningEngine][export] missing export step-up authorization public key`);switch(e.curve){case`ecdsa`:return{walletSessionUserId:t,publicKey:n,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.chain};case`ed25519`:{let r={walletSessionUserId:t,publicKey:n,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:String(e.nearAccountId||``).trim(),nearEd25519SigningKeyId:String(e.nearEd25519SigningKeyId||``).trim(),signerSlot:Number(e.signerSlot)};if(!r.nearAccountId||!r.nearEd25519SigningKeyId||!Number.isSafeInteger(r.signerSlot)||r.signerSlot<1)throw Error(`[SigningEngine][export] Ed25519 export authorization identity is invalid`);return r}default:return N(e)}}function ze(e){let t={kind:C.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:e.emailOtpPrompt},n=e.emailOtpPrompt.emailHint;switch(e.identity.curve){case`ecdsa`:return{kind:`email_otp`,signingAuthPlan:t,challengeId:e.challengeId,otpCode:e.otpCode,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.identity.chain,...n?{emailHint:n}:{}};case`ed25519`:return{kind:`email_otp`,signingAuthPlan:t,challengeId:e.challengeId,otpCode:e.otpCode,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:e.identity.nearAccountId,nearEd25519SigningKeyId:e.identity.nearEd25519SigningKeyId,signerSlot:e.identity.signerSlot,...n?{emailHint:n}:{}};default:return N(e.identity)}}function Be(e){let t={kind:C.PasskeyReauth,method:`passkey`};switch(e.identity.curve){case`ecdsa`:return{kind:`passkey`,signingAuthPlan:t,credential:e.credential,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.identity.chain};case`ed25519`:return{kind:`passkey`,signingAuthPlan:t,credential:e.credential,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:e.identity.nearAccountId,nearEd25519SigningKeyId:e.identity.nearEd25519SigningKeyId,signerSlot:e.identity.signerSlot};default:return N(e.identity)}}function P(e){let t=Re(e);switch(e.method){case`email_otp`:{if(!e.decision.confirmed)throw Error(e.decision.error||`User cancelled Email OTP export request`);let n=String(e.decision.otpCode||``).replace(/\D/g,``).slice(0,6);if(n.length!==6)throw Error(`Email OTP export requires a 6-digit code`);let r=String(e.decision.emailOtpChallengeId||e.emailOtpPrompt.challengeId||``).trim();if(!r)throw Error(`Email OTP export challenge response did not include challengeId`);return ze({identity:t,emailOtpPrompt:e.emailOtpPrompt,challengeId:r,otpCode:n})}case`passkey`:if(!e.decision.confirmed)throw Error(e.decision.error||`User cancelled export request`);if(!e.decision.credential)throw Error(`[SigningEngine][export] missing WebAuthn credential for export authorization`);return Be({identity:t,credential:le(e.decision.credential)});default:return Le(e)}}function Ve(e){switch(e.kind){case`ecdsa`:return{subject:`${String(e.walletSession.walletId)}:${u(e.chainTarget)}`,chain:e.chainTarget.kind,data:{curve:`ecdsa`,chain:e.chainTarget.kind,chainTarget:e.chainTarget}};case`ed25519`:return{subject:`${String(e.walletSession.walletId)}:near:${String(e.nearAccount.accountId)}`,chain:`near`,data:{curve:`ed25519`,chain:`near`,nearAccount:e.nearAccount}}}}function F(e,t){if(e)try{e(se(t))}catch{}}function I(e){return n(e,32,`key export UI request IDs`)}function He(e,t){return`key-export:${e}:${t}:${I(`flow`)}`}async function Ue(e,t){let n=Ve(e),r=He(n.subject,n.chain),i=e.walletSession.walletId,s=n.data;F(e.options.onEvent,{phase:_.STEP_01_STARTED,status:`running`,flowId:r,accountId:String(i),interaction:{kind:`none`,overlay:`none`},data:s});try{return await t({...e,flowId:r})}catch(t){let n=a(t);throw F(e.options.onEvent,{phase:n?_.CANCELLED:_.FAILED,status:n?`cancelled`:`failed`,flowId:r,accountId:String(i),interaction:{kind:`none`,overlay:`hide`},error:{message:o(t)||(n?`Key export cancelled`:`Key export failed`)},data:s}),t}}async function We(e,t){return await e.requestExportChallenge({kind:`wallet_login_challenge`,walletSession:t.walletSession,chain:t.chain})}function L(e,t){let n=e.kind===`email_otp_ed25519_export_auth`?e.walletId:e.walletSession.walletSessionUserId;F(e.onEvent,{phase:_.STEP_02_AUTH_EMAIL_OTP_INPUT_REQUIRED,status:`waiting_for_user`,flowId:e.flowId,accountId:String(n),authMethod:`email_otp`,interaction:{kind:`otp_input`,overlay:`show`},data:{emailHint:t.emailHint,demoOtpCode:ie(t.delivery)}})}async function R(e,t){let n=t.walletSession.walletSessionUserId,r=await M({identity:{kind:`wallet_session`,walletId:n},chain:t.chain,publicKey:t.publicKey,curve:t.curve,challengeSource:{requestChallenge:async()=>await We(e,t)},confirmer:{requestUserConfirmation:async t=>await e.touchConfirm.requestUserConfirmation(t)},onChallenge:L.bind(void 0,t)}),i={challengeId:r.challengeId},a={confirmed:!0,otpCode:r.otpCode,emailOtpChallengeId:r.challengeId},o=P({method:`email_otp`,walletSessionUserId:n,chain:t.chain,publicKey:t.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,emailOtpPrompt:i,decision:a});if(o.kind!==`email_otp`)throw Error(`[SigningEngine][export] Email OTP export returned the wrong step-up method`);return o}async function Ge(e,t){let n=await M({identity:{kind:`near_account`,walletId:t.walletId,nearAccountId:t.nearAccountId},chain:`near`,publicKey:t.publicKey,curve:`ed25519`,challengeSource:{requestChallenge:async()=>await e.requestExportChallenge({kind:`wallet_export_challenge`,walletId:t.walletId,chain:`near`})},confirmer:{requestUserConfirmation:async t=>await e.touchConfirm.requestUserConfirmation(t)},onChallenge:L.bind(void 0,t)}),r=P({method:`email_otp`,walletSessionUserId:t.walletId,publicKey:t.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot,emailOtpPrompt:{challengeId:n.challengeId},decision:{confirmed:!0,otpCode:n.otpCode,emailOtpChallengeId:n.challengeId}});if(r.kind!==`email_otp`||r.curve!==`ed25519`)throw Error(`[SigningEngine][export] Ed25519 Email OTP export authorization changed kind`);return r}async function z(e,t){let n=t.state===`loading`,r=[{scheme:`ed25519`,label:`NEAR Ed25519 private key`,publicKey:t.publicKey,privateKey:n?``:t.privateKey}];await e.touchConfirm.requestUserConfirmation({requestId:I(`export-ed25519-yao-view`),type:w.SHOW_SECURE_PRIVATE_KEY_UI,summary:{operation:`Export Private Key`,accountId:t.nearAccountId,publicKey:t.publicKey,warning:`Anyone with your private key can fully control your account. Never share it.`},payload:{subject:{kind:`near_wallet`,nearAccountId:t.nearAccountId},viewerSessionId:t.viewerSessionId,publicKey:t.publicKey,keys:r,variant:t.variant,theme:t.theme??e.theme??`dark`,loading:n,onLifecycle:e=>{F(t.onEvent,{phase:e===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:e===`opened`?`waiting_for_user`:`succeeded`,flowId:t.flowId,accountId:t.nearAccountId,interaction:{kind:`key_export_viewer`,overlay:e===`opened`?`show`:`hide`},data:{chain:`near`,curve:`ed25519`,loading:n}}),e===`closed`&&F(t.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:t.flowId,accountId:t.nearAccountId,interaction:{kind:`none`,overlay:`hide`},data:{chain:`near`,curve:`ed25519`}})}},intentDigest:`export-keys:${t.walletId}:near:${t.nearAccountId}:ed25519`})}async function B(e,t){let n=t.chainTarget.kind,r=String(t.walletSessionUserId||``).trim();if(!r)throw Error(`[SigningEngine][export] missing ECDSA export wallet session user id`);return await Ke(e,{walletSessionUserId:t.walletSessionUserId,intent:`ecdsa_export`,curve:`ecdsa`,chain:n,publicKey:t.publicKey,flowId:t.flowId,onEvent:t.onEvent,request:{requestId:I(`export-threshold-ecdsa-auth`),type:w.AUTHORIZE_KEY_EXPORT,summary:{operation:`Export Private Key`,accountId:r,publicKey:t.publicKey,warning:n===`tempo`?`Confirm to reveal your Tempo private key export.`:`Confirm to reveal your EVM private key export.`},payload:{subject:{kind:`evm_wallet`,walletId:r},credentialIdB64u:t.credentialIdB64u,publicKey:t.publicKey,...t.challengeB64u?{challengeB64u:t.challengeB64u}:{}},intentDigest:`export-keys:${r}:${u(t.chainTarget)}:secp256k1`}})}async function V(e,t){let n=t.chainTarget.kind,r=n===`tempo`?`Tempo`:`EVM`,i=t.state===`loading`,a=i?[{scheme:`secp256k1`,label:r,publicKey:t.publicKeyHex,privateKey:``,address:t.ethereumAddress}]:[{scheme:`secp256k1`,label:r,publicKey:t.publicKeyHex,privateKey:t.privateKeyHex,address:t.ethereumAddress}];await e.touchConfirm.requestUserConfirmation({requestId:I(`export-threshold-ecdsa-view`),type:w.SHOW_SECURE_PRIVATE_KEY_UI,summary:{operation:`Export Private Key`,accountId:t.walletId,publicKey:t.publicKeyHex,warning:`Anyone with your private key can fully control your account. Never share it.`},payload:{subject:{kind:`evm_wallet`,walletId:t.walletId},viewerSessionId:t.viewerSessionId,publicKey:t.publicKeyHex,keys:a,variant:t.variant,theme:t.theme??e.theme??`dark`,loading:i,onLifecycle:e=>{F(t.onEvent,{phase:e===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:e===`opened`?`waiting_for_user`:`succeeded`,flowId:t.flowId,accountId:String(t.walletId),interaction:{kind:`key_export_viewer`,overlay:e===`opened`?`show`:`hide`},data:{chain:n,curve:`ecdsa`,loading:i}}),e===`closed`&&F(t.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:t.flowId,accountId:String(t.walletId),interaction:{kind:`none`,overlay:`hide`},data:{chain:n,curve:`ecdsa`}})}},intentDigest:`export-keys:${t.walletId}:${u(t.chainTarget)}:secp256k1`})}async function Ke(e,t){let n=String(t.walletSessionUserId||``).trim();if(!n)throw Error(`[SigningEngine][export] missing export account identity`);F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,flowId:t.flowId,accountId:String(n),authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`},data:{intent:t.intent,curve:t.curve}}),T();let r=await e.touchConfirm.requestUserConfirmation(t.request),i=P({method:`passkey`,walletSessionUserId:t.walletSessionUserId,publicKey:t.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:t.chain,decision:r});if(i.kind!==`passkey`)throw Error(`[SigningEngine][export] passkey export returned the wrong step-up method`);return F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:String(n),authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`},data:{intent:t.intent,curve:t.curve}}),i}function qe(e){F(e.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:e.flowId,accountId:String(e.walletId),interaction:{kind:`none`,overlay:`none`},data:{chain:e.chain,curve:`ecdsa`}})}function Je(e){F(e.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:e.flowId,accountId:String(e.walletId),interaction:{kind:`none`,overlay:`none`},data:{chain:e.chain,curve:`ecdsa`,...e.source?{source:e.source}:{}}})}async function Ye(e,t){await V({touchConfirm:e.touchConfirm,theme:e.theme},{state:`ready`,walletId:t.walletId,chainTarget:t.exportLane.chainTarget,publicKeyHex:String(t.artifact.publicKeyHex||``).trim(),privateKeyHex:String(t.artifact.privateKeyHex||``).trim(),ethereumAddress:String(t.artifact.ethereumAddress||``).trim(),variant:t.options.variant,theme:t.options.theme,viewerSessionId:t.viewerSessionId,flowId:t.flowId,onEvent:t.onEvent})}async function Xe(e,t){await V({touchConfirm:e.touchConfirm,theme:e.theme},{state:`loading`,walletId:t.walletId,chainTarget:t.exportLane.chainTarget,publicKeyHex:String(t.publicKey||``).trim(),ethereumAddress:String(t.ethereumAddress||``).trim(),variant:t.options.variant,theme:t.options.theme,viewerSessionId:t.viewerSessionId,flowId:t.flowId,onEvent:t.onEvent})}async function H(t,n){let r=D(n.exportLane),i=I(`export-threshold-ecdsa-viewer-session`);qe({flowId:n.flowId,walletId:n.walletId,chain:r,onEvent:n.onEvent});try{await Xe(t,{walletId:n.walletId,exportLane:n.exportLane,publicKey:n.exportPublicKey,ethereumAddress:n.exportLane.publicFacts.thresholdOwnerAddress,options:n.options,viewerSessionId:i,flowId:n.flowId,onEvent:n.onEvent});let a=n.exportLane.laneIdentity.signer.materialActivation,o=await t.withThresholdEcdsaSigningQueue({queueKey:x({materialActivation:a}),walletId:n.exportLane.key.walletId,enabled:!0,task:async()=>{if(n.exportLane.source===`active_wallet_authority`){let e=n.activeRuntime;if(!e)throw Error(`[SigningEngine][ecdsa-export] active runtime is missing`);await tt({ports:t.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e})}else if(n.exportLane.authMethod===`email_otp`){if(!e((await A(t.sessionStore,n.exportLane)).persistedMaterial.materialActivation,a))throw Error(`[SigningEngine][ecdsa-export] prepared material activation was superseded`)}else{let r=await j(t.sessionStore,n.exportLane);if(r.kind!==`fresh_passkey_needs_authorization`)throw Error(`[SigningEngine][ecdsa-export] prepared export authority changed`);if(!e(r.existingRoleLocalMaterial.materialActivation,a))throw Error(`[SigningEngine][ecdsa-export] prepared material activation was superseded`)}return await n.prepareArtifact()}});return Je({flowId:n.flowId,walletId:n.walletId,chain:r,onEvent:n.onEvent}),E(i)&&await Ye(t,{walletId:n.walletId,exportLane:n.exportLane,artifact:o,options:n.options,viewerSessionId:i,flowId:n.flowId,onEvent:n.onEvent}),{accountId:String(n.walletId),exportedSchemes:[`secp256k1`]}}catch(e){throw T(),e}}function U(e){let t=e.laneIdentity.auth;if(t.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] fresh passkey export requires passkey lane`);return t}async function W(e){return i(t(e))}async function G(e){let t=u(e.chainTarget);return await Ce({walletId:e.walletId,operationKind:`evm.export_key`,operationId:e.requestId,operationDigests:{laneDigest:await W({walletId:e.walletId,chainTarget:t,materialActivation:e.materialActivation,keyHandle:e.keyHandle}),intentDigest:await W({operation:`explicit_key_export`,requestId:e.requestId,walletId:e.walletId,chainTarget:t}),displayDigest:await W({operation:`Export Private Key`,publicKey:e.displayPublicKey,address:e.displayAddress})},materialActivation:e.materialActivation,normalSigningScope:e.operationRuntime.normalSigning.scope,keyHandle:e.keyHandle,relayerKeyId:e.operationRuntime.relayerKeyId,participantIds:[Number(e.operationRuntime.participantIds[0]),Number(e.operationRuntime.participantIds[1])],expiresAtMs:e.operationExpiresAtMs})}async function K(e){return await G({walletId:e.walletId,chainTarget:e.chainTarget,requestId:e.requestId,keyHandle:e.keyHandle,displayPublicKey:e.displayPublicKey,displayAddress:e.displayAddress,materialActivation:e.materialActivation,operationRuntime:e.operationRuntime,operationExpiresAtMs:e.operationExpiresAtMs})}async function Ze(t){let n=await j(t.deps.sessionStore,t.exportLane);if(n.kind!==`fresh_passkey_needs_authorization`)throw Error(`[SigningEngine][ecdsa-export] passkey export authority changed`);if(!e(n.existingRoleLocalMaterial.materialActivation,t.expectedMaterialActivation))throw Error(`[SigningEngine][ecdsa-export] active material changed after authorization confirmation`)}async function Qe(t){if(!e((await A(t.deps.sessionStore,t.exportLane)).persistedMaterial.materialActivation,t.expectedMaterialActivation))throw Error(`[SigningEngine][ecdsa-export] active material changed after authorization confirmation`)}function $e(e){if(!et(e.expected,e.actual))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority runtime was replaced after authorization`)}function et(t,n){let i;switch(t.auth.kind){case`passkey`:i=n.auth.kind===`passkey`&&t.auth.rpId===n.auth.rpId&&t.auth.credentialIdB64u===n.auth.credentialIdB64u;break;case`email_otp`:i=n.auth.kind===`email_otp`&&t.auth.providerSubjectId===n.auth.providerSubjectId;break;default:return t.auth}return t.kind===n.kind&&t.walletId===n.walletId&&t.authorityId===n.authorityId&&t.walletAuthMethodId===n.walletAuthMethodId&&t.authorityDigestB64u===n.authorityDigestB64u&&t.factorAuthorityRef.kind===n.factorAuthorityRef.kind&&t.factorAuthorityRef.walletId===n.factorAuthorityRef.walletId&&t.factorAuthorityRef.authorityDigest===n.factorAuthorityRef.authorityDigest&&t.factorAuthorityRef.walletAuthMethodId===n.factorAuthorityRef.walletAuthMethodId&&t.authorityRevocationEpoch===n.authorityRevocationEpoch&&t.walletSessionId===n.walletSessionId&&t.requiredCapability===n.requiredCapability&&e(t.materialActivation,n.materialActivation)&&t.ecdsaThresholdKeyId===n.ecdsaThresholdKeyId&&t.relayerKeyId===n.relayerKeyId&&t.operationCredential.kind===n.operationCredential.kind&&t.operationCredential.token===n.operationCredential.token&&t.operationCredential.walletSessionId===n.operationCredential.walletSessionId&&r(t.session,n.session)&&ae(t.authMethod,n.authMethod)&&i&&m(t.factorAuthority,n.factorAuthority)&&t.holderRuntime.kind===n.holderRuntime.kind&&t.holderRuntime.walletId===n.holderRuntime.walletId&&t.holderRuntime.authorityId===n.holderRuntime.authorityId&&t.holderRuntime.walletAuthMethodId===n.holderRuntime.walletAuthMethodId&&m(t.holderRuntime.factorAuthority,n.holderRuntime.factorAuthority)&&e(t.holderRuntime.materialActivation,n.holderRuntime.materialActivation)&&t.holderRuntime.holderHandleId===n.holderRuntime.holderHandleId&&t.holderRuntime.ecdsaThresholdKeyId===n.holderRuntime.ecdsaThresholdKeyId&&ne(t.normalSigning,n.normalSigning)}async function q(e){let t=await we({ports:e.ports,input:{walletId:e.expectedRuntime.walletId,requiredCapability:`export_keys`,materialActivation:e.expectedRuntime.materialActivation}});if(t.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority runtime is ${t.reason}`);return $e({expected:e.expectedRuntime,actual:t.runtime}),t.runtime}async function tt(e){await q(e)}function J(e){let t=e.credential,n=String(t.rawId||t.id||``).trim();if(!n||n!==e.authority.factor.credentialIdB64u)throw Error(`[SigningEngine][ecdsa-export] passkey credential does not match authority`);return{kind:`passkey`,authority:e.authority,webauthn_authentication:{id:t.id,rawId:t.rawId,type:t.type,authenticatorAttachment:t.authenticatorAttachment??null,response:{clientDataJSON:t.response.clientDataJSON,authenticatorData:t.response.authenticatorData,signature:t.response.signature,userHandle:t.response.userHandle??null},clientExtensionResults:t.clientExtensionResults??null}}}function Y(e){if(!p(e.authority))throw Error(`[SigningEngine][ecdsa-export] Email OTP material authority mismatch`);return{kind:`email_otp`,authority:e.authority,challenge_id:e.challengeId,otp_code:e.otpCode}}async function X(e){let t=await Se({relayerUrl:e.relayerUrl,transport:e.transport,request:{kind:`router_ab_ecdsa_operation_step_up_v1`,operation:e.prepared.operation,proof:e.proof}});if(t.operation_kind!==`evm.export_key`)throw Error(`[SigningEngine][ecdsa-export] operation step-up kind mismatch`);let n=t.authorization.evidence_set_digest,r=nt({proofKind:e.proof.kind,unseal:t.authorization.unseal});return{kind:`verified_step_up`,evidenceSetDigest:n,operation:e.prepared.operation,expiresAtMs:t.expires_at_ms,quotaUse:`none`,unseal:r,exportTopology:t.export_topology}}function nt(e){switch(e.proofKind){case`passkey`:if(e.unseal.kind!==`not_requested`)throw Error(`[SigningEngine][ecdsa-export] passkey step-up returned Email OTP unseal material`);return{kind:`not_requested`};case`email_otp`:if(e.unseal.kind!==`email_otp_grant`)throw Error(`[SigningEngine][ecdsa-export] Email OTP step-up did not return an unseal grant`);return{kind:`email_otp_grant`,grant:e.unseal.grant,challenge_id:e.unseal.challenge_id};default:{let t=e.proofKind;throw Error(`Unsupported ECDSA export step-up proof: ${String(t)}`)}}}async function rt(e,t){U(t.exportLane);let n=I(`tecdsa-export`),r=await K({walletId:t.walletId,chainTarget:t.exportLane.chainTarget,requestId:n,keyHandle:t.material.existingRoleLocalMaterial.publicFacts.keyHandle,displayPublicKey:t.material.existingRoleLocalMaterial.publicFacts.groupPublicKey33B64u,displayAddress:t.material.existingRoleLocalMaterial.publicFacts.ethereumAddress,materialActivation:t.material.existingRoleLocalMaterial.materialActivation,operationRuntime:t.material,operationExpiresAtMs:Date.now()+5*6e4}),i=await B({touchConfirm:e.touchConfirm,theme:e.theme},{walletSessionUserId:t.walletId,credentialIdB64u:U(t.exportLane).credentialIdB64u,publicKey:t.exportPublicKey,chainTarget:t.exportLane.chainTarget,challengeB64u:r.challengeB64u,flowId:t.flowId,onEvent:t.onEvent});await Ze({deps:e,exportLane:t.exportLane,expectedMaterialActivation:t.material.existingRoleLocalMaterial.materialActivation});let a=t.exportLane.capability.authority;if(!f(a))throw Error(`[SigningEngine][ecdsa-export] exact Passkey capability authority changed`);let o=await X({relayerUrl:t.material.relayerUrl,prepared:r,transport:{kind:`factor_proof`},proof:J({authority:a,credential:i.credential})});return{exportActivation:ge({relayerUrl:t.material.relayerUrl,existingRoleLocalMaterial:t.material.existingRoleLocalMaterial,authorization:o}),credential:i.credential}}async function it(e){let t=d({walletId:e.walletId,walletSessionUserId:e.walletId});return await e.deps.emailOtp.exportEcdsaKeyWithDurableAuthorization({walletSession:t,chainTarget:e.material.chainTarget,challengeId:e.authorization.challengeId,otpCode:e.authorization.otpCode,publicFacts:e.material.publicFacts,runtimePolicyScope:e.material.runtimePolicyScope,authority:e.material.authorization.authority,persistedMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization})}function Z(e){return{normalSigning:e.runtime.normalSigning,relayerKeyId:e.relayerKeyId,participantIds:e.participantIds}}function Q(e){return Math.min(Date.now()+5*6e4,e.session.expiresAtMs)}async function at(e){if(e.material.runtime.auth.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] active passkey runtime auth mismatch`);if(!f(e.material.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority mismatch`);let t=await K({walletId:e.walletId,chainTarget:e.exportLane.chainTarget,requestId:I(`tecdsa-active-passkey-export`),keyHandle:e.material.runtime.publicFacts.keyHandle,displayPublicKey:e.material.runtime.publicFacts.publicKeyB64u,displayAddress:e.material.runtime.publicFacts.thresholdOwnerAddress,materialActivation:e.material.runtime.materialActivation,operationRuntime:Z(e.material),operationExpiresAtMs:Q(e.material.runtime)}),n=await B({touchConfirm:e.deps.touchConfirm,theme:e.deps.theme},{walletSessionUserId:e.walletId,credentialIdB64u:e.material.factorAuthority.factor.credentialIdB64u,publicKey:e.exportPublicKey,chainTarget:e.exportLane.chainTarget,challengeB64u:t.challengeB64u,flowId:e.flowId,onEvent:e.onEvent}),r=await q({ports:e.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e.material.runtime});if(!f(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority changed`);return{runtime:r,authorization:await X({relayerUrl:e.material.relayerUrl,prepared:t,transport:{kind:`wallet_session`,credential:r.operationCredential},proof:J({authority:r.factorAuthority,credential:n.credential})})}}async function ot(e){if(e.material.runtime.auth.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] active Email OTP runtime auth mismatch`);if(!p(e.material.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority mismatch`);let t=await K({walletId:e.walletId,chainTarget:e.exportLane.chainTarget,requestId:I(`tecdsa-active-email-otp-export`),keyHandle:e.material.runtime.publicFacts.keyHandle,displayPublicKey:e.material.runtime.publicFacts.publicKeyB64u,displayAddress:e.material.runtime.publicFacts.thresholdOwnerAddress,materialActivation:e.material.runtime.materialActivation,operationRuntime:Z(e.material),operationExpiresAtMs:Q(e.material.runtime)}),n=await R({touchConfirm:e.deps.touchConfirm,requestExportChallenge:e.deps.emailOtp.requestExportChallenge},{kind:`wallet_session_export_auth`,walletSession:d({walletId:e.walletId,walletSessionUserId:e.walletId}),chain:D(e.exportLane),publicKey:e.exportPublicKey,curve:`ecdsa`,flowId:e.flowId,onEvent:e.onEvent}),r=await q({ports:e.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e.material.runtime});if(!p(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority changed`);return{runtime:r,authorization:await X({relayerUrl:e.material.relayerUrl,prepared:t,transport:{kind:`wallet_session`,credential:r.operationCredential},proof:Y({authority:r.factorAuthority,challengeId:n.challengeId,otpCode:n.otpCode})})}}async function st(e){switch(e.material.kind){case`active_wallet_authority_passkey_needs_authorization`:return await at({deps:e.deps,walletId:e.walletId,exportLane:e.exportLane,material:e.material,exportPublicKey:e.exportPublicKey,flowId:e.flowId,onEvent:e.onEvent});case`active_wallet_authority_email_otp_needs_authorization`:return await ot({deps:e.deps,walletId:e.walletId,exportLane:e.exportLane,material:e.material,exportPublicKey:e.exportPublicKey,flowId:e.flowId,onEvent:e.onEvent});default:return ct(e.material)}}function ct(e){throw Error(`[SigningEngine][ecdsa-export] unsupported active wallet authority material: ${String(e)}`)}async function lt(e,t){let n=String(t.material.publicFacts.publicKeyB64u),r=await st({deps:e,walletId:t.walletId,exportLane:t.exportLane,material:t.material,exportPublicKey:n,flowId:t.flowId,onEvent:t.onEvent});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,activeRuntime:r.runtime,exportPublicKey:n,options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:async()=>{let n=await q({ports:e.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:r.runtime});return await _e({getSignerWorkerContext:e.getSignerWorkerContext},{runtime:n,operationAuthorization:r.authorization,relayerUrl:t.material.relayerUrl})}})}async function ut(e,t){let n=D(t.exportLane),r=await G({walletId:t.walletId,chainTarget:t.exportLane.chainTarget,requestId:I(`tecdsa-email-otp-export`),keyHandle:t.material.persistedMaterial.publicFacts.keyHandle,displayPublicKey:t.material.persistedMaterial.publicFacts.groupPublicKey33B64u,displayAddress:t.material.persistedMaterial.publicFacts.ethereumAddress,materialActivation:t.material.persistedMaterial.materialActivation,operationRuntime:t.material,operationExpiresAtMs:Date.now()+5*6e4}),i=await R({touchConfirm:e.touchConfirm,requestExportChallenge:e.emailOtp.requestExportChallenge},{kind:`wallet_session_export_auth`,walletSession:d({walletId:t.walletId,walletSessionUserId:t.walletId}),chain:n,publicKey:String(t.material.publicFacts.publicKeyB64u),curve:`ecdsa`,flowId:t.flowId,onEvent:t.onEvent});await Qe({deps:e,exportLane:t.exportLane,expectedMaterialActivation:t.material.persistedMaterial.materialActivation});let a=await X({relayerUrl:t.material.relayerUrl,prepared:r,transport:{kind:`factor_proof`},proof:Y({authority:t.material.authorization.authority,challengeId:i.challengeId,otpCode:i.otpCode})});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,exportPublicKey:String(t.material.publicFacts.publicKeyB64u),options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:it.bind(void 0,{deps:e,walletId:t.walletId,material:t.material,authorization:i,persistedMaterial:t.material.persistedMaterial,explicitExportAuthorization:a})})}async function dt(e,t){if(t.exportLane.authMethod!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] fresh passkey export requires passkey lane`);let n=String(t.material.publicFacts.publicKeyB64u),r=await rt(e,{walletId:t.walletId,exportLane:t.exportLane,material:t.material,exportPublicKey:n,flowId:t.flowId,onEvent:t.onEvent});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,exportPublicKey:n,options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:async()=>{let n=await e.provisionPasskeyEcdsaExplicitExportSession(r.exportActivation);return await he({getSignerWorkerContext:e.getSignerWorkerContext},{walletSessionUserId:t.walletId,exportProvision:n,factorAuthorization:{kind:`passkey`,passkeyCredentialIdB64u:String(r.credential.rawId||r.credential.id),credential:r.credential}})}})}function $(e){let t=e.source===`canonical_capability`?e.authorization:null;return{authMethod:S(e),curve:e.curve,chain:e.chainTarget.kind,chainTarget:e.chainTarget,state:e.state,source:e.source,...t?{remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{},updatedAtMs:e.updatedAtMs,evmFamilyKeyFingerprint:g({walletId:e.key.walletId,publicFacts:e.publicFacts})}}function ft(e,t){return String(e.key.walletId)===t.walletId?String(g({walletId:e.key.walletId,publicFacts:e.publicFacts})):``}function pt(e){if(!e.candidates.length)throw y(`evm-family`,{stage:`key_export.exact_lane_no_candidate`,context:e.context,candidateCount:e.candidates.length,candidates:e.candidates.map($)}),Error(`[SigningEngine][${e.context}] exact lane selection failed: no_candidate`);for(let t of e.candidates)if(!ft(t,e.ecdsaContext))return mt(e);if(e.candidates.length!==1)return mt(e);let[t]=e.candidates;return me(`evm-family`,{stage:`key_export.exact_lane_selected`,context:e.context,reason:`single_exact_candidate`,selectedLane:$(t),candidateCount:e.candidates.length}),t}function mt(e){throw y(`evm-family`,{stage:`key_export.exact_lane_ambiguous_material`,context:e.context,candidateCount:e.candidates.length,candidates:e.candidates.map($)}),Error(`[SigningEngine][${e.context}] exact lane selection failed: ambiguous_material`)}function ht(e){return pe({signer:de({walletId:e.lane.key.walletId,chainTarget:e.chainTarget||e.lane.chainTarget,keyHandle:e.lane.publicFacts.keyHandle,key:e.lane.key,materialActivation:e.lane.materialActivation}),auth:e.lane.auth})}function gt(e){return e.source===`active_wallet_authority`||e.state===`ready`?{kind:`loaded_worker_material`}:S(e)===`email_otp`?{kind:`material_pending`,reason:`email_otp_route_auth`}:{kind:`sealed_worker_material`}}function _t(e){if(e.lane.source===`active_wallet_authority`)return{chainTarget:e.chainTarget,authMethod:S(e.lane),material:{kind:`loaded_worker_material`},state:`deferred`};let t=S(e.lane),n=gt(e.lane);switch(e.lane.state){case`expired`:case`exhausted`:throw Error(`[SigningEngine][ecdsa-export] expired export lane requires durable public reauth authority`);case`ready`:case`deferred`:return{chainTarget:e.chainTarget,authMethod:t,material:n,state:e.lane.state}}}async function vt(e){let t=e.lane,n=ht({lane:t}),r=_t({lane:t,chainTarget:e.chainTarget});return t.source===`active_wallet_authority`?{curve:`ecdsa`,laneIdentity:n,source:`active_wallet_authority`,authorizationState:`authorization_required`,key:t.key,publicFacts:t.publicFacts,runtime:t.runtime,chainTarget:e.chainTarget,authMethod:S(t),material:{kind:`loaded_worker_material`},state:`deferred`}:t.authorization?{curve:`ecdsa`,laneIdentity:n,source:`canonical_capability`,authorizationState:`authorized`,authorization:t.authorization,capability:t.capability,key:t.key,publicFacts:t.publicFacts,...r}:{curve:`ecdsa`,laneIdentity:n,source:`canonical_capability`,authorizationState:`authorization_required`,capability:t.capability,key:t.key,publicFacts:t.publicFacts,...r}}function yt(e){return v(e.laneIdentity)===v(e.identity)}async function bt(e){return ht({lane:e})}function xt(e){return Te(e.availableLanes,e.chainTarget).filter(e=>Oe(e))}async function St(e,t){let n=xt({availableLanes:await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:t.walletId,ecdsaChainTargets:[t.signingTarget]}),chainTarget:t.signingTarget}),r=[];for(let e of n)yt({laneIdentity:await bt(e),identity:t.laneIdentity})&&r.push(e);let i=pt({context:`ecdsa-export`,candidates:r,ecdsaContext:{walletId:t.walletId}});return await vt({lane:i,chainTarget:i.chainTarget})}async function Ct(e,t){try{switch(t.kind){case`ecdsa`:return await wt(e,t);case`ed25519`:return await Ot(e,t)}}catch(e){if(ye(e))return{kind:`relink_required`,reason:e.reason};throw e}}async function wt(e,t){let n=String(l(t.walletSession.walletId));return{kind:`ecdsa`,laneIdentity:await bt(pt({context:`ecdsa-export-resolve`,candidates:xt({availableLanes:await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:n,ecdsaChainTargets:[t.chainTarget]}),chainTarget:t.chainTarget}),ecdsaContext:{walletId:n}}))}}function Tt(e){let t=e.lane.source===`durable_sealed_record`||e.lane.source===`public_capability_reference`;return String(e.lane.walletId)===e.walletId&&String(e.lane.nearAccountId)===e.nearAccountId&&t}function Et(e){return ue({signer:fe({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,thresholdSessionId:e.thresholdSessionId})}function Dt(e){return[e.walletId,e.nearAccountId,e.nearEd25519SigningKeyId,e.signerSlot,ce(e.auth)].map(e=>String(e)).join(`|`)}async function Ot(e,t){let n=String(l(t.walletSession.walletId)),r=String(t.nearAccount.accountId),i=await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:n,ecdsaChainTargets:[]}),a=i.lanes.ed25519.near;if(!b(a)||a.curve!==`ed25519`||!Tt({lane:a,walletId:n,nearAccountId:r}))throw Error(`[SigningEngine][ed25519-export-resolve] exact Yao lane selection failed: no_candidate`);let o=i.candidates.ed25519.near.filter(e=>b(e)&&e.curve===`ed25519`&&Tt({lane:e,walletId:n,nearAccountId:r})),s=Dt(a);if(o.some(e=>Dt(e)!==s))throw Error(`[SigningEngine][ed25519-export-resolve] exact Yao lane selection failed: ambiguous_material`);return{kind:`ed25519`,laneIdentity:Et(a),materialActivation:a.materialActivation}}async function kt(e,t){let n=await St(e,{walletId:t.walletId,signingTarget:t.signingTarget,laneIdentity:t.laneIdentity});switch(n.material.kind){case`loaded_worker_material`:case`material_pending`:case`sealed_worker_material`:return n}throw n.material,Error(`[SigningEngine][ecdsa-export] unsupported material availability`)}function At(e){return e.capability.materialActivation}function jt(e){return e.material.materialActivation}function Mt(e){return e.auth.kind===`passkey`}function Nt(e){if(!Mt(e.laneIdentity))throw Error(`[SigningEngine][ed25519-export] export requires a passkey Yao lane`);if(e.laneIdentity.signer.account.wallet.walletId!==e.walletId||String(e.laneIdentity.signer.account.nearAccountId)!==String(e.nearAccountId))throw Error(`[SigningEngine][ed25519-export] exact lane subject mismatch`);return e.laneIdentity}function Pt(e){return e.auth.kind===`email_otp`}function Ft(e){if(!Pt(e.laneIdentity))throw Error(`[SigningEngine][ed25519-export] export requires an Email OTP Yao lane`);if(e.laneIdentity.signer.account.wallet.walletId!==e.walletId||String(e.laneIdentity.signer.account.nearAccountId)!==String(e.nearAccountId))throw Error(`[SigningEngine][ed25519-export] exact lane subject mismatch`);return e.laneIdentity}function It(e){let t=e.selected.signer,n=e.context.material;return String(t.account.wallet.walletId)===String(n.walletId)&&String(t.account.nearAccountId)===String(n.nearAccountId)&&String(t.nearEd25519SigningKeyId)===String(n.nearEd25519SigningKeyId)&&t.signerSlot===n.signerSlot&&String(e.selected.auth.rpId)===e.context.rpId&&e.selected.auth.credentialIdB64u===n.credentialIdB64u}function Lt(t){if(!It({selected:t.selectedLaneIdentity,context:t.context}))throw Error(`[SigningEngine][ed25519-export] durable Yao context identity mismatch`);let n=t.context.material;if(!e(t.selectedMaterialActivation,t.context.selectedLaneMaterialActivation))throw Error(`[SigningEngine][ed25519-export] durable Yao context activation mismatch`);let r=t.context.authorization.operationCredential.token;if(!r)throw Error(`[SigningEngine][ed25519-export] active Wallet Session authorization is unavailable`);let i=n.capability.lifecycle;return{laneIdentity:t.selectedLaneIdentity,relayerUrl:t.context.relayerUrl,walletSessionToken:r,walletCustodyEnvelope:t.context.walletCustodyEnvelope,capability:{materialActivation:n.capability.materialActivation,scope:{lifecycle_id:i.lifecycleId,root_share_epoch:i.rootShareEpoch,account_id:i.accountId,threshold_session_id:i.thresholdSessionId,signer_set_id:i.signerSetId,signing_worker_id:i.signingWorkerId,material_activation:re(n.capability.materialActivation)},applicationBinding:n.capability.applicationBinding,participantIds:n.capability.participantIds,registeredPublicKey:n.capability.registeredPublicKey,stateEpoch:n.capability.stateEpoch,activeCapabilityBinding:n.capability.activeCapabilityBinding,runtimePolicyScope:n.capability.runtimePolicyScope}}}async function Rt(e,t){let n=Nt(t),r=await e.resolvePasskeyExportContext({laneIdentity:n,materialActivation:t.materialActivation});switch(r.kind){case`ready`:return Lt({context:r.context,selectedLaneIdentity:n,selectedMaterialActivation:t.materialActivation});case`capability_recovery_required`:throw Error(`[SigningEngine][ed25519-export] passkey material recovery did not publish durable context`)}throw Error(`[SigningEngine][ed25519-export] unsupported passkey export context state`)}async function zt(t,n){let r=Ft(n),i=await t.emailOtp.resolveExportContext({laneIdentity:r,materialActivation:n.materialActivation});if(!e(n.materialActivation,i.material.materialActivation)&&i.material.kind!==`sealed_export_root`)throw Error(`[SigningEngine][ed25519-export] Email OTP Yao context activation mismatch`);return{context:i,laneIdentity:r}}function Bt(e){let t=e.resolved.laneIdentity.signer;return{artifactKind:ve,walletId:String(e.input.walletId),nearAccountId:String(e.input.nearAccountId),relayerUrl:e.resolved.relayerUrl,authorization:{kind:`opaque_wallet_session`,walletSessionToken:e.resolved.walletSessionToken},flowId:e.input.flowId,viewerSessionId:e.viewerSessionId,exactLane:{nearEd25519SigningKeyId:String(t.nearEd25519SigningKeyId),signerSlot:t.signerSlot,credentialIdB64u:e.resolved.laneIdentity.auth.credentialIdB64u,materialActivation:At(e.resolved)},walletCustodyEnvelope:e.resolved.walletCustodyEnvelope,capability:e.resolved.capability,variant:e.input.options.variant,theme:e.input.options.theme??e.theme}}function Vt(e,t){let n=String(e.walletId);F(e.onEvent,{phase:t===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:t===`opened`?`waiting_for_user`:`succeeded`,flowId:e.flowId,accountId:n,interaction:{kind:`key_export_viewer`,overlay:t===`opened`?`show`:`hide`},data:{chain:`near`,curve:`ed25519`}}),t===`closed`&&F(e.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:e.flowId,accountId:n,interaction:{kind:`none`,overlay:`hide`},data:{chain:`near`,curve:`ed25519`}})}async function Ht(e,t){switch(t.laneIdentity.auth.kind){case`passkey`:break;case`email_otp`:return await Ut(e,t);default:throw t.laneIdentity.auth,Error(`[SigningEngine][ed25519-export] unsupported lane authorization method`)}let n=Rt(e,t),r=e.touchConfirm.initialize(),[i]=await Promise.all([n,r]),a=String(t.walletId),o=I(`export-ed25519-yao-viewer-session`),s=Vt.bind(void 0,{flowId:t.flowId,walletId:t.walletId,onEvent:t.onEvent});F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,flowId:t.flowId,accountId:a,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`},data:{intent:`ed25519_export`,chain:`near`,curve:`ed25519`}}),F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:t.flowId,accountId:a,interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}});let c=await e.withThresholdEd25519CommitQueue({queueKey:x({materialActivation:At(i)}),nearAccountId:t.nearAccountId,enabled:!0,task:()=>e.passkeyMpcExport.exportPrivateKeysWithUi(Bt({resolved:i,viewerSessionId:o,input:t,theme:e.theme}),{onViewerLifecycle:s})});if(c.kind!==`completed`)throw Error(c.error);if(c.exportedSchemes.length!==1||c.exportedSchemes[0]!==`ed25519`)throw Error(`[SigningEngine][ed25519-export] secure export failed`);return F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:a,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`none`},data:{intent:`ed25519_export`,chain:`near`,curve:`ed25519`}}),F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:a,interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}}),{accountId:String(t.nearAccountId),exportedSchemes:[`ed25519`]}}async function Ut(e,t){let n=await zt(e,t),r=`ed25519:${s(Uint8Array.from(n.context.material.capability.registeredPublicKey))}`,i=await Ge({touchConfirm:e.touchConfirm,requestExportChallenge:e.emailOtp.requestExportChallenge},{kind:`email_otp_ed25519_export_auth`,walletId:t.walletId,nearAccountId:String(t.nearAccountId),nearEd25519SigningKeyId:String(n.laneIdentity.signer.nearEd25519SigningKeyId),signerSlot:n.laneIdentity.signer.signerSlot,publicKey:r,curve:`ed25519`,chain:`near`,flowId:t.flowId,onEvent:t.onEvent});F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:t.flowId,accountId:String(t.nearAccountId),interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}});let a=I(`export-ed25519-yao-viewer-session`);try{await z({touchConfirm:e.touchConfirm,theme:e.theme},{state:`loading`,walletId:String(t.walletId),nearAccountId:String(t.nearAccountId),publicKey:r,variant:t.options.variant,theme:t.options.theme,viewerSessionId:a,flowId:t.flowId,onEvent:t.onEvent});let o=await e.withThresholdEd25519CommitQueue({queueKey:x({materialActivation:jt(n.context)}),nearAccountId:t.nearAccountId,enabled:n.context.material.kind===`active_capability`,task:()=>e.emailOtp.exportSeedWithFreshAuthorization({challengeId:i.challengeId,otpCode:i.otpCode,exportContext:n.context})});return F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:String(t.nearAccountId),interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}}),E(a)&&await z({touchConfirm:e.touchConfirm,theme:e.theme},{state:`ready`,walletId:String(t.walletId),nearAccountId:String(t.nearAccountId),publicKey:o.publicKey,privateKey:o.privateKey,variant:t.options.variant,theme:t.options.theme,viewerSessionId:a,flowId:t.flowId,onEvent:t.onEvent}),{accountId:String(t.nearAccountId),exportedSchemes:[`ed25519`]}}catch(e){throw T(),e}}function Wt(e){switch(e.kind){case`active`:case`expired`:return e;case`missing`:case`unavailable`:case`invalid`:return null;default:return e}}async function Gt(e){await e.deps.sessionLifecycle.invalidateExpiredAuthorization({state:e.state,source:e.source})}async function Kt(e){let t=await e.deps.sessionLifecycle.readAuthorization(e.request);return t.kind===`expired`&&await Gt({deps:e.deps,state:t,source:oe.operationPreflight}),t}function qt(e){let t=Wt(e.preflightState);return t?Ee({source:e.source,expiresAtMs:t.expiresAtMs,detectedAtMs:e.detectedAtMs}):null}async function Jt(e,t){let n=l(t.walletSession.walletId),r=await kt(e.laneSelection,{walletId:n,signingTarget:De(t.chainTarget),laneIdentity:t.laneIdentity}),i=await j(e.ecdsa.sessionStore,r);if(r.source===`active_wallet_authority`){if(i.source!==`active_wallet_authority`)throw Error(`[SigningEngine][ecdsa-export] active lane material source changed`);return{kind:`active_wallet_authority`,exportLane:r,exportMaterial:i}}if(i.source!==`canonical_capability`)throw Error(`[SigningEngine][ecdsa-export] canonical lane material source changed`);return{kind:`canonical_capability`,exportLane:r,exportMaterial:i}}function Yt(e){if(!(!e||e.source!==`canonical_capability`||!e.authorization))return e.authorization.operationCredential.walletSessionId}function Xt(e){let t=e.exportLane?.publicFacts,n=e.exportLane?g({walletId:e.exportLane.key.walletId,publicFacts:e.exportLane.publicFacts}):void 0;try{console.warn(`[SigningEngine][ecdsa-export][failure]`,{operationId:e.flowId,authMethod:e.exportLane?.authMethod,...n?{evmFamilyKeyFingerprint:n}:{},...t?{keyHandle:String(t.keyHandle)}:{},chainTargetKey:u(e.input.chainTarget),...Yt(e.exportLane)?{walletSessionId:Yt(e.exportLane)}:{},materialActivationId:e.exportLane?.laneIdentity.signer.materialActivation.activationId,freshAuthRetrySideEffectState:`not_applicable`,error:e.error instanceof Error?e.error.message:String(e.error||`unknown error`)})}catch{}}async function Zt(e,t,n){let r=l(t.walletSession.walletId);if(n.kind===`active_wallet_authority`)return await lt(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});if(n.exportMaterial.kind===`fresh_email_otp_route_auth_ready`)return await ut(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});if(n.exportMaterial.kind===`fresh_passkey_needs_authorization`)return await dt(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});throw n.exportMaterial,Error(`[SigningEngine][ecdsa-export] unsupported export material`)}async function Qt(e,t,n){let[r]=await Promise.all([Jt(e,t),e.ecdsa.touchConfirm.initialize()]);if(r.exportLane.authorizationState===`authorization_required`)try{return await Zt(e,t,r)}catch(e){throw Xt({input:t,flowId:t.flowId,exportLane:r.exportLane,exportMaterial:r.exportMaterial,error:e}),e}let i={kind:`ecdsa`,laneIdentity:r.exportLane.laneIdentity,authorization:r.exportLane.authorization},a=await Kt({deps:e,request:{kind:`ecdsa`,laneIdentity:r.exportLane.laneIdentity,authorization:r.exportLane.authorization,nowMs:Date.now()}});try{return await Zt(e,t,r)}catch(o){Xt({input:t,flowId:t.flowId,exportLane:r.exportLane,exportMaterial:r.exportMaterial,error:o});let s=be(o);if(n.kind===`fresh_auth_retry`||s?.kind!==`expired`)throw o;let c=qt({source:i,preflightState:a,detectedAtMs:Date.now()});if(!c)throw o;return await Gt({deps:e,state:c,source:oe.serverRejection}),await Qt(e,t,{kind:`fresh_auth_retry`})}}async function $t(e,t){return await Ht(e.ed25519Yao,{walletId:t.walletSession.walletId,nearAccountId:t.nearAccount.accountId,laneIdentity:t.laneIdentity,materialActivation:t.materialActivation,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent})}async function en(e,t){return await Ue(t,async t=>{switch(t.kind){case`ecdsa`:return await Qt(e,t,{kind:`initial`});case`ed25519`:return await $t(e,t)}})}async function tn(e,t){return await Ct(e.laneSelection,t)}export{en as exportKeypairWithUI,tn as resolveExactKeyExportLane};
1
+ import{r as e}from"./domainIds-BzkGsRqO.js";import{c as t}from"./chains-C_X_fNuS.js";import"./primitives-CqrjmIAH.js";import{r as n}from"./secureRandomId-LwBFx84B.js";import"./sessionPolicy-CBTZQe1n.js";import"./signingSessionSeal-DX41aXUL.js";import{t as r}from"./activeWalletSession-WdZkhtBB.js";import"./capabilityKinds-N8xo_IEh.js";import{o as i}from"./canonicalPrimitives-Dsbsxgxc.js";import{i as a,t as o}from"./errors-DIWY1KR9.js";import{d as s,t as c}from"./accountIds-BzZs7YoX.js";import{c as l,o as u,s as ee,u as d}from"./ecdsaChainTarget-DJBXHzbH.js";import"./signerDomain-DqLCvI-D.js";import"./singletons-8UH3gOnZ.js";import"./walletAuthority-BWvfaKIX.js";import{Dt as f,Et as p,Mt as m,a as h,en as te,g,ht as ne,tn as re}from"./emailOtpEcdsaDerivationIdentity-p0C1CQva.js";import{t as ie}from"./challengeDelivery-5lIu9spR.js";import"./digestEncoding-CkUc5vtR.js";import{i as ae}from"./walletAuthMethodRecord-CnBw27ED.js";import"./registrationIds-ByuReLUc.js";import{a as oe,n as _,u as se}from"./sdkSentEvents-DiQ3YVlj.js";import{s as ce}from"./types-WGrFMQSw.js";import{i as le}from"./helpers-BnkILY2_.js";import{C as ue,D as v,b as de,j as fe,x as pe}from"./nearEd25519YaoSigningPreparation-Eiq_ikXk.js";import{l as y,u as me}from"./trace-QLsbYdld.js";import{n as he,r as ge,t as _e,w as ve,x as ye}from"./ecdsaDerivationExport-C1cE5m0t.js";import{i as be}from"./walletSessionFailure-YuhraC3P.js";import{i as xe,n as Se,r as Ce,s as we}from"./signingQueue-2pr7lAUS.js";import{h as b,i as x,l as Te,n as Ee,s as S}from"./clientSessionPersistenceState-DRdve9rC.js";import{t as C}from"./types-DhtByIcQ.js";import{i as w}from"./appearance-DITtYj-z.js";import{n as T,t as E}from"./export-viewer-host-DUMwD6zP.js";function D(e){return e.chainTarget.kind}function De(e){return e}function Oe(e){return!e||e.curve!==`ecdsa`||!e.chainTarget||!b(e)||!String(e.publicFacts.keyHandle||``).trim()?!1:e.source===`active_wallet_authority`?e.runtime.requiredCapability===`export_keys`&&e.state===`deferred`&&e.authorizationState===`authorization_required`:e.authorization?!0:e.state===`deferred`}function O(e){if(e.length!==2)throw Error(`[SigningEngine][ecdsa-export] ECDSA participant set must contain two parties`);let t=e[0],n=e[1];if(!Number.isSafeInteger(t)||!Number.isSafeInteger(n)||t<=0||n<=0||t===n)throw Error(`[SigningEngine][ecdsa-export] ECDSA participant set is invalid`);return[t,n]}function k(t){let{exportLane:n,label:r}=t,i=n.capability,a=i.manifest.signer;if(a.walletId!==n.key.walletId||!a.scope.targetMemberships.some(e=>ee(e,n.chainTarget)))throw Error(`[SigningEngine][ecdsa-export] ${r} capability target mismatch`);if(!t.authMatches())throw Error(`[SigningEngine][ecdsa-export] ${r} capability auth mismatch`);if(!e(i.manifest.activation.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] ${r} material activation mismatch`);h({expected:n.publicFacts,actual:a.registeredPublicFacts,context:`canonical ${r} export lane`});let o=i.material.publicFacts;if(o.walletId!==a.walletId||String(o.keyHandle)!==String(n.publicFacts.keyHandle)||String(o.groupPublicKey33B64u)!==String(n.publicFacts.publicKeyB64u)||String(o.ethereumAddress)!==String(n.publicFacts.thresholdOwnerAddress)||o.participantIds.length!==n.publicFacts.participantIds.length||o.participantIds.some((e,t)=>e!==n.publicFacts.participantIds[t]))throw Error(`[SigningEngine][ecdsa-export] canonical ${r} export material mismatch`);let s=i.manifest.durableMaterial,c=s.runtimePolicyScope,l=String(t.deps.relayerUrl).trim().replace(/\/+$/g,``);if(!c)throw Error(`[SigningEngine][ecdsa-export] ${r} runtime policy scope is missing`);if(!l)throw Error(`[SigningEngine][ecdsa-export] ${r} export relayer URL is missing`);return{durable:s,runtimePolicyScope:c,relayerUrl:l}}function ke(e){let{exportLane:t}=e,n=t.capability,r=n.authority;if(!p(r))throw Error(`[SigningEngine][ecdsa-export] Email OTP capability authority mismatch`);let{durable:i,runtimePolicyScope:a,relayerUrl:o}=k({deps:e.deps,exportLane:t,label:`Email OTP`,authMatches:()=>t.laneIdentity.auth.kind===`email_otp`&&t.laneIdentity.auth.providerSubjectId===r.factor.providerUserId});return{source:`canonical_capability`,kind:`fresh_email_otp_route_auth_ready`,chainTarget:t.chainTarget,publicFacts:t.publicFacts,runtimePolicyScope:a,persistedMaterial:n.material,normalSigning:i.routerAbEcdsaDerivationNormalSigning,relayerKeyId:String(i.roleLocalBinding.relayerKeyId),participantIds:O(i.roleLocalBinding.participantIds),relayerUrl:o,authorization:{kind:`fresh_operation_authorization_required`,authority:r}}}function Ae(e){let{exportLane:t}=e,n=t.capability,r=n.authority;if(!f(r))throw Error(`[SigningEngine][ecdsa-export] passkey capability authority mismatch`);let{durable:i,runtimePolicyScope:a,relayerUrl:o}=k({deps:e.deps,exportLane:t,label:`passkey`,authMatches:()=>t.laneIdentity.auth.kind===`passkey`&&t.laneIdentity.auth.credentialIdB64u===r.factor.credentialIdB64u});return{source:`canonical_capability`,kind:`fresh_passkey_needs_authorization`,chainTarget:t.chainTarget,publicFacts:t.publicFacts,runtimePolicyScope:a,publicCapability:i.roleLocalPublicFacts.publicCapability,existingRoleLocalMaterial:n.material,normalSigning:i.routerAbEcdsaDerivationNormalSigning,relayerKeyId:String(i.roleLocalBinding.relayerKeyId),participantIds:O(i.roleLocalBinding.participantIds),relayerUrl:o}}function je(t){let{exportLane:n,resolution:r}=t;if(n.laneIdentity.auth.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime auth mismatch`);if(r.runtime.authBinding.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime authority mismatch`);if(n.laneIdentity.auth.providerSubjectId!==r.runtime.authBinding.providerSubjectId)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime auth mismatch`);if(!e(r.runtime.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] Email OTP material activation mismatch`);let i=r.runtime.runtimePolicyScope;if(!i)throw Error(`[SigningEngine][ecdsa-export] Email OTP runtime policy scope is missing`);let a=xe({authority:r.manifest.signer.authority,materialActivation:r.manifest.activation.materialActivation,publicFacts:r.manifest.durableMaterial.roleLocalPublicFacts});return{source:`canonical_capability`,kind:`fresh_email_otp_route_auth_ready`,chainTarget:n.chainTarget,publicFacts:n.publicFacts,runtimePolicyScope:i,persistedMaterial:a,normalSigning:r.runtime.normalSigning,relayerKeyId:r.runtime.relayerKeyId,participantIds:r.runtime.participantIds,relayerUrl:r.runtime.relayerUrl,authorization:{kind:`fresh_operation_authorization_required`,authority:r.runtime.authBinding.emailOtpAuthority}}}function Me(t){let{exportLane:n}=t,r=n.runtime;if(r.requiredCapability!==`export_keys`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority lane lacks export_keys capability`);if(r.walletId!==n.key.walletId)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority wallet mismatch`);if(!e(r.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority material activation mismatch`);h({expected:n.publicFacts,actual:r.publicFacts,context:`active Wallet Authority ECDSA export lane`});let i=r.normalSigning,a=i.scope;if(a.wallet_id!==String(r.walletId)||a.ecdsa_threshold_key_id!==r.ecdsaThresholdKeyId||a.public_identity.threshold_public_key33_b64u!==r.publicFacts.publicKeyB64u||!e(te(a.material_activation),r.materialActivation))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority normal-signing identity mismatch`);let o=String(t.deps.relayerUrl).trim().replace(/\/+$/g,``);if(!o)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority export relayer URL is missing`);let s=O(r.publicFacts.participantIds);if(r.auth.kind===`passkey`){if(!f(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority mismatch`);if(r.factorAuthority.factor.credentialIdB64u!==r.auth.credentialIdB64u||r.factorAuthority.bindingId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ecdsa-export] active passkey factor identity mismatch`);return{source:`active_wallet_authority`,kind:`active_wallet_authority_passkey_needs_authorization`,chainTarget:n.chainTarget,publicFacts:r.publicFacts,normalSigning:i,relayerKeyId:r.relayerKeyId,participantIds:s,relayerUrl:o,runtime:r,factorAuthority:r.factorAuthority,authMethod:`passkey`}}if(!p(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority mismatch`);if(r.factorAuthority.factor.providerUserId!==r.auth.providerSubjectId||r.factorAuthority.bindingId!==r.walletAuthMethodId)throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor identity mismatch`);return{source:`active_wallet_authority`,kind:`active_wallet_authority_email_otp_needs_authorization`,chainTarget:n.chainTarget,publicFacts:r.publicFacts,normalSigning:i,relayerKeyId:r.relayerKeyId,participantIds:s,relayerUrl:o,runtime:r,factorAuthority:r.factorAuthority,authMethod:`email_otp`}}async function A(e,t){if(t.source!==`canonical_capability`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority Email OTP material uses its holder runtime`);if(t.authMethod!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] fresh Email OTP export requires Email OTP lane`);let n=await e.resolveActiveEcdsaCapabilityRuntime({walletId:t.key.walletId,chainTarget:t.chainTarget});if(n.kind===`blocked`&&n.reason===`missing_material`)return ke({deps:e,exportLane:t});if(n.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] Email OTP capability runtime unavailable: ${n.reason}`);return je({exportLane:t,resolution:n})}async function j(t,n){if(n.source===`active_wallet_authority`)return Me({deps:t,exportLane:n});if(n.authMethod===`email_otp`)return await A(t,n);let r=await t.resolveActiveEcdsaCapabilityRuntime({walletId:n.key.walletId,chainTarget:n.chainTarget});if(r.kind===`blocked`&&r.reason===`missing_material`)return Ae({deps:t,exportLane:n});if(r.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] passkey capability runtime unavailable: ${r.reason}`);if(!e(r.runtime.materialActivation,n.laneIdentity.signer.materialActivation))throw Error(`[SigningEngine][ecdsa-export] passkey material activation mismatch`);if(r.runtime.authBinding.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] passkey authority binding mismatch`);let i=r.manifest.signer.registeredPublicFacts;h({expected:n.publicFacts,actual:i,context:`canonical passkey export lane`});let a=r.runtime.runtimePolicyScope;if(!a)throw Error(`[SigningEngine][ecdsa-export] durable passkey export requires runtimePolicyScope`);return{source:`canonical_capability`,kind:`fresh_passkey_needs_authorization`,chainTarget:n.chainTarget,publicFacts:i,runtimePolicyScope:a,publicCapability:r.manifest.durableMaterial.roleLocalPublicFacts.publicCapability,existingRoleLocalMaterial:xe({authority:r.manifest.signer.authority,materialActivation:r.manifest.durableMaterial.materialActivation,publicFacts:r.manifest.durableMaterial.roleLocalPublicFacts}),normalSigning:r.runtime.normalSigning,relayerKeyId:r.runtime.relayerKeyId,participantIds:r.runtime.participantIds,relayerUrl:r.runtime.relayerUrl}}function Ne(e){return n(e,32,`Email OTP export UI request IDs`)}function Pe(e){switch(e.kind){case`near_account`:return String(c(e.nearAccountId));case`wallet_session`:{let t=String(e.walletId||``).trim();if(!t)throw Error(`Email OTP export requires wallet identity`);return t}default:return e}}function Fe(e){switch(e.kind){case`near_account`:if(!String(e.walletId||``).trim())throw Error(`Email OTP NEAR export requires wallet identity`);return{kind:`near_wallet`,walletId:String(e.walletId).trim(),nearAccountId:String(c(e.nearAccountId))};case`wallet_session`:{let t=String(e.walletId||``).trim();if(!t)throw Error(`Email OTP export requires wallet identity`);return{kind:`evm_wallet`,walletId:t}}default:return e}}function Ie(e){return{challengeId:e.challenge.challengeId,...e.challenge.emailHint?{emailHint:e.challenge.emailHint}:{},title:`Enter email code to export`,body:`This one-time code authorizes private key export only.`,helperText:`Enter the 6-digit code sent to your email`,onResend:e.onResend}}async function M(e){let t=Pe(e.identity),n=async()=>{let t=await e.challengeSource.requestChallenge(),n=String(t.challengeId||``).trim();if(!n)throw Error(`Email OTP export challenge response did not include challengeId`);let r=String(t.emailHint||``).trim();if(!r)throw Error(`Email OTP export challenge response did not include emailHint`);let i={challengeId:n,emailHint:r,delivery:t.delivery};return e.onChallenge?.(i),i},r=await n(),i=Ie({challenge:r,onResend:async()=>(r=await n(),r)}),a=Fe(e.identity),o=await e.confirmer.requestUserConfirmation({requestId:Ne(`export-${e.curve}-email-otp-auth`),type:w.SIGN_INTENT_DIGEST,summary:{operation:`Export Private Key`,accountId:t,publicKey:e.publicKey,warning:`Enter the email code to export this key. Anyone with the private key can fully control the account.`},payload:{signingSubject:a,challengeB64u:r.challengeId,signingAuthPlan:{kind:C.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:i},emailOtpPrompt:i},intentDigest:`export-keys:${t}:${e.chain}:${e.curve}:email-otp`});if(!o.confirmed)throw Error(o.error||`User cancelled Email OTP export request`);let s=String(o.otpCode||``).replace(/\D/g,``).slice(0,6);if(s.length!==6)throw Error(`Email OTP export requires a 6-digit code`);return{challengeId:String(o.emailOtpChallengeId||r.challengeId).trim(),otpCode:s}}function N(e){throw Error(`[SigningEngine][export] unsupported authorization identity: ${String(e)}`)}function Le(e){throw Error(`[SigningEngine][export] unsupported step-up method: ${String(e)}`)}function Re(e){let t=String(e.walletSessionUserId||``).trim();if(!t)throw Error(`[SigningEngine][export] missing export step-up authorization identity`);let n=String(e.publicKey||``).trim();if(!n)throw Error(`[SigningEngine][export] missing export step-up authorization public key`);switch(e.curve){case`ecdsa`:return{walletSessionUserId:t,publicKey:n,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.chain};case`ed25519`:{let r={walletSessionUserId:t,publicKey:n,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:String(e.nearAccountId||``).trim(),nearEd25519SigningKeyId:String(e.nearEd25519SigningKeyId||``).trim(),signerSlot:Number(e.signerSlot)};if(!r.nearAccountId||!r.nearEd25519SigningKeyId||!Number.isSafeInteger(r.signerSlot)||r.signerSlot<1)throw Error(`[SigningEngine][export] Ed25519 export authorization identity is invalid`);return r}default:return N(e)}}function ze(e){let t={kind:C.EmailOtpReauth,method:`email_otp`,emailOtpPrompt:e.emailOtpPrompt},n=e.emailOtpPrompt.emailHint;switch(e.identity.curve){case`ecdsa`:return{kind:`email_otp`,signingAuthPlan:t,challengeId:e.challengeId,otpCode:e.otpCode,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.identity.chain,...n?{emailHint:n}:{}};case`ed25519`:return{kind:`email_otp`,signingAuthPlan:t,challengeId:e.challengeId,otpCode:e.otpCode,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:e.identity.nearAccountId,nearEd25519SigningKeyId:e.identity.nearEd25519SigningKeyId,signerSlot:e.identity.signerSlot,...n?{emailHint:n}:{}};default:return N(e.identity)}}function Be(e){let t={kind:C.PasskeyReauth,method:`passkey`};switch(e.identity.curve){case`ecdsa`:return{kind:`passkey`,signingAuthPlan:t,credential:e.credential,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:e.identity.chain};case`ed25519`:return{kind:`passkey`,signingAuthPlan:t,credential:e.credential,walletSessionUserId:e.identity.walletSessionUserId,publicKey:e.identity.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:e.identity.nearAccountId,nearEd25519SigningKeyId:e.identity.nearEd25519SigningKeyId,signerSlot:e.identity.signerSlot};default:return N(e.identity)}}function P(e){let t=Re(e);switch(e.method){case`email_otp`:{if(!e.decision.confirmed)throw Error(e.decision.error||`User cancelled Email OTP export request`);let n=String(e.decision.otpCode||``).replace(/\D/g,``).slice(0,6);if(n.length!==6)throw Error(`Email OTP export requires a 6-digit code`);let r=String(e.decision.emailOtpChallengeId||e.emailOtpPrompt.challengeId||``).trim();if(!r)throw Error(`Email OTP export challenge response did not include challengeId`);return ze({identity:t,emailOtpPrompt:e.emailOtpPrompt,challengeId:r,otpCode:n})}case`passkey`:if(!e.decision.confirmed)throw Error(e.decision.error||`User cancelled export request`);if(!e.decision.credential)throw Error(`[SigningEngine][export] missing WebAuthn credential for export authorization`);return Be({identity:t,credential:le(e.decision.credential)});default:return Le(e)}}function Ve(e){switch(e.kind){case`ecdsa`:return{subject:`${String(e.walletSession.walletId)}:${u(e.chainTarget)}`,chain:e.chainTarget.kind,data:{curve:`ecdsa`,chain:e.chainTarget.kind,chainTarget:e.chainTarget}};case`ed25519`:return{subject:`${String(e.walletSession.walletId)}:near:${String(e.nearAccount.accountId)}`,chain:`near`,data:{curve:`ed25519`,chain:`near`,nearAccount:e.nearAccount}}}}function F(e,t){if(e)try{e(se(t))}catch{}}function I(e){return n(e,32,`key export UI request IDs`)}function He(e,t){return`key-export:${e}:${t}:${I(`flow`)}`}async function Ue(e,t){let n=Ve(e),r=He(n.subject,n.chain),i=e.walletSession.walletId,s=n.data;F(e.options.onEvent,{phase:_.STEP_01_STARTED,status:`running`,flowId:r,accountId:String(i),interaction:{kind:`none`,overlay:`none`},data:s});try{return await t({...e,flowId:r})}catch(t){let n=a(t);throw F(e.options.onEvent,{phase:n?_.CANCELLED:_.FAILED,status:n?`cancelled`:`failed`,flowId:r,accountId:String(i),interaction:{kind:`none`,overlay:`hide`},error:{message:o(t)||(n?`Key export cancelled`:`Key export failed`)},data:s}),t}}async function We(e,t){return await e.requestExportChallenge({kind:`wallet_login_challenge`,walletSession:t.walletSession,chain:t.chain})}function L(e,t){let n=e.kind===`email_otp_ed25519_export_auth`?e.walletId:e.walletSession.walletSessionUserId;F(e.onEvent,{phase:_.STEP_02_AUTH_EMAIL_OTP_INPUT_REQUIRED,status:`waiting_for_user`,flowId:e.flowId,accountId:String(n),authMethod:`email_otp`,interaction:{kind:`otp_input`,overlay:`show`},data:{emailHint:t.emailHint,demoOtpCode:ie(t.delivery)}})}async function R(e,t){let n=t.walletSession.walletSessionUserId,r=await M({identity:{kind:`wallet_session`,walletId:n},chain:t.chain,publicKey:t.publicKey,curve:t.curve,challengeSource:{requestChallenge:async()=>await We(e,t)},confirmer:{requestUserConfirmation:async t=>await e.touchConfirm.requestUserConfirmation(t)},onChallenge:L.bind(void 0,t)}),i={challengeId:r.challengeId},a={confirmed:!0,otpCode:r.otpCode,emailOtpChallengeId:r.challengeId},o=P({method:`email_otp`,walletSessionUserId:n,chain:t.chain,publicKey:t.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,emailOtpPrompt:i,decision:a});if(o.kind!==`email_otp`)throw Error(`[SigningEngine][export] Email OTP export returned the wrong step-up method`);return o}async function Ge(e,t){let n=await M({identity:{kind:`near_account`,walletId:t.walletId,nearAccountId:t.nearAccountId},chain:`near`,publicKey:t.publicKey,curve:`ed25519`,challengeSource:{requestChallenge:async()=>await e.requestExportChallenge({kind:`wallet_export_challenge`,walletId:t.walletId,chain:`near`})},confirmer:{requestUserConfirmation:async t=>await e.touchConfirm.requestUserConfirmation(t)},onChallenge:L.bind(void 0,t)}),r=P({method:`email_otp`,walletSessionUserId:t.walletId,publicKey:t.publicKey,curve:`ed25519`,intent:`ed25519_export`,chain:`near`,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot,emailOtpPrompt:{challengeId:n.challengeId},decision:{confirmed:!0,otpCode:n.otpCode,emailOtpChallengeId:n.challengeId}});if(r.kind!==`email_otp`||r.curve!==`ed25519`)throw Error(`[SigningEngine][export] Ed25519 Email OTP export authorization changed kind`);return r}async function z(e,t){let n=t.state===`loading`,r=[{scheme:`ed25519`,label:`NEAR Ed25519 private key`,publicKey:t.publicKey,privateKey:n?``:t.privateKey}];await e.touchConfirm.requestUserConfirmation({requestId:I(`export-ed25519-yao-view`),type:w.SHOW_SECURE_PRIVATE_KEY_UI,summary:{operation:`Export Private Key`,accountId:t.nearAccountId,publicKey:t.publicKey,warning:`Anyone with your private key can fully control your account. Never share it.`},payload:{subject:{kind:`near_wallet`,nearAccountId:t.nearAccountId},viewerSessionId:t.viewerSessionId,publicKey:t.publicKey,keys:r,variant:t.variant,theme:t.theme??e.theme??`dark`,loading:n,onLifecycle:e=>{F(t.onEvent,{phase:e===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:e===`opened`?`waiting_for_user`:`succeeded`,flowId:t.flowId,accountId:t.nearAccountId,interaction:{kind:`key_export_viewer`,overlay:e===`opened`?`show`:`hide`},data:{chain:`near`,curve:`ed25519`,loading:n}}),e===`closed`&&F(t.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:t.flowId,accountId:t.nearAccountId,interaction:{kind:`none`,overlay:`hide`},data:{chain:`near`,curve:`ed25519`}})}},intentDigest:`export-keys:${t.walletId}:near:${t.nearAccountId}:ed25519`})}async function B(e,t){let n=t.chainTarget.kind,r=String(t.walletSessionUserId||``).trim();if(!r)throw Error(`[SigningEngine][export] missing ECDSA export wallet session user id`);return await Ke(e,{walletSessionUserId:t.walletSessionUserId,intent:`ecdsa_export`,curve:`ecdsa`,chain:n,publicKey:t.publicKey,flowId:t.flowId,onEvent:t.onEvent,request:{requestId:I(`export-threshold-ecdsa-auth`),type:w.AUTHORIZE_KEY_EXPORT,summary:{operation:`Export Private Key`,accountId:r,publicKey:t.publicKey,warning:n===`tempo`?`Confirm to reveal your Tempo private key export.`:`Confirm to reveal your EVM private key export.`},payload:{subject:{kind:`evm_wallet`,walletId:r},credentialIdB64u:t.credentialIdB64u,publicKey:t.publicKey,...t.challengeB64u?{challengeB64u:t.challengeB64u}:{}},intentDigest:`export-keys:${r}:${u(t.chainTarget)}:secp256k1`}})}async function V(e,t){let n=t.chainTarget.kind,r=n===`tempo`?`Tempo`:`EVM`,i=t.state===`loading`,a=i?[{scheme:`secp256k1`,label:r,publicKey:t.publicKeyHex,privateKey:``,address:t.ethereumAddress}]:[{scheme:`secp256k1`,label:r,publicKey:t.publicKeyHex,privateKey:t.privateKeyHex,address:t.ethereumAddress}];await e.touchConfirm.requestUserConfirmation({requestId:I(`export-threshold-ecdsa-view`),type:w.SHOW_SECURE_PRIVATE_KEY_UI,summary:{operation:`Export Private Key`,accountId:t.walletId,publicKey:t.publicKeyHex,warning:`Anyone with your private key can fully control your account. Never share it.`},payload:{subject:{kind:`evm_wallet`,walletId:t.walletId},viewerSessionId:t.viewerSessionId,publicKey:t.publicKeyHex,keys:a,variant:t.variant,theme:t.theme??e.theme??`dark`,loading:i,onLifecycle:e=>{F(t.onEvent,{phase:e===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:e===`opened`?`waiting_for_user`:`succeeded`,flowId:t.flowId,accountId:String(t.walletId),interaction:{kind:`key_export_viewer`,overlay:e===`opened`?`show`:`hide`},data:{chain:n,curve:`ecdsa`,loading:i}}),e===`closed`&&F(t.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:t.flowId,accountId:String(t.walletId),interaction:{kind:`none`,overlay:`hide`},data:{chain:n,curve:`ecdsa`}})}},intentDigest:`export-keys:${t.walletId}:${u(t.chainTarget)}:secp256k1`})}async function Ke(e,t){let n=String(t.walletSessionUserId||``).trim();if(!n)throw Error(`[SigningEngine][export] missing export account identity`);F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,flowId:t.flowId,accountId:String(n),authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`},data:{intent:t.intent,curve:t.curve}}),T();let r=await e.touchConfirm.requestUserConfirmation(t.request),i=P({method:`passkey`,walletSessionUserId:t.walletSessionUserId,publicKey:t.publicKey,curve:`ecdsa`,intent:`ecdsa_export`,chain:t.chain,decision:r});if(i.kind!==`passkey`)throw Error(`[SigningEngine][export] passkey export returned the wrong step-up method`);return F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:String(n),authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`hide`},data:{intent:t.intent,curve:t.curve}}),i}function qe(e){F(e.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:e.flowId,accountId:String(e.walletId),interaction:{kind:`none`,overlay:`none`},data:{chain:e.chain,curve:`ecdsa`}})}function Je(e){F(e.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:e.flowId,accountId:String(e.walletId),interaction:{kind:`none`,overlay:`none`},data:{chain:e.chain,curve:`ecdsa`,...e.source?{source:e.source}:{}}})}async function Ye(e,t){await V({touchConfirm:e.touchConfirm,theme:e.theme},{state:`ready`,walletId:t.walletId,chainTarget:t.exportLane.chainTarget,publicKeyHex:String(t.artifact.publicKeyHex||``).trim(),privateKeyHex:String(t.artifact.privateKeyHex||``).trim(),ethereumAddress:String(t.artifact.ethereumAddress||``).trim(),variant:t.options.variant,theme:t.options.theme,viewerSessionId:t.viewerSessionId,flowId:t.flowId,onEvent:t.onEvent})}async function Xe(e,t){await V({touchConfirm:e.touchConfirm,theme:e.theme},{state:`loading`,walletId:t.walletId,chainTarget:t.exportLane.chainTarget,publicKeyHex:String(t.publicKey||``).trim(),ethereumAddress:String(t.ethereumAddress||``).trim(),variant:t.options.variant,theme:t.options.theme,viewerSessionId:t.viewerSessionId,flowId:t.flowId,onEvent:t.onEvent})}async function H(t,n){let r=D(n.exportLane),i=I(`export-threshold-ecdsa-viewer-session`);qe({flowId:n.flowId,walletId:n.walletId,chain:r,onEvent:n.onEvent});try{await Xe(t,{walletId:n.walletId,exportLane:n.exportLane,publicKey:n.exportPublicKey,ethereumAddress:n.exportLane.publicFacts.thresholdOwnerAddress,options:n.options,viewerSessionId:i,flowId:n.flowId,onEvent:n.onEvent});let a=n.exportLane.laneIdentity.signer.materialActivation,o=await t.withThresholdEcdsaSigningQueue({queueKey:x({materialActivation:a}),walletId:n.exportLane.key.walletId,enabled:!0,task:async()=>{if(n.exportLane.source===`active_wallet_authority`){let e=n.activeRuntime;if(!e)throw Error(`[SigningEngine][ecdsa-export] active runtime is missing`);await tt({ports:t.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e})}else if(n.exportLane.authMethod===`email_otp`){if(!e((await A(t.sessionStore,n.exportLane)).persistedMaterial.materialActivation,a))throw Error(`[SigningEngine][ecdsa-export] prepared material activation was superseded`)}else{let r=await j(t.sessionStore,n.exportLane);if(r.kind!==`fresh_passkey_needs_authorization`)throw Error(`[SigningEngine][ecdsa-export] prepared export authority changed`);if(!e(r.existingRoleLocalMaterial.materialActivation,a))throw Error(`[SigningEngine][ecdsa-export] prepared material activation was superseded`)}return await n.prepareArtifact()}});return Je({flowId:n.flowId,walletId:n.walletId,chain:r,onEvent:n.onEvent}),E(i)&&await Ye(t,{walletId:n.walletId,exportLane:n.exportLane,artifact:o,options:n.options,viewerSessionId:i,flowId:n.flowId,onEvent:n.onEvent}),{accountId:String(n.walletId),exportedSchemes:[`secp256k1`]}}catch(e){throw T(),e}}function U(e){let t=e.laneIdentity.auth;if(t.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] fresh passkey export requires passkey lane`);return t}async function W(e){return i(t(e))}async function G(e){let t=u(e.chainTarget);return await Ce({walletId:e.walletId,operationKind:`evm.export_key`,operationId:e.requestId,operationDigests:{laneDigest:await W({walletId:e.walletId,chainTarget:t,materialActivation:e.materialActivation,keyHandle:e.keyHandle}),intentDigest:await W({operation:`explicit_key_export`,requestId:e.requestId,walletId:e.walletId,chainTarget:t}),displayDigest:await W({operation:`Export Private Key`,publicKey:e.displayPublicKey,address:e.displayAddress})},materialActivation:e.materialActivation,normalSigningScope:e.operationRuntime.normalSigning.scope,keyHandle:e.keyHandle,relayerKeyId:e.operationRuntime.relayerKeyId,participantIds:[Number(e.operationRuntime.participantIds[0]),Number(e.operationRuntime.participantIds[1])],expiresAtMs:e.operationExpiresAtMs})}async function K(e){return await G({walletId:e.walletId,chainTarget:e.chainTarget,requestId:e.requestId,keyHandle:e.keyHandle,displayPublicKey:e.displayPublicKey,displayAddress:e.displayAddress,materialActivation:e.materialActivation,operationRuntime:e.operationRuntime,operationExpiresAtMs:e.operationExpiresAtMs})}async function Ze(t){let n=await j(t.deps.sessionStore,t.exportLane);if(n.kind!==`fresh_passkey_needs_authorization`)throw Error(`[SigningEngine][ecdsa-export] passkey export authority changed`);if(!e(n.existingRoleLocalMaterial.materialActivation,t.expectedMaterialActivation))throw Error(`[SigningEngine][ecdsa-export] active material changed after authorization confirmation`)}async function Qe(t){if(!e((await A(t.deps.sessionStore,t.exportLane)).persistedMaterial.materialActivation,t.expectedMaterialActivation))throw Error(`[SigningEngine][ecdsa-export] active material changed after authorization confirmation`)}function $e(e){if(!et(e.expected,e.actual))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority runtime was replaced after authorization`)}function et(t,n){let i;switch(t.auth.kind){case`passkey`:i=n.auth.kind===`passkey`&&t.auth.rpId===n.auth.rpId&&t.auth.credentialIdB64u===n.auth.credentialIdB64u;break;case`email_otp`:i=n.auth.kind===`email_otp`&&t.auth.providerSubjectId===n.auth.providerSubjectId;break;default:return t.auth}return t.kind===n.kind&&t.walletId===n.walletId&&t.authorityId===n.authorityId&&t.walletAuthMethodId===n.walletAuthMethodId&&t.authorityDigestB64u===n.authorityDigestB64u&&t.factorAuthorityRef.kind===n.factorAuthorityRef.kind&&t.factorAuthorityRef.walletId===n.factorAuthorityRef.walletId&&t.factorAuthorityRef.authorityDigest===n.factorAuthorityRef.authorityDigest&&t.factorAuthorityRef.walletAuthMethodId===n.factorAuthorityRef.walletAuthMethodId&&t.authorityRevocationEpoch===n.authorityRevocationEpoch&&t.walletSessionId===n.walletSessionId&&t.requiredCapability===n.requiredCapability&&e(t.materialActivation,n.materialActivation)&&t.ecdsaThresholdKeyId===n.ecdsaThresholdKeyId&&t.relayerKeyId===n.relayerKeyId&&t.operationCredential.kind===n.operationCredential.kind&&t.operationCredential.token===n.operationCredential.token&&t.operationCredential.walletSessionId===n.operationCredential.walletSessionId&&r(t.session,n.session)&&ae(t.authMethod,n.authMethod)&&i&&m(t.factorAuthority,n.factorAuthority)&&t.holderRuntime.kind===n.holderRuntime.kind&&t.holderRuntime.walletId===n.holderRuntime.walletId&&t.holderRuntime.authorityId===n.holderRuntime.authorityId&&t.holderRuntime.walletAuthMethodId===n.holderRuntime.walletAuthMethodId&&m(t.holderRuntime.factorAuthority,n.holderRuntime.factorAuthority)&&e(t.holderRuntime.materialActivation,n.holderRuntime.materialActivation)&&t.holderRuntime.holderHandleId===n.holderRuntime.holderHandleId&&t.holderRuntime.ecdsaThresholdKeyId===n.holderRuntime.ecdsaThresholdKeyId&&ne(t.normalSigning,n.normalSigning)}async function q(e){let t=await we({ports:e.ports,input:{walletId:e.expectedRuntime.walletId,requiredCapability:`export_keys`,materialActivation:e.expectedRuntime.materialActivation}});if(t.kind!==`resolved`)throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority runtime is ${t.reason}`);return $e({expected:e.expectedRuntime,actual:t.runtime}),t.runtime}async function tt(e){await q(e)}function J(e){let t=e.credential,n=String(t.rawId||t.id||``).trim();if(!n||n!==e.authority.factor.credentialIdB64u)throw Error(`[SigningEngine][ecdsa-export] passkey credential does not match authority`);return{kind:`passkey`,authority:e.authority,webauthn_authentication:{id:t.id,rawId:t.rawId,type:t.type,authenticatorAttachment:t.authenticatorAttachment??null,response:{clientDataJSON:t.response.clientDataJSON,authenticatorData:t.response.authenticatorData,signature:t.response.signature,userHandle:t.response.userHandle??null},clientExtensionResults:t.clientExtensionResults??null}}}function Y(e){if(!p(e.authority))throw Error(`[SigningEngine][ecdsa-export] Email OTP material authority mismatch`);return{kind:`email_otp`,authority:e.authority,challenge_id:e.challengeId,otp_code:e.otpCode}}async function X(e){let t=await Se({relayerUrl:e.relayerUrl,transport:e.transport,request:{kind:`router_ab_ecdsa_operation_step_up_v1`,operation:e.prepared.operation,proof:e.proof}});if(t.operation_kind!==`evm.export_key`)throw Error(`[SigningEngine][ecdsa-export] operation step-up kind mismatch`);let n=t.authorization.evidence_set_digest,r=nt({proofKind:e.proof.kind,unseal:t.authorization.unseal});return{kind:`verified_step_up`,evidenceSetDigest:n,operation:e.prepared.operation,expiresAtMs:t.expires_at_ms,quotaUse:`none`,unseal:r,exportTopology:t.export_topology}}function nt(e){switch(e.proofKind){case`passkey`:if(e.unseal.kind!==`not_requested`)throw Error(`[SigningEngine][ecdsa-export] passkey step-up returned Email OTP unseal material`);return{kind:`not_requested`};case`email_otp`:if(e.unseal.kind!==`email_otp_grant`)throw Error(`[SigningEngine][ecdsa-export] Email OTP step-up did not return an unseal grant`);return{kind:`email_otp_grant`,grant:e.unseal.grant,challenge_id:e.unseal.challenge_id};default:{let t=e.proofKind;throw Error(`Unsupported ECDSA export step-up proof: ${String(t)}`)}}}async function rt(e,t){U(t.exportLane);let n=I(`tecdsa-export`),r=await K({walletId:t.walletId,chainTarget:t.exportLane.chainTarget,requestId:n,keyHandle:t.material.existingRoleLocalMaterial.publicFacts.keyHandle,displayPublicKey:t.material.existingRoleLocalMaterial.publicFacts.groupPublicKey33B64u,displayAddress:t.material.existingRoleLocalMaterial.publicFacts.ethereumAddress,materialActivation:t.material.existingRoleLocalMaterial.materialActivation,operationRuntime:t.material,operationExpiresAtMs:Date.now()+5*6e4}),i=await B({touchConfirm:e.touchConfirm,theme:e.theme},{walletSessionUserId:t.walletId,credentialIdB64u:U(t.exportLane).credentialIdB64u,publicKey:t.exportPublicKey,chainTarget:t.exportLane.chainTarget,challengeB64u:r.challengeB64u,flowId:t.flowId,onEvent:t.onEvent});await Ze({deps:e,exportLane:t.exportLane,expectedMaterialActivation:t.material.existingRoleLocalMaterial.materialActivation});let a=t.exportLane.capability.authority;if(!f(a))throw Error(`[SigningEngine][ecdsa-export] exact Passkey capability authority changed`);let o=await X({relayerUrl:t.material.relayerUrl,prepared:r,transport:{kind:`factor_proof`},proof:J({authority:a,credential:i.credential})});return{exportActivation:ge({relayerUrl:t.material.relayerUrl,existingRoleLocalMaterial:t.material.existingRoleLocalMaterial,authorization:o}),credential:i.credential}}async function it(e){let t=d({walletId:e.walletId,walletSessionUserId:e.walletId});return await e.deps.emailOtp.exportEcdsaKeyWithDurableAuthorization({walletSession:t,chainTarget:e.material.chainTarget,challengeId:e.authorization.challengeId,otpCode:e.authorization.otpCode,publicFacts:e.material.publicFacts,runtimePolicyScope:e.material.runtimePolicyScope,authority:e.material.authorization.authority,persistedMaterial:e.persistedMaterial,explicitExportAuthorization:e.explicitExportAuthorization})}function Z(e){return{normalSigning:e.runtime.normalSigning,relayerKeyId:e.relayerKeyId,participantIds:e.participantIds}}function Q(e){return Math.min(Date.now()+5*6e4,e.session.expiresAtMs)}async function at(e){if(e.material.runtime.auth.kind!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] active passkey runtime auth mismatch`);if(!f(e.material.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority mismatch`);let t=await K({walletId:e.walletId,chainTarget:e.exportLane.chainTarget,requestId:I(`tecdsa-active-passkey-export`),keyHandle:e.material.runtime.publicFacts.keyHandle,displayPublicKey:e.material.runtime.publicFacts.publicKeyB64u,displayAddress:e.material.runtime.publicFacts.thresholdOwnerAddress,materialActivation:e.material.runtime.materialActivation,operationRuntime:Z(e.material),operationExpiresAtMs:Q(e.material.runtime)}),n=await B({touchConfirm:e.deps.touchConfirm,theme:e.deps.theme},{walletSessionUserId:e.walletId,credentialIdB64u:e.material.factorAuthority.factor.credentialIdB64u,publicKey:e.exportPublicKey,chainTarget:e.exportLane.chainTarget,challengeB64u:t.challengeB64u,flowId:e.flowId,onEvent:e.onEvent}),r=await q({ports:e.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e.material.runtime});if(!f(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active passkey factor authority changed`);return{runtime:r,authorization:await X({relayerUrl:e.material.relayerUrl,prepared:t,transport:{kind:`wallet_session`,credential:r.operationCredential},proof:J({authority:r.factorAuthority,credential:n.credential})})}}async function ot(e){if(e.material.runtime.auth.kind!==`email_otp`)throw Error(`[SigningEngine][ecdsa-export] active Email OTP runtime auth mismatch`);if(!p(e.material.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority mismatch`);let t=await K({walletId:e.walletId,chainTarget:e.exportLane.chainTarget,requestId:I(`tecdsa-active-email-otp-export`),keyHandle:e.material.runtime.publicFacts.keyHandle,displayPublicKey:e.material.runtime.publicFacts.publicKeyB64u,displayAddress:e.material.runtime.publicFacts.thresholdOwnerAddress,materialActivation:e.material.runtime.materialActivation,operationRuntime:Z(e.material),operationExpiresAtMs:Q(e.material.runtime)}),n=await R({touchConfirm:e.deps.touchConfirm,requestExportChallenge:e.deps.emailOtp.requestExportChallenge},{kind:`wallet_session_export_auth`,walletSession:d({walletId:e.walletId,walletSessionUserId:e.walletId}),chain:D(e.exportLane),publicKey:e.exportPublicKey,curve:`ecdsa`,flowId:e.flowId,onEvent:e.onEvent}),r=await q({ports:e.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:e.material.runtime});if(!p(r.factorAuthority))throw Error(`[SigningEngine][ecdsa-export] active Email OTP factor authority changed`);return{runtime:r,authorization:await X({relayerUrl:e.material.relayerUrl,prepared:t,transport:{kind:`wallet_session`,credential:r.operationCredential},proof:Y({authority:r.factorAuthority,challengeId:n.challengeId,otpCode:n.otpCode})})}}async function st(e){switch(e.material.kind){case`active_wallet_authority_passkey_needs_authorization`:return await at({deps:e.deps,walletId:e.walletId,exportLane:e.exportLane,material:e.material,exportPublicKey:e.exportPublicKey,flowId:e.flowId,onEvent:e.onEvent});case`active_wallet_authority_email_otp_needs_authorization`:return await ot({deps:e.deps,walletId:e.walletId,exportLane:e.exportLane,material:e.material,exportPublicKey:e.exportPublicKey,flowId:e.flowId,onEvent:e.onEvent});default:return ct(e.material)}}function ct(e){throw Error(`[SigningEngine][ecdsa-export] unsupported active wallet authority material: ${String(e)}`)}async function lt(e,t){let n=String(t.material.publicFacts.publicKeyB64u),r=await st({deps:e,walletId:t.walletId,exportLane:t.exportLane,material:t.material,exportPublicKey:n,flowId:t.flowId,onEvent:t.onEvent});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,activeRuntime:r.runtime,exportPublicKey:n,options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:async()=>{let n=await q({ports:e.activeWalletAuthorityEcdsaRuntimeReadPorts,expectedRuntime:r.runtime});return await _e({getSignerWorkerContext:e.getSignerWorkerContext},{runtime:n,operationAuthorization:r.authorization,relayerUrl:t.material.relayerUrl})}})}async function ut(e,t){let n=D(t.exportLane),r=await G({walletId:t.walletId,chainTarget:t.exportLane.chainTarget,requestId:I(`tecdsa-email-otp-export`),keyHandle:t.material.persistedMaterial.publicFacts.keyHandle,displayPublicKey:t.material.persistedMaterial.publicFacts.groupPublicKey33B64u,displayAddress:t.material.persistedMaterial.publicFacts.ethereumAddress,materialActivation:t.material.persistedMaterial.materialActivation,operationRuntime:t.material,operationExpiresAtMs:Date.now()+5*6e4}),i=await R({touchConfirm:e.touchConfirm,requestExportChallenge:e.emailOtp.requestExportChallenge},{kind:`wallet_session_export_auth`,walletSession:d({walletId:t.walletId,walletSessionUserId:t.walletId}),chain:n,publicKey:String(t.material.publicFacts.publicKeyB64u),curve:`ecdsa`,flowId:t.flowId,onEvent:t.onEvent});await Qe({deps:e,exportLane:t.exportLane,expectedMaterialActivation:t.material.persistedMaterial.materialActivation});let a=await X({relayerUrl:t.material.relayerUrl,prepared:r,transport:{kind:`factor_proof`},proof:Y({authority:t.material.authorization.authority,challengeId:i.challengeId,otpCode:i.otpCode})});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,exportPublicKey:String(t.material.publicFacts.publicKeyB64u),options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:it.bind(void 0,{deps:e,walletId:t.walletId,material:t.material,authorization:i,persistedMaterial:t.material.persistedMaterial,explicitExportAuthorization:a})})}async function dt(e,t){if(t.exportLane.authMethod!==`passkey`)throw Error(`[SigningEngine][ecdsa-export] fresh passkey export requires passkey lane`);let n=String(t.material.publicFacts.publicKeyB64u),r=await rt(e,{walletId:t.walletId,exportLane:t.exportLane,material:t.material,exportPublicKey:n,flowId:t.flowId,onEvent:t.onEvent});return await H(e,{walletId:t.walletId,exportLane:t.exportLane,exportPublicKey:n,options:t.options,flowId:t.flowId,onEvent:t.onEvent,prepareArtifact:async()=>{let n=await e.provisionPasskeyEcdsaExplicitExportSession(r.exportActivation);return await he({getSignerWorkerContext:e.getSignerWorkerContext},{walletSessionUserId:t.walletId,exportProvision:n,factorAuthorization:{kind:`passkey`,passkeyCredentialIdB64u:String(r.credential.rawId||r.credential.id),credential:r.credential}})}})}function $(e){let t=e.source===`canonical_capability`?e.authorization:null;return{authMethod:S(e),curve:e.curve,chain:e.chainTarget.kind,chainTarget:e.chainTarget,state:e.state,source:e.source,...t?{remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}:{},updatedAtMs:e.updatedAtMs,evmFamilyKeyFingerprint:g({walletId:e.key.walletId,publicFacts:e.publicFacts})}}function ft(e,t){return String(e.key.walletId)===t.walletId?String(g({walletId:e.key.walletId,publicFacts:e.publicFacts})):``}function pt(e){if(!e.candidates.length)throw y(`evm-family`,{stage:`key_export.exact_lane_no_candidate`,context:e.context,candidateCount:e.candidates.length,candidates:e.candidates.map($)}),Error(`[SigningEngine][${e.context}] exact lane selection failed: no_candidate`);for(let t of e.candidates)if(!ft(t,e.ecdsaContext))return mt(e);if(e.candidates.length!==1)return mt(e);let[t]=e.candidates;return me(`evm-family`,{stage:`key_export.exact_lane_selected`,context:e.context,reason:`single_exact_candidate`,selectedLane:$(t),candidateCount:e.candidates.length}),t}function mt(e){throw y(`evm-family`,{stage:`key_export.exact_lane_ambiguous_material`,context:e.context,candidateCount:e.candidates.length,candidates:e.candidates.map($)}),Error(`[SigningEngine][${e.context}] exact lane selection failed: ambiguous_material`)}function ht(e){return pe({signer:de({walletId:e.lane.key.walletId,chainTarget:e.chainTarget||e.lane.chainTarget,keyHandle:e.lane.publicFacts.keyHandle,key:e.lane.key,materialActivation:e.lane.materialActivation}),auth:e.lane.auth})}function gt(e){return e.source===`active_wallet_authority`||e.state===`ready`?{kind:`loaded_worker_material`}:S(e)===`email_otp`?{kind:`material_pending`,reason:`email_otp_route_auth`}:{kind:`sealed_worker_material`}}function _t(e){if(e.lane.source===`active_wallet_authority`)return{chainTarget:e.chainTarget,authMethod:S(e.lane),material:{kind:`loaded_worker_material`},state:`deferred`};let t=S(e.lane),n=gt(e.lane);switch(e.lane.state){case`expired`:case`exhausted`:throw Error(`[SigningEngine][ecdsa-export] expired export lane requires durable public reauth authority`);case`ready`:case`deferred`:return{chainTarget:e.chainTarget,authMethod:t,material:n,state:e.lane.state}}}async function vt(e){let t=e.lane,n=ht({lane:t}),r=_t({lane:t,chainTarget:e.chainTarget});return t.source===`active_wallet_authority`?{curve:`ecdsa`,laneIdentity:n,source:`active_wallet_authority`,authorizationState:`authorization_required`,key:t.key,publicFacts:t.publicFacts,runtime:t.runtime,chainTarget:e.chainTarget,authMethod:S(t),material:{kind:`loaded_worker_material`},state:`deferred`}:t.authorization?{curve:`ecdsa`,laneIdentity:n,source:`canonical_capability`,authorizationState:`authorized`,authorization:t.authorization,capability:t.capability,key:t.key,publicFacts:t.publicFacts,...r}:{curve:`ecdsa`,laneIdentity:n,source:`canonical_capability`,authorizationState:`authorization_required`,capability:t.capability,key:t.key,publicFacts:t.publicFacts,...r}}function yt(e){return v(e.laneIdentity)===v(e.identity)}async function bt(e){return ht({lane:e})}function xt(e){return Te(e.availableLanes,e.chainTarget).filter(e=>Oe(e))}async function St(e,t){let n=xt({availableLanes:await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:t.walletId,ecdsaChainTargets:[t.signingTarget]}),chainTarget:t.signingTarget}),r=[];for(let e of n)yt({laneIdentity:await bt(e),identity:t.laneIdentity})&&r.push(e);let i=pt({context:`ecdsa-export`,candidates:r,ecdsaContext:{walletId:t.walletId}});return await vt({lane:i,chainTarget:i.chainTarget})}async function Ct(e,t){try{switch(t.kind){case`ecdsa`:return await wt(e,t);case`ed25519`:return await Ot(e,t)}}catch(e){if(ye(e))return{kind:`relink_required`,reason:e.reason};throw e}}async function wt(e,t){let n=String(l(t.walletSession.walletId));return{kind:`ecdsa`,laneIdentity:await bt(pt({context:`ecdsa-export-resolve`,candidates:xt({availableLanes:await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:n,ecdsaChainTargets:[t.chainTarget]}),chainTarget:t.chainTarget}),ecdsaContext:{walletId:n}}))}}function Tt(e){let t=e.lane.source===`durable_sealed_record`||e.lane.source===`public_capability_reference`;return String(e.lane.walletId)===e.walletId&&String(e.lane.nearAccountId)===e.nearAccountId&&t}function Et(e){return ue({signer:fe({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot}),auth:e.auth,thresholdSessionId:e.thresholdSessionId})}function Dt(e){return[e.walletId,e.nearAccountId,e.nearEd25519SigningKeyId,e.signerSlot,ce(e.auth)].map(e=>String(e)).join(`|`)}async function Ot(e,t){let n=String(l(t.walletSession.walletId)),r=String(t.nearAccount.accountId),i=await e.readOwnerScopedAvailableSigningLanesForTargets({walletId:n,ecdsaChainTargets:[]}),a=i.lanes.ed25519.near;if(!b(a)||a.curve!==`ed25519`||!Tt({lane:a,walletId:n,nearAccountId:r}))throw Error(`[SigningEngine][ed25519-export-resolve] exact Yao lane selection failed: no_candidate`);let o=i.candidates.ed25519.near.filter(e=>b(e)&&e.curve===`ed25519`&&Tt({lane:e,walletId:n,nearAccountId:r})),s=Dt(a);if(o.some(e=>Dt(e)!==s))throw Error(`[SigningEngine][ed25519-export-resolve] exact Yao lane selection failed: ambiguous_material`);return{kind:`ed25519`,laneIdentity:Et(a),materialActivation:a.materialActivation}}async function kt(e,t){let n=await St(e,{walletId:t.walletId,signingTarget:t.signingTarget,laneIdentity:t.laneIdentity});switch(n.material.kind){case`loaded_worker_material`:case`material_pending`:case`sealed_worker_material`:return n}throw n.material,Error(`[SigningEngine][ecdsa-export] unsupported material availability`)}function At(e){return e.capability.materialActivation}function jt(e){return e.material.materialActivation}function Mt(e){return e.auth.kind===`passkey`}function Nt(e){if(!Mt(e.laneIdentity))throw Error(`[SigningEngine][ed25519-export] export requires a passkey Yao lane`);if(e.laneIdentity.signer.account.wallet.walletId!==e.walletId||String(e.laneIdentity.signer.account.nearAccountId)!==String(e.nearAccountId))throw Error(`[SigningEngine][ed25519-export] exact lane subject mismatch`);return e.laneIdentity}function Pt(e){return e.auth.kind===`email_otp`}function Ft(e){if(!Pt(e.laneIdentity))throw Error(`[SigningEngine][ed25519-export] export requires an Email OTP Yao lane`);if(e.laneIdentity.signer.account.wallet.walletId!==e.walletId||String(e.laneIdentity.signer.account.nearAccountId)!==String(e.nearAccountId))throw Error(`[SigningEngine][ed25519-export] exact lane subject mismatch`);return e.laneIdentity}function It(e){let t=e.selected.signer,n=e.context.material;return String(t.account.wallet.walletId)===String(n.walletId)&&String(t.account.nearAccountId)===String(n.nearAccountId)&&String(t.nearEd25519SigningKeyId)===String(n.nearEd25519SigningKeyId)&&t.signerSlot===n.signerSlot&&String(e.selected.auth.rpId)===e.context.rpId&&e.selected.auth.credentialIdB64u===n.credentialIdB64u}function Lt(t){if(!It({selected:t.selectedLaneIdentity,context:t.context}))throw Error(`[SigningEngine][ed25519-export] durable Yao context identity mismatch`);let n=t.context.material;if(!e(t.selectedMaterialActivation,t.context.selectedLaneMaterialActivation))throw Error(`[SigningEngine][ed25519-export] durable Yao context activation mismatch`);let r=t.context.authorization.operationCredential.token;if(!r)throw Error(`[SigningEngine][ed25519-export] active Wallet Session authorization is unavailable`);let i=n.capability.lifecycle;return{laneIdentity:t.selectedLaneIdentity,relayerUrl:t.context.relayerUrl,walletSessionToken:r,walletCustodyEnvelope:t.context.walletCustodyEnvelope,capability:{materialActivation:n.capability.materialActivation,scope:{lifecycle_id:i.lifecycleId,root_share_epoch:i.rootShareEpoch,account_id:i.accountId,threshold_session_id:i.thresholdSessionId,signer_set_id:i.signerSetId,signing_worker_id:i.signingWorkerId,material_activation:re(n.capability.materialActivation)},applicationBinding:n.capability.applicationBinding,participantIds:n.capability.participantIds,registeredPublicKey:n.capability.registeredPublicKey,stateEpoch:n.capability.stateEpoch,activeCapabilityBinding:n.capability.activeCapabilityBinding,runtimePolicyScope:n.capability.runtimePolicyScope}}}async function Rt(e,t){let n=Nt(t),r=await e.resolvePasskeyExportContext({laneIdentity:n,materialActivation:t.materialActivation});switch(r.kind){case`ready`:return Lt({context:r.context,selectedLaneIdentity:n,selectedMaterialActivation:t.materialActivation});case`capability_recovery_required`:throw Error(`[SigningEngine][ed25519-export] passkey material recovery did not publish durable context`)}throw Error(`[SigningEngine][ed25519-export] unsupported passkey export context state`)}async function zt(t,n){let r=Ft(n),i=await t.emailOtp.resolveExportContext({laneIdentity:r,materialActivation:n.materialActivation});if(!e(n.materialActivation,i.material.materialActivation)&&i.material.kind!==`sealed_export_root`)throw Error(`[SigningEngine][ed25519-export] Email OTP Yao context activation mismatch`);return{context:i,laneIdentity:r}}function Bt(e){let t=e.resolved.laneIdentity.signer;return{artifactKind:ve,walletId:String(e.input.walletId),nearAccountId:String(e.input.nearAccountId),relayerUrl:e.resolved.relayerUrl,authorization:{kind:`opaque_wallet_session`,walletSessionToken:e.resolved.walletSessionToken},flowId:e.input.flowId,viewerSessionId:e.viewerSessionId,exactLane:{nearEd25519SigningKeyId:String(t.nearEd25519SigningKeyId),signerSlot:t.signerSlot,credentialIdB64u:e.resolved.laneIdentity.auth.credentialIdB64u,materialActivation:At(e.resolved)},walletCustodyEnvelope:e.resolved.walletCustodyEnvelope,capability:e.resolved.capability,variant:e.input.options.variant,theme:e.input.options.theme??e.theme}}function Vt(e,t){let n=String(e.walletId);F(e.onEvent,{phase:t===`opened`?_.STEP_04_VIEWER_OPENED:_.STEP_05_VIEWER_CLOSED,status:t===`opened`?`waiting_for_user`:`succeeded`,flowId:e.flowId,accountId:n,interaction:{kind:`key_export_viewer`,overlay:t===`opened`?`show`:`hide`},data:{chain:`near`,curve:`ed25519`}}),t===`closed`&&F(e.onEvent,{phase:_.STEP_06_COMPLETED,status:`succeeded`,flowId:e.flowId,accountId:n,interaction:{kind:`none`,overlay:`hide`},data:{chain:`near`,curve:`ed25519`}})}async function Ht(e,t){switch(t.laneIdentity.auth.kind){case`passkey`:break;case`email_otp`:return await Ut(e,t);default:throw t.laneIdentity.auth,Error(`[SigningEngine][ed25519-export] unsupported lane authorization method`)}let n=Rt(e,t),r=e.touchConfirm.initialize(),[i]=await Promise.all([n,r]),a=String(t.walletId),o=I(`export-ed25519-yao-viewer-session`),s=Vt.bind(void 0,{flowId:t.flowId,walletId:t.walletId,onEvent:t.onEvent});F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_STARTED,status:`waiting_for_user`,flowId:t.flowId,accountId:a,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`show`},data:{intent:`ed25519_export`,chain:`near`,curve:`ed25519`}}),F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:t.flowId,accountId:a,interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}});let c=await e.withThresholdEd25519CommitQueue({queueKey:x({materialActivation:At(i)}),nearAccountId:t.nearAccountId,enabled:!0,task:()=>e.passkeyMpcExport.exportPrivateKeysWithUi(Bt({resolved:i,viewerSessionId:o,input:t,theme:e.theme}),{onViewerLifecycle:s})});if(c.kind!==`completed`)throw Error(c.error);if(c.exportedSchemes.length!==1||c.exportedSchemes[0]!==`ed25519`)throw Error(`[SigningEngine][ed25519-export] secure export failed`);return F(t.onEvent,{phase:_.STEP_02_AUTH_PASSKEY_PROMPT_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:a,authMethod:`passkey`,interaction:{kind:`passkey_assert`,overlay:`none`},data:{intent:`ed25519_export`,chain:`near`,curve:`ed25519`}}),F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:a,interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}}),{accountId:String(t.nearAccountId),exportedSchemes:[`ed25519`]}}async function Ut(e,t){let n=await zt(e,t),r=`ed25519:${s(Uint8Array.from(n.context.material.capability.registeredPublicKey))}`,i=await Ge({touchConfirm:e.touchConfirm,requestExportChallenge:e.emailOtp.requestExportChallenge},{kind:`email_otp_ed25519_export_auth`,walletId:t.walletId,nearAccountId:String(t.nearAccountId),nearEd25519SigningKeyId:String(n.laneIdentity.signer.nearEd25519SigningKeyId),signerSlot:n.laneIdentity.signer.signerSlot,publicKey:r,curve:`ed25519`,chain:`near`,flowId:t.flowId,onEvent:t.onEvent});F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_STARTED,status:`running`,flowId:t.flowId,accountId:String(t.nearAccountId),interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}});let a=I(`export-ed25519-yao-viewer-session`);try{await z({touchConfirm:e.touchConfirm,theme:e.theme},{state:`loading`,walletId:String(t.walletId),nearAccountId:String(t.nearAccountId),publicKey:r,variant:t.options.variant,theme:t.options.theme,viewerSessionId:a,flowId:t.flowId,onEvent:t.onEvent});let o=await e.withThresholdEd25519CommitQueue({queueKey:x({materialActivation:jt(n.context)}),nearAccountId:t.nearAccountId,enabled:n.context.material.kind===`active_capability`,task:()=>e.emailOtp.exportSeedWithFreshAuthorization({challengeId:i.challengeId,otpCode:i.otpCode,exportContext:n.context})});return F(t.onEvent,{phase:_.STEP_03_MATERIAL_PREPARE_SUCCEEDED,status:`succeeded`,flowId:t.flowId,accountId:String(t.nearAccountId),interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,curve:`ed25519`}}),E(a)&&await z({touchConfirm:e.touchConfirm,theme:e.theme},{state:`ready`,walletId:String(t.walletId),nearAccountId:String(t.nearAccountId),publicKey:o.publicKey,privateKey:o.privateKey,variant:t.options.variant,theme:t.options.theme,viewerSessionId:a,flowId:t.flowId,onEvent:t.onEvent}),{accountId:String(t.nearAccountId),exportedSchemes:[`ed25519`]}}catch(e){throw T(),e}}function Wt(e){switch(e.kind){case`active`:case`expired`:return e;case`missing`:case`unavailable`:case`invalid`:return null;default:return e}}async function Gt(e){await e.deps.sessionLifecycle.invalidateExpiredAuthorization({state:e.state,source:e.source})}async function Kt(e){let t=await e.deps.sessionLifecycle.readAuthorization(e.request);return t.kind===`expired`&&await Gt({deps:e.deps,state:t,source:oe.operationPreflight}),t}function qt(e){let t=Wt(e.preflightState);return t?Ee({source:e.source,expiresAtMs:t.expiresAtMs,detectedAtMs:e.detectedAtMs}):null}async function Jt(e,t){let n=l(t.walletSession.walletId),r=await kt(e.laneSelection,{walletId:n,signingTarget:De(t.chainTarget),laneIdentity:t.laneIdentity}),i=await j(e.ecdsa.sessionStore,r);if(r.source===`active_wallet_authority`){if(i.source!==`active_wallet_authority`)throw Error(`[SigningEngine][ecdsa-export] active lane material source changed`);return{kind:`active_wallet_authority`,exportLane:r,exportMaterial:i}}if(i.source!==`canonical_capability`)throw Error(`[SigningEngine][ecdsa-export] canonical lane material source changed`);return{kind:`canonical_capability`,exportLane:r,exportMaterial:i}}function Yt(e){if(!(!e||e.source!==`canonical_capability`||!e.authorization))return e.authorization.operationCredential.walletSessionId}function Xt(e){let t=e.exportLane?.publicFacts,n=e.exportLane?g({walletId:e.exportLane.key.walletId,publicFacts:e.exportLane.publicFacts}):void 0;try{console.warn(`[SigningEngine][ecdsa-export][failure]`,{operationId:e.flowId,authMethod:e.exportLane?.authMethod,...n?{evmFamilyKeyFingerprint:n}:{},...t?{keyHandle:String(t.keyHandle)}:{},chainTargetKey:u(e.input.chainTarget),...Yt(e.exportLane)?{walletSessionId:Yt(e.exportLane)}:{},materialActivationId:e.exportLane?.laneIdentity.signer.materialActivation.activationId,freshAuthRetrySideEffectState:`not_applicable`,error:e.error instanceof Error?e.error.message:String(e.error||`unknown error`)})}catch{}}async function Zt(e,t,n){let r=l(t.walletSession.walletId);if(n.kind===`active_wallet_authority`)return await lt(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});if(n.exportMaterial.kind===`fresh_email_otp_route_auth_ready`)return await ut(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});if(n.exportMaterial.kind===`fresh_passkey_needs_authorization`)return await dt(e.ecdsa,{walletId:r,exportLane:n.exportLane,material:n.exportMaterial,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent});throw n.exportMaterial,Error(`[SigningEngine][ecdsa-export] unsupported export material`)}async function Qt(e,t,n){let[r]=await Promise.all([Jt(e,t),e.ecdsa.touchConfirm.initialize()]);if(r.exportLane.authorizationState===`authorization_required`)try{return await Zt(e,t,r)}catch(e){throw Xt({input:t,flowId:t.flowId,exportLane:r.exportLane,exportMaterial:r.exportMaterial,error:e}),e}let i={kind:`ecdsa`,laneIdentity:r.exportLane.laneIdentity,authorization:r.exportLane.authorization},a=await Kt({deps:e,request:{kind:`ecdsa`,laneIdentity:r.exportLane.laneIdentity,authorization:r.exportLane.authorization,nowMs:Date.now()}});try{return await Zt(e,t,r)}catch(o){Xt({input:t,flowId:t.flowId,exportLane:r.exportLane,exportMaterial:r.exportMaterial,error:o});let s=be(o);if(n.kind===`fresh_auth_retry`||s?.kind!==`expired`)throw o;let c=qt({source:i,preflightState:a,detectedAtMs:Date.now()});if(!c)throw o;return await Gt({deps:e,state:c,source:oe.serverRejection}),await Qt(e,t,{kind:`fresh_auth_retry`})}}async function $t(e,t){return await Ht(e.ed25519Yao,{walletId:t.walletSession.walletId,nearAccountId:t.nearAccount.accountId,laneIdentity:t.laneIdentity,materialActivation:t.materialActivation,options:{variant:t.options.variant,theme:t.options.theme},flowId:t.flowId,onEvent:t.options.onEvent})}async function en(e,t){return await Ue(t,async t=>{switch(t.kind){case`ecdsa`:return await Qt(e,t,{kind:`initial`});case`ed25519`:return await $t(e,t)}})}async function tn(e,t){return await Ct(e.laneSelection,t)}export{en as exportKeypairWithUI,tn as resolveExactKeyExportLane};
@@ -1 +1 @@
1
- import{S as e,T as t,p as n,v as r}from"./chains-CiYQT1K4.js";import{i}from"./base64-CsEj-_bC.js";import{n as a,t as o}from"./signingSessionSeal-CDLUmAFY.js";function s(e){try{let t=n(n(n(n(e)?.clientExtensionResults)?.prf)?.results);if(!t)return{};let r=typeof t.first==`string`?t.first.trim():``,i=typeof t.second==`string`?t.second.trim():``;return{...r?{first:r}:{},...i?{second:i}:{}}}catch{return{}}}function c(e){return s(e).first??null}function l(e){let t=e.response,n=t&&typeof t==`object`?(()=>{let e={...t};return`clientExtensionResults`in e&&(e.clientExtensionResults=null),e})():t;return{...e,response:n,clientExtensionResults:null}}function u(e){let t=l(h(e));return Array.isArray(t.response.transports)||(t.response.transports=[]),t}function d(e){let t=e.response,n=[];try{let e=t?.getTransports;typeof e==`function`&&(n=e.call(t)||[])}catch{n=[]}return{id:e.id,rawId:i(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment??void 0,response:{clientDataJSON:i(t.clientDataJSON),attestationObject:i(t.attestationObject),transports:n},clientExtensionResults:{prf:{results:{first:void 0,second:void 0}}}}}function f(e){let t=e.response;return{id:e.id,rawId:i(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment??void 0,response:{clientDataJSON:i(t.clientDataJSON),authenticatorData:i(t.authenticatorData),signature:i(t.signature),userHandle:t.userHandle?i(t.userHandle):void 0},clientExtensionResults:{prf:{results:{first:void 0,second:void 0}}}}}function p({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!0}){let r=d(e),{chacha20PrfOutput:i,ed25519PrfOutput:a}=b({credential:e,firstPrfOutput:t,secondPrfOutput:n});return{...r,clientExtensionResults:{prf:{results:{first:i,second:a}}}}}function m({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!1}){let r=f(e),{chacha20PrfOutput:i,ed25519PrfOutput:a}=b({credential:e,firstPrfOutput:t,secondPrfOutput:n});return{...r,clientExtensionResults:{prf:{results:{first:i,second:a}}}}}function h(n){if(!e(n))throw Error(`Invalid credential: not an object`);let i={...n};if(!t(i.id))throw Error(`Invalid credential.id`);if(!t(i.type))throw Error(`Invalid credential.type`);t(i.rawId)||(i.rawId=``),i.authenticatorAttachment!==void 0&&!t(i.authenticatorAttachment)&&(i.authenticatorAttachment=String(i.authenticatorAttachment));let a=e(i.response)?{...i.response}:{};return t(a.clientDataJSON)||(a.clientDataJSON=``),t(a.attestationObject)||(a.attestationObject=``),r(a.transports)||(a.transports=[]),i.response=a,i.clientExtensionResults=T(i.clientExtensionResults),i}function g(n){if(!e(n))throw Error(`Invalid credential: not an object`);let r={...n};if(!t(r.id))throw Error(`Invalid credential.id`);if(!t(r.type))throw Error(`Invalid credential.type`);t(r.rawId)||(r.rawId=``),r.authenticatorAttachment!==void 0&&!t(r.authenticatorAttachment)&&(r.authenticatorAttachment=String(r.authenticatorAttachment));let i=e(r.response)?{...r.response}:{};return t(i.clientDataJSON)||(i.clientDataJSON=``),t(i.authenticatorData)||(i.authenticatorData=``),t(i.signature)||(i.signature=``),i.userHandle!==void 0&&!t(i.userHandle)&&(i.userHandle=void 0),r.response=i,r.clientExtensionResults=T(r.clientExtensionResults),r}function _(n){if(!e(n))return!1;let i=n;if(!t(i.id)||!t(i.rawId)||!t(i.type)||!e(i.response))return!1;let a=i.response;return!t(a.clientDataJSON)||!t(a.attestationObject)?!1:a.transports==null||r(a.transports)}function v(){return new Uint8Array(o)}function y(){return new Uint8Array(a)}function b({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!1}){let r=S(x(e));C(r,t,n);let i=t?w(r.first):void 0,a=n?w(r.second):void 0;if(t&&!i)throw Error(`Missing PRF result: first`);if(n&&!a)throw Error(`Missing PRF result: second`);return{chacha20PrfOutput:i||``,ed25519PrfOutput:a||``}}function x(e){try{let t=e.getClientExtensionResults;if(typeof t==`function`)return t.call(e)}catch{}return e.clientExtensionResults}function S(e){try{return e?.prf?.results}catch{return}}function C(e,t,n){if(!e)throw Error(`Missing PRF results from credential, use a PRF-enabled Authenticator`);if(!(e.first!==void 0||e.second!==void 0)&&(t||n))throw Error(`Missing PRF result - PRF evaluation failed: results object is empty`)}function w(e){if(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return i(e);if(ArrayBuffer.isView(e))return i(e.buffer);try{return i(e)}catch{try{return i(new Uint8Array(e).buffer)}catch{return}}}}function T(n){let i={prf:{results:{first:void 0,second:void 0}}},a=e(n)?n:{};if(typeof a.appid==`boolean`&&(i.appid=a.appid),typeof a.appidExclude==`boolean`&&(i.appidExclude=a.appidExclude),typeof a.hmacCreateSecret==`boolean`&&(i.hmacCreateSecret=a.hmacCreateSecret),e(a.credProps)){let e=a.credProps,t={};typeof e.rk==`boolean`&&(t.rk=e.rk),i.credProps=t}if(r(a.uvm)){let e=a.uvm.filter(r).map(e=>{let t=e,n=typeof t[0]==`number`?t[0]:void 0,r=typeof t[1]==`number`?t[1]:void 0,i=typeof t[2]==`number`?t[2]:void 0;return typeof n==`number`&&typeof r==`number`&&typeof i==`number`?[n,r,i]:void 0}).filter(e=>Array.isArray(e));e.length>0&&(i.uvm=e)}if(e(a.prf)){let n=a.prf,r=e(n.results)?n.results:{},o=r.first,s=r.second;i.prf={results:{first:t(o)?o:void 0,second:t(s)?s:void 0}}}return i}export{h as a,p as c,g as i,c as l,y as n,u as o,_ as r,m as s,v as t,l as u};
1
+ import{S as e,T as t,p as n,v as r}from"./chains-C_X_fNuS.js";import{i}from"./base64-DW79QA0h.js";import{n as a,t as o}from"./signingSessionSeal-DX41aXUL.js";function s(e){try{let t=n(n(n(n(e)?.clientExtensionResults)?.prf)?.results);if(!t)return{};let r=typeof t.first==`string`?t.first.trim():``,i=typeof t.second==`string`?t.second.trim():``;return{...r?{first:r}:{},...i?{second:i}:{}}}catch{return{}}}function c(e){return s(e).first??null}function l(e){let t=e.response,n=t&&typeof t==`object`?(()=>{let e={...t};return`clientExtensionResults`in e&&(e.clientExtensionResults=null),e})():t;return{...e,response:n,clientExtensionResults:null}}function u(e){let t=l(h(e));return Array.isArray(t.response.transports)||(t.response.transports=[]),t}function d(e){let t=e.response,n=[];try{let e=t?.getTransports;typeof e==`function`&&(n=e.call(t)||[])}catch{n=[]}return{id:e.id,rawId:i(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment??void 0,response:{clientDataJSON:i(t.clientDataJSON),attestationObject:i(t.attestationObject),transports:n},clientExtensionResults:{prf:{results:{first:void 0,second:void 0}}}}}function f(e){let t=e.response;return{id:e.id,rawId:i(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment??void 0,response:{clientDataJSON:i(t.clientDataJSON),authenticatorData:i(t.authenticatorData),signature:i(t.signature),userHandle:t.userHandle?i(t.userHandle):void 0},clientExtensionResults:{prf:{results:{first:void 0,second:void 0}}}}}function p({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!0}){let r=d(e),{chacha20PrfOutput:i,ed25519PrfOutput:a}=b({credential:e,firstPrfOutput:t,secondPrfOutput:n});return{...r,clientExtensionResults:{prf:{results:{first:i,second:a}}}}}function m({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!1}){let r=f(e),{chacha20PrfOutput:i,ed25519PrfOutput:a}=b({credential:e,firstPrfOutput:t,secondPrfOutput:n});return{...r,clientExtensionResults:{prf:{results:{first:i,second:a}}}}}function h(n){if(!e(n))throw Error(`Invalid credential: not an object`);let i={...n};if(!t(i.id))throw Error(`Invalid credential.id`);if(!t(i.type))throw Error(`Invalid credential.type`);t(i.rawId)||(i.rawId=``),i.authenticatorAttachment!==void 0&&!t(i.authenticatorAttachment)&&(i.authenticatorAttachment=String(i.authenticatorAttachment));let a=e(i.response)?{...i.response}:{};return t(a.clientDataJSON)||(a.clientDataJSON=``),t(a.attestationObject)||(a.attestationObject=``),r(a.transports)||(a.transports=[]),i.response=a,i.clientExtensionResults=T(i.clientExtensionResults),i}function g(n){if(!e(n))throw Error(`Invalid credential: not an object`);let r={...n};if(!t(r.id))throw Error(`Invalid credential.id`);if(!t(r.type))throw Error(`Invalid credential.type`);t(r.rawId)||(r.rawId=``),r.authenticatorAttachment!==void 0&&!t(r.authenticatorAttachment)&&(r.authenticatorAttachment=String(r.authenticatorAttachment));let i=e(r.response)?{...r.response}:{};return t(i.clientDataJSON)||(i.clientDataJSON=``),t(i.authenticatorData)||(i.authenticatorData=``),t(i.signature)||(i.signature=``),i.userHandle!==void 0&&!t(i.userHandle)&&(i.userHandle=void 0),r.response=i,r.clientExtensionResults=T(r.clientExtensionResults),r}function _(n){if(!e(n))return!1;let i=n;if(!t(i.id)||!t(i.rawId)||!t(i.type)||!e(i.response))return!1;let a=i.response;return!t(a.clientDataJSON)||!t(a.attestationObject)?!1:a.transports==null||r(a.transports)}function v(){return new Uint8Array(o)}function y(){return new Uint8Array(a)}function b({credential:e,firstPrfOutput:t=!0,secondPrfOutput:n=!1}){let r=S(x(e));C(r,t,n);let i=t?w(r.first):void 0,a=n?w(r.second):void 0;if(t&&!i)throw Error(`Missing PRF result: first`);if(n&&!a)throw Error(`Missing PRF result: second`);return{chacha20PrfOutput:i||``,ed25519PrfOutput:a||``}}function x(e){try{let t=e.getClientExtensionResults;if(typeof t==`function`)return t.call(e)}catch{}return e.clientExtensionResults}function S(e){try{return e?.prf?.results}catch{return}}function C(e,t,n){if(!e)throw Error(`Missing PRF results from credential, use a PRF-enabled Authenticator`);if(!(e.first!==void 0||e.second!==void 0)&&(t||n))throw Error(`Missing PRF result - PRF evaluation failed: results object is empty`)}function w(e){if(e){if(typeof e==`string`)return e;if(e instanceof ArrayBuffer)return i(e);if(ArrayBuffer.isView(e))return i(e.buffer);try{return i(e)}catch{try{return i(new Uint8Array(e).buffer)}catch{return}}}}function T(n){let i={prf:{results:{first:void 0,second:void 0}}},a=e(n)?n:{};if(typeof a.appid==`boolean`&&(i.appid=a.appid),typeof a.appidExclude==`boolean`&&(i.appidExclude=a.appidExclude),typeof a.hmacCreateSecret==`boolean`&&(i.hmacCreateSecret=a.hmacCreateSecret),e(a.credProps)){let e=a.credProps,t={};typeof e.rk==`boolean`&&(t.rk=e.rk),i.credProps=t}if(r(a.uvm)){let e=a.uvm.filter(r).map(e=>{let t=e,n=typeof t[0]==`number`?t[0]:void 0,r=typeof t[1]==`number`?t[1]:void 0,i=typeof t[2]==`number`?t[2]:void 0;return typeof n==`number`&&typeof r==`number`&&typeof i==`number`?[n,r,i]:void 0}).filter(e=>Array.isArray(e));e.length>0&&(i.uvm=e)}if(e(a.prf)){let n=a.prf,r=e(n.results)?n.results:{},o=r.first,s=r.second;i.prf={results:{first:t(o)?o:void 0,second:t(s)?s:void 0}}}return i}export{h as a,p as c,g as i,c as l,y as n,u as o,_ as r,m as s,v as t,l as u};
@@ -0,0 +1 @@
1
+ import{C as e,S as t}from"./chains-C_X_fNuS.js";import{n}from"./walletRegistrationSetupPrewarm-B9kpnrbK.js";import{_ as r,c as i,f as a,g as o,h as s,l as c,m as l,n as u,o as d,t as f,v as p}from"./messages-DgJlG9NU.js";import{a as m,c as h,i as g,l as _,n as v,o as y,s as b,t as x,u as S}from"./transactionReviewAdmission-CIvR4W5_.js";import{t as C}from"./events-1dzC4Ocx.js";import{t as w}from"./walletIframeIdentity-Cz82I_Uh.js";import{t as T}from"./errors-DIWY1KR9.js";function E(){let e=globalThis;e.global===void 0&&(e.global=globalThis),!e.process||typeof e.process!=`object`?e.process={env:{}}:(!e.process.env||typeof e.process.env!=`object`)&&(e.process.env={})}function D(){E(),window.location.origin===`null`&&(window.parent?.postMessage({type:`SERVICE_HOST_DEBUG_ORIGIN`,origin:window.location.origin,href:window.location.href},`*`),console.warn(`[WalletHost] iframe is running with opaque (null) origin. Check COEP/CORP headers and ensure navigation succeeded.`)),O(),window.parent?.postMessage({type:`SERVICE_HOST_BOOTED`},`*`),window.parent?.postMessage({type:`SERVICE_HOST_DEBUG_ORIGIN`,origin:window.location.origin,href:window.location.href},`*`);let e=new URL(import.meta.url),t=e.searchParams.get(`v`);t&&l(t);let n=new URL(`.`,e).toString(),r=n.endsWith(`/`)?n:n+`/`;a()||s(r)}function O(){let e=()=>{let e=document;e.documentElement.classList.add(`seams-transparent`),e.body?.classList.add(`seams-transparent`),e.documentElement.classList.remove(`dark`),e.body?.classList.remove(`dark`)};document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e(),window.addEventListener(`load`,()=>e(),{once:!0})}const k={};let A=null,j=null;function M(e){return e.type===`PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`?(A??=import(`./runtime-recovery-codes-Dn-NccpU.js`),A):(k[e.kind]??=P(e.kind),k[e.kind])}async function N(){A??=import(`./runtime-recovery-codes-Dn-NccpU.js`),j??=Promise.all([A,import(`./mountRecoveryCodeBackupSurface-BA2ttbTM.js`)]).then(()=>void 0),await j}function P(e){switch(e){case`auth`:return import(`./runtime-auth-Ch4qvKL2.js`);case`near`:return import(`./runtime-near-uXqcLEz8.js`);case`ecdsa`:return import(`./runtime-ecdsa-tempo-Bntp_Zgx.js`);case`email_otp`:return import(`./runtime-email-otp-DEFt-Y-_.js`);case`recovery`:return import(`./runtime-recovery-D7wklehP.js`);case`export`:return import(`./runtime-export-DE_umiS1.js`);case`device_link`:return import(`./runtime-device-link-DtNpEjq5.js`);case`preferences`:return import(`./runtime-preferences-C49p0VLC.js`)}return F(e)}function F(e){throw Error(`Unhandled wallet host runtime route: ${String(e)}`)}function I(e){throw Error(`Unhandled wallet host route: ${String(e)}`)}function L(e,t){if(e===null)throw Error(`Invalid ${t} payload`);return e}function R(e){try{return w(e)}catch{throw Error(`Hosted auth-menu request requires a non-empty requestId`)}}function z(e){switch(e.type){case`PM_ACTIVATE_TRANSACTION_REVIEW`:case`PING`:case`PM_SET_CONFIG`:case`PM_CANCEL`:case`PM_SET_TRANSACTION_VIEW`:case`PM_TRANSACTION_BROADCAST_STARTED`:return{kind:`boot`,type:e.type,request:e};case`PM_REGISTER_WALLET`:case`PM_ADD_WALLET_SIGNER`:case`PM_ADD_PASSKEY`:case`PM_ADD_EMAIL_OTP`:case`PM_REVOKE_AUTH_METHOD`:case`PM_GET_NEAR_PROVISIONING_STATE`:case`PM_SIGN_TX_WITH_ACTIONS`:case`PM_SIGN_AND_SEND_TX`:case`PM_SEND_TRANSACTION`:case`PM_SIGN_DELEGATE_ACTION`:case`PM_SIGN_NEP413`:return{kind:`near`,type:e.type,request:e};case`PM_OPEN_AUTH_MENU`:{let t=R(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:L(c(e.payload),`hosted auth-menu open`)}}}case`PM_CANCEL_AUTH_MENU`:{let t=R(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:L(d(e.payload),`hosted auth-menu cancellation`)}}}case`PM_RESOLVE_AUTH_MENU_EXTERNAL_AUTH`:{let t=R(e.requestId);return{kind:`auth`,type:e.type,request:{...e,requestId:t,payload:L(i(e.payload),`hosted auth-menu external-auth resolution`)}}}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_RECENT_UNLOCKS`:return{kind:`auth`,type:e.type,request:e};case`PM_SIGN_TEMPO`: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`:return{kind:`ecdsa`,type:e.type,request:e};case`PM_REDEEM_HOSTED_WALLET_SEAMS_SESSION`: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_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP`:case`PM_ROTATE_WALLET_RECOVERY_CODES`:case`PM_REQUEST_WALLET_CUSTODY_EMAIL_OTP_CHALLENGE`:return{kind:`email_otp`,type:e.type,request:e};case`PM_SYNC_ACCOUNT_FLOW`:return{kind:`recovery`,type:e.type,request:e};case`PM_RESOLVE_EXACT_KEY_EXPORT_LANE`:case`PM_EXPORT_KEYPAIR_UI`:return{kind:`export`,type:e.type,request:e};case`PM_HAS_PASSKEY`:case`PM_LIST_LINKED_DEVICES`:case`PM_REVOKE_LINKED_DEVICE`:case`PM_SCAN_AND_LINK_DEVICE`: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{kind:`device_link`,type:e.type,request:e};case`PM_SET_CONFIRM_BEHAVIOR`:case`PM_SET_CONFIRMATION_CONFIG`:case`PM_GET_CONFIRMATION_CONFIG`:return{kind:`preferences`,type:e.type,request:e}}return I(e)}function B(e){return e.kind!==`boot`}let V=!1;const H=[{selector:`.seams-auth-menu-surface`,cancellationKind:`native_cancel`},{selector:`.seams-confirmation-surface`,cancellationKind:`native_cancel`},{selector:`.seams-export-surface`,cancellationKind:`wallet_iframe_cancel`},{selector:`[data-seams-wallet-recovery-backup-dialog]`,cancellationKind:`native_cancel`}];function U(e,t){let n=new Set(t),r=Object.keys(e);return r.length===t.length&&r.every(e=>n.has(e))}function W(t){return!e(t)||!U(t,[`type`,`payload`])||t.type!==`CONNECT`||!e(t.payload)||!U(t.payload,[`protocolVersion`])?null:typeof t.payload.protocolVersion==`string`?{type:`CONNECT`,payload:{protocolVersion:t.payload.protocolVersion}}:null}function G(e){if(e===`null`)return!0;try{let t=new URL(e);return(t.protocol===`https:`||t.protocol===`http:`)&&t.origin===e}catch{return!1}}function K(e){try{e.close()}catch{}}function q(e,t){if(t===`15.0.0`)return!1;let n={expectedProtocolVersion:u,receivedProtocolVersion:t};try{e.postMessage({type:`ERROR`,payload:{code:f,message:`Wallet iframe protocol version mismatch: expected ${u}, received ${t??`missing`}`,details:n}})}catch{}return K(e),!0}function J(e,t){return!t||t.has(e.kind)}function Y(e,t,n,r){e.executionGeneration===t&&n(r)}function X(e,t,n,r){return e.executionGeneration!==t||n(r)}function Z(e={}){if(V)return;V=!0,D(),(!e.supportedRuntimeRouteKinds||e.supportedRuntimeRouteKinds.has(`email_otp`))&&N().catch(()=>void 0);let i=new Set,a=new Set,s={parentOrigin:null,port:null,configuration:{kind:`unconfigured`},executionGeneration:0,onConfigurationChanged:null},c=e=>{try{s.port?.postMessage(e)}catch{}},l=e=>{e&&i.add(e)},d=e=>!!e&&(i.has(e)||g(e)?.cancelled===!0),f=e=>{e&&i.delete(e)},w=e=>{e&&c({type:`ERROR`,requestId:e,payload:{code:`cancelled`,message:`Request cancelled`}})},E=e=>!e||!d(e)?!1:g(e)?.cancelled?!0:(w(e),f(e),!0),O=()=>{for(let e of H){let t=document.querySelectorAll(e.selector);for(let n of t)try{e.cancellationKind===`native_cancel`?n.dispatchEvent(new Event(`cancel`,{cancelable:!0})):n.dispatchEvent(new CustomEvent(C.TX_CONFIRMER_CANCEL,{bubbles:!0,composed:!0}))}catch{}}},k=async i=>{let u=i.data;if(!u||!t(u))return;let C=u.requestId,D=s.executionGeneration,k=Y.bind(null,s,D,c),A=null;try{if(`transactionReview`in u){if(u.type!==`PM_SIGN_AND_SEND_TX`&&u.type!==`PM_SIGN_TEMPO`)throw new m(`review_invalid_input`,`Review is unsupported for this request`);let e=h(u.transactionReview);if(e.requestId!==C)throw new m(`review_invalid_input`,`Review request identity mismatch`);let t=u.payload?.options?.confirmationConfig;if(t?.uiMode!==`modal`||t.behavior!==`requireClick`)throw new m(`review_unsupported_mode`,`Review requires modal presentation and explicit approval`);A=new x(e,u.type===`PM_SIGN_TEMPO`&&u.payload?.request.senderSignatureAlgorithm!==`secp256k1`?`credential`:`mpc`,e=>k({type:`TRANSACTION_REVIEW_STATE`,requestId:C,payload:e}),e=>k({type:`ERROR`,requestId:C,payload:{code:e instanceof m?e.code:`cancelled`,message:e.message}}))}(u.type===`PM_LOCK`||u.type===`PM_LOCK_EXACT_WALLET_SESSION`)&&v(new m(`review_identity_changed`,`The wallet session changed`));let t=z(u);if(!B(t))switch(t.type){case`PING`:c({type:`PONG`,requestId:C});return;case`PM_SET_CONFIG`:{let e=o(s.configuration,r(t.request.payload)),i=p(s.configuration.kind===`configured`?s.configuration.config:null)!==p(e.config);if(s.configuration=e,i){s.executionGeneration+=1;let t=e.config;t.registration.publishableKey&&t.registration.projectEnvironmentId&&n(t.network.relayer.url);for(let e of a)c({type:`ERROR`,requestId:e,payload:{code:`wallet_configuration_changed`,message:`Wallet configuration changed during request`}});a.clear()}s.onConfigurationChanged?.(),i&&(v(new m(`review_identity_changed`,`Wallet execution configuration changed`)),O()),c({type:`PONG`,requestId:C});return}case`PM_ACTIVATE_TRANSACTION_REVIEW`:{let e=b(t.request.payload);e&&g(e.requestId)?.activate(e);return}case`PM_CANCEL`:{let e=t.request.payload?.requestId,n=t.request.payload,r=n&&typeof n==`object`?Reflect.get(n,`transactionReview`):void 0;if(r!==void 0){let t=h(r),i=g(t.requestId);if(t.requestId===e&&i&&_(t,i.metadata)){let e=new m(S(n&&typeof n==`object`?Reflect.get(n,`reviewErrorCode`):void 0),`Reviewed request cancelled`);try{y(i.metadata.validity)}catch(t){t instanceof Error&&(e=t)}i.cancel(e)}c({type:`PONG`,requestId:C});return}let i=e?g(e):void 0;if(i){i.cancel(new m(`cancelled`,`Request cancelled`)),c({type:`PONG`,requestId:C});return}l(e),O(),e&&w(e),c({type:`PONG`,requestId:C});return}case`PM_SET_TRANSACTION_VIEW`:{let e=t.request.payload,n=e&&typeof e==`object`?Reflect.get(e,`requestId`):null,r=e&&typeof e==`object`?Reflect.get(e,`view`):null;typeof n==`string`&&(r===`toast`||r===`closed`)&&(await import(`./transaction-activity-Cb2JyYKv.js`).then(e=>e.o)).setTransactionActivityView(n,r);return}case`PM_TRANSACTION_BROADCAST_STARTED`:{let e=t.request.payload,n=e&&typeof e==`object`?Reflect.get(e,`signedTransaction`):null;typeof n==`string`&&(await import(`./transaction-activity-Cb2JyYKv.js`).then(e=>e.o)).transactionBroadcastStarted(n);return}}if(!J(t,e.supportedRuntimeRouteKinds)){c({type:`ERROR`,requestId:C,payload:{code:`unsupported_request`,message:`Unsupported wallet iframe request type: ${t.type}`}});return}C&&a.add(C);let i=await M(t);if(D!==s.executionGeneration)return;await i.handleWalletHostRuntimeRequest({transactionReview:A,state:s,executionGeneration:D,req:t.request,post:Y.bind(null,s,D,c),isCancelled:X.bind(null,s,D,d),respondIfCancelled:X.bind(null,s,D,E)})}catch(e){if(D!==s.executionGeneration&&u.type!==`PM_SET_CONFIG`||A?.cancelled)return;let t=await import(`./canonicalSignerErrorCode-Cz48v4oy.js`);if(D!==s.executionGeneration&&u.type!==`PM_SET_CONFIG`)return;let n=e&&typeof e==`object`&&`code`in e?e.code:void 0,r=T(e),i=t.resolveWalletBoundaryErrorCode({requestType:u.type,rawCode:n,message:r,defaultCode:`HOST_ERROR`}),a=t.resolveWalletBoundaryErrorMessage({requestType:u.type,rawCode:n,code:i,message:r}),o=t.resolveWalletBoundarySignerKind(u.type);c({type:`ERROR`,requestId:C,payload:{code:i,message:a,...t.isWalletSignerBoundaryRequestType(u.type)&&t.isCanonicalSignerSessionBoundaryCode(i)&&o?{signerKind:o}:{}}})}finally{C&&(a.delete(C),f(C)),A?.finish()}};window.addEventListener(`message`,e=>{let t=W(e.data),n=e.ports[0];if(!(!t||!n||s.port)){if(e.source!==window.parent||!G(e.origin)){K(n);return}if(!q(n,t.payload.protocolVersion)){typeof e.origin==`string`&&e.origin.length&&e.origin!==`null`&&(s.parentOrigin=e.origin),s.port=n;try{s.port.onmessage=k,s.port.start?.()}catch{}c({type:`READY`,payload:{protocolVersion:u}})}}})}try{Z()}catch(e){console.error(`[WalletHost] init failed`,e)}export{Z as t};
@@ -1 +1 @@
1
- import{S as e,c as t,u as n}from"./chains-CiYQT1K4.js";import{i as r}from"./base64-CsEj-_bC.js";let i=function(e){return e.CreateAccount=`CreateAccount`,e.DeployContract=`DeployContract`,e.FunctionCall=`FunctionCall`,e.Transfer=`Transfer`,e.Stake=`Stake`,e.AddKey=`AddKey`,e.DeleteKey=`DeleteKey`,e.DeleteAccount=`DeleteAccount`,e.SignedDelegate=`SignedDelegate`,e.DeployGlobalContract=`DeployGlobalContract`,e.UseGlobalContract=`UseGlobalContract`,e}({});function a(t){return e(t)&&`action_type`in t}function o(e){switch(e.type){case i.Transfer:return{action_type:i.Transfer,deposit:e.amount};case i.FunctionCall:return{action_type:i.FunctionCall,method_name:e.methodName,args:JSON.stringify(e.args),gas:e.gas||`30000000000000`,deposit:e.deposit||`0`};case i.AddKey:{let t=e.accessKey.permission,n=t===`FullAccess`?{FullAccess:{}}:t;return{action_type:i.AddKey,public_key:e.publicKey,access_key:JSON.stringify({nonce:e.accessKey.nonce||0,permission:n})}}case i.DeleteKey:return{action_type:i.DeleteKey,public_key:e.publicKey};case i.CreateAccount:return{action_type:i.CreateAccount};case i.DeleteAccount:return{action_type:i.DeleteAccount,beneficiary_id:e.beneficiaryId};case i.DeployContract:return{action_type:i.DeployContract,code:typeof e.code==`string`?Array.from(new TextEncoder().encode(e.code)):Array.from(e.code)};case i.DeployGlobalContract:return{action_type:i.DeployGlobalContract,code:typeof e.code==`string`?Array.from(new TextEncoder().encode(e.code)):Array.from(e.code),deploy_mode:e.deployMode};case i.UseGlobalContract:return{action_type:i.UseGlobalContract,account_id:e.accountId,code_hash:e.codeHash};case i.Stake:return{action_type:i.Stake,stake:e.stake,public_key:e.publicKey};default:throw Error(`Action type ${e.type} is not supported`)}}function s(e){switch(e.action_type){case i.FunctionCall:if(!e.method_name)throw Error(`method_name required for FunctionCall`);if(!e.args)throw Error(`args required for FunctionCall`);if(!e.gas)throw Error(`gas required for FunctionCall`);if(!e.deposit)throw Error(`deposit required for FunctionCall`);if(typeof e.args!=`string`)throw Error(`FunctionCall action args must be a valid JSON string`);try{JSON.parse(e.args)}catch{throw Error(`FunctionCall action args must be valid JSON string`)}break;case i.Transfer:if(!e.deposit)throw Error(`deposit required for Transfer`);break;case i.CreateAccount:break;case i.DeployContract:if(!e.code||e.code.length===0)throw Error(`code required for DeployContract`);break;case i.Stake:if(!e.stake)throw Error(`stake amount required for Stake`);if(!e.public_key)throw Error(`public_key required for Stake`);break;case i.AddKey:if(!e.public_key)throw Error(`public_key required for AddKey`);if(!e.access_key)throw Error(`access_key required for AddKey`);if(typeof e.access_key!=`string`)throw Error(`AddKey action access_key must be a valid JSON string`);try{JSON.parse(e.access_key)}catch{throw Error(`AddKey action access_key must be valid JSON string`)}break;case i.DeleteKey:if(!e.public_key)throw Error(`public_key required for DeleteKey`);break;case i.DeleteAccount:if(!e.beneficiary_id)throw Error(`beneficiary_id required for DeleteAccount`);break;case i.SignedDelegate:if(!e.delegate_action||typeof e.delegate_action!=`object`)throw Error(`delegate_action required for SignedDelegate`);if(!e.signature||typeof e.signature!=`object`)throw Error(`signature required for SignedDelegate`);break;case i.DeployGlobalContract:if(!e.code||e.code.length===0)throw Error(`code required for DeployGlobalContract`);if(!e.deploy_mode||e.deploy_mode!==`CodeHash`&&e.deploy_mode!==`AccountId`)throw Error(`deploy_mode must be CodeHash or AccountId for DeployGlobalContract`);break;case i.UseGlobalContract:if(!!e.account_id==!!e.code_hash)throw Error(`UseGlobalContract requires exactly one of account_id or code_hash`);break;default:throw Error(`Unsupported action type: ${e.action_type}`)}}function c(t){switch(t.action_type){case i.FunctionCall:{let e={};try{e=typeof t.args==`string`?t.args?JSON.parse(t.args):{}:t.args||{}}catch{e={}}return{type:i.FunctionCall,methodName:t.method_name,args:e,gas:t.gas,deposit:t.deposit}}case i.Transfer:return{type:i.Transfer,amount:t.deposit};case i.CreateAccount:return{type:i.CreateAccount};case i.DeployContract:return{type:i.DeployContract,code:Array.isArray(t.code)?new Uint8Array(t.code):new Uint8Array};case i.DeployGlobalContract:return{type:i.DeployGlobalContract,code:Array.isArray(t.code)?new Uint8Array(t.code):new Uint8Array,deployMode:t.deploy_mode};case i.Stake:return{type:i.Stake,stake:t.stake,publicKey:t.public_key};case i.AddKey:{let n;try{n=JSON.parse(t.access_key)}catch{n={nonce:BigInt(0),permission:`FullAccess`}}let r=n?.permission,a=`FullAccess`;if(e(r)){if(`FullAccess`in r)a=`FullAccess`;else if(`FunctionCall`in r){let e=r.FunctionCall;a={FunctionCall:{allowance:e.allowance,receiver_id:e.receiver_id,method_names:e.method_names}}}}return{type:i.AddKey,publicKey:t.public_key,accessKey:{nonce:typeof n?.nonce==`number`?n.nonce:0,permission:a}}}case i.DeleteKey:return{type:i.DeleteKey,publicKey:t.public_key};case i.DeleteAccount:return{type:i.DeleteAccount,beneficiaryId:t.beneficiary_id};case i.UseGlobalContract:return{type:i.UseGlobalContract,accountId:t.account_id,codeHash:t.code_hash};default:throw Error(`Unsupported wasm action_type: ${t?.action_type}`)}}function l(e){return{receiverId:e.receiverId,actions:e.actions.map(c)}}function u(e){return(e||[]).map(l)}async function d(e){return r(await n(e))}async function f(e){return d(t({kind:`nep413`,...e}))}async function p(e){return d(t(e))}async function m(e){return d(t(e))}function h(e){switch(e.action_type){case i.FunctionCall:return{action_type:e.action_type,args:e.args,deposit:e.deposit,gas:e.gas,method_name:e.method_name};case i.Transfer:return{action_type:e.action_type,deposit:e.deposit};case i.Stake:return{action_type:e.action_type,stake:e.stake,public_key:e.public_key};case i.AddKey:return{action_type:e.action_type,public_key:e.public_key,access_key:e.access_key};case i.DeleteKey:return{action_type:e.action_type,public_key:e.public_key};case i.DeleteAccount:return{action_type:e.action_type,beneficiary_id:e.beneficiary_id};case i.DeployContract:return{action_type:e.action_type,code:e.code};case i.SignedDelegate:return{action_type:e.action_type,delegate_action:e.delegate_action,signature:e.signature};case i.DeployGlobalContract:return{action_type:e.action_type,code:e.code,deploy_mode:e.deploy_mode};case i.UseGlobalContract:return{action_type:e.action_type,account_id:e.account_id,code_hash:e.code_hash};case i.CreateAccount:return{action_type:e.action_type};default:return e}}export{d as a,u as c,s as d,h as i,a as l,f as n,i as o,m as r,c as s,p as t,o as u};
1
+ import{S as e,c as t,u as n}from"./chains-C_X_fNuS.js";import{i as r}from"./base64-DW79QA0h.js";let i=function(e){return e.CreateAccount=`CreateAccount`,e.DeployContract=`DeployContract`,e.FunctionCall=`FunctionCall`,e.Transfer=`Transfer`,e.Stake=`Stake`,e.AddKey=`AddKey`,e.DeleteKey=`DeleteKey`,e.DeleteAccount=`DeleteAccount`,e.SignedDelegate=`SignedDelegate`,e.DeployGlobalContract=`DeployGlobalContract`,e.UseGlobalContract=`UseGlobalContract`,e}({});function a(t){return e(t)&&`action_type`in t}function o(e){switch(e.type){case i.Transfer:return{action_type:i.Transfer,deposit:e.amount};case i.FunctionCall:return{action_type:i.FunctionCall,method_name:e.methodName,args:JSON.stringify(e.args),gas:e.gas||`30000000000000`,deposit:e.deposit||`0`};case i.AddKey:{let t=e.accessKey.permission,n=t===`FullAccess`?{FullAccess:{}}:t;return{action_type:i.AddKey,public_key:e.publicKey,access_key:JSON.stringify({nonce:e.accessKey.nonce||0,permission:n})}}case i.DeleteKey:return{action_type:i.DeleteKey,public_key:e.publicKey};case i.CreateAccount:return{action_type:i.CreateAccount};case i.DeleteAccount:return{action_type:i.DeleteAccount,beneficiary_id:e.beneficiaryId};case i.DeployContract:return{action_type:i.DeployContract,code:typeof e.code==`string`?Array.from(new TextEncoder().encode(e.code)):Array.from(e.code)};case i.DeployGlobalContract:return{action_type:i.DeployGlobalContract,code:typeof e.code==`string`?Array.from(new TextEncoder().encode(e.code)):Array.from(e.code),deploy_mode:e.deployMode};case i.UseGlobalContract:return{action_type:i.UseGlobalContract,account_id:e.accountId,code_hash:e.codeHash};case i.Stake:return{action_type:i.Stake,stake:e.stake,public_key:e.publicKey};default:throw Error(`Action type ${e.type} is not supported`)}}function s(e){switch(e.action_type){case i.FunctionCall:if(!e.method_name)throw Error(`method_name required for FunctionCall`);if(!e.args)throw Error(`args required for FunctionCall`);if(!e.gas)throw Error(`gas required for FunctionCall`);if(!e.deposit)throw Error(`deposit required for FunctionCall`);if(typeof e.args!=`string`)throw Error(`FunctionCall action args must be a valid JSON string`);try{JSON.parse(e.args)}catch{throw Error(`FunctionCall action args must be valid JSON string`)}break;case i.Transfer:if(!e.deposit)throw Error(`deposit required for Transfer`);break;case i.CreateAccount:break;case i.DeployContract:if(!e.code||e.code.length===0)throw Error(`code required for DeployContract`);break;case i.Stake:if(!e.stake)throw Error(`stake amount required for Stake`);if(!e.public_key)throw Error(`public_key required for Stake`);break;case i.AddKey:if(!e.public_key)throw Error(`public_key required for AddKey`);if(!e.access_key)throw Error(`access_key required for AddKey`);if(typeof e.access_key!=`string`)throw Error(`AddKey action access_key must be a valid JSON string`);try{JSON.parse(e.access_key)}catch{throw Error(`AddKey action access_key must be valid JSON string`)}break;case i.DeleteKey:if(!e.public_key)throw Error(`public_key required for DeleteKey`);break;case i.DeleteAccount:if(!e.beneficiary_id)throw Error(`beneficiary_id required for DeleteAccount`);break;case i.SignedDelegate:if(!e.delegate_action||typeof e.delegate_action!=`object`)throw Error(`delegate_action required for SignedDelegate`);if(!e.signature||typeof e.signature!=`object`)throw Error(`signature required for SignedDelegate`);break;case i.DeployGlobalContract:if(!e.code||e.code.length===0)throw Error(`code required for DeployGlobalContract`);if(!e.deploy_mode||e.deploy_mode!==`CodeHash`&&e.deploy_mode!==`AccountId`)throw Error(`deploy_mode must be CodeHash or AccountId for DeployGlobalContract`);break;case i.UseGlobalContract:if(!!e.account_id==!!e.code_hash)throw Error(`UseGlobalContract requires exactly one of account_id or code_hash`);break;default:throw Error(`Unsupported action type: ${e.action_type}`)}}function c(t){switch(t.action_type){case i.FunctionCall:{let e={};try{e=typeof t.args==`string`?t.args?JSON.parse(t.args):{}:t.args||{}}catch{e={}}return{type:i.FunctionCall,methodName:t.method_name,args:e,gas:t.gas,deposit:t.deposit}}case i.Transfer:return{type:i.Transfer,amount:t.deposit};case i.CreateAccount:return{type:i.CreateAccount};case i.DeployContract:return{type:i.DeployContract,code:Array.isArray(t.code)?new Uint8Array(t.code):new Uint8Array};case i.DeployGlobalContract:return{type:i.DeployGlobalContract,code:Array.isArray(t.code)?new Uint8Array(t.code):new Uint8Array,deployMode:t.deploy_mode};case i.Stake:return{type:i.Stake,stake:t.stake,publicKey:t.public_key};case i.AddKey:{let n;try{n=JSON.parse(t.access_key)}catch{n={nonce:BigInt(0),permission:`FullAccess`}}let r=n?.permission,a=`FullAccess`;if(e(r)){if(`FullAccess`in r)a=`FullAccess`;else if(`FunctionCall`in r){let e=r.FunctionCall;a={FunctionCall:{allowance:e.allowance,receiver_id:e.receiver_id,method_names:e.method_names}}}}return{type:i.AddKey,publicKey:t.public_key,accessKey:{nonce:typeof n?.nonce==`number`?n.nonce:0,permission:a}}}case i.DeleteKey:return{type:i.DeleteKey,publicKey:t.public_key};case i.DeleteAccount:return{type:i.DeleteAccount,beneficiaryId:t.beneficiary_id};case i.UseGlobalContract:return{type:i.UseGlobalContract,accountId:t.account_id,codeHash:t.code_hash};default:throw Error(`Unsupported wasm action_type: ${t?.action_type}`)}}function l(e){return{receiverId:e.receiverId,actions:e.actions.map(c)}}function u(e){return(e||[]).map(l)}async function d(e){return r(await n(e))}async function f(e){return d(t({kind:`nep413`,...e}))}async function p(e){return d(t(e))}async function m(e){return d(t(e))}function h(e){switch(e.action_type){case i.FunctionCall:return{action_type:e.action_type,args:e.args,deposit:e.deposit,gas:e.gas,method_name:e.method_name};case i.Transfer:return{action_type:e.action_type,deposit:e.deposit};case i.Stake:return{action_type:e.action_type,stake:e.stake,public_key:e.public_key};case i.AddKey:return{action_type:e.action_type,public_key:e.public_key,access_key:e.access_key};case i.DeleteKey:return{action_type:e.action_type,public_key:e.public_key};case i.DeleteAccount:return{action_type:e.action_type,beneficiary_id:e.beneficiary_id};case i.DeployContract:return{action_type:e.action_type,code:e.code};case i.SignedDelegate:return{action_type:e.action_type,delegate_action:e.delegate_action,signature:e.signature};case i.DeployGlobalContract:return{action_type:e.action_type,code:e.code,deploy_mode:e.deploy_mode};case i.UseGlobalContract:return{action_type:e.action_type,account_id:e.account_id,code_hash:e.code_hash};case i.CreateAccount:return{action_type:e.action_type};default:return e}}export{d as a,u as c,s as d,h as i,a as l,f as n,i as o,m as r,c as s,p as t,o as u};
@@ -1 +1 @@
1
- import{v as e,y as t}from"./nearEd25519YaoSigningPreparation-B0d1AG3u.js";function n(e){return m({...t({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,auth:e.auth,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId}),keyKind:`threshold_ed25519`,chainFamily:`near`,storageSource:e.storageSource,sessionOrigin:e.sessionOrigin||h(e.storageSource),...e.retention?{retention:e.retention}:{}})}function r(e){return m({...t({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,auth:e.auth,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId}),keyKind:`threshold_ed25519`,chainFamily:`near`,storageSource:`email_otp`,sessionOrigin:e.sessionOrigin||`per_operation`,...e.retention?{retention:e.retention}:{}})}function i(t){return m({...e({key:t.key,materialActivation:t.materialActivation,keyHandle:t.keyHandle,walletId:t.walletId,auth:t.auth,authorization:t.authorization,chainTarget:t.chainTarget}),keyKind:`threshold_ecdsa_secp256k1`,chainFamily:t.chainTarget.kind,storageSource:t.storageSource,sessionOrigin:t.sessionOrigin||h(t.storageSource),...t.retention?{retention:t.retention}:{}})}function a(t){return m({...e({key:t.key,materialActivation:t.materialActivation,keyHandle:t.keyHandle,walletId:t.walletId,auth:t.auth,authorization:t.authorization,chainTarget:t.chainTarget}),keyKind:`threshold_ecdsa_secp256k1`,chainFamily:t.chainTarget.kind,storageSource:`email_otp`,sessionOrigin:t.sessionOrigin||`per_operation`,...t.retention?{retention:t.retention}:{}})}function o(e){if(d(e))return r(e);if(u(e))return n(e);throw Error(`[SigningSession] unsupported NEAR lane auth`)}function s(e){if(e.chainTarget.kind!==`tempo`)throw Error(`Tempo ECDSA transaction lane requires a Tempo chain target`);return l(e)}function c(e){if(e.chainTarget.kind!==`evm`)throw Error(`EVM ECDSA transaction lane requires an EIP-155 chain target`);return l(e)}function l(e){if(p(e))return a(e);if(f(e))return i(e);throw Error(`[SigningSession] unsupported ECDSA lane auth`)}function u(e){return e.auth.kind===`passkey`}function d(e){return e.auth.kind===`email_otp`}function f(e){return e.auth.kind===`passkey`}function p(e){return e.auth.kind===`email_otp`}function m(e){return{...e,retention:e.retention||`session`}}function h(e){switch(e){case`login`:return`login`;case`registration`:return`registration`;case`add-signer`:return`add_signer`;case`manual-bootstrap`:return`manual_bootstrap`;case`manual-connect`:return`manual_connect`;case`bootstrap`:return`bootstrap`;case`sealed_restore`:return`sealed_restore`}}export{o as n,s as r,c as t};
1
+ import{v as e,y as t}from"./nearEd25519YaoSigningPreparation-Eiq_ikXk.js";function n(e){return m({...t({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,auth:e.auth,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId}),keyKind:`threshold_ed25519`,chainFamily:`near`,storageSource:e.storageSource,sessionOrigin:e.sessionOrigin||h(e.storageSource),...e.retention?{retention:e.retention}:{}})}function r(e){return m({...t({walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,auth:e.auth,walletSessionId:e.walletSessionId,quotaId:e.quotaId,thresholdSessionId:e.thresholdSessionId}),keyKind:`threshold_ed25519`,chainFamily:`near`,storageSource:`email_otp`,sessionOrigin:e.sessionOrigin||`per_operation`,...e.retention?{retention:e.retention}:{}})}function i(t){return m({...e({key:t.key,materialActivation:t.materialActivation,keyHandle:t.keyHandle,walletId:t.walletId,auth:t.auth,authorization:t.authorization,chainTarget:t.chainTarget}),keyKind:`threshold_ecdsa_secp256k1`,chainFamily:t.chainTarget.kind,storageSource:t.storageSource,sessionOrigin:t.sessionOrigin||h(t.storageSource),...t.retention?{retention:t.retention}:{}})}function a(t){return m({...e({key:t.key,materialActivation:t.materialActivation,keyHandle:t.keyHandle,walletId:t.walletId,auth:t.auth,authorization:t.authorization,chainTarget:t.chainTarget}),keyKind:`threshold_ecdsa_secp256k1`,chainFamily:t.chainTarget.kind,storageSource:`email_otp`,sessionOrigin:t.sessionOrigin||`per_operation`,...t.retention?{retention:t.retention}:{}})}function o(e){if(d(e))return r(e);if(u(e))return n(e);throw Error(`[SigningSession] unsupported NEAR lane auth`)}function s(e){if(e.chainTarget.kind!==`tempo`)throw Error(`Tempo ECDSA transaction lane requires a Tempo chain target`);return l(e)}function c(e){if(e.chainTarget.kind!==`evm`)throw Error(`EVM ECDSA transaction lane requires an EIP-155 chain target`);return l(e)}function l(e){if(p(e))return a(e);if(f(e))return i(e);throw Error(`[SigningSession] unsupported ECDSA lane auth`)}function u(e){return e.auth.kind===`passkey`}function d(e){return e.auth.kind===`email_otp`}function f(e){return e.auth.kind===`passkey`}function p(e){return e.auth.kind===`email_otp`}function m(e){return{...e,retention:e.retention||`session`}}function h(e){switch(e){case`login`:return`login`;case`registration`:return`registration`;case`add-signer`:return`add_signer`;case`manual-bootstrap`:return`manual_bootstrap`;case`manual-connect`:return`manual_connect`;case`bootstrap`:return`bootstrap`;case`sealed_restore`:return`sealed_restore`}}export{o as n,s as r,c as t};
@@ -1 +1 @@
1
- import{i as e}from"./base64-CsEj-_bC.js";import"./capabilityKinds-CKQ4Uqnv.js";import{t}from"./errors-BZO3LF6G.js";import"./accountIds-BzZs7YoX.js";import"./signerDomain-vQmlnsbF.js";import{D as n,O as r,c as i,f as a,j as o,n as s,t as c,u as l,y as u}from"./adapters-DdDOQzl4.js";import{i as d,t as f}from"./appearance-ZGVLwA4N.js";import"./jsxRuntime.module-BcZNe_OA.js";import{n as p,r as m}from"./export-viewer-host-CsFeiIhd.js";function h(){return e(crypto.getRandomValues(new Uint8Array(32)).buffer)}function g(e){switch(e.kind){case`near_wallet`:return e.nearAccountId;case`evm_wallet`:return e.walletId;default:{let t=e;throw Error(`Unsupported local key export subject: ${String(t)}`)}}}async function _(e,t,n,r){await m({theme:t.theme||r||`dark`,variant:t.variant||(n.uiMode===`drawer`?`drawer`:`modal`),accountId:g(t.subject),sessionId:t.viewerSessionId,publicKey:t.publicKey,privateKey:t.privateKey,keys:Array.isArray(t.keys)?t.keys:void 0,guidance:t.guidance,appearance:f({getAppearance:e.getAppearance,requestedMode:t.theme}),loading:t.loading===!0,errorMessage:t.errorMessage,onLifecycle:t.onLifecycle,surfaceMeasurementBinding:e.surfaceMeasurementBinding})}function v(e){try{return{rpId:e.security.getRpId()}}catch{return{}}}async function y(e){switch(e.payload.subject.kind){case`near_wallet`:return await n({touchIdPrompt:e.ctx.touchIdPrompt,nearAccountId:e.payload.subject.nearAccountId,credentialIdB64u:e.payload.credentialIdB64u,challengeB64u:e.challengeB64u,includeSecondPrfOutput:!0});case`evm_wallet`:return await r({touchIdPrompt:e.ctx.touchIdPrompt,walletId:e.payload.subject.walletId,credentialIdB64u:e.payload.credentialIdB64u,challengeB64u:e.challengeB64u,includeSecondPrfOutput:!0});default:{let t=e.payload.subject;throw Error(`Unsupported local key export subject: ${String(t)}`)}}}async function b(e,n,r,f){let{confirmationConfig:m,transactionSummary:g,theme:b}=f,x=s(e),S=c({adapters:x,worker:r,request:n,confirmationConfig:m,transactionSummary:g,theme:b,surface:{kind:`mount_new`}});if(n.type===d.SHOW_SECURE_PRIVATE_KEY_UI)try{await _(e,n.payload,m,b),S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!0});return}catch(e){return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:t(e)||`Failed to render export UI`})}if(n.type===d.AUTHORIZE_KEY_EXPORT){p();let r=i()?o():m,s=String(n.payload?.challengeB64u||``).trim()||h();if(r.kind!==`silent`){try{let e=g.operation,t=g.warning;g.title||=e||`Export Private Key`,g.body||=t||`Confirm to authenticate with your passkey.`}catch{}let e=v(x),{confirmed:t,error:r}=await S.promptUser({securityContext:e});if(!t)return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:r})}try{let t=await y({ctx:e,payload:n.payload,challengeB64u:s});return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!0,credential:t})}catch(e){let r=a(e);return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:r?l.cancelled:t(e)||l.collectCredentialsFailed})}}}export{b as handleLocalOnlyFlow};
1
+ import{i as e}from"./base64-DW79QA0h.js";import"./capabilityKinds-N8xo_IEh.js";import{t}from"./errors-DIWY1KR9.js";import"./accountIds-BzZs7YoX.js";import"./signerDomain-DqLCvI-D.js";import{D as n,O as r,c as i,f as a,j as o,n as s,t as c,u as l,y as u}from"./adapters-DYPu0nK9.js";import{i as d,t as f}from"./appearance-DITtYj-z.js";import"./jsxRuntime.module-C8JOKu_4.js";import{n as p,r as m}from"./export-viewer-host-DUMwD6zP.js";function h(){return e(crypto.getRandomValues(new Uint8Array(32)).buffer)}function g(e){switch(e.kind){case`near_wallet`:return e.nearAccountId;case`evm_wallet`:return e.walletId;default:{let t=e;throw Error(`Unsupported local key export subject: ${String(t)}`)}}}async function _(e,t,n,r){await m({theme:t.theme||r||`dark`,variant:t.variant||(n.uiMode===`drawer`?`drawer`:`modal`),accountId:g(t.subject),sessionId:t.viewerSessionId,publicKey:t.publicKey,privateKey:t.privateKey,keys:Array.isArray(t.keys)?t.keys:void 0,guidance:t.guidance,appearance:f({getAppearance:e.getAppearance,requestedMode:t.theme}),loading:t.loading===!0,errorMessage:t.errorMessage,onLifecycle:t.onLifecycle,surfaceMeasurementBinding:e.surfaceMeasurementBinding})}function v(e){try{return{rpId:e.security.getRpId()}}catch{return{}}}async function y(e){switch(e.payload.subject.kind){case`near_wallet`:return await n({touchIdPrompt:e.ctx.touchIdPrompt,nearAccountId:e.payload.subject.nearAccountId,credentialIdB64u:e.payload.credentialIdB64u,challengeB64u:e.challengeB64u,includeSecondPrfOutput:!0});case`evm_wallet`:return await r({touchIdPrompt:e.ctx.touchIdPrompt,walletId:e.payload.subject.walletId,credentialIdB64u:e.payload.credentialIdB64u,challengeB64u:e.challengeB64u,includeSecondPrfOutput:!0});default:{let t=e.payload.subject;throw Error(`Unsupported local key export subject: ${String(t)}`)}}}async function b(e,n,r,f){let{confirmationConfig:m,transactionSummary:g,theme:b}=f,x=s(e),S=c({adapters:x,worker:r,request:n,confirmationConfig:m,transactionSummary:g,theme:b,surface:{kind:`mount_new`}});if(n.type===d.SHOW_SECURE_PRIVATE_KEY_UI)try{await _(e,n.payload,m,b),S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!0});return}catch(e){return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:t(e)||`Failed to render export UI`})}if(n.type===d.AUTHORIZE_KEY_EXPORT){p();let r=i()?o():m,s=String(n.payload?.challengeB64u||``).trim()||h();if(r.kind!==`silent`){try{let e=g.operation,t=g.warning;g.title||=e||`Export Private Key`,g.body||=t||`Confirm to authenticate with your passkey.`}catch{}let e=v(x),{confirmed:t,error:r}=await S.promptUser({securityContext:e});if(!t)return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:r})}try{let t=await y({ctx:e,payload:n.payload,challengeB64u:s});return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!0,credential:t})}catch(e){let r=a(e);return S.confirmAndCloseModal({requestId:n.requestId,intentDigest:u(n),confirmed:!1,error:r?l.cancelled:t(e)||l.collectCredentialsFailed})}}}export{b as handleLocalOnlyFlow};
@@ -1 +1 @@
1
- import{L as e,P as t,V as n}from"./normalize-kUDm5zfS.js";import{C as r,T as i,b as a,k as o,n as s,r as c}from"./chains-CiYQT1K4.js";import"./signingSessionSeal-CDLUmAFY.js";import{t as l}from"./configBuilder-ZiZwFKt4.js";import{r as u}from"./activeWalletSession-DiZcKjB_.js";import{t as d}from"./walletIframeIdentity-DJ0KOBHg.js";function f(e){return r(e)&&Object.values(e).every(i)}function p(e){if(!r(e)||e.palette!==`default`||!r(e.theme))return!1;let t=e.theme;return i(t.id)&&t.id.trim().length>0&&(t.mode===`dark`||t.mode===`light`)&&f(t.colors)&&(t.shape===void 0||f(t.shape))}function m(e){return!r(e)||!c(e.network)?!1:i(e.rpcUrl)&&e.rpcUrl.trim().length>0&&i(e.explorerUrl)&&(s(e.network)||a(e.chainId)&&Number.isSafeInteger(e.chainId)&&e.chainId>0)}function h(e){if(!r(e)||!Array.isArray(e.chains)||!e.chains.every(m))return!1;let t=e.relayer;return r(t)&&i(t.accountId)&&i(t.url)&&t.url.trim().length>0&&r(t.routes)&&i(t.routes.delegateAction)}function g(e){if(!r(e)||e.mode!==`managed`)return!1;let t=e.nearAccountProvisioning;return i(e.publishableKey)&&i(e.projectEnvironmentId)&&(e.paymentMode===`disabled`||e.paymentMode===`quota_then_x402`||e.paymentMode===`always_x402`)&&r(t)&&(t.kind===`implicit_account`||t.kind===`relayer_named_subaccount`)}function _(e){return r(e)&&a(e.ttlMs)&&a(e.remainingUses)}function v(e){if(!r(e)||typeof e.enabled!=`boolean`||!_(e.signingSession))return!1;let t=o(e.signingSession,`signingSession`);return t.kind===`jwt`||t.kind===`cookie`}function y(e){return r(e)?e.mode===`disabled`?e.signingWorkerId===void 0:e.mode===`enabled`&&i(e.signingWorkerId)&&e.signingWorkerId.trim().length>0:!1}function ee(e){return r(e)?typeof e.enabled==`boolean`&&a(e.targetDepth)&&Number.isInteger(e.targetDepth)&&e.targetDepth>=l.targetDepth.min&&e.targetDepth<=l.targetDepth.max&&a(e.lowWatermark)&&Number.isInteger(e.lowWatermark)&&e.lowWatermark>=0&&e.lowWatermark<=e.targetDepth&&a(e.maxRefillInFlight)&&Number.isInteger(e.maxRefillInFlight)&&e.maxRefillInFlight>=l.maxRefillInFlight.min&&e.maxRefillInFlight<=l.maxRefillInFlight.max&&a(e.refillAttemptTimeoutMs)&&Number.isInteger(e.refillAttemptTimeoutMs)&&e.refillAttemptTimeoutMs>=l.refillAttemptTimeoutMs.min&&e.refillAttemptTimeoutMs<=l.refillAttemptTimeoutMs.max:!1}function te(e){if(!r(e)||!_(e.sessionDefaults)||!r(e.emailOtp)||e.emailOtp.authPolicy!==`session`&&e.emailOtp.authPolicy!==`per_operation`||!r(e.routerAb)||!y(e.routerAb.normalSigning)||!r(e.routerAbEcdsaDerivation)||!ee(e.routerAbEcdsaDerivation.presignaturePool)||!r(e.thresholdEcdsa)||!r(e.thresholdEcdsa.provisioningDefaults))return!1;let t=e.thresholdEcdsa.provisioningDefaults;if(!v(t.tempo)||!v(t.evm))return!1;let n=e.sessionSeal;return r(n)?e.sessionPersistenceMode===`none`?n.mode===`none`&&n.protocol===void 0:e.sessionPersistenceMode===`sealed_refresh_v1`&&n.mode===`sealed_refresh_v1`&&r(n.protocol)&&n.protocol.algorithm===`shamir3pass-v2`&&n.protocol.groupId===`rfc2409-group2`:!1}function ne(e){if(!r(e)||!r(e.authenticatorOptions))return!1;let t=e.authenticatorOptions;if(t.userVerification!==`required`&&t.userVerification!==`preferred`&&t.userVerification!==`discouraged`)return!1;let n=t.originPolicy;return r(n)&&(n.single===void 0||typeof n.single==`boolean`)&&(n.all_subdomains===void 0||typeof n.all_subdomains==`boolean`)&&(n.multiple===void 0||Array.isArray(n.multiple)&&n.multiple.every(i))}function b(e){if(!r(e)||e.mode!==`direct`||e.iframe!==void 0)return!1;let t=n(e.rpId);return t.ok&&t.value===e.rpId}function x(e){return r(e)&&h(e.network)&&g(e.registration)&&te(e.signing)&&ne(e.webauthn)&&b(e.wallet)&&r(e.ui)&&p(e.ui.appearance)}function S(e){if(!x(e))throw Error(`Invalid resolved wallet host configuration`);return e}function C(e,t){return{network:e.network,registration:e.registration,signing:e.signing,webauthn:e.webauthn,wallet:e.wallet,ui:{appearance:t}}}function w(e){let t=o(e,`wallet configuration update`);if(t.kind===`configure`&&i(t.assetsBaseUrl)&&t.assetsBaseUrl.length>0&&t.appearance===void 0)return{kind:`configure`,config:S(t.config),assetsBaseUrl:t.assetsBaseUrl};if(t.kind===`appearance`&&p(t.appearance)&&t.config===void 0&&t.assetsBaseUrl===void 0)return{kind:`appearance`,appearance:t.appearance};throw Error(`Invalid wallet configuration update`)}function T(e,t){switch(t.kind){case`configure`:return{kind:`configured`,config:t.config,assetsBaseUrl:t.assetsBaseUrl};case`appearance`:if(e.kind!==`configured`)throw Error(`Wallet configuration is required before appearance updates`);return{kind:`configured`,config:C(e.config,t.appearance),assetsBaseUrl:e.assetsBaseUrl}}}function E(e){if(Array.isArray(e))return e.map(E);if(e&&typeof e==`object`){let t=e,n={};for(let e of Object.keys(t).sort())n[e]=E(t[e]);return n}return e}function D(e){return JSON.stringify(E({network:e?.network,registration:e?.registration,signing:e?.signing,webauthn:e?.webauthn,rpId:e?.wallet.rpId}))}const O=`__SEAMS_WALLET_SDK_BASE__`,k=`SEAMS_WALLET_SDK_BASE_CHANGED`,A=`__SEAMS_WALLET_ASSET_VERSION__`;function re(){if(typeof window>`u`)return;let e=window[O];return typeof e==`string`&&e.length>0?e:void 0}function j(e){if(typeof window>`u`)return;let t=window;t[O]=e,window.dispatchEvent(new CustomEvent(k,{detail:e}))}function M(){if(typeof window>`u`)return;let e=window[A];return typeof e==`string`&&e.length>0?e:void 0}function N(e){if(typeof window>`u`)return;let t=e.trim();t&&(window[A]=t)}function P(e){if(typeof window>`u`)return()=>{};let t=t=>{let n=t.detail;typeof n==`string`&&n.length>0&&e(n)};return window.addEventListener(k,t,{passive:!0}),()=>window.removeEventListener(k,t)}const F={login:{title:`Welcome back`,subtitle:``,passkeyCta:`Unlock with passkey`},register:{title:`Create a wallet`,subtitle:``,passkeyNameLabel:`Wallet name`,passkeyCta:`Create wallet with passkey`},common:{closeLabel:`Close`}};function I(e,t){return typeof e==`string`&&e.trim()||null}function L(e,t){let n=I(e,t);return n===null?null:n}function R(e){try{return d(e)}catch{return null}}function z(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function B(e){return L(e,`authMenuSessionId`)}function V(e){return L(e,`externalAuthRequestId`)}function H(e){return r(e)?e:null}function U(e,t=new Set,n=!1){if(e===void 0)return n;if(e===null||typeof e==`string`||typeof e==`boolean`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;if(t.add(e),Array.isArray(e))return e.every(e=>U(e,t,n));let r=H(e);return r!==null&&Object.values(r).every(e=>U(e,t,n))}function W(e,t){return I(e,`copy`)??t}function G(e,t){let n=H(e);return{title:W(n?.title,t.title),subtitle:W(n?.subtitle,t.subtitle),passkeyCta:W(n?.passkeyCta,t.passkeyCta)}}function K(e){let t=H(e),n=H(t?.register);return{login:G(t?.login,F.login),register:{...G(t?.register,F.register),passkeyNameLabel:W(n?.passkeyNameLabel,F.register.passkeyNameLabel)},common:{closeLabel:W(H(t?.common)?.closeLabel,F.common.closeLabel)}}}function ie(e){return e===`google`?e:null}function q(e){return e===`login`||e===`register`?e:null}function J(e){return e===`implicit_wallet`||e===`sponsored_named_near_account`?e:null}function Y(e){return e===`close_button`||e===`component_unmounted`||e===`connection_closed`?e:null}function X(e,t){if(e===void 0)return!0;let n=H(e);return n!==null&&z(n,t)}function ae(e){let t=H(e);return!t||!z(t,[`login`,`register`,`common`])?!1:X(t.login,[`title`,`subtitle`,`passkeyCta`])&&X(t.register,[`title`,`subtitle`,`passkeyCta`,`passkeyNameLabel`])&&X(t.common,[`closeLabel`])}function oe(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){let e=ie(n);if(!e)return null;t.push(e)}return t}function se(t){let n=H(t);if(!n||!U(n,new Set,!0)||n.kind!==`hosted_auth_menu_open_v1`||!z(n,[`kind`,`authMenuSessionId`,`initialMode`,`loginTarget`,`registrationAccountInput`,`showRegistrationInput`,`showProgress`,`copy`,`enabledExternalProviders`])||!ae(n.copy))return null;let r=B(n.authMenuSessionId),i=q(n.initialMode),a=H(n.loginTarget),o=a?.kind===`wallet`||a?.kind===`wallet_sync`?e(a.walletId):null,s=a?.kind===`discoverable`&&z(a,[`kind`])?{kind:`discoverable`}:a?.kind===`wallet`&&z(a,[`kind`,`walletId`])&&o?.ok?{kind:`wallet`,walletId:o.value}:a?.kind===`wallet_sync`&&z(a,[`kind`,`walletId`])&&o?.ok?{kind:`wallet_sync`,walletId:o.value}:null,c=J(n.registrationAccountInput),l=oe(n.enabledExternalProviders);return!r||!i||!s||!c||typeof n.showRegistrationInput!=`boolean`||typeof n.showProgress!=`boolean`||!l||!U(n.copy,new Set,!0)?null:{kind:`hosted_auth_menu_open_v1`,authMenuSessionId:r,initialMode:i,loginTarget:s,registrationAccountInput:c,showRegistrationInput:n.showRegistrationInput,showProgress:n.showProgress,copy:K(n.copy),enabledExternalProviders:l}}function ce(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_error_v1`||!z(t,[`kind`,`authMenuSessionId`,`mode`,`message`]))return null;let n=B(t.authMenuSessionId),r=q(t.mode),i=I(t.message,`message`);return n&&r&&i?{kind:t.kind,authMenuSessionId:n,mode:r,message:i}:null}function le(e){let t=H(e);if(!t||!U(t))return null;switch(t.kind){case`google_id_token`:{if(!z(t,[`kind`,`idToken`]))return null;let e=I(t.idToken,`idToken`);return e?{kind:t.kind,idToken:e}:null}case`cancelled`:return z(t,[`kind`,`reason`])&&t.reason===`user_cancelled`?{kind:t.kind,reason:t.reason}:null;case`failed`:{if(!z(t,[`kind`,`code`,`message`]))return null;let e=t.code===`provider_unavailable`||t.code===`provider_error`||t.code===`invalid_evidence`?t.code:null,n=I(t.message,`message`);return e&&n?{kind:t.kind,code:e,message:n}:null}default:return null}}function ue(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_external_auth_resolution_v1`||!z(t,[`kind`,`authMenuSessionId`,`externalAuthRequestId`,`requestId`,`evidence`]))return null;let n=B(t.authMenuSessionId),r=V(t.externalAuthRequestId),i=R(t.requestId),a=le(t.evidence);return!n||!r||!i||!a?null:{kind:t.kind,authMenuSessionId:n,externalAuthRequestId:r,requestId:i,evidence:a}}function de(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_cancel_v1`||!z(t,[`kind`,`authMenuSessionId`,`requestId`,`reason`]))return null;let n=B(t.authMenuSessionId),r=R(t.requestId),i=Y(t.reason);return n&&r&&i?{kind:t.kind,authMenuSessionId:n,requestId:r,reason:i}:null}const fe=`15.0.0`,pe=`WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH`,Z=[`home`,`exchangeCode`,`nonce`,`appOrigin`,`walletOrigin`,`relayUrl`];function Q(e,t){if(typeof e!=`string`||e.length===0||e.length>512||e.trim()!==e||/[\s\u0000-\u001f\u007f]/.test(e))throw Error(`${t} must be a compact opaque identifier`);return e}function $(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 me(e){if(!r(e))throw Error(`hosted-wallet redemption payload must be an exact object`);if(Object.keys(e).length!==Z.length)throw Error(`hosted-wallet redemption payload fields are invalid`);for(let t of Z)if(!Object.hasOwn(e,t))throw Error(`hosted-wallet redemption payload fields are invalid`);return{home:u(e.home),exchangeCode:Q(e.exchangeCode,`exchangeCode`),nonce:Q(e.nonce,`nonce`),appOrigin:$(e.appOrigin,`appOrigin`),walletOrigin:$(e.walletOrigin,`walletOrigin`),relayUrl:Q(e.relayUrl,`relayUrl`)}}function he(e){if(!r(e)||!z(e,[`scanRequestId`,`action`])||typeof e.scanRequestId!=`string`||e.scanRequestId.length===0||!r(e.action))return null;let n=e.action;if(n.kind===`cancel`)return z(n,[`kind`])?{scanRequestId:e.scanRequestId,action:{kind:n.kind}}:null;if(n.kind!==`select`||!z(n,[`kind`,`baseWalletAuthMethodId`]))return null;let i=t(n.baseWalletAuthMethodId);return i.ok?{scanRequestId:e.scanRequestId,action:{kind:n.kind,baseWalletAuthMethodId:i.value}}:null}function ge(e){if(!r(e)||!z(e,[`activationId`,`action`])||typeof e.activationId!=`string`||e.activationId.length===0||!r(e.action))return null;let t=e.action;switch(t.kind){case`create_passkey`:case`send_email_otp`:case`resend_email_otp`:return z(t,[`kind`])?{activationId:e.activationId,action:{kind:t.kind}}:null;case`submit_email_otp`:return z(t,[`kind`,`otpCode`])&&typeof t.otpCode==`string`&&/^\d{6}$/.test(t.otpCode)?{activationId:e.activationId,action:{kind:t.kind,otpCode:t.otpCode}}:null;default:return null}}export{w as _,ge as a,ue as c,M as d,re as f,T as g,j as h,he as i,se as l,N as m,fe as n,de as o,P as p,V as r,ce as s,pe as t,me as u,D as v};
1
+ import{M as e,O as t,T as n}from"./domainIds-BzkGsRqO.js";import{C as r,T as i,b as a,k as o,n as s,r as c}from"./chains-C_X_fNuS.js";import"./signingSessionSeal-DX41aXUL.js";import{t as l}from"./configBuilder-BMawmNpz.js";import{r as u}from"./activeWalletSession-WdZkhtBB.js";import{t as d}from"./walletIframeIdentity-Cz82I_Uh.js";function f(e){return r(e)&&Object.values(e).every(i)}function p(e){if(!r(e)||e.palette!==`default`||!r(e.theme))return!1;let t=e.theme;return i(t.id)&&t.id.trim().length>0&&(t.mode===`dark`||t.mode===`light`)&&f(t.colors)&&(t.shape===void 0||f(t.shape))}function m(e){return!r(e)||!c(e.network)?!1:i(e.rpcUrl)&&e.rpcUrl.trim().length>0&&i(e.explorerUrl)&&(s(e.network)||a(e.chainId)&&Number.isSafeInteger(e.chainId)&&e.chainId>0)}function h(e){if(!r(e)||!Array.isArray(e.chains)||!e.chains.every(m))return!1;let t=e.relayer;return r(t)&&i(t.accountId)&&i(t.url)&&t.url.trim().length>0&&r(t.routes)&&i(t.routes.delegateAction)}function g(e){if(!r(e)||e.mode!==`managed`)return!1;let t=e.nearAccountProvisioning;return i(e.publishableKey)&&i(e.projectEnvironmentId)&&(e.paymentMode===`disabled`||e.paymentMode===`quota_then_x402`||e.paymentMode===`always_x402`)&&r(t)&&(t.kind===`implicit_account`||t.kind===`relayer_named_subaccount`)}function _(e){return r(e)&&a(e.ttlMs)&&a(e.remainingUses)}function v(e){if(!r(e)||typeof e.enabled!=`boolean`||!_(e.signingSession))return!1;let t=o(e.signingSession,`signingSession`);return t.kind===`jwt`||t.kind===`cookie`}function y(e){return r(e)?e.mode===`disabled`?e.signingWorkerId===void 0:e.mode===`enabled`&&i(e.signingWorkerId)&&e.signingWorkerId.trim().length>0:!1}function ee(e){return r(e)?typeof e.enabled==`boolean`&&a(e.targetDepth)&&Number.isInteger(e.targetDepth)&&e.targetDepth>=l.targetDepth.min&&e.targetDepth<=l.targetDepth.max&&a(e.lowWatermark)&&Number.isInteger(e.lowWatermark)&&e.lowWatermark>=0&&e.lowWatermark<=e.targetDepth&&a(e.maxRefillInFlight)&&Number.isInteger(e.maxRefillInFlight)&&e.maxRefillInFlight>=l.maxRefillInFlight.min&&e.maxRefillInFlight<=l.maxRefillInFlight.max&&a(e.refillAttemptTimeoutMs)&&Number.isInteger(e.refillAttemptTimeoutMs)&&e.refillAttemptTimeoutMs>=l.refillAttemptTimeoutMs.min&&e.refillAttemptTimeoutMs<=l.refillAttemptTimeoutMs.max:!1}function te(e){if(!r(e)||!_(e.sessionDefaults)||!r(e.emailOtp)||e.emailOtp.authPolicy!==`session`&&e.emailOtp.authPolicy!==`per_operation`||!r(e.routerAb)||!y(e.routerAb.normalSigning)||!r(e.routerAbEcdsaDerivation)||!ee(e.routerAbEcdsaDerivation.presignaturePool)||!r(e.thresholdEcdsa)||!r(e.thresholdEcdsa.provisioningDefaults))return!1;let t=e.thresholdEcdsa.provisioningDefaults;if(!v(t.tempo)||!v(t.evm))return!1;let n=e.sessionSeal;return r(n)?e.sessionPersistenceMode===`none`?n.mode===`none`&&n.protocol===void 0:e.sessionPersistenceMode===`sealed_refresh_v1`&&n.mode===`sealed_refresh_v1`&&r(n.protocol)&&n.protocol.algorithm===`shamir3pass-v2`&&n.protocol.groupId===`rfc2409-group2`:!1}function ne(e){if(!r(e)||!r(e.authenticatorOptions))return!1;let t=e.authenticatorOptions;if(t.userVerification!==`required`&&t.userVerification!==`preferred`&&t.userVerification!==`discouraged`)return!1;let n=t.originPolicy;return r(n)&&(n.single===void 0||typeof n.single==`boolean`)&&(n.all_subdomains===void 0||typeof n.all_subdomains==`boolean`)&&(n.multiple===void 0||Array.isArray(n.multiple)&&n.multiple.every(i))}function b(t){if(!r(t)||t.mode!==`direct`||t.iframe!==void 0)return!1;let n=e(t.rpId);return n.ok&&n.value===t.rpId}function x(e){return r(e)&&h(e.network)&&g(e.registration)&&te(e.signing)&&ne(e.webauthn)&&b(e.wallet)&&r(e.ui)&&p(e.ui.appearance)}function S(e){if(!x(e))throw Error(`Invalid resolved wallet host configuration`);return e}function C(e,t){return{network:e.network,registration:e.registration,signing:e.signing,webauthn:e.webauthn,wallet:e.wallet,ui:{appearance:t}}}function w(e){let t=o(e,`wallet configuration update`);if(t.kind===`configure`&&i(t.assetsBaseUrl)&&t.assetsBaseUrl.length>0&&t.appearance===void 0)return{kind:`configure`,config:S(t.config),assetsBaseUrl:t.assetsBaseUrl};if(t.kind===`appearance`&&p(t.appearance)&&t.config===void 0&&t.assetsBaseUrl===void 0)return{kind:`appearance`,appearance:t.appearance};throw Error(`Invalid wallet configuration update`)}function T(e,t){switch(t.kind){case`configure`:return{kind:`configured`,config:t.config,assetsBaseUrl:t.assetsBaseUrl};case`appearance`:if(e.kind!==`configured`)throw Error(`Wallet configuration is required before appearance updates`);return{kind:`configured`,config:C(e.config,t.appearance),assetsBaseUrl:e.assetsBaseUrl}}}function E(e){if(Array.isArray(e))return e.map(E);if(e&&typeof e==`object`){let t=e,n={};for(let e of Object.keys(t).sort())n[e]=E(t[e]);return n}return e}function D(e){return JSON.stringify(E({network:e?.network,registration:e?.registration,signing:e?.signing,webauthn:e?.webauthn,rpId:e?.wallet.rpId}))}const O=`__SEAMS_WALLET_SDK_BASE__`,k=`SEAMS_WALLET_SDK_BASE_CHANGED`,A=`__SEAMS_WALLET_ASSET_VERSION__`;function re(){if(typeof window>`u`)return;let e=window[O];return typeof e==`string`&&e.length>0?e:void 0}function j(e){if(typeof window>`u`)return;let t=window;t[O]=e,window.dispatchEvent(new CustomEvent(k,{detail:e}))}function M(){if(typeof window>`u`)return;let e=window[A];return typeof e==`string`&&e.length>0?e:void 0}function N(e){if(typeof window>`u`)return;let t=e.trim();t&&(window[A]=t)}function P(e){if(typeof window>`u`)return()=>{};let t=t=>{let n=t.detail;typeof n==`string`&&n.length>0&&e(n)};return window.addEventListener(k,t,{passive:!0}),()=>window.removeEventListener(k,t)}const F={login:{title:`Welcome back`,subtitle:``,passkeyCta:`Unlock with passkey`},register:{title:`Create a wallet`,subtitle:``,passkeyNameLabel:`Wallet name`,passkeyCta:`Create wallet with passkey`},common:{closeLabel:`Close`}};function I(e,t){return typeof e==`string`&&e.trim()||null}function L(e,t){let n=I(e,t);return n===null?null:n}function R(e){try{return d(e)}catch{return null}}function z(e,t){let n=new Set(t);return Object.keys(e).every(e=>n.has(e))}function B(e){return L(e,`authMenuSessionId`)}function V(e){return L(e,`externalAuthRequestId`)}function H(e){return r(e)?e:null}function U(e,t=new Set,n=!1){if(e===void 0)return n;if(e===null||typeof e==`string`||typeof e==`boolean`)return!0;if(typeof e==`number`)return Number.isFinite(e);if(typeof e!=`object`||t.has(e))return!1;if(t.add(e),Array.isArray(e))return e.every(e=>U(e,t,n));let r=H(e);return r!==null&&Object.values(r).every(e=>U(e,t,n))}function W(e,t){return I(e,`copy`)??t}function G(e,t){let n=H(e);return{title:W(n?.title,t.title),subtitle:W(n?.subtitle,t.subtitle),passkeyCta:W(n?.passkeyCta,t.passkeyCta)}}function K(e){let t=H(e),n=H(t?.register);return{login:G(t?.login,F.login),register:{...G(t?.register,F.register),passkeyNameLabel:W(n?.passkeyNameLabel,F.register.passkeyNameLabel)},common:{closeLabel:W(H(t?.common)?.closeLabel,F.common.closeLabel)}}}function ie(e){return e===`google`?e:null}function q(e){return e===`login`||e===`register`?e:null}function J(e){return e===`implicit_wallet`||e===`sponsored_named_near_account`?e:null}function Y(e){return e===`close_button`||e===`component_unmounted`||e===`connection_closed`?e:null}function X(e,t){if(e===void 0)return!0;let n=H(e);return n!==null&&z(n,t)}function ae(e){let t=H(e);return!t||!z(t,[`login`,`register`,`common`])?!1:X(t.login,[`title`,`subtitle`,`passkeyCta`])&&X(t.register,[`title`,`subtitle`,`passkeyCta`,`passkeyNameLabel`])&&X(t.common,[`closeLabel`])}function oe(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){let e=ie(n);if(!e)return null;t.push(e)}return t}function se(e){let n=H(e);if(!n||!U(n,new Set,!0)||n.kind!==`hosted_auth_menu_open_v1`||!z(n,[`kind`,`authMenuSessionId`,`initialMode`,`loginTarget`,`registrationAccountInput`,`showRegistrationInput`,`showProgress`,`copy`,`enabledExternalProviders`])||!ae(n.copy))return null;let r=B(n.authMenuSessionId),i=q(n.initialMode),a=H(n.loginTarget),o=a?.kind===`wallet`||a?.kind===`wallet_sync`?t(a.walletId):null,s=a?.kind===`discoverable`&&z(a,[`kind`])?{kind:`discoverable`}:a?.kind===`wallet`&&z(a,[`kind`,`walletId`])&&o?.ok?{kind:`wallet`,walletId:o.value}:a?.kind===`wallet_sync`&&z(a,[`kind`,`walletId`])&&o?.ok?{kind:`wallet_sync`,walletId:o.value}:null,c=J(n.registrationAccountInput),l=oe(n.enabledExternalProviders);return!r||!i||!s||!c||typeof n.showRegistrationInput!=`boolean`||typeof n.showProgress!=`boolean`||!l||!U(n.copy,new Set,!0)?null:{kind:`hosted_auth_menu_open_v1`,authMenuSessionId:r,initialMode:i,loginTarget:s,registrationAccountInput:c,showRegistrationInput:n.showRegistrationInput,showProgress:n.showProgress,copy:K(n.copy),enabledExternalProviders:l}}function ce(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_error_v1`||!z(t,[`kind`,`authMenuSessionId`,`mode`,`message`]))return null;let n=B(t.authMenuSessionId),r=q(t.mode),i=I(t.message,`message`);return n&&r&&i?{kind:t.kind,authMenuSessionId:n,mode:r,message:i}:null}function le(e){let t=H(e);if(!t||!U(t))return null;switch(t.kind){case`google_id_token`:{if(!z(t,[`kind`,`idToken`]))return null;let e=I(t.idToken,`idToken`);return e?{kind:t.kind,idToken:e}:null}case`cancelled`:return z(t,[`kind`,`reason`])&&t.reason===`user_cancelled`?{kind:t.kind,reason:t.reason}:null;case`failed`:{if(!z(t,[`kind`,`code`,`message`]))return null;let e=t.code===`provider_unavailable`||t.code===`provider_error`||t.code===`invalid_evidence`?t.code:null,n=I(t.message,`message`);return e&&n?{kind:t.kind,code:e,message:n}:null}default:return null}}function ue(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_external_auth_resolution_v1`||!z(t,[`kind`,`authMenuSessionId`,`externalAuthRequestId`,`requestId`,`evidence`]))return null;let n=B(t.authMenuSessionId),r=V(t.externalAuthRequestId),i=R(t.requestId),a=le(t.evidence);return!n||!r||!i||!a?null:{kind:t.kind,authMenuSessionId:n,externalAuthRequestId:r,requestId:i,evidence:a}}function de(e){let t=H(e);if(!t||!U(t)||t.kind!==`hosted_auth_menu_cancel_v1`||!z(t,[`kind`,`authMenuSessionId`,`requestId`,`reason`]))return null;let n=B(t.authMenuSessionId),r=R(t.requestId),i=Y(t.reason);return n&&r&&i?{kind:t.kind,authMenuSessionId:n,requestId:r,reason:i}:null}const fe=`15.0.0`,pe=`WALLET_IFRAME_PROTOCOL_VERSION_MISMATCH`,Z=[`home`,`exchangeCode`,`nonce`,`appOrigin`,`walletOrigin`,`relayUrl`];function Q(e,t){if(typeof e!=`string`||e.length===0||e.length>512||e.trim()!==e||/[\s\u0000-\u001f\u007f]/.test(e))throw Error(`${t} must be a compact opaque identifier`);return e}function $(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 me(e){if(!r(e))throw Error(`hosted-wallet redemption payload must be an exact object`);if(Object.keys(e).length!==Z.length)throw Error(`hosted-wallet redemption payload fields are invalid`);for(let t of Z)if(!Object.hasOwn(e,t))throw Error(`hosted-wallet redemption payload fields are invalid`);return{home:u(e.home),exchangeCode:Q(e.exchangeCode,`exchangeCode`),nonce:Q(e.nonce,`nonce`),appOrigin:$(e.appOrigin,`appOrigin`),walletOrigin:$(e.walletOrigin,`walletOrigin`),relayUrl:Q(e.relayUrl,`relayUrl`)}}function he(e){if(!r(e)||!z(e,[`scanRequestId`,`action`])||typeof e.scanRequestId!=`string`||e.scanRequestId.length===0||!r(e.action))return null;let t=e.action;if(t.kind===`cancel`)return z(t,[`kind`])?{scanRequestId:e.scanRequestId,action:{kind:t.kind}}:null;if(t.kind!==`select`||!z(t,[`kind`,`baseWalletAuthMethodId`]))return null;let i=n(t.baseWalletAuthMethodId);return i.ok?{scanRequestId:e.scanRequestId,action:{kind:t.kind,baseWalletAuthMethodId:i.value}}:null}function ge(e){if(!r(e)||!z(e,[`activationId`,`action`])||typeof e.activationId!=`string`||e.activationId.length===0||!r(e.action))return null;let t=e.action;switch(t.kind){case`create_passkey`:case`send_email_otp`:case`resend_email_otp`:return z(t,[`kind`])?{activationId:e.activationId,action:{kind:t.kind}}:null;case`submit_email_otp`:return z(t,[`kind`,`otpCode`])&&typeof t.otpCode==`string`&&/^\d{6}$/.test(t.otpCode)?{activationId:e.activationId,action:{kind:t.kind,otpCode:t.otpCode}}:null;default:return null}}export{w as _,ge as a,ue as c,M as d,re as f,T as g,j as h,he as i,se as l,N as m,fe as n,de as o,P as p,V as r,ce as s,pe as t,me as u,D as v};
@@ -1 +1 @@
1
- import{t as e}from"./events-DsQJQ0Cl.js";import{c as t,l as n,n as r,o as i,r as a,s as o,t as s}from"./jsxRuntime.module-BcZNe_OA.js";import{i as c,n as l,r as u,t as d}from"./ConfirmationDrawer-DY0_yeUV.js";function f(e){throw Error(`Unexpected private key reveal state: ${String(e)}`)}function p(e){switch(e){case`secp256k1`:return{prefix:`0x`,alphabet:`0123456789abcdef`,slotCount:64};case`ed25519`:return{prefix:`ed25519:`,alphabet:`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`,slotCount:88};default:return f(e)}}function m(e){return e[Math.floor(Math.random()*e.length)]??e[0]??`x`}function h(e,t){return e+Math.random()*(t-e)}function g(e,t,n){let r=[];for(let i=0;i<e.slotCount;i+=1)r.push({glyph:t?`x`:m(e.alphabet),nextChangeAtMs:t?1/0:n+i*37%90});return r}function _(e,t,n,r){let i=p(t);return{kind:`spinning`,entryKey:e,prefix:i.prefix,alphabet:i.alphabet,slots:g(i,n,r)}}function v(e){if(!e)return``;let t=(e.startsWith(`ed25519:`)?8:0)+6,n=Math.max(t,e.length-6);return`${e.slice(0,t)}${`x`.repeat(n-t)}${e.slice(n)}`}function y(e,t,n){let r=t.startsWith(e.prefix)?e.prefix:``,i=Array.from(t.slice(r.length)),a=i.length===e.slots.length?e.slots:i.map((t,r)=>({glyph:m(e.alphabet),nextChangeAtMs:n+r*37%90}));return{kind:`settling`,entryKey:e.entryKey,prefix:r,alphabet:e.alphabet,slots:a,targetSlots:i,lockedSlots:0,startedAtMs:n}}function b(e,t){let n=Math.max(1,e.targetSlots.length-1),r=0;for(let i=0;i<e.targetSlots.length;i+=1){let a=i/n*700;t>=e.startedAtMs+a+300&&(r+=1)}return r}function x(e,t,n){let r=t/Math.max(1,e.targetSlots.length-1)*700,i=e.startedAtMs+r;return Math.max(0,Math.min(1,(n-i)/300))}function S(e,t,n){let r=null;for(let i=0;i<e.length;i+=1){let a=e[i];!a||n<a.nextChangeAtMs||(r===null&&(r=[...e]),r[i]={glyph:m(t),nextChangeAtMs:n+h(90,150)})}return r??e}function C(e,t,n){let r=null;for(let i=0;i<e.slots.length;i+=1){let a=e.slots[i];if(!a)continue;if(i<t){let t=e.targetSlots[i]??a.glyph;if(a.glyph===t&&a.nextChangeAtMs===1/0)continue;r===null&&(r=[...e.slots]),r[i]={glyph:t,nextChangeAtMs:1/0};continue}if(n<a.nextChangeAtMs)continue;let o=x(e,i,n)*90;r===null&&(r=[...e.slots]),r[i]={glyph:m(e.alphabet),nextChangeAtMs:n+h(90+o,150+o)}}return r??e.slots}function w(e,t){if(e.kind===`spinning`){let n=S(e.slots,e.alphabet,t);return n===e.slots?e:{...e,slots:n}}if(e.kind===`settling`){let n=b(e,t);if(n>=e.targetSlots.length)return{kind:`settled`,entryKey:e.entryKey};let r=C(e,n,t);return r===e.slots&&n===e.lockedSlots?e:{...e,slots:r,lockedSlots:n}}return f(e)}function T({model:e,onClose:t}){let n=e.kind===`failed`?[]:e.entries,r=n.length===0||n.some(E);return s(`div`,{class:`seams-export-key-viewer`,"data-seams-drawer-no-drag":!0,onPointerDown:O,onMouseDown:O,onTouchStart:O,children:s(`div`,{class:`content`,children:[s(`div`,{class:`seams-export-header`,children:[s(`h2`,{class:`title`,children:`Exported Keys`}),t&&s(`button`,{type:`button`,class:`seams-export-modal-close`,"aria-label":`Close exported keys`,onClick:t,children:`×`})]}),e.kind===`failed`&&s(`div`,{class:`error-banner`,role:`alert`,children:e.message}),s(`div`,{class:`fields`,children:[r&&s(`div`,{class:`field`,children:[s(`div`,{class:`field-label`,children:`Near Account ID`}),s(`div`,{class:`field-value`,children:s(`span`,{class:`value`,children:e.accountId||`—`})})]}),n.length>0?n.map(D):s(`div`,{class:`field`,children:s(`div`,{class:`field-value`,children:s(`span`,{class:`muted`,children:e.kind===`loading`?`Preparing private key…`:`No keys available`})})})]}),e.guidance&&s(k,{guidance:e.guidance}),s(`div`,{class:`warning`,children:`Warning: your private keys grant full control of your account and funds. Keep it in a secret place.`})]})})}function E(e){return e.scheme===`ed25519`}function D(e){return s(j,{entry:e},e.id)}function O(e){e.stopPropagation()}function k({guidance:e}){return s(`div`,{class:`warning`,children:[s(`strong`,{children:e.title||`Next Steps`}),e.body&&s(`div`,{children:e.body}),e.steps?.length?s(`ol`,{children:e.steps.map(A)}):null]})}function A(e,t){return s(`li`,{children:e},t)}var j=class extends i{constructor(...e){super(...e),this.state={reveal:null,publicCopied:!1,privateCopied:!1},this.root=o(),this.frame=null,this.timers=new Map,this.generation=0,this.copyLifetime=new AbortController,this.active=!1,this.tick=e=>{this.frame=null;let t=this.state.reveal;if(!this.active||!t||t.kind===`settled`)return;let n=w(t,e);n!==t&&this.setState({reveal:n}),this.schedule()},this.copyPublic=()=>{this.copy(`public`)},this.copyPrivate=()=>{this.copy(`private`)},this.clearPublic=()=>{this.timers.delete(`public`),this.active&&this.setState({publicCopied:!1})},this.clearPrivate=()=>{this.timers.delete(`private`),this.active&&this.setState({privateCopied:!1})}}componentDidMount(){this.active=!0,this.reset(this.props.entry)}componentWillReceiveProps(e){M(this.props.entry,e.entry)||this.reset(e.entry)}componentDidUpdate(){this.schedule()}componentWillUnmount(){this.active=!1,this.clearPending(),this.state.reveal=null}clearPending(){this.generation+=1,this.copyLifetime.abort();let e=this.root.current?.ownerDocument.defaultView;this.frame!==null&&e?.cancelAnimationFrame(this.frame),this.frame=null;for(let t of this.timers.values())e?.clearTimeout(t);this.timers.clear()}reset(e){this.clearPending(),this.copyLifetime=new AbortController;let t=this.root.current.ownerDocument.defaultView,n=t.matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=t.performance.now(),i=null;switch(e.material.kind){case`loading`:i=_(e.id,e.scheme,n,r);break;case`ready`:i=n?{kind:`settled`,entryKey:e.id}:y(_(e.id,e.scheme,!1,r),v(e.material.value),r);break;case`unavailable`:break;default:I(e.material)}this.setState({reveal:i,publicCopied:!1,privateCopied:!1})}schedule(){let e=this.state.reveal;if(!this.active||this.frame!==null||!e||e.kind===`settled`)return;let t=this.root.current.ownerDocument.defaultView;t.matchMedia(`(prefers-reduced-motion: reduce)`).matches||(this.frame=t.requestAnimationFrame(this.tick))}async copy(e){let t=this.props.entry;if(!this.active||e===`private`&&(t.material.kind!==`ready`||this.state.reveal?.kind!==`settled`))return;let n=t.publicKey;if(e===`private`){if(t.material.kind!==`ready`)return;n=t.material.value}if(!n)return;let r=this.generation,i=this.root.current,a=i.ownerDocument.defaultView;if(a.focus(),!await c(i,n,this.copyLifetime.signal).catch(N)||!this.active||r!==this.generation)return;let o=this.timers.get(e);o!==void 0&&a.clearTimeout(o),e===`public`?this.setState({publicCopied:!0}):this.setState({privateCopied:!0}),this.timers.set(e,a.setTimeout(e===`public`?this.clearPublic:this.clearPrivate,3e3))}render(){let e=this.props.entry,t=e.material.kind===`ready`&&this.state.reveal?.kind===`settled`;return s(`div`,{class:`key-card`,ref:this.root,children:[s(`div`,{class:`key-title`,children:e.label}),e.address&&s(`div`,{class:`field`,children:[s(`div`,{class:`field-label`,children:`Address`}),s(`div`,{class:`field-value`,children:s(`span`,{class:`value`,children:e.address})})]}),e.scheme===`ed25519`&&s(`button`,{type:`button`,class:`field copy-field${this.state.publicCopied?` copied`:``}`,"aria-label":this.state.publicCopied?`Public key copied`:`Copy public key`,disabled:!e.publicKey,onClick:this.copyPublic,children:[s(`div`,{class:`field-label`,children:`Public Key`}),s(`div`,{class:`field-value`,children:[s(`span`,{class:`value`,children:e.publicKey||`—`}),s(u,{})]})]}),s(`button`,{type:`button`,class:`field copy-field${this.state.privateCopied?` copied`:``}`,"aria-label":this.state.privateCopied?`Private key copied`:`Copy private key`,disabled:!t,onClick:this.copyPrivate,children:[s(`div`,{class:`field-label`,children:`Private Key`}),s(`div`,{class:`field-value`,children:[s(`span`,{class:`value private-key`,children:s(P,{material:e.material,reveal:this.state.reveal})}),s(u,{})]})]})]})}};function M(e,t){return e.id===t.id&&e.scheme===t.scheme&&e.publicKey===t.publicKey&&e.material.kind===t.material.kind&&e.material.value===t.material.value}function N(){return!1}function P({material:e,reveal:t}){return t&&t.kind!==`settled`?s(n,{children:[s(`span`,{class:`private-key-reel`,"aria-hidden":`true`,children:[s(`span`,{class:`reel-prefix`,children:t.prefix}),F(t)]}),s(`span`,{class:`seams-sr-only`,role:`status`,children:`Decrypting private key`})]}):e.kind===`ready`?s(n,{children:[s(`span`,{children:v(e.value)}),s(`span`,{class:`seams-sr-only`,role:`status`,children:`Private key ready`})]}):s(`span`,{class:`muted`,children:`—`})}function F(e){let t=e.kind===`settling`?e.lockedSlots:0,n=[];for(let r=0;r<e.slots.length;r+=1)n.push(s(`span`,{class:`reel-slot${r<t?` settled`:``}`,children:e.slots[r].glyph},r));return n}function I(e){throw Error(`Unexpected export key material: ${String(e)}`)}let L=0;var R=class{constructor(t){this.dispose=()=>{if(this.state.kind===`disposed`)return;let e=this.state.onClosed;this.remove(),e()},this.handleCancel=()=>{this.dispose()},this.styles=a(t.parent.ownerDocument),this.context=t.context,this.state={kind:`mounted`,onClosed:t.onClosed},this.element=t.parent.ownerDocument.createElement(`div`),this.element.id=`seams-export-surface-${++L}`,this.element.className=`seams-wallet-ui seams-export-surface`,this.element.dataset.seamsExportSurface=t.context,this.element.addEventListener(e.TX_CONFIRMER_CANCEL,this.handleCancel),t.parent.appendChild(this.element);try{this.update(t.model)}catch(e){throw this.remove(),e}}update(e){if(this.state.kind!==`disposed`){if(this.element.dataset.theme=e.appearance.theme.mode,this.element.dataset.seamsExportVariant=e.variant,this.styles.setDynamicRule(this.element.id,r(this.element.id,e.appearance)),e.variant===`modal`){t(s(l,{context:this.context,label:`Exported Keys`,onCancel:this.dispose,children:s(T,{model:e.content,onClose:this.dispose})}),this.element);return}t(s(d,{context:this.context,label:`Exported Keys`,dismissOnBackdrop:!1,styles:this.styles,state:{kind:`open`,interaction:`ready`},onCancel:this.dispose,children:s(T,{model:e.content})}),this.element)}}remove(){this.state={kind:`disposed`},this.element.removeEventListener(e.TX_CONFIRMER_CANCEL,this.handleCancel),t(null,this.element),this.styles.deleteDynamicRule(this.element.id),this.element.remove()}};function z(e){return new R(e)}export{z as mountExportPrivateKeySurface};
1
+ import{t as e}from"./events-1dzC4Ocx.js";import{c as t,l as n,n as r,o as i,r as a,s as o,t as s}from"./jsxRuntime.module-C8JOKu_4.js";import{i as c,n as l,r as u,t as d}from"./ConfirmationDrawer-Frj3uEee.js";function f(e){throw Error(`Unexpected private key reveal state: ${String(e)}`)}function p(e){switch(e){case`secp256k1`:return{prefix:`0x`,alphabet:`0123456789abcdef`,slotCount:64};case`ed25519`:return{prefix:`ed25519:`,alphabet:`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`,slotCount:88};default:return f(e)}}function m(e){return e[Math.floor(Math.random()*e.length)]??e[0]??`x`}function h(e,t){return e+Math.random()*(t-e)}function g(e,t,n){let r=[];for(let i=0;i<e.slotCount;i+=1)r.push({glyph:t?`x`:m(e.alphabet),nextChangeAtMs:t?1/0:n+i*37%90});return r}function _(e,t,n,r){let i=p(t);return{kind:`spinning`,entryKey:e,prefix:i.prefix,alphabet:i.alphabet,slots:g(i,n,r)}}function v(e){if(!e)return``;let t=(e.startsWith(`ed25519:`)?8:0)+6,n=Math.max(t,e.length-6);return`${e.slice(0,t)}${`x`.repeat(n-t)}${e.slice(n)}`}function y(e,t,n){let r=t.startsWith(e.prefix)?e.prefix:``,i=Array.from(t.slice(r.length)),a=i.length===e.slots.length?e.slots:i.map((t,r)=>({glyph:m(e.alphabet),nextChangeAtMs:n+r*37%90}));return{kind:`settling`,entryKey:e.entryKey,prefix:r,alphabet:e.alphabet,slots:a,targetSlots:i,lockedSlots:0,startedAtMs:n}}function b(e,t){let n=Math.max(1,e.targetSlots.length-1),r=0;for(let i=0;i<e.targetSlots.length;i+=1){let a=i/n*700;t>=e.startedAtMs+a+300&&(r+=1)}return r}function x(e,t,n){let r=t/Math.max(1,e.targetSlots.length-1)*700,i=e.startedAtMs+r;return Math.max(0,Math.min(1,(n-i)/300))}function S(e,t,n){let r=null;for(let i=0;i<e.length;i+=1){let a=e[i];!a||n<a.nextChangeAtMs||(r===null&&(r=[...e]),r[i]={glyph:m(t),nextChangeAtMs:n+h(90,150)})}return r??e}function C(e,t,n){let r=null;for(let i=0;i<e.slots.length;i+=1){let a=e.slots[i];if(!a)continue;if(i<t){let t=e.targetSlots[i]??a.glyph;if(a.glyph===t&&a.nextChangeAtMs===1/0)continue;r===null&&(r=[...e.slots]),r[i]={glyph:t,nextChangeAtMs:1/0};continue}if(n<a.nextChangeAtMs)continue;let o=x(e,i,n)*90;r===null&&(r=[...e.slots]),r[i]={glyph:m(e.alphabet),nextChangeAtMs:n+h(90+o,150+o)}}return r??e.slots}function w(e,t){if(e.kind===`spinning`){let n=S(e.slots,e.alphabet,t);return n===e.slots?e:{...e,slots:n}}if(e.kind===`settling`){let n=b(e,t);if(n>=e.targetSlots.length)return{kind:`settled`,entryKey:e.entryKey};let r=C(e,n,t);return r===e.slots&&n===e.lockedSlots?e:{...e,slots:r,lockedSlots:n}}return f(e)}function T({model:e,onClose:t}){let n=e.kind===`failed`?[]:e.entries,r=n.length===0||n.some(E);return s(`div`,{class:`seams-export-key-viewer`,"data-seams-drawer-no-drag":!0,onPointerDown:O,onMouseDown:O,onTouchStart:O,children:s(`div`,{class:`content`,children:[s(`div`,{class:`seams-export-header`,children:[s(`h2`,{class:`title`,children:`Exported Keys`}),t&&s(`button`,{type:`button`,class:`seams-export-modal-close`,"aria-label":`Close exported keys`,onClick:t,children:`×`})]}),e.kind===`failed`&&s(`div`,{class:`error-banner`,role:`alert`,children:e.message}),s(`div`,{class:`fields`,children:[r&&s(`div`,{class:`field`,children:[s(`div`,{class:`field-label`,children:`Near Account ID`}),s(`div`,{class:`field-value`,children:s(`span`,{class:`value`,children:e.accountId||`—`})})]}),n.length>0?n.map(D):s(`div`,{class:`field`,children:s(`div`,{class:`field-value`,children:s(`span`,{class:`muted`,children:e.kind===`loading`?`Preparing private key…`:`No keys available`})})})]}),e.guidance&&s(k,{guidance:e.guidance}),s(`div`,{class:`warning`,children:`Warning: your private keys grant full control of your account and funds. Keep it in a secret place.`})]})})}function E(e){return e.scheme===`ed25519`}function D(e){return s(j,{entry:e},e.id)}function O(e){e.stopPropagation()}function k({guidance:e}){return s(`div`,{class:`warning`,children:[s(`strong`,{children:e.title||`Next Steps`}),e.body&&s(`div`,{children:e.body}),e.steps?.length?s(`ol`,{children:e.steps.map(A)}):null]})}function A(e,t){return s(`li`,{children:e},t)}var j=class extends i{constructor(...e){super(...e),this.state={reveal:null,publicCopied:!1,privateCopied:!1},this.root=o(),this.frame=null,this.timers=new Map,this.generation=0,this.copyLifetime=new AbortController,this.active=!1,this.tick=e=>{this.frame=null;let t=this.state.reveal;if(!this.active||!t||t.kind===`settled`)return;let n=w(t,e);n!==t&&this.setState({reveal:n}),this.schedule()},this.copyPublic=()=>{this.copy(`public`)},this.copyPrivate=()=>{this.copy(`private`)},this.clearPublic=()=>{this.timers.delete(`public`),this.active&&this.setState({publicCopied:!1})},this.clearPrivate=()=>{this.timers.delete(`private`),this.active&&this.setState({privateCopied:!1})}}componentDidMount(){this.active=!0,this.reset(this.props.entry)}componentWillReceiveProps(e){M(this.props.entry,e.entry)||this.reset(e.entry)}componentDidUpdate(){this.schedule()}componentWillUnmount(){this.active=!1,this.clearPending(),this.state.reveal=null}clearPending(){this.generation+=1,this.copyLifetime.abort();let e=this.root.current?.ownerDocument.defaultView;this.frame!==null&&e?.cancelAnimationFrame(this.frame),this.frame=null;for(let t of this.timers.values())e?.clearTimeout(t);this.timers.clear()}reset(e){this.clearPending(),this.copyLifetime=new AbortController;let t=this.root.current.ownerDocument.defaultView,n=t.matchMedia(`(prefers-reduced-motion: reduce)`).matches,r=t.performance.now(),i=null;switch(e.material.kind){case`loading`:i=_(e.id,e.scheme,n,r);break;case`ready`:i=n?{kind:`settled`,entryKey:e.id}:y(_(e.id,e.scheme,!1,r),v(e.material.value),r);break;case`unavailable`:break;default:I(e.material)}this.setState({reveal:i,publicCopied:!1,privateCopied:!1})}schedule(){let e=this.state.reveal;if(!this.active||this.frame!==null||!e||e.kind===`settled`)return;let t=this.root.current.ownerDocument.defaultView;t.matchMedia(`(prefers-reduced-motion: reduce)`).matches||(this.frame=t.requestAnimationFrame(this.tick))}async copy(e){let t=this.props.entry;if(!this.active||e===`private`&&(t.material.kind!==`ready`||this.state.reveal?.kind!==`settled`))return;let n=t.publicKey;if(e===`private`){if(t.material.kind!==`ready`)return;n=t.material.value}if(!n)return;let r=this.generation,i=this.root.current,a=i.ownerDocument.defaultView;if(a.focus(),!await c(i,n,this.copyLifetime.signal).catch(N)||!this.active||r!==this.generation)return;let o=this.timers.get(e);o!==void 0&&a.clearTimeout(o),e===`public`?this.setState({publicCopied:!0}):this.setState({privateCopied:!0}),this.timers.set(e,a.setTimeout(e===`public`?this.clearPublic:this.clearPrivate,3e3))}render(){let e=this.props.entry,t=e.material.kind===`ready`&&this.state.reveal?.kind===`settled`;return s(`div`,{class:`key-card`,ref:this.root,children:[s(`div`,{class:`key-title`,children:e.label}),e.address&&s(`div`,{class:`field`,children:[s(`div`,{class:`field-label`,children:`Address`}),s(`div`,{class:`field-value`,children:s(`span`,{class:`value`,children:e.address})})]}),e.scheme===`ed25519`&&s(`button`,{type:`button`,class:`field copy-field${this.state.publicCopied?` copied`:``}`,"aria-label":this.state.publicCopied?`Public key copied`:`Copy public key`,disabled:!e.publicKey,onClick:this.copyPublic,children:[s(`div`,{class:`field-label`,children:`Public Key`}),s(`div`,{class:`field-value`,children:[s(`span`,{class:`value`,children:e.publicKey||`—`}),s(u,{})]})]}),s(`button`,{type:`button`,class:`field copy-field${this.state.privateCopied?` copied`:``}`,"aria-label":this.state.privateCopied?`Private key copied`:`Copy private key`,disabled:!t,onClick:this.copyPrivate,children:[s(`div`,{class:`field-label`,children:`Private Key`}),s(`div`,{class:`field-value`,children:[s(`span`,{class:`value private-key`,children:s(P,{material:e.material,reveal:this.state.reveal})}),s(u,{})]})]})]})}};function M(e,t){return e.id===t.id&&e.scheme===t.scheme&&e.publicKey===t.publicKey&&e.material.kind===t.material.kind&&e.material.value===t.material.value}function N(){return!1}function P({material:e,reveal:t}){return t&&t.kind!==`settled`?s(n,{children:[s(`span`,{class:`private-key-reel`,"aria-hidden":`true`,children:[s(`span`,{class:`reel-prefix`,children:t.prefix}),F(t)]}),s(`span`,{class:`seams-sr-only`,role:`status`,children:`Decrypting private key`})]}):e.kind===`ready`?s(n,{children:[s(`span`,{children:v(e.value)}),s(`span`,{class:`seams-sr-only`,role:`status`,children:`Private key ready`})]}):s(`span`,{class:`muted`,children:`—`})}function F(e){let t=e.kind===`settling`?e.lockedSlots:0,n=[];for(let r=0;r<e.slots.length;r+=1)n.push(s(`span`,{class:`reel-slot${r<t?` settled`:``}`,children:e.slots[r].glyph},r));return n}function I(e){throw Error(`Unexpected export key material: ${String(e)}`)}let L=0;var R=class{constructor(t){this.dispose=()=>{if(this.state.kind===`disposed`)return;let e=this.state.onClosed;this.remove(),e()},this.handleCancel=()=>{this.dispose()},this.styles=a(t.parent.ownerDocument),this.context=t.context,this.state={kind:`mounted`,onClosed:t.onClosed},this.element=t.parent.ownerDocument.createElement(`div`),this.element.id=`seams-export-surface-${++L}`,this.element.className=`seams-wallet-ui seams-export-surface`,this.element.dataset.seamsExportSurface=t.context,this.element.addEventListener(e.TX_CONFIRMER_CANCEL,this.handleCancel),t.parent.appendChild(this.element);try{this.update(t.model)}catch(e){throw this.remove(),e}}update(e){if(this.state.kind!==`disposed`){if(this.element.dataset.theme=e.appearance.theme.mode,this.element.dataset.seamsExportVariant=e.variant,this.styles.setDynamicRule(this.element.id,r(this.element.id,e.appearance)),e.variant===`modal`){t(s(l,{context:this.context,label:`Exported Keys`,onCancel:this.dispose,children:s(T,{model:e.content,onClose:this.dispose})}),this.element);return}t(s(d,{context:this.context,label:`Exported Keys`,dismissOnBackdrop:!1,styles:this.styles,state:{kind:`open`,interaction:`ready`},onCancel:this.dispose,children:s(T,{model:e.content})}),this.element)}}remove(){this.state={kind:`disposed`},this.element.removeEventListener(e.TX_CONFIRMER_CANCEL,this.handleCancel),t(null,this.element),this.styles.deleteDynamicRule(this.element.id),this.element.remove()}};function z(e){return new R(e)}export{z as mountExportPrivateKeySurface};
@@ -1,2 +1,2 @@
1
- import{c as e,l as t,n,o as r,r as i,s as a,t as o}from"./jsxRuntime.module-BcZNe_OA.js";function s(e){throw Error(`Unhandled recovery-code state: ${String(e)}`)}function c(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function l(e){switch(e.kind){case`direct_backup`:return{kind:`recovery_codes`,request:e.request};case`account_menu`:return{kind:`summary`,walletId:e.walletId,loadState:{kind:`loading`},actionError:null};default:return s(e)}}function u(e){return{viewState:l(e),acknowledged:!1,statusMessage:``,copied:!1}}function d(e){switch(e.kind){case`summary`:case`opening`:case`recovery_codes`:return e.kind;default:return s(e)}}function f(e){switch(e.kind){case`ready`:return e.pendingLocalBackup||e.backupOutstanding?`Backup needed`:`Backed up`;case`no_recovery_set`:return`No recovery set`;case`unauthorized`:return`Authorization required`;case`transport_failed`:return`Could not load`;default:return s(e)}}function p(e){if(e.kind!==`loaded`)return!0;switch(e.status.kind){case`ready`:return e.status.pendingLocalBackup;case`unauthorized`:case`transport_failed`:return!0;case`no_recovery_set`:return!1;default:return s(e.status)}}function m(e){if(e.kind===`error`)return e.message;if(e.kind!==`loaded`)return null;switch(e.status.kind){case`unauthorized`:case`transport_failed`:return e.status.message;case`ready`:case`no_recovery_set`:return null;default:return s(e.status)}}function h(e){switch(e.kind){case`loading`:return`Loading`;case`error`:return`Could not load`;case`loaded`:return f(e.status);default:return s(e)}}function g(e){return e.kind===`loaded`&&e.status.kind===`ready`?`${e.status.activeCodeCount} / ${e.status.totalCodeCount}`:`—`}function _(e){return e.trim().replace(/[^A-Za-z0-9_.-]/g,`_`)||`wallet`}function v(e,t){let n=[`Seams wallet recovery codes`,``,`Wallet: ${e}`,``,`Save these codes somewhere private. Each code can be used once.`,``];for(let[e,r]of t.entries())n.push(`${String(e+1).padStart(2,`0`)} ${r}`);return`${n.join(`
1
+ import{c as e,l as t,n,o as r,r as i,s as a,t as o}from"./jsxRuntime.module-C8JOKu_4.js";function s(e){throw Error(`Unhandled recovery-code state: ${String(e)}`)}function c(e,t){return e instanceof Error&&e.message.trim()?e.message:t}function l(e){switch(e.kind){case`direct_backup`:return{kind:`recovery_codes`,request:e.request};case`account_menu`:return{kind:`summary`,walletId:e.walletId,loadState:{kind:`loading`},actionError:null};default:return s(e)}}function u(e){return{viewState:l(e),acknowledged:!1,statusMessage:``,copied:!1}}function d(e){switch(e.kind){case`summary`:case`opening`:case`recovery_codes`:return e.kind;default:return s(e)}}function f(e){switch(e.kind){case`ready`:return e.pendingLocalBackup||e.backupOutstanding?`Backup needed`:`Backed up`;case`no_recovery_set`:return`No recovery set`;case`unauthorized`:return`Authorization required`;case`transport_failed`:return`Could not load`;default:return s(e)}}function p(e){if(e.kind!==`loaded`)return!0;switch(e.status.kind){case`ready`:return e.status.pendingLocalBackup;case`unauthorized`:case`transport_failed`:return!0;case`no_recovery_set`:return!1;default:return s(e.status)}}function m(e){if(e.kind===`error`)return e.message;if(e.kind!==`loaded`)return null;switch(e.status.kind){case`unauthorized`:case`transport_failed`:return e.status.message;case`ready`:case`no_recovery_set`:return null;default:return s(e.status)}}function h(e){switch(e.kind){case`loading`:return`Loading`;case`error`:return`Could not load`;case`loaded`:return f(e.status);default:return s(e)}}function g(e){return e.kind===`loaded`&&e.status.kind===`ready`?`${e.status.activeCodeCount} / ${e.status.totalCodeCount}`:`—`}function _(e){return e.trim().replace(/[^A-Za-z0-9_.-]/g,`_`)||`wallet`}function v(e,t){let n=[`Seams wallet recovery codes`,``,`Wallet: ${e}`,``,`Save these codes somewhere private. Each code can be used once.`,``];for(let[e,r]of t.entries())n.push(`${String(e+1).padStart(2,`0`)} ${r}`);return`${n.join(`
2
2
  `)}\n`}function y(e,t){return t?`Finish backup`:e.continuation===`registration_may_defer`?`Back up later`:`Close`}function b(e,t){return o(`li`,{class:`recovery-code-item`,children:[o(`span`,{class:`recovery-code-index`,children:t+1}),o(`span`,{class:`recovery-code-value`,children:e})]},`${t}-${e}`)}var x=class extends r{constructor(...e){super(...e),this.state=u(this.props.experience),this.root=a(),this.active=!1,this.loadGeneration=0,this.copiedResetTimer=null,this.focusFrame=null,this.retryStatus=()=>{let e=this.props.experience;if(e.kind!==`account_menu`)return;let t=this.state.viewState;if(t.kind!==`summary`)return;let n=++this.loadGeneration;this.setState({viewState:{...t,loadState:{kind:`loading`},actionError:null}}),this.loadSummaryStatus(e,n)},this.openRecoveryCodes=async()=>{let e=this.props.experience,t=this.state.viewState;if(e.kind!==`account_menu`||t.kind!==`summary`)return;let n=this.loadGeneration;this.setState({viewState:{...t,kind:`opening`,actionError:null}});try{let r=await e.loadPendingBackup();if(!this.active||n!==this.loadGeneration)return;if(!r){this.setState({viewState:{...t,actionError:`Recovery codes are no longer available on this device.`}});return}this.setState({viewState:{kind:`recovery_codes`,request:r}})}catch(e){if(!this.active||n!==this.loadGeneration)return;this.setState({viewState:{...t,actionError:c(e,`Could not open recovery codes`)}})}},this.closeSummary=()=>{this.props.onClose({kind:`dismissed`})},this.closeRecoveryCodes=()=>{this.props.onClose({kind:`recovery_codes`,acknowledged:this.state.acknowledged})},this.onAcknowledgementChange=e=>{e.currentTarget instanceof HTMLInputElement&&this.setState({acknowledged:e.currentTarget.checked})},this.download=()=>{let e=this.state.viewState;if(e.kind!==`recovery_codes`)return;let t=this.root.current?.ownerDocument.defaultView;if(!t)return;let{walletId:n,recoveryCodes:r}=e.request;try{let e=t.URL.createObjectURL(new t.Blob([v(n,r)],{type:`text/plain;charset=utf-8`})),i=t.document.createElement(`a`);i.href=e,i.download=`seams-wallet-recovery-codes-${_(n)}.txt`;try{i.click()}finally{t.setTimeout(()=>t.URL.revokeObjectURL(e),0)}this.setState({statusMessage:`Recovery codes downloaded.`})}catch{this.setState({statusMessage:`Unable to download the codes. Copy them or try again.`})}},this.copy=async()=>{let e=this.state.viewState;if(e.kind!==`recovery_codes`||!this.active)return;let{walletId:t,recoveryCodes:n}=e.request,r=this.loadGeneration;try{if(await navigator.clipboard.writeText(v(t,n)),!this.active||r!==this.loadGeneration)return;this.setState({statusMessage:`Recovery codes copied.`}),this.flashCopied()}catch{if(!this.active||r!==this.loadGeneration)return;this.setState({statusMessage:`Unable to copy the codes. Download them or try again.`})}}}componentDidMount(){this.active=!0,this.loadGeneration+=1,this.notifyStage(),this.beginAccountStatus(this.props.experience,this.loadGeneration)}componentWillReceiveProps(e){e.experience!==this.props.experience&&(this.loadGeneration+=1,this.clearFocusFrame(),this.clearCopiedFlash(),this.setState(u(e.experience)),this.beginAccountStatus(e.experience,this.loadGeneration))}componentDidUpdate(e,t){d(t.viewState)!==d(this.state.viewState)&&this.notifyStage(),t.viewState.kind!==`recovery_codes`&&this.state.viewState.kind===`recovery_codes`&&this.focusTitleAfterRender()}componentWillUnmount(){this.active=!1,this.loadGeneration+=1,this.clearFocusFrame(),this.clearCopiedFlash()}render(){let e=this.state.viewState,t=d(e),n=e.kind===`recovery_codes`?this.renderRecoveryCodes(e.request):this.renderSummary(e);return o(`div`,{ref:this.root,class:`seams-recovery-code-backup-viewer`,"data-seams-recovery-entry":this.props.experience.kind,"data-seams-recovery-stage":t,children:n})}notifyStage(){this.props.onStageChange(d(this.state.viewState))}beginAccountStatus(e,t){e.kind===`account_menu`&&this.loadSummaryStatus(e,t)}async loadSummaryStatus(e,t){try{let n=await e.loadStatus();this.updateSummaryLoadState(t,{kind:`loaded`,status:n})}catch(e){this.updateSummaryLoadState(t,{kind:`error`,message:c(e,`Could not load recovery-code status`)})}}updateSummaryLoadState(e,t){if(!this.active||e!==this.loadGeneration)return;let n=this.state.viewState;n.kind!==`summary`&&n.kind!==`opening`||this.setState({viewState:{...n,loadState:t}})}flashCopied(){let e=this.root.current?.ownerDocument.defaultView;e&&(this.copiedResetTimer!==null&&e.clearTimeout(this.copiedResetTimer),this.setState({copied:!0}),this.copiedResetTimer=e.setTimeout(()=>{this.copiedResetTimer=null,this.active&&this.setState({copied:!1})},1800))}clearCopiedFlash(){let e=this.root.current?.ownerDocument.defaultView;e&&this.copiedResetTimer!==null&&e.clearTimeout(this.copiedResetTimer),this.copiedResetTimer=null}clearFocusFrame(){let e=this.root.current?.ownerDocument.defaultView;e&&this.focusFrame!==null&&e.cancelAnimationFrame(this.focusFrame),this.focusFrame=null}focusTitleAfterRender(){let e=this.root.current?.ownerDocument.defaultView;e&&(this.clearFocusFrame(),this.focusFrame=e.requestAnimationFrame(()=>{this.focusFrame=null,this.active&&this.root.current?.querySelector(`.recovery-backup-title`)?.focus()}))}renderSummary(e){let n=m(e.loadState),r=p(e.loadState),i=e.kind===`opening`;return o(t,{children:[o(`button`,{type:`button`,class:`recovery-summary-close`,"aria-label":`Close recovery codes`,onClick:this.closeSummary,children:o(`svg`,{"aria-hidden":`true`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:o(`path`,{d:`M6 6l12 12M18 6 6 18`})})}),o(`h1`,{id:`seams-wallet-recovery-title`,class:`recovery-backup-title`,tabIndex:-1,children:`Wallet recovery codes`}),o(`p`,{id:`seams-wallet-recovery-description`,class:`recovery-backup-description`,children:`View and save the recovery codes retained by this wallet after registration.`}),o(`div`,{class:`recovery-summary-body`,children:[o(`div`,{class:`recovery-summary-row`,children:[o(`span`,{class:`recovery-summary-label`,children:`Wallet`}),o(`span`,{class:`recovery-summary-value`,children:e.walletId})]}),o(`div`,{class:`recovery-summary-row`,children:[o(`span`,{class:`recovery-summary-label`,children:`Status`}),o(`span`,{class:`recovery-summary-value`,children:h(e.loadState)})]}),o(`div`,{class:`recovery-summary-row`,children:[o(`span`,{class:`recovery-summary-label`,children:`Active codes`}),o(`span`,{class:`recovery-summary-value`,children:g(e.loadState)})]}),r&&o(`button`,{type:`button`,class:`recovery-backup-button primary recovery-summary-open`,disabled:i,onClick:this.openRecoveryCodes,children:i?o(t,{children:[`Opening recovery codes`,o(`span`,{class:`recovery-summary-ellipsis`,"aria-hidden":`true`,children:[o(`span`,{children:`.`}),o(`span`,{children:`.`}),o(`span`,{children:`.`})]})]}):`View recovery codes`}),o(`p`,{class:`recovery-summary-live-status`,role:`status`,"aria-live":`polite`,children:e.loadState.kind===`loading`?`Loading recovery-code status…`:``}),n&&o(`p`,{class:`recovery-summary-error`,role:`alert`,children:n}),e.actionError&&o(`p`,{class:`recovery-summary-error`,role:`alert`,children:e.actionError}),e.loadState.kind===`error`&&o(`button`,{type:`button`,class:`recovery-backup-button secondary`,onClick:this.retryStatus,children:`Retry status`})]})]})}renderRecoveryCodes(e){let n=e.continuation===`registration_may_defer`?`Each code can recover your wallet once. Save them now, or back them up later from Recovery Codes.`:`Each code can recover your wallet once. Keep them somewhere private.`;return o(t,{children:[o(`h1`,{id:`seams-wallet-recovery-title`,class:`recovery-backup-title`,tabIndex:-1,children:`Save your recovery codes`}),o(`p`,{id:`seams-wallet-recovery-description`,class:`recovery-backup-description`,children:n}),o(`div`,{class:`recovery-code-sheet`,children:[o(`div`,{class:`recovery-code-sheet-heading`,children:[o(`span`,{children:`Recovery codes`}),o(`span`,{children:[e.recoveryCodes.length,` single-use codes`]})]}),o(`ol`,{class:`recovery-code-list`,children:e.recoveryCodes.map(b)})]}),o(`div`,{class:`recovery-backup-actions`,children:[o(`button`,{type:`button`,class:`recovery-backup-button primary`,onClick:this.download,children:`Download codes`}),o(`button`,{type:`button`,class:`recovery-backup-button secondary recovery-backup-copy${this.state.copied?` copied`:``}`,onClick:this.copy,children:[o(S,{}),`Copy codes`]})]}),o(`div`,{class:`recovery-backup-footer`,children:[o(`label`,{class:`recovery-backup-acknowledgement`,children:[o(`input`,{type:`checkbox`,"data-seams-wallet-recovery-backup-acknowledgement":!0,checked:this.state.acknowledged,onChange:this.onAcknowledgementChange}),o(`span`,{children:[`I saved these recovery codes somewhere safe.`,o(`small`,{children:`They won’t be shown again after you finish.`})]})]}),o(`button`,{type:`button`,class:`recovery-backup-button ${this.state.acknowledged?`primary`:`secondary`}`,"data-seams-wallet-recovery-backup-close":!0,onClick:this.closeRecoveryCodes,children:y(e,this.state.acknowledged)})]}),o(`p`,{class:`recovery-backup-status`,role:`status`,children:this.state.statusMessage})]})}};function S(){return o(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[o(`span`,{class:`copy-icon-check`,children:o(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:o(`path`,{d:`M20 6 9 17l-5-5`})})}),o(`span`,{class:`copy-icon-copy`,children:o(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[o(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`}),o(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let C=0;var w=class{constructor(e){this.state=`mounted`,this.handleCancel=e=>{e.preventDefault(),this.input.onCancel()},this.handleStageChange=e=>{this.state!==`disposed`&&(this.dialog.dataset.seamsRecoveryStage=e)},this.input=e,this.document=e.parent.ownerDocument,this.element=this.document.createElement(`div`),this.element.id=`seams-recovery-surface-${++C}`,this.element.className=`seams-wallet-ui seams-recovery-code-backup-host`,this.element.dataset.seamsRecoverySurface=e.surface,e.appearance&&(this.element.dataset.theme=e.appearance.theme.mode,i(this.document).setDynamicRule(this.element.id,n(this.element.id,e.appearance))),this.dialog=this.document.createElement(`dialog`),this.dialog.className=`seams-host-themed-dialog`,this.dialog.tabIndex=-1,this.dialog.setAttribute(`data-seams-wallet-recovery-backup-dialog`,``),this.dialog.dataset.seamsRecoverySurface=e.surface,this.dialog.setAttribute(`aria-labelledby`,`seams-wallet-recovery-title`),this.dialog.setAttribute(`aria-describedby`,`seams-wallet-recovery-description`),this.dialog.addEventListener(`cancel`,this.handleCancel),this.element.appendChild(this.dialog),e.parent.appendChild(this.element);try{this.render(e.experience),this.dialog.showModal(),this.focusTitle(),e.onShown(this.dialog)}catch(e){throw this.dispose(),e}}update(e){this.state!==`disposed`&&this.render(e)}dispose(){this.state!==`disposed`&&(this.state=`disposed`,this.dialog.removeEventListener(`cancel`,this.handleCancel),e(null,this.dialog),this.dialog.open&&this.dialog.close(),i(this.document).deleteDynamicRule(this.element.id),this.element.remove())}render(t){this.state!==`disposed`&&(this.element.dataset.seamsRecoveryEntry=t.kind,e(o(x,{experience:t,onClose:this.input.onClose,onStageChange:this.handleStageChange}),this.dialog))}focusTitle(){this.dialog.querySelector(`.recovery-backup-title`)?.focus()}};function T(e){return new w(e)}export{T as mountRecoveryCodeBackupSurface};