@seams/wallet 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/README.md +29 -4
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +11 -0
  4. package/dist/esm/SeamsWeb/publicApi/near.js +3 -0
  5. package/dist/esm/SeamsWeb/publicApi/ownerNearOperation.js +175 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/nearCommands.js +4 -0
  7. package/dist/esm/SeamsWeb/walletIframe/client/ownerNearOperation.js +67 -0
  8. package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +27 -17
  9. package/dist/esm/SeamsWeb/walletIframe/client/router.js +63 -2
  10. package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +20 -0
  11. package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +6 -0
  12. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +42 -5
  13. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +1 -1
  14. package/dist/esm/SeamsWeb/walletIframe/shared/ownerNearOperation.js +152 -0
  15. package/dist/esm/core/accountData/near/accountProjection.js +1 -1
  16. package/dist/esm/core/authMethods/plugins.js +8 -2
  17. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +4 -3
  18. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +1 -1
  19. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
  20. package/dist/esm/core/signingEngine/flows/shared/signingConfirmation.js +1 -1
  21. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -1
  22. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +1 -1
  23. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +2 -2
  24. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -2
  25. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +3 -8
  26. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +1 -1
  27. package/dist/esm/core/signingEngine/flows/signNear/signTransactions.js +3 -4
  28. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
  29. package/dist/esm/core/ui/messages.js +5 -0
  30. package/dist/esm/index.js +3 -2
  31. package/dist/esm/react/boundWallet.js +24 -0
  32. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +35 -22
  33. package/dist/esm/react/components/AccountMenuButton/AccountSettingsDialog.js +157 -0
  34. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +13 -1
  35. package/dist/esm/react/components/AccountMenuButton/ExternalWalletSettings.js +46 -0
  36. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +14 -2
  37. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +1 -1
  38. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +154 -5
  39. package/dist/esm/react/components/AccountMenuButton/index.js +7 -3
  40. package/dist/esm/react/context/reactLoginStateBuilders.js +20 -0
  41. package/dist/esm/react/context/useLoginStateRefresher.js +1 -0
  42. package/dist/esm/react/hooks/useAccountInput.js +1 -1
  43. package/dist/esm/react/hooks/useOwnerNearOperation.js +10 -0
  44. package/dist/esm/react/index.js +3 -2
  45. package/dist/esm/react/styles/styles.css +154 -5
  46. package/dist/esm/sdk/{ConfirmationDrawer-AZruQmhP.js → ConfirmationDrawer-BRnd5SEf.js} +1 -1
  47. package/dist/esm/sdk/NonceCoordinator-CNXYrOoy.js +1 -0
  48. package/dist/{public/sdk/SeamsWordmark-DwvPx2UA.js → esm/sdk/SeamsWordmark-CeEi2RlU.js} +1 -1
  49. package/dist/esm/sdk/accountLifecycle-B5a9SCM7.js +1 -0
  50. package/dist/esm/sdk/{adapters-d9yh1bdC.js → adapters-B2k8y0MB.js} +1 -1
  51. package/dist/esm/sdk/appearance-token-vars-DkF3EBbF.js +1 -0
  52. package/dist/esm/sdk/authorization-gVWwKwav.js +1 -0
  53. package/dist/esm/sdk/clientSessionPersistenceState-BxpITYM_.js +1 -0
  54. package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js → collectAuthenticationCredentialForChallengeB64u-BoFVpdRS.js} +1 -1
  55. package/dist/esm/sdk/{commitQueue-CYruPlkm.js → commitQueue-C1wkey4q.js} +1 -1
  56. package/dist/esm/sdk/configBuilder-DpChXfDO.js +1 -0
  57. package/dist/esm/sdk/{configuration-DBEc3bsj.js → configuration-BAad7ngq.js} +1 -1
  58. package/dist/esm/sdk/confirm-ui-Dx6c4-Rk.js +2 -0
  59. package/dist/esm/sdk/{device-linking-DiCNt3iA.js → device-linking-_o3_fgiG.js} +1 -1
  60. package/dist/esm/sdk/{deviceLinkApproval-CfEiotVt.js → deviceLinkApproval-CObsEWBa.js} +1 -1
  61. package/dist/esm/sdk/{display-D0EPmU4w.js → display-CUWg48tD.js} +1 -1
  62. package/dist/{public/sdk/ecdsaCapabilityManifest-DAJEVjlP.js → esm/sdk/ecdsaCapabilityManifest--1Ztngfx.js} +1 -1
  63. package/dist/{public/sdk/ecdsaDerivationClientWasm-AYOJgTJm.js → esm/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js} +1 -1
  64. package/dist/esm/sdk/ecdsaDerivationExport-BUUUGc6o.js +1 -0
  65. package/dist/esm/sdk/{ecdsaWalletRecords-WLyq414E.js → ecdsaWalletRecords-CKaXfsVu.js} +1 -1
  66. package/dist/esm/sdk/ed25519OperationFingerprint-Dev4P6Og.js +1 -0
  67. package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js → esm/sdk/emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js} +1 -1
  68. package/dist/esm/sdk/{enrichDisplayModelWithAbi-O6Mw4i2E.js → enrichDisplayModelWithAbi-JeAcpa7r.js} +1 -1
  69. package/dist/esm/sdk/{evmCryptoWasm-BUPb4hBH.js → evmCryptoWasm-CeH6Qeaa.js} +1 -1
  70. package/dist/esm/sdk/{export-viewer-host-BtrKVXxu.js → export-viewer-host-O0OV1Oou.js} +1 -1
  71. package/dist/esm/sdk/exportKeypairOperation-DkqY9Bpf.js +1 -0
  72. package/dist/esm/sdk/host-BeE2dIU4.js +1 -0
  73. package/dist/{public/sdk/icons-BlMXolHv.js → esm/sdk/icons-pSZJ5Xrm.js} +1 -1
  74. package/dist/esm/sdk/indexedDB-CA4tGqkr.js +1 -0
  75. package/dist/esm/sdk/{intentDigest-HvRsBQ1z.js → intentDigest-gM3r4SVX.js} +1 -1
  76. package/dist/esm/sdk/{lanes-BU-fGqY4.js → lanes-vBKm6yBJ.js} +1 -1
  77. package/dist/esm/sdk/{localOnly-BATWJj78.js → localOnly-U_MucUAe.js} +1 -1
  78. package/dist/{public/sdk/mountExportPrivateKeySurface-CyHU8bVc.js → esm/sdk/mountExportPrivateKeySurface-C2-fnvP6.js} +1 -1
  79. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-C7aglQxf.js → esm/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js} +1 -1
  80. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-CnbgQfZc.js +1 -0
  81. package/dist/esm/sdk/{nonceLaneKeys-BF_UpvIy.js → nonceLaneKeys-DtBpxubF.js} +1 -1
  82. package/dist/esm/sdk/{normalization-Df9fZWJC.js → normalization-DmfGvZ_3.js} +1 -1
  83. package/dist/esm/sdk/ownerNearOperation-DjNDxW3_.js +1 -0
  84. package/dist/{public/sdk/pendingWalletRecoveryCodeBackup-Cjx-X-pP.js → esm/sdk/pendingWalletRecoveryCodeBackup-DXFrQmO5.js} +1 -1
  85. package/dist/esm/sdk/{presignaturePool-BbvqRWYw.js → presignaturePool-Dq4RhzXn.js} +1 -1
  86. package/dist/{public/sdk/recovery-entrypoint-DJbMDC_m.js → esm/sdk/recovery-entrypoint-s9OoKBcl.js} +1 -1
  87. package/dist/esm/sdk/registration-CTtTocyo.js +1 -0
  88. package/dist/esm/sdk/{registration-HSwOHZOo.js → registration-D3p7muCc.js} +1 -1
  89. package/dist/esm/sdk/{registrationAccounts-4r74gX1l.js → registrationAccounts-Bso0ntMs.js} +1 -1
  90. package/dist/{public/sdk/registrationIntent-Do1tD1V7.js → esm/sdk/registrationIntent-C1-Kyx_-.js} +1 -1
  91. package/dist/esm/sdk/{registrationSignerPlan-DK2b3N_p.js → registrationSignerPlan-CeMidFme.js} +1 -1
  92. package/dist/{public/sdk/requireStepUpAuth-COqCGb1i.js → esm/sdk/requireStepUpAuth-iVo6h_U-.js} +1 -1
  93. package/dist/esm/sdk/resealedEnvelopeResult-DXDo-72P.js +1 -0
  94. package/dist/esm/sdk/{routerAbNormalSigning-D-UZmCBS.js → routerAbNormalSigning-DVFFkNhJ.js} +1 -1
  95. package/dist/esm/sdk/runtime-auth-Dsmw_dUA.js +1 -0
  96. package/dist/esm/sdk/runtime-device-link-qmYvGep9.js +1 -0
  97. package/dist/esm/sdk/runtime-ecdsa-tempo-Zh95TuLV.js +1 -0
  98. package/dist/esm/sdk/runtime-email-otp-CnLuW4H1.js +1 -0
  99. package/dist/esm/sdk/runtime-export-m8lvrXtw.js +1 -0
  100. package/dist/esm/sdk/runtime-near-BiXzXXhH.js +1 -0
  101. package/dist/esm/sdk/runtime-preferences-DlKHDIjb.js +1 -0
  102. package/dist/esm/sdk/runtime-recovery-C6lS71Jp.js +1 -0
  103. package/dist/esm/sdk/{runtime-recovery-codes-DeUjQsxZ.js → runtime-recovery-codes-B033ake_.js} +1 -1
  104. package/dist/esm/sdk/runtimeContext-RNS2E5wy.js +7 -0
  105. package/dist/{public/sdk/secp256k1-CE7-q9Sn.js → esm/sdk/secp256k1-DPeaOjM0.js} +1 -1
  106. package/dist/esm/sdk/signEvmFamily-Cksw3RpU.js +1 -0
  107. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js → signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js} +1 -1
  108. package/dist/esm/sdk/{signEvmWithUiConfirm-CGrLtMV6.js → signEvmWithUiConfirm-B14zYdwE.js} +1 -1
  109. package/dist/esm/sdk/signNear-D0rFEYP1.js +1 -0
  110. package/dist/esm/sdk/{signatureUses-kSrUHSSH.js → signatureUses-BLOoPRsb.js} +1 -1
  111. package/dist/{public/sdk/signingFlow-BcetvUeS.js → esm/sdk/signingFlow-Bd1X0e-1.js} +2 -2
  112. package/dist/{public/sdk/signingQueue-dMFOFOP5.js → esm/sdk/signingQueue-DoUBeaCv.js} +1 -1
  113. package/dist/esm/sdk/{thresholdEcdsa-CqR1fFA-.js → thresholdEcdsa-BxfOZmiR.js} +1 -1
  114. package/dist/esm/sdk/{trace--mRP2OQc.js → trace-BnhLKxcu.js} +1 -1
  115. package/dist/esm/sdk/{transaction-activity-DCzHGg3b.js → transaction-activity-BXSxMp1E.js} +1 -1
  116. package/dist/{public/sdk/transactionState-29T9xfvL.js → esm/sdk/transactionState-G_FPe-U8.js} +1 -1
  117. package/dist/esm/sdk/tx-confirm-ui.js +8 -0
  118. package/dist/esm/sdk/{types-f7dyj5N6.js → types-A-w1cYlJ.js} +1 -1
  119. package/dist/esm/sdk/{unlockedEd25519ExportRootCapability-yzxQjIFd.js → unlockedEd25519ExportRootCapability-5F1egCSv.js} +1 -1
  120. package/dist/esm/sdk/voiceid-host.js +1 -1
  121. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  122. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  123. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  124. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  125. package/dist/esm/sdk/{wallet-recovery-BZB2Vu3X.js → wallet-recovery-DXdm68_Q.js} +1 -1
  126. package/dist/{public/sdk/walletAuthMethodRecord-DLBB5fez.js → esm/sdk/walletAuthMethodRecord-BW-XV4fv.js} +1 -1
  127. package/dist/esm/sdk/{walletAuthority-BTGAuOi8.js → walletAuthority-DbGaSw7D.js} +1 -1
  128. package/dist/esm/sdk/{walletCapabilityBindings-D5YYB7nN.js → walletCapabilityBindings-mPx-6_r-.js} +1 -1
  129. package/dist/{public/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js → esm/sdk/walletCustodyEcdsaContinuity-BnyL1Ryu.js} +1 -1
  130. package/dist/esm/sdk/{walletOwnershipGeneration-CgjCtPrV.js → walletOwnershipGeneration-BZc6UKqX.js} +1 -1
  131. package/dist/esm/sdk/walletRecoveryAdminProof-DdwikrW3.js +1 -0
  132. package/dist/esm/sdk/walletRecoveryCommit-DbAoiJp5.js +1 -0
  133. package/dist/{public/sdk/walletSessionAuthorizationStore-B9Vwkshr.js → esm/sdk/walletSessionAuthorizationStore-BivTUoKY.js} +1 -1
  134. package/dist/esm/sdk/{webauthnP256-BsQQPurm.js → webauthnP256-BGHikiNl.js} +1 -1
  135. package/dist/esm/shared-ts/src/auth/externalAuth.js +53 -0
  136. package/dist/esm/shared-ts/src/utils/index.js +2 -2
  137. package/dist/esm/voiceid-host.js +2 -2
  138. package/dist/public/headers.manifest.json +1 -1
  139. package/dist/public/sdk/{ConfirmationDrawer-AZruQmhP.js → ConfirmationDrawer-BRnd5SEf.js} +1 -1
  140. package/dist/public/sdk/NonceCoordinator-CNXYrOoy.js +1 -0
  141. package/dist/{esm/sdk/SeamsWordmark-DwvPx2UA.js → public/sdk/SeamsWordmark-CeEi2RlU.js} +1 -1
  142. package/dist/public/sdk/accountLifecycle-B5a9SCM7.js +1 -0
  143. package/dist/public/sdk/{adapters-d9yh1bdC.js → adapters-B2k8y0MB.js} +1 -1
  144. package/dist/public/sdk/appearance-token-vars-DkF3EBbF.js +1 -0
  145. package/dist/public/sdk/authorization-gVWwKwav.js +1 -0
  146. package/dist/public/sdk/clientSessionPersistenceState-BxpITYM_.js +1 -0
  147. package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js → collectAuthenticationCredentialForChallengeB64u-BoFVpdRS.js} +1 -1
  148. package/dist/public/sdk/{commitQueue-CYruPlkm.js → commitQueue-C1wkey4q.js} +1 -1
  149. package/dist/public/sdk/configBuilder-DpChXfDO.js +1 -0
  150. package/dist/public/sdk/{configuration-DBEc3bsj.js → configuration-BAad7ngq.js} +1 -1
  151. package/dist/public/sdk/confirm-ui-Dx6c4-Rk.js +2 -0
  152. package/dist/public/sdk/{device-linking-DiCNt3iA.js → device-linking-_o3_fgiG.js} +1 -1
  153. package/dist/public/sdk/{deviceLinkApproval-CfEiotVt.js → deviceLinkApproval-CObsEWBa.js} +1 -1
  154. package/dist/public/sdk/{display-D0EPmU4w.js → display-CUWg48tD.js} +1 -1
  155. package/dist/{esm/sdk/ecdsaCapabilityManifest-DAJEVjlP.js → public/sdk/ecdsaCapabilityManifest--1Ztngfx.js} +1 -1
  156. package/dist/{esm/sdk/ecdsaDerivationClientWasm-AYOJgTJm.js → public/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js} +1 -1
  157. package/dist/public/sdk/ecdsaDerivationExport-BUUUGc6o.js +1 -0
  158. package/dist/public/sdk/{ecdsaWalletRecords-WLyq414E.js → ecdsaWalletRecords-CKaXfsVu.js} +1 -1
  159. package/dist/public/sdk/ed25519OperationFingerprint-Dev4P6Og.js +1 -0
  160. package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js → public/sdk/emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js} +1 -1
  161. package/dist/public/sdk/{enrichDisplayModelWithAbi-O6Mw4i2E.js → enrichDisplayModelWithAbi-JeAcpa7r.js} +1 -1
  162. package/dist/public/sdk/{evmCryptoWasm-BUPb4hBH.js → evmCryptoWasm-CeH6Qeaa.js} +1 -1
  163. package/dist/public/sdk/{export-viewer-host-BtrKVXxu.js → export-viewer-host-O0OV1Oou.js} +1 -1
  164. package/dist/public/sdk/exportKeypairOperation-DkqY9Bpf.js +1 -0
  165. package/dist/public/sdk/host-BeE2dIU4.js +1 -0
  166. package/dist/{esm/sdk/icons-BlMXolHv.js → public/sdk/icons-pSZJ5Xrm.js} +1 -1
  167. package/dist/public/sdk/indexedDB-CA4tGqkr.js +1 -0
  168. package/dist/public/sdk/{intentDigest-HvRsBQ1z.js → intentDigest-gM3r4SVX.js} +1 -1
  169. package/dist/public/sdk/{lanes-BU-fGqY4.js → lanes-vBKm6yBJ.js} +1 -1
  170. package/dist/public/sdk/{localOnly-BATWJj78.js → localOnly-U_MucUAe.js} +1 -1
  171. package/dist/{esm/sdk/mountExportPrivateKeySurface-CyHU8bVc.js → public/sdk/mountExportPrivateKeySurface-C2-fnvP6.js} +1 -1
  172. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-C7aglQxf.js → public/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js} +1 -1
  173. package/dist/public/sdk/nearEd25519YaoSigningPreparation-CnbgQfZc.js +1 -0
  174. package/dist/public/sdk/{nonceLaneKeys-BF_UpvIy.js → nonceLaneKeys-DtBpxubF.js} +1 -1
  175. package/dist/public/sdk/{normalization-Df9fZWJC.js → normalization-DmfGvZ_3.js} +1 -1
  176. package/dist/public/sdk/ownerNearOperation-DjNDxW3_.js +1 -0
  177. package/dist/{esm/sdk/pendingWalletRecoveryCodeBackup-Cjx-X-pP.js → public/sdk/pendingWalletRecoveryCodeBackup-DXFrQmO5.js} +1 -1
  178. package/dist/public/sdk/{presignaturePool-BbvqRWYw.js → presignaturePool-Dq4RhzXn.js} +1 -1
  179. package/dist/{esm/sdk/recovery-entrypoint-DJbMDC_m.js → public/sdk/recovery-entrypoint-s9OoKBcl.js} +1 -1
  180. package/dist/public/sdk/registration-CTtTocyo.js +1 -0
  181. package/dist/public/sdk/{registration-HSwOHZOo.js → registration-D3p7muCc.js} +1 -1
  182. package/dist/public/sdk/{registrationAccounts-4r74gX1l.js → registrationAccounts-Bso0ntMs.js} +1 -1
  183. package/dist/{esm/sdk/registrationIntent-Do1tD1V7.js → public/sdk/registrationIntent-C1-Kyx_-.js} +1 -1
  184. package/dist/public/sdk/{registrationSignerPlan-DK2b3N_p.js → registrationSignerPlan-CeMidFme.js} +1 -1
  185. package/dist/{esm/sdk/requireStepUpAuth-COqCGb1i.js → public/sdk/requireStepUpAuth-iVo6h_U-.js} +1 -1
  186. package/dist/public/sdk/resealedEnvelopeResult-DXDo-72P.js +1 -0
  187. package/dist/public/sdk/{routerAbNormalSigning-D-UZmCBS.js → routerAbNormalSigning-DVFFkNhJ.js} +1 -1
  188. package/dist/public/sdk/runtime-auth-Dsmw_dUA.js +1 -0
  189. package/dist/public/sdk/runtime-device-link-qmYvGep9.js +1 -0
  190. package/dist/public/sdk/runtime-ecdsa-tempo-Zh95TuLV.js +1 -0
  191. package/dist/public/sdk/runtime-email-otp-CnLuW4H1.js +1 -0
  192. package/dist/public/sdk/runtime-export-m8lvrXtw.js +1 -0
  193. package/dist/public/sdk/runtime-near-BiXzXXhH.js +1 -0
  194. package/dist/public/sdk/runtime-preferences-DlKHDIjb.js +1 -0
  195. package/dist/public/sdk/runtime-recovery-C6lS71Jp.js +1 -0
  196. package/dist/public/sdk/{runtime-recovery-codes-DeUjQsxZ.js → runtime-recovery-codes-B033ake_.js} +1 -1
  197. package/dist/public/sdk/runtimeContext-RNS2E5wy.js +7 -0
  198. package/dist/{esm/sdk/secp256k1-CE7-q9Sn.js → public/sdk/secp256k1-DPeaOjM0.js} +1 -1
  199. package/dist/public/sdk/signEvmFamily-Cksw3RpU.js +1 -0
  200. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js → signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js} +1 -1
  201. package/dist/public/sdk/{signEvmWithUiConfirm-CGrLtMV6.js → signEvmWithUiConfirm-B14zYdwE.js} +1 -1
  202. package/dist/public/sdk/signNear-D0rFEYP1.js +1 -0
  203. package/dist/public/sdk/{signatureUses-kSrUHSSH.js → signatureUses-BLOoPRsb.js} +1 -1
  204. package/dist/{esm/sdk/signingFlow-BcetvUeS.js → public/sdk/signingFlow-Bd1X0e-1.js} +2 -2
  205. package/dist/{esm/sdk/signingQueue-dMFOFOP5.js → public/sdk/signingQueue-DoUBeaCv.js} +1 -1
  206. package/dist/public/sdk/{thresholdEcdsa-CqR1fFA-.js → thresholdEcdsa-BxfOZmiR.js} +1 -1
  207. package/dist/public/sdk/{trace--mRP2OQc.js → trace-BnhLKxcu.js} +1 -1
  208. package/dist/public/sdk/{transaction-activity-DCzHGg3b.js → transaction-activity-BXSxMp1E.js} +1 -1
  209. package/dist/{esm/sdk/transactionState-29T9xfvL.js → public/sdk/transactionState-G_FPe-U8.js} +1 -1
  210. package/dist/public/sdk/tx-confirm-ui.js +8 -0
  211. package/dist/public/sdk/{types-f7dyj5N6.js → types-A-w1cYlJ.js} +1 -1
  212. package/dist/public/sdk/{unlockedEd25519ExportRootCapability-yzxQjIFd.js → unlockedEd25519ExportRootCapability-5F1egCSv.js} +1 -1
  213. package/dist/public/sdk/voiceid-host.js +1 -1
  214. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  215. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  216. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  217. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  218. package/dist/public/sdk/{wallet-recovery-BZB2Vu3X.js → wallet-recovery-DXdm68_Q.js} +1 -1
  219. package/dist/{esm/sdk/walletAuthMethodRecord-DLBB5fez.js → public/sdk/walletAuthMethodRecord-BW-XV4fv.js} +1 -1
  220. package/dist/public/sdk/{walletAuthority-BTGAuOi8.js → walletAuthority-DbGaSw7D.js} +1 -1
  221. package/dist/public/sdk/{walletCapabilityBindings-D5YYB7nN.js → walletCapabilityBindings-mPx-6_r-.js} +1 -1
  222. package/dist/{esm/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js → public/sdk/walletCustodyEcdsaContinuity-BnyL1Ryu.js} +1 -1
  223. package/dist/public/sdk/{walletOwnershipGeneration-CgjCtPrV.js → walletOwnershipGeneration-BZc6UKqX.js} +1 -1
  224. package/dist/public/sdk/walletRecoveryAdminProof-DdwikrW3.js +1 -0
  225. package/dist/public/sdk/walletRecoveryCommit-DbAoiJp5.js +1 -0
  226. package/dist/{esm/sdk/walletSessionAuthorizationStore-B9Vwkshr.js → public/sdk/walletSessionAuthorizationStore-BivTUoKY.js} +1 -1
  227. package/dist/public/sdk/{webauthnP256-BsQQPurm.js → webauthnP256-BGHikiNl.js} +1 -1
  228. package/dist/public/wallet-assets.manifest.json +262 -262
  229. package/dist/public/wallet-service/index.html +4 -4
  230. package/dist/types/shared-ts/src/auth/externalAuth.d.ts +127 -0
  231. package/dist/types/shared-ts/src/authorization/index.d.ts +1 -1
  232. package/dist/types/shared-ts/src/authorization/walletOwnerOperation.d.ts +10 -0
  233. package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +4 -0
  234. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +2 -0
  235. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
  236. package/dist/types/wallet/src/SeamsWeb/operations/devices/walletHostOwnerAuthority.d.ts +2 -1
  237. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +1 -0
  238. package/dist/types/wallet/src/SeamsWeb/operations/registration/registration.d.ts +1 -0
  239. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationPasskeyMaterial.d.ts +24 -0
  240. package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
  241. package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -0
  242. package/dist/types/wallet/src/SeamsWeb/publicApi/nearCommands.d.ts +2 -0
  243. package/dist/types/wallet/src/SeamsWeb/publicApi/ownerNearOperation.d.ts +58 -0
  244. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +21 -2
  245. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +57 -56
  246. package/dist/types/wallet/src/SeamsWeb/signingSurface/nearOwnerOperation.d.ts +16 -0
  247. package/dist/types/wallet/src/SeamsWeb/signingSurface/nearPasskeyOperationMaterial.d.ts +72 -0
  248. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +3 -0
  249. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/ownerNearOperation.d.ts +25 -0
  250. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +8 -1
  251. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +8 -2
  252. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createNearCommands.d.ts +2 -1
  253. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +9 -2
  254. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/externalAuth.d.ts +31 -0
  255. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/externalOwnerApproval.d.ts +24 -0
  256. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ownerNearOperation.d.ts +12 -0
  257. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
  258. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObserver.d.ts +1 -0
  259. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionState.d.ts +8 -0
  260. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +17 -7
  261. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/ownerNearOperation.d.ts +51 -0
  262. package/dist/types/wallet/src/core/authMethods/plugins.d.ts +2 -0
  263. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +1 -0
  264. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +4 -0
  265. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +4 -0
  266. package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryRotate.d.ts +2 -2
  267. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -0
  268. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +21 -0
  269. package/dist/types/wallet/src/core/types/seams.d.ts +21 -6
  270. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  271. package/dist/types/wallet/src/index.d.ts +3 -0
  272. package/dist/types/wallet/src/react/boundWallet.d.ts +21 -1
  273. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +2 -1
  274. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountSettingsDialog.d.ts +10 -0
  275. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +1 -2
  276. package/dist/types/wallet/src/react/components/AccountMenuButton/ExternalWalletSettings.d.ts +10 -0
  277. package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +1 -2
  278. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +1 -0
  279. package/dist/types/wallet/src/react/components/AccountMenuButton/hooks/useProfileState.d.ts +2 -2
  280. package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +4 -3
  281. package/dist/types/wallet/src/react/context/reactLoginStateBuilders.d.ts +1 -1
  282. package/dist/types/wallet/src/react/hooks/useOwnerNearOperation.d.ts +4 -0
  283. package/dist/types/wallet/src/react/index.d.ts +3 -0
  284. package/dist/types/wallet/src/react/types.d.ts +13 -3
  285. package/dist/types/wallet/src/voiceid-host.d.ts +2 -2
  286. package/package.json +1 -1
  287. package/dist/esm/react/components/AccountMenuButton/AccountMenuModal.js +0 -66
  288. package/dist/esm/sdk/NonceCoordinator-3YhmDTS5.js +0 -1
  289. package/dist/esm/sdk/accountLifecycle-6DHYWf0v.js +0 -1
  290. package/dist/esm/sdk/appearance-token-vars-BJydfWT_.js +0 -1
  291. package/dist/esm/sdk/clientSessionPersistenceState-BCkJAYSz.js +0 -1
  292. package/dist/esm/sdk/configBuilder-CSwJrmcR.js +0 -1
  293. package/dist/esm/sdk/confirm-ui-nU6ymgiv.js +0 -2
  294. package/dist/esm/sdk/ecdsaDerivationExport-DJKOzDbS.js +0 -1
  295. package/dist/esm/sdk/exportKeypairOperation-CGE9ZU1m.js +0 -1
  296. package/dist/esm/sdk/host-DayrOrgm.js +0 -1
  297. package/dist/esm/sdk/indexedDB-C4SDsyOG.js +0 -1
  298. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +0 -1
  299. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +0 -1
  300. package/dist/esm/sdk/registration-CNLUYN-p.js +0 -1
  301. package/dist/esm/sdk/resealedEnvelopeResult-B1p5UkYg.js +0 -1
  302. package/dist/esm/sdk/runtime-auth-BCoj7_-G.js +0 -1
  303. package/dist/esm/sdk/runtime-device-link-DAsq5tGT.js +0 -1
  304. package/dist/esm/sdk/runtime-ecdsa-tempo-CVh_Vwl6.js +0 -1
  305. package/dist/esm/sdk/runtime-email-otp-BxSKK9AG.js +0 -1
  306. package/dist/esm/sdk/runtime-export-BWnQXMzT.js +0 -1
  307. package/dist/esm/sdk/runtime-near-CuzPZrDS.js +0 -1
  308. package/dist/esm/sdk/runtime-preferences-B-nDWlm3.js +0 -1
  309. package/dist/esm/sdk/runtime-recovery-DpOdEJ8N.js +0 -1
  310. package/dist/esm/sdk/runtimeContext-5JcewRo3.js +0 -6
  311. package/dist/esm/sdk/sessionObservationRevision-JOvVF4Hf.js +0 -1
  312. package/dist/esm/sdk/signEvmFamily-BY5jlZEG.js +0 -1
  313. package/dist/esm/sdk/signNear-DMpJFkwF.js +0 -1
  314. package/dist/esm/sdk/signer-worker-BNodGJKY.js +0 -1
  315. package/dist/esm/sdk/walletRecoveryAdminProof-CvSYbyg5.js +0 -1
  316. package/dist/esm/sdk/walletRecoveryCommit-Cc2LAkCS.js +0 -1
  317. package/dist/public/sdk/NonceCoordinator-3YhmDTS5.js +0 -1
  318. package/dist/public/sdk/accountLifecycle-6DHYWf0v.js +0 -1
  319. package/dist/public/sdk/appearance-token-vars-BJydfWT_.js +0 -1
  320. package/dist/public/sdk/clientSessionPersistenceState-BCkJAYSz.js +0 -1
  321. package/dist/public/sdk/configBuilder-CSwJrmcR.js +0 -1
  322. package/dist/public/sdk/confirm-ui-nU6ymgiv.js +0 -2
  323. package/dist/public/sdk/ecdsaDerivationExport-DJKOzDbS.js +0 -1
  324. package/dist/public/sdk/exportKeypairOperation-CGE9ZU1m.js +0 -1
  325. package/dist/public/sdk/host-DayrOrgm.js +0 -1
  326. package/dist/public/sdk/indexedDB-C4SDsyOG.js +0 -1
  327. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +0 -1
  328. package/dist/public/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +0 -1
  329. package/dist/public/sdk/registration-CNLUYN-p.js +0 -1
  330. package/dist/public/sdk/resealedEnvelopeResult-B1p5UkYg.js +0 -1
  331. package/dist/public/sdk/runtime-auth-BCoj7_-G.js +0 -1
  332. package/dist/public/sdk/runtime-device-link-DAsq5tGT.js +0 -1
  333. package/dist/public/sdk/runtime-ecdsa-tempo-CVh_Vwl6.js +0 -1
  334. package/dist/public/sdk/runtime-email-otp-BxSKK9AG.js +0 -1
  335. package/dist/public/sdk/runtime-export-BWnQXMzT.js +0 -1
  336. package/dist/public/sdk/runtime-near-CuzPZrDS.js +0 -1
  337. package/dist/public/sdk/runtime-preferences-B-nDWlm3.js +0 -1
  338. package/dist/public/sdk/runtime-recovery-DpOdEJ8N.js +0 -1
  339. package/dist/public/sdk/runtimeContext-5JcewRo3.js +0 -6
  340. package/dist/public/sdk/sessionObservationRevision-JOvVF4Hf.js +0 -1
  341. package/dist/public/sdk/signEvmFamily-BY5jlZEG.js +0 -1
  342. package/dist/public/sdk/signNear-DMpJFkwF.js +0 -1
  343. package/dist/public/sdk/signer-worker-BNodGJKY.js +0 -1
  344. package/dist/public/sdk/walletRecoveryAdminProof-CvSYbyg5.js +0 -1
  345. package/dist/public/sdk/walletRecoveryCommit-Cc2LAkCS.js +0 -1
  346. package/dist/types/shared-ts/src/authorization/walletCustodyOperation.d.ts +0 -10
  347. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuModal.d.ts +0 -9
  348. /package/dist/esm/sdk/{accountIds-CW2BP-d9.js → accountIds-DGWFzEnw.js} +0 -0
  349. /package/dist/esm/sdk/{actions-DrtSTGus.js → actions-7SvZZut1.js} +0 -0
  350. /package/dist/esm/sdk/{authenticatorOptions-WCDKYRux.js → authenticatorOptions-B4q62CLs.js} +0 -0
  351. /package/dist/esm/sdk/{confirmTypes-BvVtQs-M.js → confirmTypes-DmEPoxys.js} +0 -0
  352. /package/dist/esm/sdk/{csp-stylesheet-DUSqfXvZ.js → csp-stylesheet-5LU6VGKK.js} +0 -0
  353. /package/dist/esm/sdk/{digestEncoding-CqNXPZY9.js → digestEncoding-34kXJoJr.js} +0 -0
  354. /package/dist/esm/sdk/{ecdsaChainTarget-Bm5X4k-V.js → ecdsaChainTarget-BoRVQtjQ.js} +0 -0
  355. /package/dist/esm/sdk/{executeWorkerOperation-C9FOCCR7.js → executeWorkerOperation-CAYSt0NA.js} +0 -0
  356. /package/dist/esm/sdk/{helpers-Dubwo5uK.js → helpers-B7c1zc7h.js} +0 -0
  357. /package/dist/esm/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-DGzeiNSa.js} +0 -0
  358. /package/dist/esm/sdk/{keccak-mS0Mejjx.js → keccak-DGHI1G6t.js} +0 -0
  359. /package/dist/esm/sdk/{keyMaterialEnvelope-Dm2ZEilb.js → keyMaterialEnvelope-Czkks9Ki.js} +0 -0
  360. /package/dist/esm/sdk/{presignatures-BCeq56DG.js → presignatures-CkhuZ0YQ.js} +0 -0
  361. /package/dist/esm/sdk/{profileAccountProjection-C5sNt-s2.js → profileAccountProjection-dvLchPBo.js} +0 -0
  362. /package/dist/esm/sdk/{registrationAuthMethodInput-BR1WVbK3.js → registrationAuthMethodInput-C4o7yFBJ.js} +0 -0
  363. /package/dist/esm/sdk/{sdkSentEvents-DjOlKtdW.js → sdkSentEvents-BFwv3mBw.js} +0 -0
  364. /package/dist/esm/sdk/{signerDomain-BAsLT3XN.js → signerDomain-D-EUTlLK.js} +0 -0
  365. /package/dist/esm/sdk/{signerSlot-D2RZnb27.js → signerSlot-BlijMq8C.js} +0 -0
  366. /package/dist/esm/sdk/{surface-measurement-reporter-DXsvq401.js → surface-measurement-reporter-DJ_dQhBV.js} +0 -0
  367. /package/dist/esm/sdk/{walletCustodyOperation-DimzAbCB.js → walletOwnerOperation-CScYv2K6.js} +0 -0
  368. /package/dist/esm/sdk/{walletSessionAuthorizationStatus-DG7DPcgR.js → walletSessionAuthorizationStatus-GhcGvDCX.js} +0 -0
  369. /package/dist/public/sdk/{accountIds-CW2BP-d9.js → accountIds-DGWFzEnw.js} +0 -0
  370. /package/dist/public/sdk/{actions-DrtSTGus.js → actions-7SvZZut1.js} +0 -0
  371. /package/dist/public/sdk/{authenticatorOptions-WCDKYRux.js → authenticatorOptions-B4q62CLs.js} +0 -0
  372. /package/dist/public/sdk/{confirmTypes-BvVtQs-M.js → confirmTypes-DmEPoxys.js} +0 -0
  373. /package/dist/public/sdk/{csp-stylesheet-DUSqfXvZ.js → csp-stylesheet-5LU6VGKK.js} +0 -0
  374. /package/dist/public/sdk/{digestEncoding-CqNXPZY9.js → digestEncoding-34kXJoJr.js} +0 -0
  375. /package/dist/public/sdk/{ecdsaChainTarget-Bm5X4k-V.js → ecdsaChainTarget-BoRVQtjQ.js} +0 -0
  376. /package/dist/public/sdk/{executeWorkerOperation-C9FOCCR7.js → executeWorkerOperation-CAYSt0NA.js} +0 -0
  377. /package/dist/public/sdk/{helpers-Dubwo5uK.js → helpers-B7c1zc7h.js} +0 -0
  378. /package/dist/public/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-DGzeiNSa.js} +0 -0
  379. /package/dist/public/sdk/{keccak-mS0Mejjx.js → keccak-DGHI1G6t.js} +0 -0
  380. /package/dist/public/sdk/{keyMaterialEnvelope-Dm2ZEilb.js → keyMaterialEnvelope-Czkks9Ki.js} +0 -0
  381. /package/dist/public/sdk/{presignatures-BCeq56DG.js → presignatures-CkhuZ0YQ.js} +0 -0
  382. /package/dist/public/sdk/{profileAccountProjection-C5sNt-s2.js → profileAccountProjection-dvLchPBo.js} +0 -0
  383. /package/dist/public/sdk/{registrationAuthMethodInput-BR1WVbK3.js → registrationAuthMethodInput-C4o7yFBJ.js} +0 -0
  384. /package/dist/public/sdk/{sdkSentEvents-DjOlKtdW.js → sdkSentEvents-BFwv3mBw.js} +0 -0
  385. /package/dist/public/sdk/{signerDomain-BAsLT3XN.js → signerDomain-D-EUTlLK.js} +0 -0
  386. /package/dist/public/sdk/{signerSlot-D2RZnb27.js → signerSlot-BlijMq8C.js} +0 -0
  387. /package/dist/public/sdk/{surface-measurement-reporter-DXsvq401.js → surface-measurement-reporter-DJ_dQhBV.js} +0 -0
  388. /package/dist/public/sdk/{walletCustodyOperation-DimzAbCB.js → walletOwnerOperation-CScYv2K6.js} +0 -0
  389. /package/dist/public/sdk/{walletSessionAuthorizationStatus-DG7DPcgR.js → walletSessionAuthorizationStatus-GhcGvDCX.js} +0 -0
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-dVx5-UGu.js";import{C as t,H as n,V as r,i}from"./domainIds-t1lp25yU.js";import{S as a,b as o,c as s,g as c,h as l,m as u,r as d,s as f,t as p}from"./digests-BIaE0DMd.js";import{c as m,o as h,r as g}from"./participants-BXdREC5k.js";import{i as _,n as v,r as y,t as b}from"./base64-BmKR3UqU.js";import{n as ee,r as te}from"./secureRandomId-8LSc91aN.js";import{s as x}from"./walletDbName-Ca0rCq5r.js";import{i as ne,t as S}from"./activeWalletSession-BJ4B-nJo.js";import{a as re,s as C}from"./chains-B72I4PDH.js";import{o as w}from"./signingSessionSeal-BFOBKj-J.js";import{r as ie}from"./transactionReviewAdmission-Cf_qUZJt.js";import{c as T,d as E,f as D,h as ae,m as O,p as k,s as A}from"./capabilityKinds-DVlGMspk.js";import{r as j}from"./canonicalPrimitives-Jd3i_Ngz.js";import{t as M}from"./errors-BJBDbwHk.js";import{a as N,c as P,i as oe,n as F,o as se,r as ce,s as le,t as ue}from"./nearRpcResults-CeHdqaS4.js";import{n as I,r as de}from"./signer-worker-BNodGJKY.js";import{n as fe,t as pe}from"./signerDomain-BAsLT3XN.js";import{a as me,c as he}from"./ecdsaChainTarget-Bm5X4k-V.js";import{d as ge,i as _e,t as L,u as R}from"./accountIds-CW2BP-d9.js";import{ot as ve,ut as ye}from"./digestEncoding-CqNXPZY9.js";import{t as z}from"./signerSlot-D2RZnb27.js";import{a as be,m as xe,o as B}from"./sdkSentEvents-DjOlKtdW.js";import{t as Se}from"./jsonRpc-BVDv1wfm.js";import{T as Ce,i as we}from"./emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js";import{a as Te,c as V,i as H,n as Ee,o as De,r as U,s as Oe,t as ke}from"./types-f7dyj5N6.js";import{p as Ae}from"./nonceLaneKeys-BF_UpvIy.js";import{t as je}from"./walletSessionAuthorizationStatus-DG7DPcgR.js";import{t as Me}from"./executeWorkerOperation-C9FOCCR7.js";import{a as Ne,n as Pe,o as Fe,t as W}from"./actions-DrtSTGus.js";import{a as Ie,i as Le,l as Re,u as ze}from"./helpers-Dubwo5uK.js";import{i as Be,n as Ve}from"./profileAccountProjection-C5sNt-s2.js";import{s as He,t as Ue,y as We}from"./nearEd25519YaoMaterialActivation-BfXmy3Jr.js";import{D as Ge,T as Ke,j as qe}from"./nearEd25519YaoSigningPreparation-DHNk0F8e.js";import{n as Je}from"./lanes-BU-fGqY4.js";import{n as Ye,r as Xe,t as Ze}from"./operationFingerprint-Bas59T7L.js";import{a as G,c as Qe,o as $e,s as et,t as tt}from"./trace--mRP2OQc.js";import{i as nt,n as rt,r as it}from"./intentDigest-HvRsBQ1z.js";import{t as at}from"./challengeDelivery-Dj9HrjW9.js";import{n as ot}from"./NonceCoordinator-3YhmDTS5.js";import{a as st,i as ct,o as lt,r as ut,t as dt}from"./authorizationAdmission-28jo_IVJ.js";import{i as ft}from"./walletSessionFailure-CxsVtroW.js";import{a as pt,d as mt,i as ht,l as gt,n as _t,p as vt,r as yt,s as bt,u as xt}from"./routerAbNormalSigning-D-UZmCBS.js";import{i as St,n as Ct}from"./clientSessionPersistenceState-BCkJAYSz.js";import{a as wt,i as Tt,r as Et,t as Dt}from"./types-C4OErbBf.js";import{C as Ot,b as kt,c as At,g as jt,h as Mt,l as Nt,n as Pt,o as Ft,s as It,t as Lt,u as Rt,x as zt}from"./requireStepUpAuth-COqCGb1i.js";import{a as Bt,c as Vt,i as Ht,n as Ut,r as Wt,s as Gt,t as Kt}from"./transactionState-29T9xfvL.js";const qt=Symbol(`ClientSecretSource`),Jt=Symbol(`EmailOtpWorkerSessionHandle`);function Yt(e,t){let n=String(e||``).trim();if(!n)throw Error(`[platform] ${t} is required`);return n}function Xt(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`[platform] ${t} must be an object`);return e}function Zt(e){return Qt({prfFirstB64u:e.prf.prfFirstB64u,rpId:e.rpId,credentialIdB64u:e.credentialIdB64u})}function Qt(e){return{kind:`webauthn_prf_first`,prfFirstB64u:Yt(e.prfFirstB64u,`prfFirstB64u`),rpId:e.rpId,credentialIdB64u:Yt(e.credentialIdB64u,`credentialIdB64u`),[qt]:`webauthn_prf_first`}}function $t(e){let t=Yt(e.sessionId,`sessionId`);switch(e.action){case`threshold_ecdsa_bootstrap`:return{kind:`email_otp_worker_session_handle_v1`,sessionId:t,walletId:e.walletId,keyHandle:Yt(e.keyHandle,`keyHandle`),authSubjectId:e.authSubjectId,action:`threshold_ecdsa_bootstrap`,operation:e.operation,chainTarget:e.chainTarget,[Jt]:`email_otp_worker_session_handle`};case`threshold_ed25519_session`:return{kind:`email_otp_worker_session_handle_v1`,sessionId:t,walletId:e.walletId,rpId:e.rpId,authSubjectId:e.authSubjectId,action:`threshold_ed25519_session`,operation:e.operation,[Jt]:`email_otp_worker_session_handle`};default:{let t=e;throw Error(`[platform] unsupported email OTP worker-issued handle action: ${String(t)}`)}}}function en(e){let t=Xt(e,`email OTP worker-issued session handle`),n=Yt(String(t.kind||``),`email OTP worker-issued handle kind`);if(n!==`email_otp_worker_session_handle_v1`)throw Error(`[platform] unsupported email OTP worker-issued handle kind: ${n}`);let r=Yt(String(t.action||``),`email OTP worker-issued handle action`),i=Yt(String(t.operation||``),`email OTP worker-issued handle operation`);if(i!==`registration`&&i!==`wallet_unlock`&&i!==`sign`&&i!==`export`)throw Error(`[platform] unsupported email OTP worker-issued handle operation: ${i}`);let a=i,o={sessionId:Yt(String(t.sessionId||``),`email OTP worker-issued handle sessionId`),walletId:he(t.walletId),authSubjectId:we(t.authSubjectId),operation:a};if(r===`threshold_ecdsa_bootstrap`){if(`rpId`in t)throw Error(`[platform] email OTP ECDSA worker-issued handles cannot include rpId`);if(a===`registration`)throw Error(`[platform] registration Email OTP ECDSA worker-issued handles are retired`);let e=me(Xt(t.chainTarget,`email OTP worker-issued handle chainTarget`));if(`evmFamilySigningKeySlotId`in t)throw Error(`[platform] runtime Email OTP ECDSA handles cannot include evmFamilySigningKeySlotId`);return $t({...o,action:r,operation:a,keyHandle:Yt(String(t.keyHandle||``),`email OTP worker-issued handle keyHandle`),chainTarget:e})}if(r===`threshold_ed25519_session`){if(`chainTarget`in t)throw Error(`[platform] email OTP Ed25519 worker-issued handles cannot include chainTarget`);if(`evmFamilySigningKeySlotId`in t||`keyHandle`in t)throw Error(`[platform] email OTP Ed25519 worker-issued handles cannot include ECDSA key identity`);return $t({...o,action:r,rpId:Ce(t.rpId)})}throw Error(`[platform] unsupported email OTP worker-issued handle action: ${r}`)}function tn(e){return e.action===`threshold_ecdsa_bootstrap`&&e.operation===`export`}function nn(e){let t=en(e);if(!tn(t))throw Error(`[platform] Email OTP ECDSA export requires an export worker handle`);return t}const rn=15e3;function an(e){e.abort(`timeout`)}function on(e,t){let n=String(e??``).trim();if(!n)throw Error(`[threshold-ed25519] ${t} is required`);return n}function sn(e){let t=on(Re(e.credential),`prfFirstB64u`);return{ok:!0,operation:`get_passkey`,requirePrfFirst:!0,credential:e.credential,credentialIdB64u:on(e.credential.rawId||e.credential.id,`credentialIdB64u`),rawIdB64u:String(e.credential.rawId||``).trim(),rpId:Ce(e.rpId),prf:{kind:`required`,prfFirstB64u:t}}}function cn(e){return{kind:`webauthn_prf_first_credential`,credential:e.credential,secretSource:Zt(sn(e))}}function ln(e){return e.policySecretSource.secretSource.prfFirstB64u}function un(e){if(typeof e!=`string`)return null;let t=Date.parse(e);return Number.isSafeInteger(t)&&t>Date.now()?t:null}function dn(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0?e:null}async function fn(e){let i=n(r(e.relayerUrl));if(!i)return{ok:!1,code:`invalid_args`,message:`Missing relayerUrl for Wallet Session mint`};if(typeof fetch!=`function`)return{ok:!1,code:`unsupported`,message:`fetch is not available for Wallet Session mint`};let a=ze(e.auth.policySecretSource.credential),o=new AbortController,s=null;try{let n=`${i}${w}`,r=e.existingOperationCredential,l=String(e.publishableKey||``).trim()||void 0,u=r?.token||l,d=!r&&l&&String(e.projectEnvironmentId||``).trim()||void 0;s=setTimeout(an,rn,o);let f=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`,...u?{Authorization:`Bearer ${u}`}:{}},credentials:`omit`,signal:o.signal,body:JSON.stringify({sessionKind:e.sessionKind,relayerKeyId:e.relayerKeyId,sessionPolicy:e.sessionPolicy,...d?{projectEnvironmentId:d}:{},walletSessionTarget:{kind:`new_wallet_session`},...a?{webauthn_authentication:a}:{}})}),p;try{let e=await f.json();p=c(e)?e:{}}catch(e){if(o.signal.aborted)throw e;p={}}if(!f.ok)return He(p)||{ok:!1,code:typeof p.code==`string`?p.code:`http_error`,message:typeof p.message==`string`?p.message:`HTTP ${f.status}`};let m=He(p);if(m)return m;if(p.ok!==!0)return{ok:!1,code:typeof p.code==`string`?p.code:`invalid_response`,message:typeof p.message==`string`?p.message:`Wallet Session mint returned an unsuccessful response`};let h=t(p.thresholdSessionId);if(!h.ok)return{ok:!1,code:`invalid_response`,message:`Wallet Session mint returned an invalid thresholdSessionId`};let g=ae(p.walletSessionId),_=O(p.authorizationId),v=E(p.quotaId);if(!g.ok||!_.ok||!v.ok)return{ok:!1,code:`invalid_response`,message:`Wallet Session mint returned invalid authorization identity`};let y=un(p.expiresAt),b=dn(p.remainingUses),ee=x(p.runtimePolicyScope);if(!y||!b||!ee)return{ok:!1,code:`invalid_response`,message:`Wallet Session mint returned invalid lifecycle or policy data`};let te={ok:!0,thresholdSessionId:h.value,walletSessionId:g.value,authorizationId:_.value,quotaId:v.value,expiresAtMs:y,remainingUses:b,runtimePolicyScope:ee};if(p.sessionKind===`issued_exact_wallet_session`){let e;try{e=ne(p.operationCredential)}catch(e){return{ok:!1,code:`invalid_response`,message:M(e)||`Wallet Session mint returned an invalid operation credential`}}return e.walletSessionId===g.value?{...te,sessionKind:p.sessionKind,operationCredential:e}:{ok:!1,code:`invalid_response`,message:`Wallet Session mint credential does not identify its session`}}return p.sessionKind!==`already_committed_exact_wallet_session`||p.operationCredential!==void 0?{ok:!1,code:`invalid_response`,message:`Wallet Session mint returned an invalid session branch`}:r?r.walletSessionId===g.value?{...te,sessionKind:p.sessionKind}:{ok:!1,code:`invalid_response`,message:`Reused Wallet Session mint returned another lifecycle identity`}:{ok:!1,code:`invalid_response`,message:`Reused Wallet Session mint requires the credential the caller already holds`}}catch(e){let t=M(e)||`Failed to mint threshold session`,n=o.signal.aborted;return{ok:!1,code:n?`timeout`:`network_error`,message:n?`Wallet Session mint timed out after ${rn}ms`:t}}finally{s!==null&&clearTimeout(s)}}function pn(e){switch(e.kind){case`passkey`:return{kind:`passkey`,authority:e.authority,webauthn_authentication:ze(e.credential)};case`email_otp`:return{kind:`email_otp`,authority_ref:e.authorityRef,provider_subject_id:on(e.providerSubjectId,`providerSubjectId`),challenge_id:on(e.challengeId,`challengeId`),otp_code:on(e.otpCode,`otpCode`)};default:throw Error(`[threshold-ed25519] unsupported operation step-up proof`)}}function mn(e,t){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`[threshold-ed25519] ${t} must be an object`);return e}function hn(e,t,n){let r=Object.keys(e).sort(),i=[...t].sort();if(r.length!==i.length)throw Error(`[threshold-ed25519] ${n} contains unexpected fields`);for(let e=0;e<r.length;e+=1)if(r[e]!==i[e])throw Error(`[threshold-ed25519] ${n} contains unexpected fields`)}function gn(e,t){if(typeof e!=`string`||e.length===0||e.trim()!==e)throw Error(`[threshold-ed25519] ${t} must be a non-empty normalized string`);return e}function _n(e){switch(e.proof.kind){case`passkey`:if(e.materialRecovery.kind!==`not_requested`)throw Error(`[threshold-ed25519] passkey operation step-up cannot request material recovery`);return{kind:`not_requested`};case`email_otp`:switch(e.materialRecovery.kind){case`not_requested`:return{kind:`not_requested`};case`email_otp_factor_release_v1`:return{kind:`email_otp_factor_release_v1`,workerEphemeralPublicKey65B64u:gn(e.materialRecovery.workerEphemeralPublicKey65B64u,`workerEphemeralPublicKey65B64u`)};default:throw e.materialRecovery,Error(`[threshold-ed25519] unsupported material recovery request`)}default:throw e.proof,Error(`[threshold-ed25519] unsupported operation step-up proof`)}}function vn(e){let t=mn(e.value,`operation step-up material recovery`);switch(t.kind){case`not_requested`:if(hn(t,[`kind`],`operation step-up material recovery`),e.requested.kind!==`not_requested`)throw Error(`[threshold-ed25519] operation step-up material recovery response does not match the request`);return{kind:`not_requested`};case`email_otp_factor_release_v1`:if(hn(t,[`kind`,`challengeId`,`enrollmentId`,`enrollmentSealKeyVersion`,`serverEphemeralPublicKey65B64u`,`nonce12B64u`,`ciphertextB64u`],`operation step-up material recovery`),e.requested.kind!==`email_otp_factor_release_v1`)throw Error(`[threshold-ed25519] operation step-up material recovery response does not match the request`);return{kind:`email_otp_factor_release_v1`,challengeId:gn(t.challengeId,`materialRecovery.challengeId`),enrollmentId:gn(t.enrollmentId,`materialRecovery.enrollmentId`),enrollmentSealKeyVersion:gn(t.enrollmentSealKeyVersion,`materialRecovery.enrollmentSealKeyVersion`),serverEphemeralPublicKey65B64u:gn(t.serverEphemeralPublicKey65B64u,`materialRecovery.serverEphemeralPublicKey65B64u`),nonce12B64u:gn(t.nonce12B64u,`materialRecovery.nonce12B64u`),ciphertextB64u:gn(t.ciphertextB64u,`materialRecovery.ciphertextB64u`)};default:throw Error(`[threshold-ed25519] operation step-up material recovery kind is invalid`)}}function yn(e){let t=mn(e.body,`operation step-up response`);if(hn(t,[`ok`,`kind`,`authorization`,`expiresAtMs`,`materialRecovery`],`operation step-up response`),t.ok!==!0||t.kind!==`verified_step_up`)throw Error(`[threshold-ed25519] operation step-up response kind is invalid`);let n=mn(t.authorization,`operation step-up authorization`);if(hn(n,[`kind`,`evidence_set_digest`],`operation step-up authorization`),n.kind!==`operation_step_up`)throw Error(`[threshold-ed25519] operation step-up authorization marker is invalid`);let r=gn(n.evidence_set_digest,`operation step-up authorization.evidence_set_digest`);if(j(r),typeof t.expiresAtMs!=`number`||!Number.isSafeInteger(t.expiresAtMs)||t.expiresAtMs<=Date.now())throw Error(`[threshold-ed25519] operation step-up expiry is invalid`);return{kind:`verified_step_up`,authorization:{kind:`operation_step_up`,evidence_set_digest:r},expiresAtMs:t.expiresAtMs,materialRecovery:vn({value:t.materialRecovery,requested:e.requestedMaterialRecovery})}}async function bn(e){let t=n(r(e.relayerUrl));if(!t)throw Error(`[threshold-ed25519] operation step-up relayerUrl is required`);let i=_n(e),a=e.credential.kind===`wallet_session_opaque`?{token:e.credential.walletSessionToken,home:e.credential.home}:null,o=h({...a?{headers:m(a)}:{},body:{kind:`router_ab_ed25519_yao_operation_step_up_grant_v1`,normalSigningRequest:e.normalSigningRequest,displayDigest:e.displayDigest,proof:pn(e.proof),materialRecovery:i.kind===`email_otp_factor_release_v1`?{kind:i.kind,worker_ephemeral_public_key_65_b64u:i.workerEphemeralPublicKey65B64u}:i}}),s=await fetch(`${t}${w}`,{...o}),c=await s.json().catch(()=>({}));if(!s.ok){let e=c&&typeof c==`object`&&!Array.isArray(c)?c:{};throw Error(`[threshold-ed25519] operation step-up failed: ${String(e.message||`HTTP ${s.status}`)}`)}return yn({body:c,requestedMaterialRecovery:i})}function xn(e){let t=e.lane,n=e.readiness;if(t.curve!==n.curve)throw Error(`[SigningSession] planner lane and readiness curves do not match`);if(t.curve===`ecdsa`&&n.curve===`ecdsa`){let e=t.authorization,r=n.authorization,a=e.session,o=r.session;if(!i(t.materialActivation,n.materialActivation)||e.selectedAuthority.authorityId!==r.selectedAuthority.authorityId||e.selectedAuthMethod.kind!==r.selectedAuthMethod.kind||e.selectedAuthMethod.walletAuthMethodId!==r.selectedAuthMethod.walletAuthMethodId||a.walletId!==o.walletId||a.authorityId!==o.authorityId||a.authMethodId!==o.authMethodId||a.authorizationId!==o.authorizationId||a.quotaId!==o.quotaId||a.authorityDigestB64u!==o.authorityDigestB64u||a.authorityRevocationEpoch!==o.authorityRevocationEpoch||e.operationCredential.walletSessionId!==r.operationCredential.walletSessionId||e.operationCredential.token!==r.operationCredential.token)throw Error(`[SigningSession] planner ECDSA readiness authority does not match its lane`)}let r=Cn(e);if(r)return{kind:H.NotReady,lane:t,reason:r};let a=e.forceFreshAuth||e.sensitiveOperationPolicy===`require_fresh_same_method`||t.retention===`single_use`;if(n.status===`ready`&&!a){if(t.curve===`ed25519`&&n.curve===`ed25519`)return{kind:H.WarmSession,lane:t,keyRef:{kind:ke.Cached,curve:`ed25519`,thresholdSessionId:n.thresholdSessionId}};if(t.curve!==`ecdsa`||n.curve!==`ecdsa`)throw Error(`[SigningSession] planner lane and readiness curves do not match`);return{kind:H.WarmSession,lane:t,keyRef:{kind:ke.Cached,curve:`ecdsa`,materialActivation:n.materialActivation,authorization:n.authorization}}}if(n.status===`auth_unavailable`||n.status===`status_unavailable`||n.status===`status_unknown`)return{kind:H.NotReady,lane:t,reason:n.status};if(V(t.auth)===`email_otp`)return{kind:H.EmailOtpReauth,lane:t,challenge:{chainFamily:t.chainFamily,lane:t}};if(t.curve===`ed25519`&&n.curve===`ed25519`)return{kind:H.PasskeyReauth,lane:t,reconnect:{lane:t,curve:`ed25519`,thresholdSessionId:n.thresholdSessionId}};if(t.curve!==`ecdsa`||n.curve!==`ecdsa`)throw Error(`[SigningSession] planner lane and readiness curves do not match`);return{kind:H.PasskeyReauth,lane:t,reconnect:{lane:t,curve:`ecdsa`,materialActivation:n.materialActivation,authorization:n.authorization}}}function Sn(e,t){return{event:`signing_planner_decision`,readinessStatus:e.readiness.status,forceFreshAuth:!!e.forceFreshAuth,...e.sensitiveOperationPolicy?{sensitiveOperationPolicy:e.sensitiveOperationPolicy}:{},plan:De(t),lane:Te(e.lane),...t.kind===H.NotReady?{reason:t.reason}:{}}}function Cn(e){return V(e.lane.auth)===`email_otp`&&(e.sensitiveOperationPolicy===`deny_email_otp`||e.sensitiveOperationPolicy===`require_passkey`)?`policy_blocked`:null}async function wn(e,t){let n=L(e),r=await Ve(t,Be(n)).catch(()=>null);if(!r?.profileId)throw Error(`No profile/account mapping for account ${n}`);let i=await t.getLastProfileState().catch(()=>null);if(!i?.profileId||i.profileId!==r.profileId)throw Error(`No last user session for account ${n}`);let a=z(i.activeSignerSlot,{min:1});if(a===null)throw Error(`Invalid last-user signerSlot for account ${n}`);return a}var K=function(e){return e.Query=`query`,e.Send=`send_tx`,e.Block=`block`,e}(K||{}),Tn=class e{transaction;signature;borsh_bytes;nonceLease;serverDispatch;constructor(e){this.transaction=e.transaction,this.signature=e.signature,this.borsh_bytes=e.borsh_bytes,e.nonceLease&&(this.nonceLease=e.nonceLease),e.serverDispatch&&(this.serverDispatch=e.serverDispatch)}static fromPlain(t){return new e({transaction:t.transaction,signature:t.signature,borsh_bytes:t.borsh_bytes,...t.nonceLease?{nonceLease:t.nonceLease}:{},...t.serverDispatch?{serverDispatch:t.serverDispatch}:{}})}encode(){return new Uint8Array(this.borsh_bytes).buffer}base64Encode(){return v(this.encode())}};function En(e){if(!e)return null;if(Array.isArray(e))return new Uint8Array(e).buffer;if(ArrayBuffer.isView(e)){let t=e;return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}return e instanceof ArrayBuffer?e:null}function Dn(e){let t=e?.signedTransaction,n=t&&typeof t==`object`?t:e,r=n.base64Encode;if(u(r))return r.call(n);let i=n.encode;if(u(i))return v(i.call(n));let a=En(n.borsh_bytes);if(a)return v(a);let o=En(n.borshBytes);if(o)return v(o);throw Error(`Invalid signed transaction payload: cannot serialize to base64`)}var On=class e{rpcUrls;constructor(t){this.rpcUrls=e.normalizeRpcUrls(t)}static normalizeRpcUrls(e){let t=(Array.isArray(e)?e:e.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)).map(e=>{try{return new URL(e).toString()}catch(t){let n=M(t)||`Invalid NEAR RPC URL: ${e}`;throw Error(n)}});if(!t.length)throw Error(`NEAR RPC URL cannot be empty`);return Array.from(new Set(t))}errorFromHttpStatus(e){return Error(`RPC request failed: ${e.status} ${e.statusText}`)}errorFromFailedCall(e,t){return t}sendWithRetry(e){return e()}buildRequestBody(e,t){return JSON.stringify({jsonrpc:`2.0`,id:te(`near-rpc`,32,`NEAR JSON-RPC request IDs`),method:e,params:t})}async postOnce(e,t){let n=await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:t});if(!n.ok)throw this.errorFromHttpStatus(n);let r=await n.text();if(!r?.trim())throw Error(`Empty response from RPC server`);let i=Se(JSON.parse(r));if(!i.ok)throw Error(`Invalid NEAR JSON-RPC response: ${i.error}`);return i.value}async requestWithFallback(e){let t;for(let[n,r]of this.rpcUrls.entries())try{let t=await this.postOnce(r,e);return n>0&&console.warn(`[NearClient] RPC succeeded via fallback: ${r}`),t}catch(e){t=e;let i=n<this.rpcUrls.length-1;if(console.warn(`[NearClient] RPC call to ${r} failed${i?`, trying next`:``}: ${M(e)||`RPC request failed`}`),!i)throw e instanceof Error?e:Error(String(e))}throw Error(M(t)||`RPC request failed`)}unwrapRpcResult(e,t){if(e.kind===`failure`)throw this.errorFromRpc(t,e.error);let n=e.result;if(typeof n==`object`&&n&&`error`in n){let e=Reflect.get(n,`error`),r=typeof e==`string`?e:JSON.stringify(e);throw this.errorFromWrappedResult(`${t} Error: ${r}`)}return e.result}async makeRpcCall(e,t,n,r){let i=this.buildRequestBody(e,t);try{let e=await this.requestWithFallback(i);return r(this.unwrapRpcResult(e,n))}catch(e){throw this.errorFromFailedCall(n,e)}}async query(e,t){return this.makeRpcCall(K.Query,e,`Query`,t)}async viewAccessKey(e,t,n){let r={request_type:`view_access_key`,finality:n?.finality||`final`,account_id:e,public_key:t};return this.makeRpcCall(K.Query,r,`View Access Key`,F)}async viewAccessKeyList(e,t){let n={request_type:`view_access_key_list`,finality:t?.finality||`final`,account_id:e};return this.makeRpcCall(K.Query,n,`View Access Key List`,ue)}async viewAccount(e){let t={request_type:`view_account`,finality:`final`,account_id:e};return this.makeRpcCall(K.Query,t,`View Account`,ce)}async viewCode(e,t){let n={request_type:`view_code`,finality:t?.finality||`final`,account_id:e};return b(await this.makeRpcCall(K.Query,n,`View Code`,N))}async viewBlock(e){return this.makeRpcCall(K.Block,e,`View Block`,oe)}async sendTransaction(e,t=`EXECUTED_OPTIMISTIC`){let n={signed_tx_base64:Dn(e),wait_until:t};return this.sendWithRetry(async()=>{let e=await this.makeRpcCall(K.Send,n,`Send Transaction`,le),t=e.status;if(t&&typeof t==`object`&&`Failure`in t)throw this.errorFromOutcome(`Send Transaction`,e,t.Failure);return e})}async txStatus(e,t){let n={tx_hash:e,sender_account_id:t};return this.makeRpcCall(`EXPERIMENTAL_tx_status`,n,`Tx Status`,le)}async callFunction(e,t,n,r,i){let a={request_type:`call_function`,...i??{finality:`final`},account_id:e,method_name:t,args_base64:v(new TextEncoder().encode(JSON.stringify(n)).buffer)};return r(P((await this.makeRpcCall(K.Query,a,`View Function`,se)).result))}async view(e){return this.callFunction(e.account,e.method,e.args,e.decodeResult)}async getAccessKeys({account:e,block_id:t}){let n={request_type:`view_access_key_list`,account_id:e,finality:`final`};t&&(n.block_id=t,delete n.finality);let r=await this.makeRpcCall(K.Query,n,`View Access Key List`,ue),i=[],a=[];for(let e of r.keys)e.access_key.permission===`FullAccess`?i.push(e):e.access_key.permission&&typeof e.access_key.permission==`object`&&`FunctionCall`in e.access_key.permission&&a.push(e);return{fullAccessKeys:i,functionCallAccessKeys:a}}};function kn(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function An(e){if(!e)return;let t=Object.keys(e);return t.length?t[0]:void 0}var jn=class e extends Error{code;type;kind;index;short;details;operation;constructor(e){super(e.message),this.name=e.name||`NearRpcError`,this.code=e.code,this.type=e.type||`Unknown`,this.kind=e.kind,this.index=e.index,this.short=e.short,this.details=e.details,this.operation=e.operation}static fromOutcome(t,n,r){let{message:i,type:a,kind:o,index:s,short:c}=Nn(t,r);return new e({message:i||`${t} failed`,short:c||o||`TxExecutionError`,type:a||`Failure`,kind:o,index:s,name:`TxExecutionFailure`,operation:t,details:{Failure:r,outcome:n}})}static fromRpcError(t,n){let r=n.data,{message:i,type:a,kind:o,index:s,short:c}=Mn(t,r,n.message);return new e({message:i||n.message||`${t} RPC error`,short:c||o||`RPC error`,type:a||`RpcError`,kind:o,index:s,code:typeof n.code==`number`?n.code:void 0,name:n.name||`NearRpcError`,operation:t,details:r})}};function Mn(e,t,n=``){let r=kn(t)?t:void 0,i=kn(r?.TxExecutionError)?r.TxExecutionError:void 0;if(!i){let i=typeof t==`string`&&t.trim()?t.trim():r?JSON.stringify(r):n.trim();return{message:`${e} RPC error${i?`: ${i}`:``}`}}return Pn(e,i)}function Nn(e,t){let n=kn(t)?t:void 0;return n?Pn(e,n):{message:`${e} failed (Unknown Failure)`}}function Pn(e,t){if(kn(t.InvalidTxError)){let n=t.InvalidTxError,r=An(n)||`InvalidTxError`;kn(n.ActionsValidation)&&(r=`ActionsValidation.${An(n.ActionsValidation)}`);let i=r.startsWith(`ActionsValidation.`)?`InvalidTxError: ${r.split(`.`)[1]||`ActionsValidation`}`:`InvalidTxError: ${r}`;return{message:`${e} failed (InvalidTxError: ${r})`,type:`InvalidTxError`,kind:r,short:i}}if(kn(t.ActionError)){let n=t.ActionError,r=typeof n.index==`number`?n.index:void 0,i=An(kn(n.kind)?n.kind:void 0)||`ActionError`,a=typeof r==`number`?` at action ${r}`:``,o=`ActionError: ${i}`;return{message:`${e} failed${a} (ActionError: ${i})`,type:`ActionError`,kind:i,index:r,short:o}}return{message:`${e} failed (TxExecutionError)`,type:`TxExecutionError`,kind:`TxExecutionError`,short:`TxExecutionError`}}var Fn=class e extends Tn{transactionHash;constructor(e){super(e),this.transactionHash=e.transactionHash}static fromPlain(t){return new e({transaction:t.transaction,signature:t.signature,borsh_bytes:t.borsh_bytes,transactionHash:o(t.transactionHash,`signed transaction hash`),...t.nonceLease?{nonceLease:t.nonceLease}:{},...t.serverDispatch?{serverDispatch:t.serverDispatch}:{}})}static decode(){throw Error(`SignedTransaction.decode(): borsh deserialization not implemented`)}},In=class extends On{errorFromRpc(e,t){return jn.fromRpcError(e,t)}errorFromWrappedResult(e){return new jn({message:e,short:`RpcError`,type:`RpcError`})}errorFromOutcome(e,t,n){return jn.fromOutcome(e,t,n)}errorFromHttpStatus(e){return e.status===429?Error(`RPC throttled; retry shortly`):super.errorFromHttpStatus(e)}async sendWithRetry(e){let t=null;for(let n=1;n<=5;n++)try{return await e()}catch(e){t=e;let r=M(e);if(!/server error|internal|temporar|timeout|throttl|too many requests|429|unavailable|bad gateway|gateway timeout/i.test(r||``)||n===5)throw e;let i=200*2**(n-1),a=Math.floor(Math.random()*150);await new Promise(e=>setTimeout(e,i+a))}throw t instanceof Error?t:Error(String(t))}};function Ln(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function q(e,t,n){let r=String(t??``).trim();if(r)return{label:e,value:r,...typeof n==`string`&&n.trim()?{copyValue:n}:{}}}function Rn(e){switch(e.action_type){case W.Transfer:case W.FunctionCall:return BigInt(e.deposit||`0`);case W.Stake:return BigInt(e.stake||`0`);default:return BigInt(0)}}function zn(e){try{let t=JSON.parse(e)?.permission;if(t===`FullAccess`)return`FullAccess`;if(t&&typeof t==`object`){if(`FullAccess`in t)return`FullAccess`;if(`FunctionCall`in t)return`FunctionCall`}}catch{return`Unknown`}return`Unknown`}function Bn(e){let{action:t,txIndex:n,actionIndex:r,receiverId:i}=e,a=`near.tx.${n}.action.${r}`;switch(t.action_type){case W.CreateAccount:return{id:a,kind:`near.action`,actionType:`createAccount`,label:`Action ${r+1}: CreateAccount`,fields:[q(`Receiver`,i)].filter(Boolean)};case W.Transfer:return{id:a,kind:`near.action`,actionType:`transfer`,label:`Action ${r+1}: Transfer`,fields:[q(`Receiver`,i),q(`Amount (yoctoNEAR)`,t.deposit)].filter(Boolean)};case W.FunctionCall:{let e=String(t.args||``),n=e?[{id:`${a}.args`,kind:`raw.fallback`,label:`Function Arguments`,raw:e}]:[];return{id:a,kind:`near.action`,actionType:`functionCall`,label:`Action ${r+1}: FunctionCall`,fields:[q(`Receiver`,i),q(`Method`,t.method_name),q(`Gas`,t.gas),q(`Deposit (yoctoNEAR)`,t.deposit)].filter(Boolean),...n.length?{children:n}:{}}}case W.Stake:return{id:a,kind:`near.action`,actionType:`stake`,label:`Action ${r+1}: Stake`,fields:[q(`Receiver`,i),q(`Stake (yoctoNEAR)`,t.stake),q(`Validator Key`,t.public_key,t.public_key)].filter(Boolean)};case W.AddKey:return{id:a,kind:`near.action`,actionType:`addKey`,label:`Action ${r+1}: AddKey`,fields:[q(`Receiver`,i),q(`Public Key`,t.public_key,t.public_key),q(`Permission`,zn(t.access_key))].filter(Boolean)};case W.DeleteKey:return{id:a,kind:`near.action`,actionType:`deleteKey`,label:`Action ${r+1}: DeleteKey`,fields:[q(`Receiver`,i),q(`Public Key`,t.public_key,t.public_key)].filter(Boolean)};case W.DeployContract:return{id:a,kind:`near.action`,actionType:`deployContract`,label:`Action ${r+1}: DeployContract`,fields:[q(`Receiver`,i),q(`Code Bytes`,String(t.code?.length??0))].filter(Boolean)};case W.DeployGlobalContract:return{id:a,kind:`near.action`,actionType:`deployGlobalContract`,label:`Action ${r+1}: DeployGlobalContract`,fields:[q(`Receiver`,i),q(`Deploy Mode`,t.deploy_mode),q(`Code Bytes`,String(t.code?.length??0))].filter(Boolean)};case W.UseGlobalContract:return{id:a,kind:`near.action`,actionType:`useGlobalContract`,label:`Action ${r+1}: UseGlobalContract`,fields:[q(`Receiver`,i),q(`By Account`,t.account_id),q(`By Code Hash`,t.code_hash,t.code_hash)].filter(Boolean)};case W.DeleteAccount:return{id:a,kind:`near.action`,actionType:`deleteAccount`,label:`Action ${r+1}: DeleteAccount`,fields:[q(`Receiver`,i),q(`Beneficiary`,t.beneficiary_id)].filter(Boolean)};case W.SignedDelegate:return{id:a,kind:`near.action`,actionType:`signedDelegate`,label:`Action ${r+1}: SignedDelegate`,children:[{id:`${a}.delegate`,kind:`raw.fallback`,label:`Signed Delegate Payload`,raw:Ln(t)}]};default:return{id:a,kind:`raw.fallback`,label:`Action ${r+1}: Unsupported`,raw:Ln(t)}}}function Vn(e,t,n){let r=String(e.receiverId||``).trim()||`(unknown receiver)`,i=Array.isArray(e.actions)?e.actions:[],a=i.reduce((e,t)=>e+Rn(t),BigInt(0)),o=[q(`Receiver`,r),q(`Action Count`,String(i.length)),q(`Attached Value (yoctoNEAR)`,a>0?a.toString():void 0)].filter(Boolean);return{id:`near.tx.${t}`,kind:`generic.contractCall`,label:n>1?`Transaction ${t+1}`:`Transaction`,to:r,value:a>0?a.toString():void 0,fields:o,children:i.map((e,n)=>Bn({action:e,txIndex:t,actionIndex:n,receiverId:r}))}}function Hn(e){let t=Array.isArray(e.txSigningRequests)?e.txSigningRequests:[],n=t.map((e,n)=>Vn(e,n,t.length)),r=t.reduce((e,t)=>e+(Array.isArray(t.actions)?t.actions.reduce((e,t)=>e+Rn(t),BigInt(0)):BigInt(0)),BigInt(0));return{chain:`near`,intentDigest:e.intentDigest,signerAccount:e.signerAccount,title:e.title||`NEAR Transaction`,subtitle:e.subtitle,operations:n,...r>0?{totals:{nativeValue:r.toString(),nativeSymbol:`yoctoNEAR`}}:{}}}function Un(e){let t={id:`near.message`,kind:`near.message`,label:`Message signature`,fields:[q(`Signer`,e.signerAccount,e.signerAccount),q(`Recipient`,e.recipient,e.recipient),{label:`Message`,value:e.message,copyValue:e.message,renderAs:`file-content`,hideChevron:!0}].filter(Boolean)};return{chain:`near`,intentDigest:e.intentDigest,signerAccount:e.signerAccount,title:e.title||`NEP-413 message`,subtitle:e.subtitle,operations:[t]}}function Wn(e){try{return Hn(e)}catch{return{chain:`near`,signerAccount:e.signerAccount,...e.title?{title:e.title}:{},...e.subtitle?{subtitle:e.subtitle}:{},operations:[]}}}async function Gn(e){let t=L(e.nearAccount.accountId),n=z(e.signerSlot,{min:1});if(n===null)throw Error(`Invalid signerSlot for ${e.operationLabel}: ${e.signerSlot}`);if(e.requestedSignerSlot!==void 0){let t=z(e.requestedSignerSlot,{min:1});if(t===null||t!==n)throw Error(`Requested signerSlot does not match the selected signing lane for ${e.operationLabel}`)}let r=await e.materialExecutor.resolveSigningKeyMaterial();if(r.nearAccountId!==t||r.signerSlot!==n)throw Error(`[SigningEngine] threshold key material does not match the selected lane`);return{thresholdKeyMaterial:r}}function Kn(e){let t=Jn({nearAccountId:e.nearAccountId,tx:e.transaction,txIndex:0});return{txSigningRequest:t,confirmationTransaction:{receiverId:t.receiverId,actions:t.actions}}}function qn(e){let t=e.delegate.actions.map(Ne);t.forEach((e,t)=>{try{Fe(e)}catch(e){throw Error(`Delegate action ${t} validation failed: ${e instanceof Error?e.message:String(e)}`)}});let n={senderId:e.delegate.senderId||e.nearAccountId,receiverId:e.delegate.receiverId,actions:t,nonce:e.delegate.nonce,maxBlockHeight:e.delegate.maxBlockHeight};return{confirmationDelegate:n,workerDelegate:{...n,nonce:e.delegate.nonce.toString(),maxBlockHeight:e.delegate.maxBlockHeight.toString(),publicKey:e.signingPublicKey}}}function Jn(e){let t=String(e.tx?.receiverId||``).trim();if(!t)throw Error(`[SigningEngine] transactions[${e.txIndex}].receiverId is required`);let n=Array.isArray(e.tx?.actions)?e.tx.actions:[];if(n.length===0)throw Error(`[SigningEngine] transactions[${e.txIndex}].actions must be non-empty`);for(let e=0;e<n.length;e++)Fe(n[e]);return{nearAccountId:e.nearAccountId,receiverId:t,actions:n}}async function Yn(e){return $n({kind:`near:transactions_with_actions:planning`,payload:{purpose:`near_transaction`,...er(e),transactions:tr(e.transactions)}})}async function Xn(e){return $n({kind:`near:transactions_with_actions`,payload:{purpose:`near_transaction`,...er(e),transactions:tr(e.transactions),unsignedTransactionBorshB64u:s(e.unsignedTransactionBorshB64u,`unsignedTransactionBorshB64u`),signingDigestB64u:s(e.signingDigestB64u,`signingDigestB64u`)}})}async function Zn(e){return $n({kind:`near:nep413`,payload:{purpose:`nep413_message`,...er(e),message:s(e.message,`message`),recipient:s(e.recipient,`recipient`),nonce:s(e.nonce,`nonce`),callbackUrl:e.callbackUrl}})}async function Qn(e){return $n({kind:`near:delegate_action`,payload:{purpose:`delegate_action`,...er(e),delegate:nr(e.delegate)}})}async function $n(e){return`sha256:${_(await d(p({kind:s(e.kind,`kind`),payload:hr(e.payload)})))}`}function er(e){return{nearAccountId:s(e.nearAccountId,`nearAccountId`),nearNetworkId:s(e.nearNetworkId,`nearNetworkId`),relayerKeyId:s(e.relayerKeyId,`relayerKeyId`),signerPublicKey:s(e.signerPublicKey,`signerPublicKey`)}}function tr(e){if(!Array.isArray(e)||e.length<1)throw Error(`transactions must be a non-empty array`);return e.map((e,t)=>rr(e,`transactions[${t}]`))}function nr(e){return{senderId:s(e.senderId,`delegate.senderId`),receiverId:s(e.receiverId,`delegate.receiverId`),actions:ir(e.actions,`delegate.actions`),nonce:s(e.nonce,`delegate.nonce`),maxBlockHeight:s(e.maxBlockHeight,`delegate.maxBlockHeight`),publicKey:s(e.publicKey,`delegate.publicKey`)}}function rr(e,t){let n=a(e,t);return{nearAccountId:s(n.nearAccountId,`${t}.nearAccountId`),receiverId:s(n.receiverId,`${t}.receiverId`),actions:ir(n.actions,`${t}.actions`)}}function ir(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e.map((e,n)=>ar(e,`${t}[${n}]`))}function ar(e,t){let n=a(e,t),r=s(n.action_type,`${t}.action_type`);switch(r){case`CreateAccount`:return{action_type:r};case`DeployContract`:return{action_type:r,code:ur(n.code,`${t}.code`)};case`FunctionCall`:return{action_type:r,method_name:s(n.method_name,`${t}.method_name`),args:s(n.args,`${t}.args`),gas:s(n.gas,`${t}.gas`),deposit:s(n.deposit,`${t}.deposit`)};case`Transfer`:return{action_type:r,deposit:s(n.deposit,`${t}.deposit`)};case`Stake`:return{action_type:r,stake:s(n.stake,`${t}.stake`),public_key:s(n.public_key,`${t}.public_key`)};case`AddKey`:return{action_type:r,public_key:s(n.public_key,`${t}.public_key`),access_key:s(n.access_key,`${t}.access_key`)};case`DeleteKey`:return{action_type:r,public_key:s(n.public_key,`${t}.public_key`)};case`DeleteAccount`:return{action_type:r,beneficiary_id:s(n.beneficiary_id,`${t}.beneficiary_id`)};case`SignedDelegate`:return{action_type:r,delegate_action:or(n.delegate_action,`${t}.delegate_action`),signature:cr(n.signature,`${t}.signature`)};case`DeployGlobalContract`:return{action_type:r,code:ur(n.code,`${t}.code`),deploy_mode:pr(n.deploy_mode,`${t}.deploy_mode`)};case`UseGlobalContract`:return lr(n,t)}throw Error(`${t}.action_type is unsupported`)}function or(e,t){let n=a(e,t);return{senderId:s(n.senderId,`${t}.senderId`),receiverId:s(n.receiverId,`${t}.receiverId`),actions:ir(n.actions,`${t}.actions`),nonce:fr(n.nonce,`${t}.nonce`),maxBlockHeight:fr(n.maxBlockHeight,`${t}.maxBlockHeight`),publicKey:sr(n.publicKey,`${t}.publicKey`)}}function sr(e,t){let n=a(e,t);return{keyType:dr(n.keyType,`${t}.keyType`),keyData:ur(n.keyData,`${t}.keyData`)}}function cr(e,t){let n=a(e,t);return{keyType:dr(n.keyType,`${t}.keyType`),signatureData:ur(n.signatureData,`${t}.signatureData`)}}function lr(e,t){let n=mr(e.account_id),r=mr(e.code_hash);if(n&&r)throw Error(`${t} requires exactly one of account_id or code_hash`);if(n)return{action_type:`UseGlobalContract`,account_id:n};if(r)return{action_type:`UseGlobalContract`,code_hash:r};throw Error(`${t} requires exactly one of account_id or code_hash`)}function ur(e,t){if(!Array.isArray(e))throw Error(`${t} must be an array`);return e.map((e,n)=>{if(typeof e!=`number`||!Number.isInteger(e)||e<0||e>255)throw Error(`${t}[${n}] must be a byte`);return e})}function dr(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e))throw Error(`${t} must be a safe integer`);return e}function fr(e,t){return typeof e==`bigint`||typeof e==`number`&&Number.isSafeInteger(e)?e:s(e,t)}function pr(e,t){let n=s(e,t);if(n===`CodeHash`||n===`AccountId`)return n;throw Error(`${t} is invalid`)}function mr(e){return String(e||``).trim()||null}function hr(e){if(typeof e==`bigint`)return e.toString(10);if(e instanceof Uint8Array)return{__bytesB64u:_(e)};if(ArrayBuffer.isView(e))return{__bytesB64u:_(new Uint8Array(e.buffer,e.byteOffset,e.byteLength))};if(e instanceof ArrayBuffer)return{__bytesB64u:_(new Uint8Array(e))};if(Array.isArray(e))return e.map(hr);if(!e||typeof e!=`object`)return e;let t={};for(let n of Object.keys(e).sort()){let r=hr(e[n]);r!==void 0&&(t[n]=r)}return t}async function gr(e){if(Et(e.signingAuthPlan)&&!e.emailOtpEd25519StepUp)throw Error(`[SigningEngine][near] Email OTP step-up runner is unavailable`);if(Tt(e.signingAuthPlan)&&!e.passkeyEd25519OperationStepUp)throw Error(`[SigningEngine][near] Passkey operation step-up runner is unavailable`);let t=null,n=await Lt({operation:{kind:`near_ed25519_step_up`,requiredSignatureUses:e.requiredSignatureUses},selectedLane:{authMethod:V(e.signingLaneAuth)},policy:xr(e.signingAuthPlan),methods:{...e.emailOtpEd25519StepUp?{emailOtp:{method:`email_otp`,prepareChallenge:async()=>await e.emailOtpEd25519StepUp.prepare({operationFingerprintDigest:e.operationFingerprintDigest}),...e.emailOtpEd25519StepUp.resend?{resendChallenge:async()=>await e.emailOtpEd25519StepUp.resend({operationFingerprintDigest:e.operationFingerprintDigest})}:{},complete:vr}}:{},passkey:{method:`passkey`,prepare:async()=>{if(!e.passkeyEd25519OperationStepUp)throw Error(`[SigningEngine][near] Passkey operation step-up runner is unavailable`);return t=await e.passkeyEd25519OperationStepUp.prepare(),{}},complete:yr}}}),r=e.signingAuthPlan;if(n.method===`warm_session`){if(!Sr(r))throw Error(`[SigningEngine][near] warm-session step-up requires a warm-session plan`);return{kind:`warm_session`,confirmationAuthPayload:{signingAuthPlan:r}}}if(n.method===`email_otp`){if(!Et(r))throw Error(`[SigningEngine][near] Email OTP step-up requires an Email OTP plan`);return{kind:`email_otp`,confirmationAuthPayload:{signingAuthPlan:{kind:`emailOtpReauth`,method:`email_otp`,emailOtpPrompt:n.prompt}},emailOtpPrompt:n.prompt}}if(!Tt(r))throw Error(`[SigningEngine][near] passkey step-up requires a passkey plan`);return{kind:`passkey`,confirmationAuthPayload:{signingAuthPlan:r},plannedPasskeyOperationStepUp:br(t)}}function _r(e){switch(e.kind){case`voiceid`:throw Error(`Unlock with VoiceID again before signing.`);case`passkey`:return{kind:`passkeyReauth`,method:`passkey`};case`email_otp`:return{kind:`emailOtpReauth`,method:`email_otp`};default:throw Error(`[SigningEngine][near] unsupported material auth requirement`)}}async function vr(){}async function yr(){}function br(e){if(!e)throw Error(`[SigningEngine][near] Passkey operation step-up plan is required`);return e}function xr(e){if(wt(e)){if(e.curve!==`ed25519`)throw Error(`[SigningEngine][near] warm-session step-up requires an Ed25519 auth plan`);return{kind:`reuse_warm_session`,authorization:{method:e.method,curve:`ed25519`,thresholdSessionId:e.thresholdSessionId,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses}}}return{kind:`use_selected_lane`}}function Sr(e){return wt(e)&&e.curve===`ed25519`}function Cr(e,t,n){try{e?.(xe({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function wr(e,t){let n=It(e.signingAuthPlan);if(t.phase===`confirmation.complete`){if(n===`passkey`&&t.status===`succeeded`)return}else if(n!==`passkey`||t.phase!==`auth.passkey.prompt.started`&&t.phase!==`auth.passkey.prompt.succeeded`)return;let r=Ft(t,n);r&&Cr(e.onEvent,e.nearAccountId,{...r,authMethod:n})}function Tr(e){return{kind:`warm_session`,signingAuthPlan:e,thresholdSessionId:e.thresholdSessionId,expiresAtMs:e.expiresAtMs,remainingUses:e.remainingUses}}function Er(e){if(e.prepared.kind===`warm_session`)return Tr(e.prepared.confirmationAuthPayload.signingAuthPlan);if(e.prepared.kind===`email_otp`)return{kind:`email_otp`,signingAuthPlan:e.prepared.confirmationAuthPayload.signingAuthPlan,challengeId:Or(e.confirmation.emailOtpChallengeId,e.prepared.emailOtpPrompt.challengeId),otpCode:Dr(e.confirmation.otpCode),...e.prepared.emailOtpPrompt.emailHint?{emailHint:e.prepared.emailOtpPrompt.emailHint}:{}};if(!e.confirmation.credential)throw Error(`[SigningEngine] missing WebAuthn credential for NEAR step-up authorization`);return{kind:`passkey`,signingAuthPlan:e.prepared.confirmationAuthPayload.signingAuthPlan,credential:Le(e.confirmation.credential),plannedPasskeyOperationStepUp:e.prepared.plannedPasskeyOperationStepUp}}function Dr(e){let t=String(e||``).trim();if(!/^\d{6}$/.test(t))throw Error(`[SigningEngine] missing Email OTP code for NEAR step-up authorization`);return t}function Or(e,t){let n=String(e||t||``).trim();if(!n)throw Error(`[SigningEngine] missing Email OTP challenge id for NEAR step-up authorization`);return n}function kr(e){if(!e||!Array.isArray(e.actions)||e.actions.length===0)throw Error(`[SigningEngine][near] one NEAR transaction with actions is required`);return 1}function Ar(e){throw Error(`[SigningEngine][near] exactly one NEAR transaction is supported per signing operation; received ${e.length}`)}const jr=2e4;async function Mr(e){return zr(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519ComputeNep413SigningDigest,timeoutMs:jr,payload:{message:e.message,recipient:e.recipient,nonce:e.nonce,callbackUrl:e.callbackUrl}}}))}async function Nr(e){return zr(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519ComputeDelegateSigningDigest,timeoutMs:jr,payload:{delegate:e.delegate}}}))}async function Pr(e){return Br(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519BuildDelegateSigningPayload,timeoutMs:jr,payload:{delegate:e.delegate}}}))}async function Fr(e){return Vr(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519FinalizeDelegateFromSignature,timeoutMs:jr,payload:{delegate:e.delegate,signingDigestB64u:e.signingDigestB64u,signatureB64u:e.signatureB64u}}}))}async function Ir(e){let t=Hr(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519BuildNearTxUnsignedBorsh,timeoutMs:jr,payload:{txSigningRequests:[e.txSigningRequest],transactionContext:e.transactionContext}}})),n=t[0];if(!n||t.length!==1)throw Error(`near signer worker returned invalid single-transaction unsigned payload`);return n}async function Lr(e){return Ur(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519FinalizeNearTxFromSignature,timeoutMs:jr,payload:{unsignedTransactionBorshB64u:e.unsignedTransactionBorshB64u,signingDigestB64u:e.signingDigestB64u,signatureB64u:e.signatureB64u,expectedNearAccountId:e.expectedNearAccountId,expectedSignerPublicKey:e.expectedSignerPublicKey}}}))}async function Rr(e){return Wr(await Me({ctx:e.workerCtx,kind:`nearSigner`,request:{type:I.ThresholdEd25519DecodeSignedNearTxBorsh,timeoutMs:jr,payload:{signedTransactionBorshB64u:e.signedTransactionBorshB64u}}}))}function zr(e){let t=e;if(!t?.signingDigestB64u)throw Error(`near signer worker returned invalid Ed25519 signing digest result`);return t}function Br(e){let t=e;if(!t?.canonicalDelegateBorshB64u||!t.signingDigestB64u)throw Error(`near signer worker returned invalid Ed25519 delegate signing payload`);return t}function Vr(e){let t=e;if(!t?.delegateAction||!t.signature||!t.borshBytes)throw Error(`near signer worker returned invalid Ed25519 signed delegate result`);return t}function Hr(e){if(!Array.isArray(e))throw Error(`near signer worker returned invalid Ed25519 unsigned tx result`);return e.map(e=>{let t=e;if(!t?.unsignedTransactionBorshB64u||!t.signingDigestB64u)throw Error(`near signer worker returned invalid Ed25519 unsigned tx item`);return t})}function Ur(e){let t=e;if(!t?.signedTransactionBorshB64u||!t.transactionHash)throw Error(`near signer worker returned invalid Ed25519 finalized tx result`);return t}function Wr(e){let t=e;if(!t?.signedTransaction?.transaction||!t.signedTransaction.signature||!t.signedTransaction.borshBytes||!t.transactionHash)throw Error(`near signer worker returned invalid Ed25519 signed tx decode result`);return t}function Gr(e,t){return e.request_id===t.request_id&&e.account_id===t.account_id&&e.authorization.kind===t.authorization.kind&&(e.authorization.kind===`reusable_wallet_session`?t.authorization.kind===`reusable_wallet_session`&&e.authorization.wallet_session_id===t.authorization.wallet_session_id:t.authorization.kind===`operation_step_up`)&&e.material_activation.kind===t.material_activation.kind&&e.material_activation.activation_id===t.material_activation.activation_id&&e.material_activation.capability===t.material_activation.capability&&e.material_activation.material_owner===t.material_activation.material_owner&&e.material_activation.key_binding===t.material_activation.key_binding&&e.material_activation.lifecycle_binding===t.material_activation.lifecycle_binding&&e.material_activation.signing_worker===t.material_activation.signing_worker&&e.signing_worker_id===t.signing_worker_id}function Kr(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function qr(e){if(!Gr(e.request.scope,e.response.scope))throw Error(`Router A/B normal-signing prepare response scope mismatch`);if(e.request.expires_at_ms!==e.response.expires_at_ms)throw Error(`Router A/B normal-signing prepare response expiry mismatch`);if(e.response.signing_worker.server_id!==e.request.scope.signing_worker_id)throw Error(`Router A/B normal-signing prepare response SigningWorker mismatch`);if(!Kr(e.signingPayloadDigest.bytes,e.response.signing_payload_digest.bytes))throw Error(`Router A/B normal-signing prepare response payload digest mismatch`)}function Jr(e){if(!Gr(e.request.scope,e.response.scope))throw Error(`Router A/B normal-signing response scope mismatch`);if(e.response.signing_worker.server_id!==e.request.scope.signing_worker_id)throw Error(`Router A/B normal-signing response SigningWorker mismatch`);if(!Kr(e.signingPayloadDigest.bytes,e.response.signing_payload_digest.bytes))throw Error(`Router A/B normal-signing response payload digest mismatch`);if(e.response.signature.bytes.length!==64)throw Error(`Router A/B normal-signing response signature must be 64 bytes`)}function J(e,t){let n=String(e||``).trim();if(!n)throw Error(`Router A/B Ed25519 normal-signing ready state is missing ${t}`);return n}function Y(e,t,n){if(e!==t)throw Error(`Router A/B Ed25519 normal-signing ready state ${n} mismatch`)}function Yr(e,t){let n=Math.floor(Number(e));if(!Number.isFinite(n)||n<=Date.now())throw Error(`Router A/B Ed25519 normal-signing ready state ${t} is expired`);return n}function Xr(e,t){let n=Math.floor(Number(e));if(!Number.isSafeInteger(n)||n<=0)throw Error(`Router A/B Ed25519 normal-signing ready state ${t} is exhausted`);return n}function Zr(e){let t=e.state,n=t.signingWalletSession,r=J(e.thresholdSessionId,`thresholdSessionId`),i=J(t.thresholdSessionId,`state.thresholdSessionId`),a=J(t.signingLane.thresholdSessionId,`state.signingLane.thresholdSessionId`);Y(i,r,`thresholdSessionId`),Y(a,r,`lane thresholdSessionId`);let o=J(t.walletSessionId,`state.walletSessionId`),s=J(t.quotaId,`state.quotaId`);Y(t.signingLane.walletSessionId,o,`lane walletSessionId`),Y(t.signingLane.quotaId,s,`lane quotaId`);let c=J(e.nearAccountId,`nearAccountId`);J(t.signingLane.identity.signer.account.wallet.walletId,`state.signingLane.identity.signer.account.wallet.walletId`),Y(J(e.thresholdKeyMaterial.nearAccountId,`thresholdKeyMaterial.nearAccountId`),c,`threshold key accountId`);let l=n.routerAbNormalSigning,u=J(n.auth.walletSessionToken,`Wallet Session bearer token`),d=J(t.signingRootId,`state.signingRootId`),f=J(t.signingRootVersion,`state.signingRootVersion`);Y(n.thresholdSessionId,r,`Wallet Session thresholdSessionId`),Y(n.walletSessionId,o,`Wallet Session walletSessionId`),Y(n.quotaId,s,`Wallet Session quotaId`),Y(n.signingRootId,d,`signingRootId`),Y(n.signingRootVersion,f,`signingRootVersion`),Y(t.routerAbNormalSigning.signingWorkerId,l.signingWorkerId,`signingWorkerId`),Yr(n.expiresAtMs,`expiresAtMs`);let p=Xr(n.remainingUses,`remainingUses`);if(t.remainingUses!==p)throw Error(`Router A/B Ed25519 normal-signing ready state remainingUses mismatch`);return{kind:`router_ab_ed25519_normal_signing_ready_state_v1`,relayerUrl:J(t.relayerUrl,`relayerUrl`),signingWorkerId:J(l.signingWorkerId,`signingWorkerId`),signerPublicKey:J(e.thresholdKeyMaterial.publicKey,`signerPublicKey`),credential:{kind:`wallet_session_opaque`,walletSessionToken:u,home:n.auth.credential.home}}}function Qr(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`operation step-up preparation ref must be an object`);let t=e;if(Object.keys(t).length!==3||t.kind!==`near_operation_step_up_prepared_v1`)throw Error(`operation step-up preparation ref is invalid`);let n=String(t.handle||``).trim();if(!n.startsWith(`near-operation-step-up:`)||/\s/.test(n))throw Error(`operation step-up preparation handle is invalid`);return{kind:`near_operation_step_up_prepared_v1`,handle:n,challengeB64u:j(t.challengeB64u)}}const $r=new Map,ei=new Map;function ti(e,t){let n=String(e||``).trim();if(!n)throw Error(`[SigningEngine][near] ${t} is required`);return n}function ni(e){$r.set(ti(e.requestId,`requestId`),e.build)}function ri(e){$r.delete(String(e||``).trim())}const ii={async prepare(e){let t=ti(e.requestId,`requestId`),n=$r.get(t);if(!n)throw Error(`[SigningEngine][near] operation step-up preparation is unavailable`);$r.delete(t);let r=e.kind===`near_transaction`?await n({kind:`near_transaction`,transactionContext:e.transactionContext,operationId:ti(e.operationId,`operationId`),operationFingerprint:ti(e.operationFingerprint,`operationFingerprint`),displayDigest:ti(e.displayDigest,`displayDigest`)}):await n({kind:`near_signature_only`,displayDigest:ti(e.displayDigest,`displayDigest`)}),i=await Ye(r.envelope),a=Qr({kind:`near_operation_step_up_prepared_v1`,handle:`near-operation-step-up:${ee(24,`operation step-up handle`)}`,challengeB64u:i});return ei.set(a.handle,{requestId:t,operation:r.operation}),a},cancel(e){let t=String(e.requestId||``).trim();t&&$r.delete(t),e.handle&&ei.delete(e.handle);for(let[e,n]of ei)n.requestId===t&&ei.delete(e)}};function ai(e){let t=ti(e.requestId,`requestId`),n=ti(Qr(e.ref).handle,`operation step-up handle`),r=ei.get(n);if(ei.delete(n),!r||r.requestId!==t)throw Error(`[SigningEngine][near] prepared operation step-up is unavailable`);return r.operation}function oi(e){if(!i(e.expected,e.actual))throw Error(`[SigningEngine][near] operation assertion changed material activation`)}const si=12e4;async function ci(e){return await e.ctx.resolveOperationStepUpCredential({walletId:e.walletId,relayerUrl:e.relayerUrl,proof:e.proof})}function li(e){if(e.prepared.prepare.request.scope.authorization.kind!==`operation_step_up`)throw Error(`[SigningEngine][near] operation step-up authorization scope is missing`);if(e.issuedAuthorization.kind!==`verified_step_up`)throw Error(`[SigningEngine][near] operation step-up authorization is invalid`)}function ui(e){let t=e.thresholdKeyMaterial.participants.find(t=>t.role===e.role)?.id;if(!t)throw Error(`threshold-ed25519 signing requires ${e.role} participant id`);return t}function di(e){return[...y(e)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function fi(e){return re(e.chains||vt.network.chains)}function pi(e){let t=globalThis.crypto;if(t&&typeof t.randomUUID==`function`)return`router-ab-normal-signing/${e}/${t.randomUUID()}`;if(t&&typeof t.getRandomValues==`function`){let n=new Uint8Array(16);return t.getRandomValues(n),`router-ab-normal-signing/${e}/${_(n)}`}throw Error(`secure randomness is unavailable for Router A/B normal-signing request id`)}function mi(e){if(!e.ok)throw Error(e.error.message);return e.value}function hi(e){let t=Math.floor(Number(e.walletSessionExpiresAtMs)),n=Math.floor(Number(e.requestedTtlMs));if(!Number.isFinite(t)||t<=Date.now())throw Error(`[SigningEngine][near] Router A/B Ed25519 Wallet Session is expired`);if(!Number.isFinite(n)||n<=0)throw Error(`[SigningEngine][near] Router A/B Ed25519 request TTL is invalid`);return Math.min(t,Date.now()+n)}function gi(e){let t=e.walletSessionState.routerAbNormalSigning;if(!t)return null;let n=String(e.walletId||``).trim();if(!n)throw Error(`[SigningEngine][near] Router A/B Ed25519 signing scope is missing wallet id`);let r=Ue(e.activeClient.metadata());return{request_id:pi(e.operationId),account_id:n,authorization:{kind:`reusable_wallet_session`,wallet_session_id:e.walletSessionState.walletSessionId},material_activation:{kind:`mpc_material_activation_ref`,activation_id:r.activationId,capability:r.capability,material_owner:r.materialOwner,key_binding:r.keyBinding,lifecycle_binding:r.lifecycleBinding,signing_worker:r.signingWorker},signing_worker_id:t.signingWorkerId}}function _i(e){let t=e.materialFacts.routerAbNormalSigning;if(!t)throw Error(`[SigningEngine][near] Router A/B Ed25519 signing scope is missing`);return{request_id:pi(e.operationId),account_id:String(e.walletId),authorization:{kind:`operation_step_up`},material_activation:{kind:`mpc_material_activation_ref`,activation_id:e.materialActivation.activationId,capability:e.materialActivation.capability,material_owner:e.materialActivation.materialOwner,key_binding:e.materialActivation.keyBinding,lifecycle_binding:e.materialActivation.lifecycleBinding,signing_worker:e.materialActivation.signingWorker},signing_worker_id:t.signingWorkerId}}function vi(e){return e.map(e=>{switch(e.action_type){case`CreateAccount`:return{action_type:W.CreateAccount};case`DeployContract`:return{action_type:W.DeployContract,code:[...e.code]};case`FunctionCall`:return{action_type:W.FunctionCall,method_name:e.method_name,args:e.args,gas:e.gas,deposit:e.deposit};case`Transfer`:return{action_type:W.Transfer,deposit:e.deposit};case`Stake`:return{action_type:W.Stake,stake:e.stake,public_key:e.public_key};case`AddKey`:return{action_type:W.AddKey,public_key:e.public_key,access_key:e.access_key};case`DeleteKey`:return{action_type:W.DeleteKey,public_key:e.public_key};case`DeleteAccount`:return{action_type:W.DeleteAccount,beneficiary_id:e.beneficiary_id};case`SignedDelegate`:{let t=vi(e.delegate_action.actions).map(Pe);return{action_type:W.SignedDelegate,delegate_action:{senderId:e.delegate_action.senderId,receiverId:e.delegate_action.receiverId,actions:t,nonce:e.delegate_action.nonce,maxBlockHeight:e.delegate_action.maxBlockHeight,publicKey:{keyType:e.delegate_action.publicKey.keyType,keyData:[...e.delegate_action.publicKey.keyData]}},signature:{keyType:e.signature.keyType,signatureData:[...e.signature.signatureData]}}}case`DeployGlobalContract`:return{action_type:W.DeployGlobalContract,code:[...e.code],deploy_mode:e.deploy_mode};case`UseGlobalContract`:return`account_id`in e?{action_type:W.UseGlobalContract,account_id:e.account_id}:{action_type:W.UseGlobalContract,code_hash:e.code_hash}}})}async function yi(e){return{signedDelegate:await Fr({delegate:e.delegate,signingDigestB64u:e.signingDigestB64u,signatureB64u:e.signatureB64u,workerCtx:e.ctx}),hash:di(e.signingDigestB64u)}}function X(e,t,n){if(String(e)!==String(t))throw Error(`Router A/B Ed25519 active Client ${n} mismatch`)}function bi(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r+=1)n|=e[r]^t[r];return n===0}function xi(e,t){if(e.length!==32||e.some(e=>!Number.isInteger(e)||e<0||e>255))throw Error(`Router A/B normal-signing ${t} must contain 32 bytes`);return Uint8Array.from(e)}function Si(e){let t=_e(e);if(!t.startsWith(`ed25519:`))throw Error(`Router A/B Ed25519 signer public key must use ed25519`);let n=R(t.slice(8));if(n.length!==32)throw Error(`Router A/B Ed25519 signer public key must decode to 32 bytes`);return n}function Ci(e){let t=e.activeClient.metadata(),n=Ue(t),r=e.materialFacts.signer,i=ui({thresholdKeyMaterial:e.thresholdKeyMaterial,role:`client`}),a=ui({thresholdKeyMaterial:e.thresholdKeyMaterial,role:`relayer`});if(e.thresholdKeyMaterial.participants.length!==2)throw Error(`Router A/B Ed25519 active Client requires exactly two participants`);X(t.scope.account_id,e.prepare.request.scope.account_id,`scope account`),X(t.scope.threshold_session_id,e.materialFacts.thresholdSessionId,`threshold session`),X(t.scope.account_id,e.walletId,`scope wallet`),X(n.activationId,e.prepare.request.scope.material_activation.activation_id,`material activation`),X(n.capability,e.prepare.request.scope.material_activation.capability,`material capability`),X(n.materialOwner,e.prepare.request.scope.material_activation.material_owner,`material owner`),X(n.keyBinding,e.prepare.request.scope.material_activation.key_binding,`material key binding`),X(n.lifecycleBinding,e.prepare.request.scope.material_activation.lifecycle_binding,`material lifecycle`),X(n.signingWorker,e.prepare.request.scope.material_activation.signing_worker,`material SigningWorker`);let o=e.prepare.request.scope.authorization;if(o.kind!==e.authorization.kind)throw Error(`Router A/B Ed25519 authorization kind mismatch`);switch(e.authorization.kind){case`reusable_wallet_session`:if(o.kind!==`reusable_wallet_session`)throw Error(`Router A/B Ed25519 reusable authorization is missing`);X(o.wallet_session_id,e.authorization.walletSessionId,`authorization session`);break;case`operation_step_up`:if(o.kind!==`operation_step_up`)throw Error(`Router A/B Ed25519 operation step-up authorization is missing`);break;default:e.authorization}X(t.scope.signing_worker_id,e.prepare.request.scope.signing_worker_id,`scope SigningWorker`),X(t.scope.signing_worker_id,e.signingWorkerId,`prepare SigningWorker`),X(t.applicationBinding.wallet_id,e.walletId,`application wallet`),X(t.applicationBinding.wallet_id,r.account.wallet.walletId,`lane wallet`),X(t.applicationBinding.near_ed25519_signing_key_id,r.nearEd25519SigningKeyId,`signing key`),X(t.applicationBinding.signing_root_id,e.materialFacts.signingRootId,`signing root`),X(t.applicationBinding.key_creation_signer_slot,r.signerSlot,`signer slot`),X(t.applicationBinding.key_creation_signer_slot,e.thresholdKeyMaterial.signerSlot,`key-material signer slot`),X(t.participantIds[0],i,`Client participant`),X(t.participantIds[1],a,`SigningWorker participant`);let s=Si(e.thresholdKeyMaterial.publicKey);if(!bi(t.registeredPublicKey,s))throw Error(`Router A/B Ed25519 active Client registered public key mismatch`);if(!bi(t.signingWorkerVerifyingShare,e.signingWorkerVerifyingShare))throw Error(`Router A/B Ed25519 active Client SigningWorker verifying share mismatch`)}async function wi(e){let t=e.prepare.request.intent.operation_id,n=performance.now(),r=`failed`;try{let n=await Ti(e,t);return r=`succeeded`,n}finally{G(t,`signature_total`,n,r)}}async function Ti(e,t){let n=y(e.signingDigestB64u);if(n.length!==32)throw Error(`Router A/B normal-signing ${e.signingPayloadLabel} must be 32 bytes`);let r=xi(e.prepare.admissionMaterial.admittedSigningDigest.bytes,`admitted digest`);if(!bi(n,r))throw Error(`Router A/B normal-signing admitted digest mismatch`);e.authorization===`reusable_wallet_session`&&Zr({state:e.walletSessionState,thresholdSessionId:e.thresholdSessionId,nearAccountId:e.nearAccountId,thresholdKeyMaterial:e.thresholdKeyMaterial});let i=e.authorization===`reusable_wallet_session`?{thresholdSessionId:e.walletSessionState.thresholdSessionId,signer:e.walletSessionState.signingLane.identity.signer,signingRootId:e.walletSessionState.signingRootId,signingRootVersion:e.walletSessionState.signingRootVersion,routerAbNormalSigning:e.walletSessionState.routerAbNormalSigning,runtimePolicyScope:e.walletSessionState.runtimePolicyScope,relayerUrl:e.walletSessionState.relayerUrl}:e.materialFacts,a=performance.now(),o=e.startedResponse?await e.startedResponse:await gt({relayServerUrl:i.relayerUrl,credential:e.credential,request:e.prepare.request});if(G(t,`prepare`,a),e.authorization===`reusable_wallet_session`){if(o.kind!==`reusable_wallet_session`)throw Error(`Ed25519 prepare returned the wrong authorization kind`);let t=await e.sessionCoordinator.resolveActiveAuthorizedRouterAbEd25519WalletSessionState({state:e.walletSessionState,nowMs:Date.now()}),n=o.sessionStatus;if(!t||n.walletSessionId!==t.walletSessionOperationCredential.walletSessionId||n.quotaId!==t.walletSessionAuthorization.quotaId||n.quotaLifecycle!==`active`||n.remainingUses<=0||n.expiresAtMs<=Date.now()||!S(n.authorization,t.walletSessionAuthorization))throw Error(`Wallet Session authority changed before Ed25519 client signing`);let r={relayerUrl:i.relayerUrl,operationCredential:t.walletSessionOperationCredential};await je.fromPrepare(r,n).read(r,{walletSessionId:n.walletSessionId,quotaId:n.quotaId})}else if(o.kind!==`operation_step_up`)throw Error(`Ed25519 step-up prepare returned a reusable Wallet Session`);let s=o.signing;qr({request:e.prepare.request,signingPayloadDigest:e.prepare.admissionMaterial.signingPayloadDigest,response:s});let c=y(s.server_verifying_share_b64u);if(c.length!==32)throw Error(`Router A/B normal-signing SigningWorker verifying share must be 32 bytes`);Ci({activeClient:e.activeClient,authorization:e.authorization===`reusable_wallet_session`?{kind:`reusable_wallet_session`,walletSessionId:e.walletSessionState.signingWalletSession.walletSessionId}:{kind:`operation_step_up`},materialFacts:i,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,prepare:e.prepare,signingWorkerId:s.signing_worker.server_id,signingWorkerVerifyingShare:c});let l=performance.now(),u=await e.activeClient.createSigningShare({admittedDigest:r,signingWorkerCommitments:s.server_commitments,signingWorkerVerifyingShare:c});if(G(t,`client_share`,l),u.clientVerifyingShare.length!==32)throw Error(`Router A/B normal-signing Client verifying share must be 32 bytes`);let d=performance.now(),f=await bt({relayServerUrl:i.relayerUrl,credential:e.credential,request:pt({scope:e.prepare.request.scope,expiresAtMs:e.prepare.request.expires_at_ms,prepareResponse:s,admissionMaterial:e.prepare.admissionMaterial,clientCommitments:u.clientCommitments,clientVerifyingShareB64u:_(u.clientVerifyingShare),clientSignatureShareB64u:u.clientSignatureShareB64u})});return G(t,`finalize`,d),Jr({request:e.prepare.request,signingPayloadDigest:e.prepare.admissionMaterial.signingPayloadDigest,response:f}),{signatureB64u:xt(f.signature,`Router A/B normal-signing signature`),signerPublicKey:e.thresholdKeyMaterial.publicKey}}async function Ei(e){let t=fi(e.ctx);return e.intent.kind===`nep413_message_v1`?await ht({scope:e.scope,expiresAtMs:e.expiresAtMs,operationId:e.operationId,operationFingerprint:e.operationFingerprint,displayDigestB64u:e.displayDigest,nearAccountId:e.nearAccountId,nearNetworkId:t,message:e.intent.message,recipient:e.intent.recipient,nonce:e.intent.nonce,callbackUrl:e.intent.callbackUrl,expectedSigningDigestB64u:e.signingDigestB64u}):await _t({scope:e.scope,expiresAtMs:e.expiresAtMs,operationId:e.operationId,operationFingerprint:e.operationFingerprint,displayDigestB64u:e.displayDigest,nearAccountId:e.nearAccountId,nearNetworkId:t,delegate:{senderId:e.intent.delegate.senderId,receiverId:e.intent.delegate.receiverId,publicKey:e.intent.delegate.publicKey,nonce:e.intent.delegate.nonce,maxBlockHeight:e.intent.delegate.maxBlockHeight,actionFingerprint:await mt(e.intent.delegate.actions),canonicalDelegateBorshB64u:(await Pr({delegate:{senderId:e.intent.delegate.senderId,receiverId:e.intent.delegate.receiverId,actions:vi(e.intent.delegate.actions),nonce:e.intent.delegate.nonce,maxBlockHeight:e.intent.delegate.maxBlockHeight,publicKey:e.intent.delegate.publicKey},workerCtx:e.ctx})).canonicalDelegateBorshB64u},expectedSigningDigestB64u:e.signingDigestB64u})}async function Di(e){let t=_i({materialActivation:e.materialActivation,materialFacts:e.materialFacts,walletId:e.walletId,operationId:e.operationId}),n=await Ei({ctx:e.ctx,thresholdSessionId:e.thresholdSessionId,scope:t,expiresAtMs:Date.now()+si,nearAccountId:e.nearAccountId,operationId:e.operationId,operationFingerprint:e.operationFingerprint,displayDigest:e.displayDigest,signingDigestB64u:e.signingDigestB64u,intent:e.intent}),r=Ze({tenantId:mi(k(e.materialFacts.runtimePolicyScope.orgId)),principalId:mi(D(String(e.walletId))),capabilityId:mi(A(e.materialActivation.capability)),operationId:mi(T(String(e.operationId))),operation:{capabilityKind:`near_ed25519_mpc_signing`,operationKind:e.intent.kind===`nep413_message_v1`?`near.sign_nep413_message`:`near.sign_delegate_action`},digests:{laneDigest:Xe(e.operationFingerprint),intentDigest:j(_(Uint8Array.from(n.admissionMaterial.intentDigest.bytes))),displayDigest:j(e.displayDigest)}});return{operation:{kind:`near_signature_only`,prepare:n,signingDigestB64u:e.signingDigestB64u,materialActivation:e.materialActivation},envelope:r}}function Oi(e){if(e.auth.kind!==`email_otp`)throw Error(`[SigningEngine][near] Email OTP step-up requires an Email OTP auth binding`);let t=e.preparation.hydration.authority;if(!t||String(t.walletId)!==String(e.walletId))throw Error(`[SigningEngine][near] Email OTP material authority changed`);return{kind:`email_otp`,authorityRef:t,providerSubjectId:e.auth.providerSubjectId,challengeId:e.challengeId,otpCode:e.otpCode}}function ki(e){switch(e.authorization.kind){case`passkey`:return{kind:`passkey`,authority:e.authorization.plannedPasskeyOperationStepUp.authority,credential:e.authorization.credential};case`email_otp`:return Oi({preparation:e.preparation,auth:Ai(e.auth),walletId:e.walletId,challengeId:e.authorization.challengeId,otpCode:e.authorization.otpCode});default:throw e.authorization,Error(`[SigningEngine][near] unsupported operation step-up authorization`)}}function Ai(e){if(e.kind!==`email_otp`)throw Error(`[SigningEngine][near] Email OTP step-up requires an Email OTP auth binding`);return e}function ji(e){if(!e)throw Error(`[SigningEngine][near] operation step-up proof is missing`);return e}function Mi(e){return e.authorization.kind===`operation_step_up`}async function Ni(e){if(e.issuedAuthorization)return e.issuedAuthorization;switch(e.proof.kind){case`passkey`:return await bn({relayerUrl:e.relayerUrl,normalSigningRequest:e.normalSigningRequest,displayDigest:e.displayDigest,proof:e.proof,credential:e.credential,materialRecovery:{kind:`not_requested`}});case`email_otp`:return await bn({relayerUrl:e.relayerUrl,normalSigningRequest:e.normalSigningRequest,displayDigest:e.displayDigest,proof:e.proof,credential:e.credential,materialRecovery:{kind:`not_requested`}});default:throw e.proof,Error(`[SigningEngine][near] unsupported operation step-up proof`)}}async function Pi(e){if(Mi(e)){let t=Ue(e.activeClient.metadata());if(oi({expected:e.authorization.prepared.materialActivation,actual:t}),e.authorization.prepared.signingDigestB64u!==e.signingDigestB64u)throw Error(`[SigningEngine][near] signature-only operation digest changed`);let n=e.authorization.prepared.prepare,r=await ci({ctx:e.ctx,walletId:e.walletId,relayerUrl:e.materialFacts.relayerUrl,proof:e.authorization.proof}),i=await Ni({issuedAuthorization:e.authorization.issuedAuthorization,relayerUrl:e.materialFacts.relayerUrl,normalSigningRequest:n.request,displayDigest:e.displayDigest,proof:e.authorization.proof,credential:r});if(n.request.scope.authorization.kind!==`operation_step_up`||i.kind!==`verified_step_up`)throw Error(`[SigningEngine][near] issued operation step-up evidence changed identity`);return{kind:`router_ab_ed25519_signature_only_normal_signing_result_v1`,authorization:`operation_step_up`,issuedAuthorization:i,...await wi({thresholdSessionId:e.thresholdSessionId,materialFacts:e.materialFacts,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,nearAccountId:e.nearAccountId,activeClient:e.activeClient,signingDigestB64u:e.signingDigestB64u,signingPayloadLabel:`signature-only payload digest`,prepare:n,credential:r,authorization:`operation_step_up`})}}let t=e.startedPrepare&&e.startedPrepare.displayDigest===e.displayDigest&&e.startedPrepare.signingDigestB64u===e.signingDigestB64u?e.startedPrepare:null;e.startedPrepare&&!t&&Li(e.startedPrepare);let n=t?.prepare??await Fi(e);return n?{kind:`router_ab_ed25519_signature_only_normal_signing_result_v1`,authorization:`reusable_wallet_session`,...await wi({thresholdSessionId:e.thresholdSessionId,walletSessionState:e.walletSessionState,sessionCoordinator:e.sessionCoordinator,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,nearAccountId:e.nearAccountId,activeClient:e.activeClient,signingDigestB64u:e.signingDigestB64u,signingPayloadLabel:`signature-only payload digest`,prepare:n,startedResponse:t?.response,credential:Zr({state:e.walletSessionState,thresholdSessionId:e.thresholdSessionId,nearAccountId:e.nearAccountId,thresholdKeyMaterial:e.thresholdKeyMaterial}).credential,authorization:e.authorization.kind})}:null}async function Fi(e){let t=gi({activeClient:e.activeClient,walletSessionState:e.walletSessionState,walletId:e.walletId,operationId:e.operationId});return t?await Ei({ctx:e.ctx,thresholdSessionId:e.thresholdSessionId,scope:t,expiresAtMs:hi({walletSessionExpiresAtMs:e.walletSessionState.signingWalletSession.expiresAtMs,requestedTtlMs:si}),nearAccountId:e.nearAccountId,operationId:e.operationId,operationFingerprint:e.operationFingerprint,displayDigest:e.displayDigest,signingDigestB64u:e.signingDigestB64u,intent:e.intent}):null}async function Ii(e){let t=await Fi(e);if(!t)return null;let n=Zr({state:e.walletSessionState,thresholdSessionId:e.thresholdSessionId,nearAccountId:e.nearAccountId,thresholdKeyMaterial:e.thresholdKeyMaterial}),r=performance.now(),i=gt({relayServerUrl:e.walletSessionState.relayerUrl,credential:n.credential,request:t.request});return i.catch(()=>{}),G(String(e.operationId),`prepare_sent`,r),{prepare:t,displayDigest:e.displayDigest,signingDigestB64u:e.signingDigestB64u,response:i}}function Li(e){e.response.catch(()=>{})}async function Ri(e){let t=await Ir({txSigningRequest:e.txSigningRequest,transactionContext:e.transactionContext,workerCtx:e.ctx}),n=fi(e.ctx),r=rr(e.txSigningRequest,`txSigningRequest`),i=await yt({scope:_i({materialActivation:e.materialActivation,materialFacts:e.materialFacts,walletId:e.walletId,operationId:e.operationId}),expiresAtMs:Date.now()+si,operationId:e.operationId,operationFingerprint:e.operationFingerprint,displayDigestB64u:e.displayDigest,nearAccountId:e.nearAccountId,nearNetworkId:n,transactions:[{receiverId:r.receiverId,actionFingerprint:await mt(r.actions)}],unsignedTransactionBorshB64u:t.unsignedTransactionBorshB64u,expectedSigningDigestB64u:t.signingDigestB64u}),a=Ze({tenantId:mi(k(e.materialFacts.runtimePolicyScope.orgId)),principalId:mi(D(String(e.walletId))),capabilityId:mi(A(e.materialActivation.capability)),operationId:mi(T(String(e.operationId))),operation:{capabilityKind:`near_ed25519_mpc_signing`,operationKind:`near.sign_transaction`},digests:{laneDigest:Xe(e.operationFingerprint),intentDigest:j(_(Uint8Array.from(i.admissionMaterial.intentDigest.bytes))),displayDigest:j(e.displayDigest)}});return{operation:{kind:`near_transaction`,prepare:i,unsignedTransactionBorshB64u:t.unsignedTransactionBorshB64u,signingDigestB64u:t.signingDigestB64u,materialActivation:e.materialActivation},envelope:a}}function zi(e){return e.authorization.kind===`operation_step_up`}function Bi(e){return zi(e)?e.materialFacts:{thresholdSessionId:e.walletSessionState.thresholdSessionId,signer:e.walletSessionState.signingLane.identity.signer,signingRootId:e.walletSessionState.signingRootId,signingRootVersion:e.walletSessionState.signingRootVersion,routerAbNormalSigning:e.walletSessionState.routerAbNormalSigning,runtimePolicyScope:e.walletSessionState.runtimePolicyScope,relayerUrl:e.walletSessionState.relayerUrl}}async function Vi(e,t){let n=fi(e.ctx),r=rr(e.txSigningRequest,`txSigningRequest`);return{nearNetworkId:n,parsedTransaction:r,operationFingerprint:U.signingOperationFingerprint(await Xn({nearAccountId:e.nearAccountId,nearNetworkId:n,relayerKeyId:e.thresholdKeyMaterial.relayerKeyId,signerPublicKey:e.thresholdKeyMaterial.publicKey,transactions:[r],unsignedTransactionBorshB64u:t.unsignedTransactionBorshB64u,signingDigestB64u:t.signingDigestB64u}))}}async function Hi(e,t,n){let r=gi({activeClient:e.activeClient,walletSessionState:e.walletSessionState,walletId:e.walletId,operationId:e.operationId});if(!r)throw Error(`[SigningEngine][near] Router A/B Ed25519 signing scope is missing`);return await yt({scope:r,expiresAtMs:hi({walletSessionExpiresAtMs:e.walletSessionState.signingWalletSession.expiresAtMs,requestedTtlMs:si}),operationId:e.operationId,operationFingerprint:n.operationFingerprint,displayDigestB64u:e.displayDigest,nearAccountId:e.nearAccountId,nearNetworkId:n.nearNetworkId,transactions:[{receiverId:n.parsedTransaction.receiverId,actionFingerprint:await mt(n.parsedTransaction.actions)}],unsignedTransactionBorshB64u:t.unsignedTransactionBorshB64u,expectedSigningDigestB64u:t.signingDigestB64u})}async function Ui(e){let t=await Ir({txSigningRequest:e.txSigningRequest,transactionContext:e.transactionContext,workerCtx:e.ctx}),n=await Hi(e,t,await Vi(e,t)),r=Zr({state:e.walletSessionState,thresholdSessionId:e.thresholdSessionId,nearAccountId:e.nearAccountId,thresholdKeyMaterial:e.thresholdKeyMaterial}),i=performance.now(),a=gt({relayServerUrl:e.walletSessionState.relayerUrl,credential:r.credential,request:n.request});return a.catch(()=>{}),G(String(e.operationId),`prepare_sent`,i),{prepare:n,displayDigest:e.displayDigest,signingDigestB64u:t.signingDigestB64u,response:a}}async function Wi(e){let t=Bi(e);if(!t.routerAbNormalSigning)throw Error(`[SigningEngine][near] Router A/B Ed25519 normal-signing state is missing`);if(!e.transactionContext)throw Error(`[SigningEngine][near] Router A/B Ed25519 transaction signing is missing transaction context from confirmation`);let n=zi(e),r=n?{unsignedTransactionBorshB64u:e.authorization.prepared.unsignedTransactionBorshB64u,signingDigestB64u:e.authorization.prepared.signingDigestB64u}:await Ir({txSigningRequest:e.txSigningRequest,transactionContext:e.transactionContext,workerCtx:e.ctx});if(y(r.signingDigestB64u).length!==32)throw Error(`Router A/B normal-signing NEAR payload digest must be 32 bytes`);let i=await Vi(e,r),a=null,o,s,c;if(n){o=e.authorization.prepared.prepare,s=await ci({ctx:e.ctx,walletId:e.walletId,relayerUrl:t.relayerUrl,proof:e.authorization.proof});let n=await Ni({issuedAuthorization:e.authorization.issuedAuthorization,relayerUrl:t.relayerUrl,normalSigningRequest:o.request,displayDigest:e.authorization.displayDigest,proof:e.authorization.proof,credential:s});if(o.request.scope.authorization.kind!==`operation_step_up`||n.kind!==`verified_step_up`)throw Error(`[SigningEngine][near] issued operation step-up evidence changed identity`);c=n}else a=e.startedPrepare&&e.startedPrepare.displayDigest===e.displayDigest&&e.startedPrepare.signingDigestB64u===r.signingDigestB64u?e.startedPrepare:null,e.startedPrepare&&!a&&Li(e.startedPrepare),o=a?a.prepare:await Hi(e,r,i),s=Zr({state:e.walletSessionState,thresholdSessionId:e.thresholdSessionId,nearAccountId:e.nearAccountId,thresholdKeyMaterial:e.thresholdKeyMaterial}).credential;e.ctx.beforeSigning?.();let l=zi(e)?await wi({thresholdSessionId:e.thresholdSessionId,materialFacts:t,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,nearAccountId:e.nearAccountId,activeClient:e.activeClient,signingDigestB64u:r.signingDigestB64u,signingPayloadLabel:`NEAR payload digest`,prepare:o,credential:s,authorization:`operation_step_up`}):await wi({thresholdSessionId:e.thresholdSessionId,walletSessionState:e.walletSessionState,sessionCoordinator:e.sessionCoordinator,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,nearAccountId:e.nearAccountId,activeClient:e.activeClient,signingDigestB64u:r.signingDigestB64u,signingPayloadLabel:`NEAR payload digest`,prepare:o,credential:s,authorization:`reusable_wallet_session`,startedResponse:a?.response}),u=await Lr({unsignedTransactionBorshB64u:r.unsignedTransactionBorshB64u,signingDigestB64u:r.signingDigestB64u,signatureB64u:l.signatureB64u,expectedNearAccountId:e.nearAccountId,expectedSignerPublicKey:e.thresholdKeyMaterial.publicKey,workerCtx:e.ctx}),d=await Rr({signedTransactionBorshB64u:u.signedTransactionBorshB64u,workerCtx:e.ctx}),f=u.transactionHash||d.transactionHash,p={type:de.SignTransactionsWithActionsSuccess,payload:{free:()=>void 0,success:!0,transactionHashes:[f],signedTransactions:[d.signedTransaction],logs:[`NEAR transaction signed through Router A/B normal signing`],error:void 0}};if(n){if(!c)throw Error(`[SigningEngine][near] operation step-up authorization was not issued`);return{kind:`router_ab_ed25519_near_transaction_normal_signing_result_v1`,authorization:`operation_step_up`,issuedAuthorization:c,okResponse:p}}return{kind:`router_ab_ed25519_near_transaction_normal_signing_result_v1`,authorization:`reusable_wallet_session`,okResponse:p}}const Gi=1e3,Ki=[120,180,250,350,500,700,1e3,1e3,1500,1500,2e3],qi=Symbol(`NearWalletSessionFundingAuthority`);function Ji(e=Gi){return new Promise(t=>{setTimeout(t,e)})}function Yi(e){let t=String(e.walletSessionToken||``).trim();if(!t)throw Error(`[SigningEngine][near] authenticated Wallet Session token is required for funding`);return t}function Xi(e){return{kind:`near_ed25519_funding_session`,signer:e.signingLane.identity.signer,thresholdSessionId:e.thresholdSessionId,walletSessionToken:e.walletSessionAuth.walletSessionToken}}function Zi(e){switch(e.kind){case`warm_session`:return`warm_session`;case`passkey`:return`passkey_reauth`;case`email_otp`:return`email_otp_reauth`;default:return $i(e)}}function Qi(e){switch(e){case`passkey`:return`passkey_reauth`;case`email_otp`:return`email_otp_reauth`;default:throw Error(`[SigningEngine][near] unsupported operation step-up funding method`)}}function $i(e){throw Error(`Unsupported NEAR funding authorization: ${String(e)}`)}function ea(e){let t=String(e.fundingSession.signer.account.wallet.walletId),n=String(e.fundingSession.signer.account.nearAccountId),r=e.request.operation;if(String(e.request.subject.walletId)!==t||String(e.request.subject.nearAccountId)!==n||e.request.subject.nearPublicKeyStr!==e.nearPublicKeyStr)throw Error(`[SigningEngine][near] funding request subject does not match authenticated lane`);if(String(r.operationId)!==String(e.signingOperation.operationId)||String(r.operationFingerprint)!==String(e.signingOperation.operationFingerprint)||r.intent!==e.signingOperation.intent||r.accountId!==n)throw Error(`[SigningEngine][near] funding request operation does not match signing operation`);if(e.request.signatureUses!==e.signatureUses)throw Error(`[SigningEngine][near] funding request signature use count mismatch`);if(String(e.fundingSession.thresholdSessionId).trim().length===0)throw Error(`[SigningEngine][near] funding authority threshold session mismatch`)}function ta(e){return{kind:`near_wallet_session_funding_authority`,provenance:e.provenance,request:e.request,thresholdSessionId:e.fundingSession.thresholdSessionId,walletSessionToken:Yi(e.fundingSession),[qi]:!0}}async function na(e){let t=e.authority.request,n=ot({chains:e.ctx.chains,walletId:String(t.subject.walletId),nearAccountId:String(t.subject.nearAccountId),nearPublicKeyStr:t.subject.nearPublicKeyStr}),r;for(let i=1;i<=12;i+=1)try{let r=await e.ctx.nonceCoordinator.reserveNearContext({lane:n,operation:t.operation,count:t.signatureUses,nearClient:e.ctx.nearClient});return{transactionContext:r.context,nonceLeases:r.leases.map(Ae),reservedLeases:r.leases}}catch(e){r=e,i<12&&await Ji(Ki[i-1]??Gi)}throw r instanceof Error?r:Error(`Funded NEAR account access key did not become available`)}async function ra(e){let t=e.authority.request,n=await We({relayerUrl:e.ctx.relayerUrl,walletId:String(t.subject.walletId),nearAccountId:String(t.subject.nearAccountId),nearPublicKeyStr:t.subject.nearPublicKeyStr,walletSessionToken:e.authority.walletSessionToken});if(!n.ok)throw Error(n.message||n.code||`Failed to fund implicit NEAR account`);return await na(e)}async function ia(e){switch(e.confirmation.readiness.kind){case`context_ready`:return e.confirmation.readiness;case`funding_required`:{ea({request:e.confirmation.readiness.request,fundingSession:Xi(e.walletSessionState),nearPublicKeyStr:e.nearPublicKeyStr,signingOperation:e.signingOperation,signatureUses:e.signatureUses});let t=ta({request:e.confirmation.readiness.request,fundingSession:Xi(e.walletSessionState),provenance:Zi(e.authorization)}),n=await ra({ctx:e.ctx,authority:t});return{kind:`context_ready`,transactionContext:n.transactionContext,nonceLeases:n.nonceLeases}}default:return aa(e.confirmation.readiness)}}function aa(e){throw Error(`Unsupported confirmed NEAR transaction readiness: ${String(e)}`)}async function oa(e){ea({request:e.request,fundingSession:e.fundingSession,nearPublicKeyStr:e.nearPublicKeyStr,signingOperation:e.signingOperation,signatureUses:e.signatureUses});let t=ta({request:e.request,fundingSession:e.fundingSession,provenance:Qi(e.method)}),n=await ra({ctx:e.ctx,authority:t});return{readiness:{kind:`context_ready`,transactionContext:n.transactionContext,nonceLeases:n.nonceLeases},reservedNonceLeases:n.reservedLeases}}const sa=new Map;function ca(e){let t=String(e||``).trim();if(!t)throw Error(`[SigningEngine][near] requestId is required`);return t}function la(e){sa.set(ca(e.requestId),e.fund)}function ua(e){sa.delete(String(e||``).trim())}const da={async fund(e){let t=ca(e.requestId),n=sa.get(t);if(!n)throw Error(`[SigningEngine][near] implicit-account funding is unavailable`);return sa.delete(t),await n(e.request)}};function fa(e){switch(e.kind){case`passkey_live`:case`email_otp_live`:return e.material.facts;case`passkey_sealed`:case`email_otp_sealed`:return e.facts;default:throw Error(`[SigningEngine][near] unsupported operation material`)}}async function pa(e,t){switch(e.hydration.kind){case`use_live_runtime`:case`rehydrate_material_activation`:return await t.resolve(e);case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] material requires public-anchor reauthorization`);case`blocked`:throw Error(`[SigningEngine][near] material hydration is blocked: ${e.hydration.reason}`);default:throw e.hydration,Error(`[SigningEngine][near] unsupported Ed25519 Yao hydration plan`)}}async function ma(e){if(e.method===`passkey`&&e.preparation.hydration.kind===`rehydrate_material_activation`){let t=await e.executor.preparePasskeyOperationStepUp(e.preparation);return{kind:`passkey_sealed`,materialActivation:t.materialActivation,facts:t.facts,rehydrate:t.rehydrate}}if(e.method===`email_otp`){let t=await e.executor.prepareEmailOtpOperationStepUp(e.preparation);switch(t.kind){case`live`:return{kind:`email_otp_live`,materialActivation:t.materialActivation,material:t.material};case`sealed`:return{kind:`email_otp_sealed`,materialActivation:t.materialActivation,facts:t.facts,authorizeAndRehydrate:t.authorizeAndRehydrate};default:throw Error(`[SigningEngine][near] unsupported Email OTP operation material`)}}let t=await pa(e.preparation,e.executor);return{kind:`passkey_live`,materialActivation:Ue(t.activeClient.metadata()),material:t}}async function ha(e){oi({expected:e.expectedActivation,actual:e.material.materialActivation});let t,n=null;if(e.kind===`email_otp_live`||e.kind===`email_otp_sealed`)if(e.kind===`email_otp_live`)t=e.material.material;else{let r=await e.material.authorizeAndRehydrate({normalSigningRequest:e.normalSigningRequest,displayDigest:e.displayDigest,proof:e.proof});t=r.material,n=r.issuedAuthorization}else t=e.material.kind===`passkey_live`?e.material.material:await e.material.rehydrate(e.credential);try{return oi({expected:e.expectedActivation,actual:Ue(t.activeClient.metadata())}),{material:t,issuedAuthorization:n}}catch(n){throw(e.material.kind===`passkey_sealed`||e.material.kind===`email_otp_sealed`)&&t.activeClient.dispose(),n}}async function ga(e){let t=await pa(e.preparation,e.executor);return{thresholdSessionId:t.facts.thresholdSessionId,material:t,walletSessionState:await e.executor.resolveWalletSessionState()}}function _a(e){if(!e)throw Error(`[SigningEngine][near] confirmed operation step-up is missing preparation`);return e}function va(e){if(!e)throw Error(`[SigningEngine][near] prepared operation step-up is missing`);if(e.kind!==`near_transaction`)throw Error(`[SigningEngine][near] prepared operation step-up is not a transaction`);return e}function ya(e){if(!e)throw Error(`[SigningEngine][near] transaction operation material is unavailable`);return e}function ba(e){e.owned&&e.resolved?.material.activeClient.dispose()}function xa(e,t){throw ba(e),t}async function Sa(e){return{material:await pa(e.preparation,e.executor),walletSessionState:await e.executor.resolveWalletSessionState()}}function Ca(e){if(!e)throw Error(`[SigningEngine][near] warm signing material was not prepared`);return e}async function wa(e){let t=await e.warmMaterial,n=await e.sessionCoordinator.resolveActiveAuthorizedRouterAbEd25519WalletSessionState({state:t.walletSessionState,nowMs:Date.now()});if(!n)return null;let r=await it([{receiverId:e.confirmationTransaction.receiverId,actions:e.confirmationTransaction.actions.map(nt)}]);return await Ui({ctx:e.ctx,thresholdSessionId:t.material.facts.thresholdSessionId,thresholdKeyMaterial:e.thresholdKeyMaterial,walletId:e.walletId,nearAccountId:e.nearAccountId,activeClient:t.material.activeClient,walletSessionState:n,operationId:e.operationId,displayDigest:r,txSigningRequest:e.txSigningRequest,transactionContext:e.readiness.transactionContext})}function Ta(){return null}async function Ea(e){if(e.authorization.kind===`passkey`){if(e.material.kind!==`passkey_live`&&e.material.kind!==`passkey_sealed`)throw Error(`[SigningEngine][near] passkey transaction material changed factor`);return await ha({kind:`passkey`,material:e.material,expectedActivation:e.prepared.materialActivation,credential:e.authorization.credential})}if(e.material.kind!==`email_otp_live`&&e.material.kind!==`email_otp_sealed`)throw Error(`[SigningEngine][near] Email OTP transaction material changed factor`);if(e.proof.kind!==`email_otp`)throw Error(`[SigningEngine][near] Email OTP transaction proof is missing`);return e.material.kind===`email_otp_live`?await ha({kind:`email_otp_live`,material:e.material,expectedActivation:e.prepared.materialActivation}):await ha({kind:`email_otp_sealed`,material:e.material,expectedActivation:e.prepared.materialActivation,normalSigningRequest:e.prepared.prepare.request,displayDigest:e.displayDigest,proof:e.proof})}function Z(e,t,n){try{e?.(xe({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}async function Da(e){let t=performance.now(),n=`failed`;try{if(!e.state)throw Error(`[SigningEngine][near] reusable Wallet Session state is unavailable`);let t=await e.coordinator.resolveActiveAuthorizedRouterAbEd25519WalletSessionState({state:e.state,nowMs:Date.now()});if(!t)throw Error(`[SigningEngine][near] reusable Wallet Session authorization is unavailable`);return n=`succeeded`,t}finally{G(e.operationId,`wallet_session_authorization`,t,n)}}async function Oa(e){let t=await ma({method:e.method,preparation:e.preparation,executor:e.executor}),n=fa(t);if(String(n.thresholdSessionId)!==e.expectedThresholdSessionId)throw Error(`[SigningEngine][near] prepared operation material changed threshold session`);return ni({requestId:e.requestId,build:async r=>{if(r.kind!==`near_transaction`)throw Error(`[SigningEngine][near] transaction step-up preparation kind changed`);if(r.operationId!==String(e.operation.operationId))throw Error(`[SigningEngine][near] operation step-up operation identity changed`);return await Ri({...e.operation,thresholdSessionId:n.thresholdSessionId,materialFacts:n,materialActivation:t.materialActivation,transactionContext:r.transactionContext,displayDigest:r.displayDigest})}}),la({requestId:e.requestId,fund:async t=>await oa({...e.funding,request:t,fundingSession:await e.executor.resolveFundingSession(),method:e.method})}),t}function ka(e){ri(e),ua(e)}function Aa(e){if(!e.readiness){ka(e.requestId);return}e.readiness.then(ka.bind(void 0,e.requestId),ka.bind(void 0,e.requestId))}function ja(e){return e.selection.kind===`authorization_required`}async function Ma(e){return ja(e)?await Na(e):await Pa(e)}async function Na(e){let{ctx:t,commandSubject:n,nearAccount:r,transaction:i,rpcCall:a,onEvent:o,confirmationConfigOverride:s,title:c,body:l,signerSlot:u,signingOperationState:d,signingSessionCoordinator:f,selection:p,yaoSigningPreparation:m,yaoMaterialExecutor:h,passkeyEd25519OperationStepUp:g,emailOtpEd25519StepUp:_}=e,v=d.operationId,y=p.candidate,b=L(r.accountId),ee=[];if(!t.touchConfirm)throw Error(`UiConfirm bridge not available for signing`);if(!f)throw Error(`[SigningEngine][near] production signing session coordinator is required`);let{thresholdKeyMaterial:te}=await Gn({materialExecutor:h,nearAccount:r,signerSlot:y.signerSlot,requestedSignerSlot:u,operationLabel:`signing`,warnings:ee}),x=Ra({nearAccountId:b,relayerUrl:t.relayerUrl,thresholdKeyMaterial:te}),ne={nearRpcUrl:a.nearRpcUrl||C(vt.network.chains),nearAccountId:b},{txSigningRequest:S,confirmationTransaction:w}=Kn({nearAccountId:String(b),transaction:i}),ie=rr(S,`txSigningRequest`),T=U.signingOperationFingerprint(await Yn({nearAccountId:b,nearNetworkId:re(t.chains||vt.network.chains),relayerKeyId:x.threshold.thresholdKeyMaterial.relayerKeyId,signerPublicKey:x.threshold.thresholdKeyMaterial.publicKey,transactions:[ie]}));f.bindCallerProvidedOperationIdToFingerprint({operationId:v,operationFingerprint:T});let E=Xe(T),D={kind:`deferred_ed25519_material_identity`,signer:qe({walletId:y.walletId,nearAccountId:y.nearAccountId,nearEd25519SigningKeyId:y.nearEd25519SigningKeyId,signerSlot:y.signerSlot}),materialActivation:y.materialActivation,thresholdSessionId:U.thresholdEd25519Session(y.thresholdSessionId)},ae={kind:H.OperationStepUp,lane:{identity:D,auth:y.auth,curve:`ed25519`,keyKind:`threshold_ed25519`,chainFamily:`near`,sessionOrigin:`per_operation`,storageSource:`sealed_restore`,retention:`single_use`,materialActivation:D.materialActivation,thresholdSessionId:D.thresholdSessionId}},O=_r(y.auth),k={operationId:v,operationFingerprint:T,intent:Ee.TransactionSign},A=await gr({signingAuthPlan:O,signingLaneAuth:y.auth,requiredSignatureUses:kr(i),operationFingerprintDigest:E,...g?{passkeyEd25519OperationStepUp:g}:{},..._?{emailOtpEd25519StepUp:_}:{}});if(A.kind===`warm_session`)throw Error(`[SigningEngine][near] deferred Ed25519 transaction cannot use warm session`);let j=kr(i),M=Oa({requestId:String(v),expectedThresholdSessionId:String(D.thresholdSessionId),method:A.kind,preparation:m,executor:h,operation:{ctx:t,thresholdKeyMaterial:x.threshold.thresholdKeyMaterial,walletId:n.walletSession.walletId,nearAccountId:b,operationId:v,operationFingerprint:T,txSigningRequest:S},funding:{ctx:t,nearPublicKeyStr:x.signingNearPublicKeyStr,signingOperation:k,signatureUses:j}}),N;try{N=await Nt({signingSessionPlan:ae,signingOperation:k,signingOperationState:d,runtime:t.touchConfirm,request:{ctx:{touchConfirm:t.touchConfirm},sessionId:String(v),chain:`near`,kind:`transaction`,...Mt({signingAuthPlan:A.confirmationAuthPayload.signingAuthPlan}),walletId:y.walletId,txSigningRequests:[w],rpcCall:ne,nearPublicKeyStr:x.signingNearPublicKeyStr,nearFundingRequest:{subject:{walletId:y.walletId,nearAccountId:b,nearPublicKeyStr:x.signingNearPublicKeyStr},operation:{...k,accountId:String(b)},signatureUses:j},confirmationConfigOverride:Pt({signingAuthPlan:A.confirmationAuthPayload.signingAuthPlan,override:s}),title:c,body:l,confirmationReadiness:{promise:M},onProgress:wr.bind(void 0,{onEvent:o,nearAccountId:b,signingAuthPlan:A.confirmationAuthPayload.signingAuthPlan})}})}finally{Aa({requestId:String(v),readiness:M})}let P=await M,oe=fa(P),F=Er({prepared:A,confirmation:N});if(F.kind===`warm_session`)throw Error(`[SigningEngine][near] deferred transaction requires operation step-up`);let se=ki({authorization:F,preparation:m,auth:y.auth,walletId:n.walletSession.walletId}),ce=va(ai({requestId:String(v),ref:_a(N.operationStepUpPreparation)})),le=await Ea({material:P,prepared:ce,displayDigest:N.intentDigest,authorization:F,proof:ji(se)});Z(o,b,{phase:B.STEP_07_AUTHENTICATION_COMPLETE,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},authMethod:It(A.confirmationAuthPayload.signingAuthPlan)});try{if(await t.nonceCoordinator.recoverDurableLeases({walletId:String(y.walletId)}),N.readiness.kind!==`context_ready`)throw Error(`[SigningEngine][near] implicit-account funding requires transaction context`);let e=await Wi({ctx:t,thresholdSessionId:oe.thresholdSessionId,activeClient:le.material.activeClient,materialFacts:oe,thresholdKeyMaterial:x.threshold.thresholdKeyMaterial,walletId:n.walletSession.walletId,nearAccountId:b,operationId:v,operationFingerprint:T,displayDigest:N.intentDigest,txSigningRequest:S,transactionContext:N.readiness.transactionContext,authorization:{kind:`operation_step_up`,prepared:ce,displayDigest:N.intentDigest,proof:ji(se),issuedAuthorization:le.issuedAuthorization}});if(!e||e.authorization!==`operation_step_up`)throw Error(`[SigningEngine][near] operation step-up transaction signing is unavailable`);li({prepared:ce,issuedAuthorization:e.issuedAuthorization});let r=La({okResponse:e.okResponse,nearAccountId:b,warnings:ee,nonceLeases:N.readiness.nonceLeases});return await Ia(t,N.readiness.nonceLeases),r}catch(e){throw ba({resolved:le,owned:P.kind===`passkey_sealed`||P.kind===`email_otp_sealed`}),e}}async function Pa({ctx:e,commandSubject:t,nearAccount:n,transaction:r,rpcCall:i,onEvent:a,confirmationConfigOverride:o,title:s,body:c,signerSlot:l,signingOperationState:u,signingSessionCoordinator:d,transactionOperation:f,ed25519SigningBoundary:p,passkeyEd25519OperationStepUp:m,emailOtpEd25519StepUp:h,yaoSigningPreparation:g,yaoMaterialExecutor:_}){let v=performance.now(),y=u.operationId,b=L(n.accountId),ee=e.relayerUrl,te=[],x=e.nonceCoordinator.recoverDurableLeases({walletId:String(t.walletSession.walletId)});x.catch(()=>{}),Z(a,b,{phase:B.STEP_02_REQUEST_PREPARED,status:`running`,message:`Loading threshold signing state`,interaction:{kind:`none`,overlay:`none`}});let{thresholdKeyMaterial:ne}=await Gn({materialExecutor:_,nearAccount:n,signerSlot:p.signingLane.identity.signer.signerSlot,requestedSignerSlot:l,operationLabel:`signing`,warnings:te}),S=Ra({nearAccountId:b,relayerUrl:ee,thresholdKeyMaterial:ne}),w={nearRpcUrl:i.nearRpcUrl||C(vt.network.chains),nearAccountId:b},{txSigningRequest:ie,confirmationTransaction:T}=Kn({nearAccountId:String(w.nearAccountId),transaction:r}),E=rr(ie,`txSigningRequest`),D=U.signingOperationFingerprint(await Yn({nearAccountId:b,nearNetworkId:re(e.chains||vt.network.chains),relayerKeyId:S.threshold.thresholdKeyMaterial.relayerKeyId,signerPublicKey:S.threshold.thresholdKeyMaterial.publicKey,transactions:[E]})),ae=Xe(D);if(!e.touchConfirm)throw Error(`UiConfirm bridge not available for signing`);let O=e.touchConfirm;if(!d)throw Error(`[SigningEngine][near] production signing session coordinator is required`);d.bindCallerProvidedOperationIdToFingerprint({operationId:y,operationFingerprint:D});let k=kr(r),A={operationId:y,operationFingerprint:D,intent:Ee.TransactionSign},j=async e=>await Ot({signingSessionPlan:p.signingSessionPlan,signingOperation:A,commandKind:e.commandKind,execute:e.execute}),M=p.thresholdSessionId,N=String(M||``).trim(),P=p.signingAuthPlan,oe=p.signingLane;if(!f)throw Error(`[SigningEngine][near] threshold transaction signing requires prepared transaction operation`);if(wt(P)&&P.thresholdSessionId!==M)throw Error(`[SigningEngine][near] warm-session auth plan must match prepared session identity`);let F={thresholdSessionId:wt(P)?P.thresholdSessionId:M,lane:oe,signingAuthPlan:P,confirmationAuthPayload:{signingAuthPlan:P},warmSessionReady:wt(P)},se=oe,ce=new Set,le=e=>{ce.has(e)||(ce.add(e),$e(`near`,tt({event:`auth_side_effect_started`,lane:se,sideEffect:e,phase:`confirmed`})))},ue=e=>{e.phase===`auth.passkey.prompt.started`&&le(`passkey_reauth`),wr({onEvent:a,nearAccountId:b,signingAuthPlan:F.confirmationAuthPayload.signingAuthPlan},e)},I=await gr({signingAuthPlan:P,signingLaneAuth:oe.auth,requiredSignatureUses:k,operationFingerprintDigest:ae,...m?{passkeyEd25519OperationStepUp:m}:{},...h?{emailOtpEd25519StepUp:h}:{}}),de=I.kind===`warm_session`?Sa({preparation:g,executor:_}):null;de?.catch(()=>{});let fe=I.confirmationAuthPayload;wt(fe.signingAuthPlan)&&Z(a,b,{phase:B.STEP_06_AUTH_WARM_SESSION_CLAIMED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{thresholdSessionId:fe.signingAuthPlan.thresholdSessionId,expiresAtMs:fe.signingAuthPlan.expiresAtMs,remainingUses:fe.signingAuthPlan.remainingUses}});let pe=!zt(u.current);pe&&Z(a,b,{phase:B.STEP_05_CONFIRMATION_DISPLAYED,status:`waiting_for_user`,message:`Opening confirmation prompt`,interaction:{kind:`transaction_confirmation`,overlay:`show`}});let me=I.kind===`warm_session`?null:Oa({requestId:N,expectedThresholdSessionId:N,method:I.kind,preparation:g,executor:_,operation:{ctx:e,thresholdKeyMaterial:S.threshold.thresholdKeyMaterial,walletId:t.walletSession.walletId,nearAccountId:b,operationId:A.operationId,operationFingerprint:D,txSigningRequest:ie},funding:{ctx:e,nearPublicKeyStr:S.signingNearPublicKeyStr,signingOperation:A,signatureUses:k}});G(String(y),`pre_confirmation`,v);let he=null,ge=n=>{he||!de||(he=wa({ctx:e,warmMaterial:de,sessionCoordinator:d,thresholdKeyMaterial:S.threshold.thresholdKeyMaterial,walletId:t.walletSession.walletId,nearAccountId:b,operationId:A.operationId,txSigningRequest:ie,confirmationTransaction:T,readiness:n}).catch(Ta))},_e=performance.now(),R;try{R=await Nt({signingSessionPlan:p.signingSessionPlan,signingOperation:A,signingOperationState:u,runtime:O,request:{ctx:{touchConfirm:O},sessionId:N,chain:`near`,kind:`transaction`,...Mt({signingAuthPlan:fe.signingAuthPlan}),...de?{onNearTransactionContextReady:ge}:{},walletId:String(oe.identity.signer.account.wallet.walletId),txSigningRequests:[T],rpcCall:w,nearPublicKeyStr:S.signingNearPublicKeyStr,nearFundingRequest:{subject:{walletId:oe.identity.signer.account.wallet.walletId,nearAccountId:b,nearPublicKeyStr:S.signingNearPublicKeyStr},operation:{...A,accountId:String(b)},signatureUses:k},confirmationConfigOverride:Pt({signingAuthPlan:fe.signingAuthPlan,override:o}),title:s,body:c,...me?{confirmationReadiness:{promise:me}}:{},onProgress:ue}})}finally{Aa({requestId:N,readiness:me})}let ve=performance.now();G(String(y),`confirmation`,_e);let ye=me?await me:null;pe&&Z(a,b,{phase:B.STEP_05_CONFIRMATION_APPROVED,status:`succeeded`,interaction:{kind:`transaction_confirmation`,overlay:`hide`}});let z=Er({prepared:I,confirmation:R}),be=z.kind===`warm_session`?null:ki({authorization:z,preparation:g,auth:f.lane.auth,walletId:t.walletSession.walletId}),xe=z.kind===`warm_session`?null:ai({requestId:N,ref:_a(R.operationStepUpPreparation)}),Se=z.kind===`warm_session`?null:await Ea({material:ya(ye),prepared:va(xe),displayDigest:R.intentDigest,authorization:z,proof:ji(be)}),Ce=ye?.kind===`passkey_sealed`||ye?.kind===`email_otp_sealed`,we=performance.now();try{await x,G(String(A.operationId),`durable_lease_recovery_wait`,we)}catch(e){throw G(String(A.operationId),`durable_lease_recovery_wait`,we,`failed`),ba({resolved:Se,owned:Ce}),e}let Te=!1,{canonicalThresholdSessionId:V,activeClient:H,walletSessionState:De,operationMaterialFacts:Oe,issuedAuthorization:ke,transactionContext:Ae,nonceLeaseRefs:je}=await j({commandKind:jt.PreparePayload,execute:async()=>{Z(a,b,{phase:B.STEP_08_SIGNER_PREPARE_STARTED,status:`running`,message:`Preparing NEAR signer`,interaction:{kind:`none`,overlay:`none`}});let t=performance.now(),n=z.kind===`warm_session`?{kind:`warm_session`,resolved:await Ca(de)}:{kind:`operation_step_up`,resolved:Se};G(String(A.operationId),`material_resolution_wait`,t);let r=(n.kind,n.resolved.material.facts.thresholdSessionId),i=(n.kind,n.resolved.material.activeClient),o=n.kind===`warm_session`?n.resolved.walletSessionState:null,s=performance.now(),c=n.kind===`warm_session`?await ia({confirmation:R,ctx:e,nearPublicKeyStr:S.signingNearPublicKeyStr,walletSessionState:o,authorization:z,signingOperation:A,signatureUses:k}):R.readiness.kind===`context_ready`?R.readiness:(()=>{throw Error(`[SigningEngine][near] operation step-up confirmation did not resolve a transaction context`)})();return G(String(A.operationId),`transaction_context`,s),Z(a,b,{phase:B.STEP_07_AUTHENTICATION_COMPLETE,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},authMethod:F.warmSessionReady?`warm_session`:F.signingAuthPlan.method}),Z(a,b,{phase:B.STEP_08_SIGNER_PREPARE_SUCCEEDED,status:`succeeded`,message:`NEAR signer ready`,interaction:{kind:`none`,overlay:`none`},data:{signer:`threshold-ed25519`,thresholdSessionId:r,clientBaseSource:`yao_active_client`}}),{canonicalThresholdSessionId:r,activeClient:i,walletSessionState:o,operationMaterialFacts:n.kind===`operation_step_up`?n.resolved.material.facts:null,issuedAuthorization:n.kind===`operation_step_up`?n.resolved.issuedAuthorization:null,transactionContext:c.transactionContext,nonceLeaseRefs:c.nonceLeases}}}).catch(xa.bind(void 0,{resolved:Se,owned:Ce})),Me=async t=>{Te||!je.length||await Fa(e,je,`signing_failed`).catch(e=>{console.warn(`[SigningEngine][near][transaction] failed to release nonce leases`,{originalError:t instanceof Error?t.message:String(t||``),releaseError:e instanceof Error?e.message:String(e||``)})})},Ne=async n=>{Z(a,b,{phase:B.STEP_10_COMMIT_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let r=z.kind===`warm_session`?await Wi({ctx:e,thresholdSessionId:V,activeClient:n,sessionCoordinator:d,walletSessionState:await Da({state:De,coordinator:d,operationId:String(A.operationId)}),thresholdKeyMaterial:S.threshold.thresholdKeyMaterial,walletId:t.walletSession.walletId,nearAccountId:b,operationId:A.operationId,operationFingerprint:D,displayDigest:R.intentDigest,txSigningRequest:ie,transactionContext:Ae,authorization:{kind:`reusable_wallet_session`},startedPrepare:he?await he:null}):await Wi({ctx:e,thresholdSessionId:V,activeClient:n,materialFacts:Oe,thresholdKeyMaterial:S.threshold.thresholdKeyMaterial,walletId:t.walletSession.walletId,nearAccountId:b,operationId:A.operationId,operationFingerprint:D,displayDigest:R.intentDigest,txSigningRequest:ie,transactionContext:Ae,authorization:{kind:`operation_step_up`,prepared:va(xe),displayDigest:R.intentDigest,proof:z.kind===`passkey`?{kind:`passkey`,authority:z.plannedPasskeyOperationStepUp.authority,credential:z.credential}:{...Oi({preparation:g,auth:f.lane.auth,walletId:t.walletSession.walletId,challengeId:z.challengeId,otpCode:z.otpCode})},issuedAuthorization:ke}});if(r)return r.okResponse;throw Error(`[SigningEngine][near] Router A/B Ed25519 signing is unavailable`)};return await j({commandKind:jt.Sign,execute:async()=>{try{let t=await Ne(H);Te=!0;let n=performance.now();await Ia(e,je),G(String(A.operationId),`nonce_lease_commit`,n);let r=performance.now(),i=La({okResponse:t,nearAccountId:b,warnings:te,nonceLeases:je});return G(String(A.operationId),`transaction_assembly`,r),G(String(A.operationId),`confirmed_to_signed`,ve),Z(a,b,{phase:B.STEP_11_TRANSACTION_SIGNED,status:`succeeded`,interaction:{kind:`none`,overlay:`hide`}}),Z(a,b,{phase:B.STEP_15_COMPLETED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{operation:`sign`}}),i}catch(e){let t=e instanceof Error?e:Error(String(e));throw await Me(t),ba({resolved:Se,owned:Ce}),t}}})}async function Fa(e,t,n){t.length&&await Promise.all(t.map(t=>e.nonceCoordinator.release({leaseId:t.leaseId,operationId:t.operationId,operationFingerprint:t.operationFingerprint,reason:n})))}async function Ia(e,t){t.length&&await Promise.all(t.map(t=>e.nonceCoordinator.markSigned({leaseId:t.leaseId,operationId:t.operationId,operationFingerprint:t.operationFingerprint})))}function La(e){let t=e.okResponse.payload.signedTransactions||[];if(t.length!==1)throw Error(`Expected one signed transaction but received ${t.length}`);let n=t[0];if(!n||!n.transaction||!n.signature)throw Error(`Incomplete signed transaction data received`);let r=e.nonceLeases?.[0],i=e.okResponse.payload.transactionHashes?.[0];if(!i)throw Error(`Signed transaction is missing its hash`);let a=n.serverDispatch;return{signedTransaction:new Fn({transaction:n.transaction,signature:n.signature,borsh_bytes:Array.from(n.borshBytes||[]),transactionHash:i,...r?{nonceLease:r}:{},...a?{serverDispatch:a}:{}}),nearAccountId:L(e.nearAccountId),logs:[...e.okResponse.payload.logs||[],...e.warnings],...r?{nonceLease:r}:{}}}function Ra(e){let t=e.thresholdKeyMaterial;if(!t)throw Error(`Missing threshold key material for ${e.nearAccountId}`);let n=String(t.publicKey||``).trim();if(!n)throw Error(`Missing threshold signing public key for ${e.nearAccountId}`);let r=String(e.relayerUrl||``).trim();if(!r)throw Error(`Missing relayerUrl (required for threshold-signer)`);let i=g(t.participants.map(e=>e.id));if(!i||i.length<2)throw Error(`Invalid threshold signing participantIds (expected >=2 participants, got [${(i||[]).join(`,`)}])`);return{signingNearPublicKeyStr:n,threshold:{relayerUrl:r,thresholdKeyMaterial:t}}}const za=e=>typeof e==`string`?e:_e(ge(e.keyData));function Q(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?null:Math.round(e)}function Ba(e){if(e==null||!l(e))return;let t=e;if(t.kind!==`registration_confirmation_diagnostics_v1`)return;let n=Q(t.workerReadyMs),r=Q(t.workerRequestRoundTripMs),i=Q(t.workerResponseValidationMs),a=Q(t.requestSetupMs),o=Q(t.promptUserMs),s=Q(t.promptElementDefineMs),c=Q(t.promptMountMs),u=Q(t.promptHostFirstUpdateMs),d=Q(t.promptHostInteractiveMs),f=Q(t.promptConfirmEventMs),p=Q(t.promptDecisionWaitMs),m=Q(t.credentialCreateStartMs),h=Q(t.credentialCreateMs),g=Q(t.credentialSerializeMs),_=Q(t.duplicateRetryCount),v=Q(t.mainThreadTotalMs);if(!(n==null||r==null||i==null||a==null||o==null||s==null||c==null||u==null||d==null||f==null||p==null||m==null||h==null||g==null||_==null||v==null))return{kind:`registration_confirmation_diagnostics_v1`,workerReadyMs:n,workerRequestRoundTripMs:r,workerResponseValidationMs:i,requestSetupMs:a,promptUserMs:o,promptElementDefineMs:s,promptMountMs:c,promptHostFirstUpdateMs:u,promptHostInteractiveMs:d,promptConfirmEventMs:f,promptDecisionWaitMs:p,credentialCreateStartMs:m,credentialCreateMs:h,credentialSerializeMs:g,duplicateRetryCount:_,mainThreadTotalMs:v}}function Va(e){if(e==null)return;if(!l(e))throw Error(`Invalid transactionContext: expected object`);let{nearPublicKeyStr:t,nextNonce:n,txBlockHeight:r,txBlockHash:i,accessKeyInfo:a}=e,o=f(t,`transactionContext.nearPublicKeyStr`),s=f(n,`transactionContext.nextNonce`),c=f(r,`transactionContext.txBlockHeight`),u=f(i,`transactionContext.txBlockHash`),d=a;if(d!=null&&!l(d))throw Error(`Invalid transactionContext.accessKeyInfo: expected object`);return d??={nonce:0},{nearPublicKeyStr:o,nextNonce:s,txBlockHeight:c,txBlockHash:u,accessKeyInfo:d}}function Ha(e){if(e==null)return;let t=Ie(e);if(t.type!==`public-key`)throw Error(`Invalid credential.type: expected "public-key"`);let{id:n,rawId:r,response:i,authenticatorAttachment:a}=t;if(f(n,`credential.id`),f(r,`credential.rawId`),!l(i))throw Error(`Invalid credential.response: expected object`);let{clientDataJSON:o,attestationObject:s,transports:c}=i;if(f(o,`credential.response.clientDataJSON`),f(s,`credential.response.attestationObject`),!Array.isArray(c))throw Error(`Invalid credential.response.transports: expected string[]`);for(let e of c)if(typeof e!=`string`)throw Error(`Invalid credential.response.transports item: expected string`);if(a!=null&&typeof a!=`string`)throw Error(`Invalid credential.authenticatorAttachment: expected string | undefined`);return t}function Ua(e){if(!l(e))throw Error(`Invalid response payload: expected object`);let{confirmed:t,requestId:n,intentDigest:r,credential:i,transactionContext:a,registrationDiagnostics:o,error:s}=e,c=f(n,`requestId`),u=r==null?``:f(r,`intentDigest`),d=i==null?void 0:Ha(i);if(!d)throw Error(`Missing registration credential`);let p=a==null?void 0:Va(a),m=Ba(o),h=s==null?void 0:f(s,`error`);return{confirmed:!!t,requestId:c,intentDigest:u,credential:d,...p?{transactionContext:p}:{},...m?{registrationDiagnostics:m}:{},...h==null?{}:{error:h}}}function Wa(e){let t=e.selectedLane.identity.signer,n=he(e.commandSubject.walletSession.walletId),r=String(e.commandSubject.nearAccount.accountId);if(t.account.wallet.walletId!==n||String(t.account.nearAccountId)!==r)throw Error(`[SigningEngine][near] selected Ed25519 lane does not match command subject`);return{walletId:n,nearAccountId:r}}function Ga(e){let t=e.selectedLane.identity.signer,n={walletId:t.account.wallet.walletId,nearAccountId:t.account.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot,walletSessionId:e.selectedLane.walletSessionId,quotaId:e.selectedLane.quotaId,thresholdSessionId:e.selectedLane.thresholdSessionId};switch(e.selectedLane.auth.kind){case`voiceid`:return Je({...n,auth:e.selectedLane.auth,storageSource:`login`});case`passkey`:return Je({...n,auth:e.selectedLane.auth,storageSource:`login`});case`email_otp`:{let t=e.preparation.authorization.kind===`authorized`;return Je({...n,auth:e.selectedLane.auth,retention:t?`session`:`single_use`,sessionOrigin:t?`login`:`per_operation`})}default:throw e.selectedLane.auth,Error(`[SigningEngine][near] unsupported selected Ed25519 auth binding`)}}function Ka(e){let t=U.thresholdEd25519Session(e.selectedLane.thresholdSessionId);switch(e.preparation.authorization.kind){case`authorized`:{let n=e.preparation.authorization.authorization.status,r=n.remainingUses,i=n.expiresAtMs,a=i<=Date.now()?`expired`:r<e.requiredSignatureUses?`exhausted`:`ready`;return{readiness:a===`expired`?{status:`expired`,curve:`ed25519`,thresholdSessionId:t,expiresAtMs:i}:{status:a,curve:`ed25519`,thresholdSessionId:t,remainingUses:r,expiresAtMs:i},expiresAtMs:i,remainingUses:r,forceFreshAuth:a!==`ready`}}case`authorization_required`:return{readiness:{status:`missing_session`,curve:`ed25519`,thresholdSessionId:t},expiresAtMs:0,remainingUses:0,forceFreshAuth:!0};default:throw e.preparation.authorization,Error(`[SigningEngine][near] unsupported material authorization state`)}}function qa(e){Wa(e);let t=Math.max(1,Math.floor(Number(e.requiredSignatureUses)||1)),n=Ga(e),r=Ka({selectedLane:e.selectedLane,preparation:e.preparation,requiredSignatureUses:t});return et(`near`,n,{reason:`near_threshold_auth_plan`}),{thresholdSessionId:U.thresholdEd25519Session(e.selectedLane.thresholdSessionId),lane:n,coordinatorInput:{lane:n,readiness:r.readiness,expiresAtMs:r.expiresAtMs,remainingUses:r.remainingUses,forceFreshAuth:e.forceFreshAuth||r.forceFreshAuth}}}function Ja(e){let{lane:t}=e.context,n=e.resolvedSigningSession,r=n.signingSessionPlan;if(r.kind===H.NotReady)throw Error(`[SigningEngine][near] signing session is not ready: ${r.reason}`);return{signingAuthPlan:Rt({plan:r,accountId:String(t.identity.signer.account.nearAccountId),intent:Ee.TransactionSign,curve:`ed25519`,expiresAtMs:n.expiresAtMs,remainingUses:n.remainingUses})}}function Ya(e,t){if(!t)throw Error(`[SigningEngine][near] ${e} operation step-up preparation is missing`);return t}function Xa(e,t){if(!t||t.kind!==`near_signature_only`)throw Error(`[SigningEngine][near] ${e} operation step-up preparation kind changed`);return t}function Za(e,t){if(!t)throw Error(`[SigningEngine][near] ${e} operation step-up material is missing`);return t}function Qa(e,t){if(!t)throw Error(`[SigningEngine][near] ${e} operation signing digest is missing`);return t}function $a(e){if(!e)throw Error(`[SigningEngine][near] reusable Wallet Session authorization is unavailable`);return e}async function eo(e){if(e.authorization.kind===`passkey`){if(e.material.kind!==`passkey_live`&&e.material.kind!==`passkey_sealed`)throw Error(`[SigningEngine][near] passkey ${e.label} material changed factor`);return await ha({kind:`passkey`,material:e.material,expectedActivation:e.prepared.materialActivation,credential:e.authorization.credential})}if(e.material.kind!==`email_otp_live`&&e.material.kind!==`email_otp_sealed`)throw Error(`[SigningEngine][near] Email OTP ${e.label} material changed factor`);if(!e.emailOtpProof)throw Error(`[SigningEngine][near] Email OTP ${e.label} proof is missing`);return e.material.kind===`email_otp_live`?await ha({kind:`email_otp_live`,material:e.material,expectedActivation:e.prepared.materialActivation}):await ha({kind:`email_otp_sealed`,material:e.material,expectedActivation:e.prepared.materialActivation,normalSigningRequest:e.prepared.prepare.request,displayDigest:e.displayDigest,proof:e.emailOtpProof})}function to(e){if(e.selection.kind===`authorized`){let t=qa({requiredSignatureUses:1,commandSubject:e.commandSubject,forceFreshAuth:e.forceFreshAuth,selectedLane:e.selection.selectedLane,preparation:e.preparation}),n={signingSessionPlan:xn({lane:t.coordinatorInput.lane,readiness:t.coordinatorInput.readiness,forceFreshAuth:t.coordinatorInput.forceFreshAuth}),readiness:t.coordinatorInput.readiness,expiresAtMs:t.coordinatorInput.expiresAtMs||0,remainingUses:t.coordinatorInput.remainingUses||0};return{signingAuthPlan:Ja({context:t,resolvedSigningSession:n}).signingAuthPlan,signingSessionPlan:n.signingSessionPlan}}let t=e.selection.candidate,n=_r(t.auth),r={kind:`deferred_ed25519_material_identity`,signer:qe({walletId:t.walletId,nearAccountId:t.nearAccountId,nearEd25519SigningKeyId:t.nearEd25519SigningKeyId,signerSlot:t.signerSlot}),materialActivation:t.materialActivation,thresholdSessionId:U.thresholdEd25519Session(t.thresholdSessionId)};return{signingAuthPlan:n,signingSessionPlan:{kind:H.OperationStepUp,lane:{identity:r,auth:t.auth,curve:`ed25519`,keyKind:`threshold_ed25519`,chainFamily:`near`,sessionOrigin:`per_operation`,storageSource:`sealed_restore`,retention:`single_use`,materialActivation:r.materialActivation,thresholdSessionId:r.thresholdSessionId}}}}async function no(e,t){let n=await gr({signingAuthPlan:t.signingAuthPlan,signingLaneAuth:e.auth,requiredSignatureUses:1,operationFingerprintDigest:Xe(e.signingOperation.operationFingerprint),passkeyEd25519OperationStepUp:t.passkeyEd25519OperationStepUp,emailOtpEd25519StepUp:t.emailOtpEd25519StepUp});if(n.kind===`warm_session`)return{preparedStepUp:n,operationStepUp:null};let r=await ma({method:n.kind,preparation:e.preparation,executor:e.executor}),i=fa(r),a=await e.computeSigningDigestB64u();return ni({requestId:String(e.signingOperation.operationId),build:async t=>{if(t.kind!==`near_signature_only`)throw Error(`[SigningEngine][near] ${e.label} operation step-up preparation kind changed`);return await Di({ctx:e.ctx,thresholdSessionId:i.thresholdSessionId,materialFacts:i,walletId:e.walletId,nearAccountId:e.nearAccountId,materialActivation:r.materialActivation,operationId:e.signingOperation.operationId,operationFingerprint:e.signingOperation.operationFingerprint,displayDigest:t.displayDigest,signingDigestB64u:a,intent:e.intent})}}),{preparedStepUp:n,operationStepUp:{material:r,signingDigestB64u:a}}}async function ro(e,t){let n=String(e.signingOperation.operationId);try{return await At({signingSessionPlan:e.signingSessionPlan,signingOperation:e.signingOperation,runtime:t.touchConfirm,request:{ctx:{touchConfirm:t.touchConfirm},sessionId:n,chain:`near`,...t.request,...Mt({signingAuthPlan:t.signingAuthPlan}),walletId:String(e.walletId),nearAccountId:e.nearAccountId,nearPublicKeyStr:t.nearPublicKeyStr,title:t.title,body:t.body,confirmationConfigOverride:Pt({signingAuthPlan:t.signingAuthPlan,override:t.confirmationConfigOverride}),onProgress:wr.bind(void 0,{onEvent:t.onEvent,nearAccountId:e.nearAccountId,signingAuthPlan:t.signingAuthPlan})}})}finally{ri(n)}}function io(e,t,n){let r=Er({prepared:t.preparedStepUp,confirmation:n});if(r.kind===`warm_session`)return{kind:`warm_session`,displayDigest:n.intentDigest,stepUpAuthorization:r};let i=ki({authorization:r,preparation:e.preparation,auth:e.auth,walletId:e.walletId}),a=Xa(e.label,ai({requestId:String(e.signingOperation.operationId),ref:Ya(e.label,n.operationStepUpPreparation)}));return{kind:`operation_step_up`,displayDigest:n.intentDigest,stepUpAuthorization:r,proof:i,prepared:a,...Za(e.label,t.operationStepUp)}}async function ao(e,t,n,r){if(t.preparedStepUp.kind!==`warm_session`)return null;let i=await ga({preparation:e.preparation,executor:e.executor}),a=$a(await n.resolveActiveAuthorizedRouterAbEd25519WalletSessionState({state:i.walletSessionState,nowMs:Date.now()})),o=await Ii({ctx:e.ctx,thresholdSessionId:i.thresholdSessionId,activeClient:i.material.activeClient,walletSessionState:a,walletId:e.walletId,thresholdKeyMaterial:e.thresholdKeyMaterial,nearAccountId:e.nearAccountId,operationId:e.signingOperation.operationId,operationFingerprint:e.signingOperation.operationFingerprint,displayDigest:r,signingDigestB64u:await e.computeSigningDigestB64u(),intent:e.intent});return o?{resolved:i,started:o}:null}async function oo(e,t,n=null){if(t.kind===`warm_session`){let r=n?.resolved??await ga({preparation:e.preparation,executor:e.executor});return{kind:`warm_session`,thresholdSessionId:r.thresholdSessionId,displayDigest:t.displayDigest,resolved:r,startedPrepare:n?.started}}return n&&Li(n.started),{kind:`operation_step_up`,thresholdSessionId:fa(t.material).thresholdSessionId,displayDigest:t.displayDigest,resolved:await eo({label:e.label,material:t.material,prepared:t.prepared,displayDigest:t.displayDigest,authorization:t.stepUpAuthorization,emailOtpProof:t.proof.kind===`email_otp`?t.proof:null}),proof:t.proof,prepared:t.prepared,signingDigestB64u:t.signingDigestB64u}}async function so(e,t,n){let r=t.kind===`warm_session`?await e.computeSigningDigestB64u():Qa(e.label,t.signingDigestB64u),i=t.kind===`warm_session`?await Pi({ctx:e.ctx,thresholdSessionId:t.thresholdSessionId,activeClient:t.resolved.material.activeClient,sessionCoordinator:n,walletSessionState:$a(await n.resolveActiveAuthorizedRouterAbEd25519WalletSessionState({state:t.resolved.walletSessionState,nowMs:Date.now()})),walletId:e.walletId,thresholdKeyMaterial:e.thresholdKeyMaterial,nearAccountId:e.nearAccountId,operationId:e.signingOperation.operationId,operationFingerprint:e.signingOperation.operationFingerprint,displayDigest:t.displayDigest,signingDigestB64u:r,intent:e.intent,authorization:{kind:`reusable_wallet_session`},startedPrepare:t.startedPrepare}):await Pi({ctx:e.ctx,thresholdSessionId:t.thresholdSessionId,activeClient:t.resolved.material.activeClient,materialFacts:t.resolved.material.facts,walletId:e.walletId,thresholdKeyMaterial:e.thresholdKeyMaterial,nearAccountId:e.nearAccountId,operationId:e.signingOperation.operationId,operationFingerprint:e.signingOperation.operationFingerprint,displayDigest:t.displayDigest,signingDigestB64u:r,intent:e.intent,authorization:{kind:`operation_step_up`,prepared:t.prepared,proof:t.proof,issuedAuthorization:t.resolved.issuedAuthorization}});if(!i)throw Error(`[SigningEngine][near] Router A/B Ed25519 ${e.label} signing is unavailable`);return t.kind===`operation_step_up`&&i.authorization===`operation_step_up`&&li({prepared:t.prepared,issuedAuthorization:i.issuedAuthorization}),{signingDigestB64u:r,signatureB64u:i.signatureB64u,signerPublicKey:i.signerPublicKey}}async function co(e,t){return await Ot({signingSessionPlan:e.signingSessionPlan,signingOperation:e.signingOperation,commandKind:jt.Sign,execute:async()=>{try{return await t()}catch(e){throw e instanceof Error?e:Error(String(e))}}})}function $(e,t,n){try{e?.(xe({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function lo(e){switch(e.kind){case`warm_session`:return`warm_session`;case`passkey`:return`passkey`;case`email_otp`:return`email_otp`;default:return uo(e)}}function uo(e){throw Error(`[SigningEngine][near] unsupported prepared step-up: ${String(e)}`)}async function fo({ctx:e,commandSubject:t,nearAccount:n,delegate:r,rpcCall:i,onEvent:a,confirmationConfigOverride:o,title:s,body:c,operationId:l,signerSlot:u,signingSessionCoordinator:d,forceFreshAuth:f,passkeyEd25519OperationStepUp:p,emailOtpEd25519StepUp:m,yaoSigningPreparation:h,yaoMaterialExecutor:g,selection:_}){let v=_.kind===`authorized`?_.selectedLane.auth:_.candidate.auth,y=_.kind===`authorized`?_.selectedLane.identity.signer.signerSlot:_.candidate.signerSlot,b=L(n.accountId),ee=e.relayerUrl,te={nearRpcUrl:i.nearRpcUrl||C(vt.network.chains),nearAccountId:b},x=[],ne=e.touchConfirm;if(!ne)throw Error(`UiConfirm bridge not available for delegate signing`);let{signingAuthPlan:S,signingSessionPlan:w}=to({selection:_,commandSubject:t,forceFreshAuth:f,preparation:h});$(a,b,{phase:B.STEP_02_REQUEST_PREPARED,status:`running`,message:`Loading threshold signing state`,interaction:{kind:`none`,overlay:`none`}});let{thresholdKeyMaterial:ie}=await Gn({materialExecutor:g,nearAccount:n,signerSlot:y,requestedSignerSlot:u,operationLabel:`delegate signing`,warnings:x}),T=po({nearAccountId:b,relayerUrl:ee,thresholdKeyMaterial:ie,providedDelegatePublicKey:r.publicKey,warnings:x}),E=qn({nearAccountId:b,delegate:r,signingPublicKey:T.delegatePublicKeyStr}),D={...E.workerDelegate,actions:E.workerDelegate.actions.map((e,t)=>ar(e,`delegate.actions[${t}]`))},ae={operationId:l,operationFingerprint:U.signingOperationFingerprint(await Qn({nearAccountId:b,nearNetworkId:re(e.chains||vt.network.chains),relayerKeyId:T.threshold.thresholdKeyMaterial.relayerKeyId,signerPublicKey:T.delegatePublicKeyStr,delegate:D})),intent:Ee.TransactionSign},O={label:`delegate`,ctx:e,walletId:t.walletSession.walletId,nearAccountId:b,auth:v,signingSessionPlan:w,signingOperation:ae,thresholdKeyMaterial:T.threshold.thresholdKeyMaterial,preparation:h,executor:g,intent:{kind:`near_delegate_action_v1`,delegate:D},computeSigningDigestB64u:async()=>(await Nr({delegate:E.workerDelegate,workerCtx:e})).signingDigestB64u},k=await no(O,{signingAuthPlan:S,passkeyEd25519OperationStepUp:p,emailOtpEd25519StepUp:m}),A=k.preparedStepUp.confirmationAuthPayload;wt(A.signingAuthPlan)&&$(a,b,{phase:B.STEP_06_AUTH_WARM_SESSION_CLAIMED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{thresholdSessionId:A.signingAuthPlan.thresholdSessionId,expiresAtMs:A.signingAuthPlan.expiresAtMs,remainingUses:A.signingAuthPlan.remainingUses}});let j=await ao(O,k,d,await it([{receiverId:E.confirmationDelegate.receiverId,actions:E.confirmationDelegate.actions.map(nt)}])),M=performance.now();$(a,b,{phase:B.STEP_05_CONFIRMATION_DISPLAYED,status:`waiting_for_user`,message:`Opening confirmation prompt`,interaction:{kind:`transaction_confirmation`,overlay:`show`}});let N=await ro(O,{touchConfirm:ne,signingAuthPlan:A.signingAuthPlan,nearPublicKeyStr:T.signingNearPublicKeyStr,onEvent:a,title:s,body:c,confirmationConfigOverride:o,request:{kind:`delegate`,delegate:E.confirmationDelegate,rpcCall:te}});G(String(l),`confirmation`,M),$(a,b,{phase:B.STEP_05_CONFIRMATION_APPROVED,status:`succeeded`,interaction:{kind:`transaction_confirmation`,overlay:`hide`}});let P=io(O,k,N),oe=await Ot({signingSessionPlan:w,signingOperation:ae,commandKind:jt.PreparePayload,execute:async()=>{$(a,b,{phase:B.STEP_08_SIGNER_PREPARE_STARTED,status:`running`,message:`Preparing NEAR signer`,interaction:{kind:`none`,overlay:`none`}});let e=await oo(O,P,j);return $(a,b,{phase:B.STEP_07_AUTHENTICATION_COMPLETE,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},authMethod:lo(k.preparedStepUp)}),$(a,b,{phase:B.STEP_08_SIGNER_PREPARE_SUCCEEDED,status:`succeeded`,message:`NEAR signer ready`,interaction:{kind:`none`,overlay:`none`},data:{signer:`threshold-ed25519`,thresholdSessionId:e.thresholdSessionId,clientBaseSource:`yao_active_client`}}),e}}),F=await co(O,async()=>{$(a,b,{phase:B.STEP_10_COMMIT_STARTED,status:`running`,interaction:{kind:`none`,overlay:`none`}});let t=await so(O,oe,d),n=await yi({ctx:e,delegate:E.workerDelegate,signingDigestB64u:t.signingDigestB64u,signatureB64u:t.signatureB64u});return{type:de.SignDelegateActionSuccess,payload:{success:!0,hash:n.hash,signedDelegate:n.signedDelegate,logs:[`Delegate action signed through Router A/B normal signing`],error:void 0}}});return $(a,b,{phase:B.STEP_11_TRANSACTION_SIGNED,status:`succeeded`,interaction:{kind:`none`,overlay:`hide`}}),$(a,b,{phase:B.STEP_15_COMPLETED,status:`succeeded`,interaction:{kind:`none`,overlay:`none`},data:{operation:`sign_delegate`,hash:F.payload.hash}}),{signedDelegate:F.payload.signedDelegate,hash:F.payload.hash,nearAccountId:L(b),logs:[...F.payload.logs||[],...x]}}function po(e){let t=_e(za(e.providedDelegatePublicKey)),n=e.thresholdKeyMaterial;if(!n)throw Error(`Missing threshold key material for ${e.nearAccountId}`);let r=_e(n.publicKey);if(!r)throw Error(`Missing threshold signing public key for ${e.nearAccountId}`);if(t&&t!==r&&e.warnings.push(`Delegate public key ${t} does not match threshold signer key; using ${r}`),!String(e.relayerUrl||``).trim())throw Error(`Missing relayerUrl (required for threshold-signer)`);let i=g(n.participants.map(e=>e.id));if(!i||i.length<2)throw Error(`Invalid threshold signing participantIds (expected >=2 participants, got [${(i||[]).join(`,`)}])`);return{signingNearPublicKeyStr:r,delegatePublicKeyStr:r,threshold:{thresholdKeyMaterial:n}}}async function mo({ctx:e,commandSubject:t,nearAccount:n,signingSessionCoordinator:r,payload:i,forceFreshAuth:a,passkeyEd25519OperationStepUp:o,emailOtpEd25519StepUp:s,yaoSigningPreparation:c,yaoMaterialExecutor:l,selection:u,onEvent:d}){let f=u.kind===`authorized`?u.selectedLane.auth:u.candidate.auth,p=u.kind===`authorized`?u.selectedLane.identity.signer.signerSlot:u.candidate.signerSlot,m=i.operationId,h=performance.now(),g=e.relayerUrl,_=n.accountId,b=e.touchConfirm;if(!b)throw Error(`UiConfirm bridge not available for NEP-413 signing`);let{signingAuthPlan:ee,signingSessionPlan:te}=to({selection:u,commandSubject:t,forceFreshAuth:a,preparation:c}),{thresholdKeyMaterial:x}=await Gn({materialExecutor:l,nearAccount:n,signerSlot:p,requestedSignerSlot:i.signerSlot,operationLabel:`NEP-413 signing`}),ne=ho({nearAccountId:_,relayerUrl:g,thresholdKeyMaterial:x}),S={operationId:m,operationFingerprint:U.signingOperationFingerprint(await Zn({nearAccountId:_,nearNetworkId:re(e.chains||vt.network.chains),relayerKeyId:ne.threshold.thresholdKeyMaterial.relayerKeyId,signerPublicKey:ne.threshold.thresholdKeyMaterial.publicKey,message:i.message,recipient:i.recipient,nonce:i.nonce,callbackUrl:i.callbackUrl})),intent:Ee.TransactionSign},C={label:`NEP-413`,ctx:e,walletId:t.walletSession.walletId,nearAccountId:_,auth:f,signingSessionPlan:te,signingOperation:S,thresholdKeyMaterial:ne.threshold.thresholdKeyMaterial,preparation:c,executor:l,intent:{kind:`nep413_message_v1`,message:i.message,recipient:i.recipient,nonce:i.nonce,callbackUrl:i.callbackUrl},computeSigningDigestB64u:async()=>(await Mr({message:i.message,recipient:i.recipient,nonce:i.nonce,callbackUrl:i.callbackUrl,workerCtx:e})).signingDigestB64u},w=await no(C,{signingAuthPlan:ee,passkeyEd25519OperationStepUp:o,emailOtpEd25519StepUp:s}),ie=await ao(C,w,r,await rt({nearAccountId:_,recipient:i.recipient,message:i.message}));G(String(m),`pre_confirmation`,h);let T=performance.now(),E=await ro(C,{touchConfirm:b,signingAuthPlan:w.preparedStepUp.confirmationAuthPayload.signingAuthPlan,nearPublicKeyStr:ne.nearPublicKey,onEvent:d,title:i.title,body:i.body,confirmationConfigOverride:i.confirmationConfigOverride,request:{kind:`nep413`,message:i.message,recipient:i.recipient}});G(String(m),`confirmation`,T);let D=performance.now(),ae=io(C,w,E),O=await Ot({signingSessionPlan:te,signingOperation:S,commandKind:jt.PreparePayload,execute:async()=>await oo(C,ae,ie)}),k=await co(C,async()=>{let e=await so(C,O,r);return{type:de.SignNep413MessageSuccess,payload:{accountId:_,publicKey:e.signerPublicKey,signature:v(y(e.signatureB64u)),state:i.state??void 0}}});return G(String(m),`confirmed_to_signed`,D),{success:!0,accountId:k.payload.accountId,publicKey:k.payload.publicKey,signature:k.payload.signature,state:k.payload.state}}function ho(e){let t=e.thresholdKeyMaterial;if(!t)throw Error(`Missing threshold key material for ${e.nearAccountId}`);let n=String(t.publicKey||``).trim();if(!n)throw Error(`Missing threshold signing public key for ${e.nearAccountId}`);if(!String(e.relayerUrl||``).trim())throw Error(`Missing relayerUrl (required for threshold-signer)`);let r=g(t.participants.map(e=>e.id));if(!r||r.length<2)throw Error(`Invalid threshold signing participantIds (expected >=2 participants, got [${(r||[]).join(`,`)}])`);return{nearPublicKey:n,threshold:{thresholdKeyMaterial:t}}}async function go(e){if(e.chain!==`near`)throw Error(`[NearSigningFlow] invalid chain`);return e.kind===`transactionWithActions`?(_o(e.payload),await Ma(e.payload)):e.kind===`delegateAction`?(yo(e.payload),await fo(e.payload)):e.kind===`nep413`?(bo(e.payload),await mo(e.payload)):e}function _o(e){let t=String(e.nearAccount?.accountId||``).trim();if(!t)throw Error(`[NearSigningFlow] nearAccount is required`);if(String(e.rpcCall?.nearAccountId||``).trim()!==t)throw Error(`[NearSigningFlow] rpcCall.nearAccountId must match nearAccount.accountId`);let n=e.transactions;Array.isArray(n)&&Ar(n),vo(e.transaction,0)}function vo(e,t){if(!String(e?.receiverId||``).trim())throw Error(`[NearSigningFlow] transactions[${t}].receiverId is required`);let n=Array.isArray(e?.actions)?e.actions:[];if(n.length===0)throw Error(`[NearSigningFlow] transactions[${t}].actions must be non-empty`);n.forEach(Fe)}function yo(e){let t=String(e.nearAccount?.accountId||``).trim();if(!t)throw Error(`[NearSigningFlow] nearAccount is required`);if(String(e.rpcCall?.nearAccountId||``).trim()!==t)throw Error(`[NearSigningFlow] rpcCall.nearAccountId must match nearAccount.accountId`);if(!String(e.delegate?.receiverId||``).trim())throw Error(`[NearSigningFlow] delegate.receiverId is required`);let n=Array.isArray(e.delegate?.actions)?e.delegate.actions:[];if(n.length===0)throw Error(`[NearSigningFlow] delegate.actions must be non-empty`);n.forEach(e=>Fe(Ne(e)))}function bo(e){let t=String(e.nearAccount?.accountId||``).trim();if(!t)throw Error(`[NearSigningFlow] nearAccount is required for NEP-413`);if(String(e.payload?.accountId||``).trim()!==t)throw Error(`[NearSigningFlow] payload.accountId must match nearAccount.accountId`);if(!String(e.payload?.recipient||``).trim())throw Error(`[NearSigningFlow] recipient is required for NEP-413`);if(!String(e.payload?.message||``).trim())throw Error(`[NearSigningFlow] message is required for NEP-413`)}var xo=e({signDelegateAction:()=>ls,signNear:()=>To});function So(e){if(!(e instanceof dt))return;let t=e.authorizationDecision;if(!(!t||t.kind!==`step_up_required`||!(`request_id`in t.step_up)))return{kind:`step_up_required`,reason:t.reason,step_up:t.step_up}}function Co(e){let t=So(e),n=ct(e);return t?st(n??{kind:`exhausted`,source:`server_prepare`,detail:`Server requires owner operation step-up`}):n?.kind===`in_flight`?st(n):null}async function wo(e){if(e.failure?.kind!==`expired`)return;let t=Ct({source:{kind:`ed25519`,laneIdentity:Ke(e.lane)},expiresAtMs:e.expiresAtMs,detectedAtMs:Date.now()});if((await e.coordinator.invalidateExpiredWalletSession({state:t,source:be.serverRejection})).kind===`unavailable`)throw Error(`[SigningEngine][near] expired Wallet Session cleanup failed`)}async function To(e,t){let n=e.getSignerWorkerContext(),r=t.kind===`transactionWithActions`?ie(n.touchConfirm?.getContext().surfaceMeasurementBinding)??null:null;if(r&&r.assertPending(),e={...e,prepareNearEd25519YaoMaterialBoundary:Eo.bind(null,e.prepareNearEd25519YaoMaterialBoundary.bind(e),r),getSignerWorkerContext:r?ps.bind(null,n,r.beforeSigning):e.getSignerWorkerContext},t.kind===`transactionWithActions`)return await as(e,t.args);if(t.kind===`delegateAction`)return await ls(e,t.args);if(t.kind===`nep413`)return await fs(e,t.args);throw Error(`[SigningEngine] unsupported near signing intent: ${String(t.kind||``)}`)}function Eo(e,t,n){let r=V(n.materialIdentity?n.materialIdentity.auth:n.auth);if(r===`voiceid`&&!t)throw Error(`VoiceID requires a reviewed NEAR transfer.`);return t?.assertAuthMethodPolicy(r),e(n)}function Do(){let e=ee(32,`NEAR transaction signing operation IDs`);return U.signingOperation(`near-transaction-sign:${e}`)}function Oo(e){return e.state===`missing`?{state:e.state,curve:e.curve,chain:e.chain}:{authMethod:V(e.auth),walletId:e.walletId,nearAccountId:e.nearAccountId,nearEd25519SigningKeyId:e.nearEd25519SigningKeyId,signerSlot:e.signerSlot,state:e.state,source:e.source||`unknown`,...e.authorizationState===`authorized`?{walletSessionId:e.authorization.operationCredential.walletSessionId,quotaId:e.authorization.session.quotaId}:{},thresholdSessionId:e.thresholdSessionId,remainingUses:e.remainingUses,expiresAtMs:e.expiresAtMs}}function ko(e){let t=e?.candidates.ed25519.near||[];return{generation:e?.generation||0,candidateCount:t.length,candidates:t.map(Oo)}}function Ao(e,t,n){try{e?.(xe({...n,flowId:`signing:near:${String(t)}:${n.phase}`,accountId:String(t)}))}catch{}}function jo(e){if(Ge(e.signingLane.identity)!==Ge(e.transactionLane.identity))throw Error(`[SigningEngine][near] prepared signing lane drifted from selected transaction lane`)}function Mo(e,t){let n=e.identity.signer,r=t.identity.signer;return String(n.account.wallet.walletId)===String(r.account.wallet.walletId)&&String(n.account.nearAccountId)===String(r.account.nearAccountId)&&String(n.nearEd25519SigningKeyId)===String(r.nearEd25519SigningKeyId)&&n.signerSlot===r.signerSlot&&Oe(e.auth)===Oe(t.auth)}function No(e){let t=e.readiness.status;return t===`ready`?{status:`ready`,remainingUses:Math.max(0,Math.floor(Number(e.readiness.remainingUses)||0)),expiresAtMs:Math.max(0,Math.floor(Number(e.readiness.expiresAtMs)||0))}:t===`expired`||t===`exhausted`||t===`status_unknown`?t===`status_unknown`?{status:t,reason:`trusted wallet budget status is unavailable`}:{status:t}:t===`auth_unavailable`||t===`status_unavailable`?{status:t,reason:t}:{status:`status_unavailable`,reason:t}}function Po(e){if(e.curve!==`ed25519`||e.keyKind!==`threshold_ed25519`)throw Error(`[SigningEngine][near] prepared signing lane is not Ed25519`);if(e.chainFamily!==`near`)throw Error(`[SigningEngine][near] prepared Ed25519 lane must target NEAR`);let t=String(e.thresholdSessionId||``).trim(),n=String(e.walletSessionId||``).trim(),r=String(e.quotaId||``).trim();if(!t||!n||!r)throw Error(`[SigningEngine][near] prepared Ed25519 lane is missing session identity`);return{...e,curve:`ed25519`,keyKind:`threshold_ed25519`,chainFamily:`near`,walletSessionId:U.walletSession(n),quotaId:U.walletSessionQuota(r),thresholdSessionId:U.thresholdEd25519Session(t)}}async function Fo(e){let t=e.preparedOperation,n=t.lane;et(`near`,n,{reason:`near_transaction_auth_planning`});let r=e.commandSubject.nearAccount.accountId,i={accountId:r,intent:Ee.TransactionSign,curve:`ed25519`},a=t.signingSessionPlan;if(a.kind===H.NotReady)throw console.warn(`[SigningEngine][near][ed25519] transaction auth planning not ready`,{nearAccountId:r,authMethod:V(n.auth),reason:a.reason,readiness:t.readiness.status,walletSessionId:n.walletSessionId,quotaId:n.quotaId,thresholdSessionId:n.thresholdSessionId,retention:n.retention,remainingUses:t.remainingUses,expiresAtMs:t.expiresAtMs}),a.reason===`policy_blocked`?Error(`[SigningEngine] NEAR operation requires passkey authentication after Email OTP login`):Error(`[SigningEngine][near] signing session is not ready: ${a.reason}`);return{signingAuthPlan:Rt({plan:a,accountId:i.accountId,intent:i.intent,curve:i.curve,expiresAtMs:t.expiresAtMs,remainingUses:t.remainingUses}),signingLane:n}}function Io(e){let t=String(e.providedThresholdSessionId||``).trim(),n=String(e.identity.thresholdSessionId||``).trim();if(t&&t!==n)throw Error(`[SigningEngine][near] transaction thresholdSessionId must match prepared Ed25519 identity`);return n}function Lo(e){switch(e.authorization.kind){case`authorized`:return!1;case`authorization_required`:return!0;default:throw e.authorization,Error(`[SigningEngine][near] unsupported material authorization state`)}}function Ro(e){if(e.authorization.kind!==`authorized`)throw Error(`[SigningEngine][near] reusable Wallet Session authorization is unavailable`);return e.authorization.authorization.status.expiresAtMs}async function zo(e){let t={walletId:he(e.commandSubject.walletSession.walletId),nearAccountId:L(e.commandSubject.nearAccount.accountId)};return e.materialIdentity?await e.deps.prepareNearEd25519YaoMaterialBoundary({...t,materialIdentity:e.materialIdentity}):await e.deps.prepareNearEd25519YaoMaterialBoundary({...t,laneIdentity:e.selectedLane.identity,auth:e.selectedLane.auth})}function Bo(e,t){return U.signingOperation(e.createSigningSessionId(`near-${t}-operation`))}function Vo(e){return{kind:`prepared_near_transaction_execution`,thresholdSessionId:e.thresholdSessionId,signingSessionPlan:e.preparedSigningSession.preparedOperation.signingSessionPlan,signingAuthPlan:e.preparedSigningSession.signingAuthPlan,signingLane:e.preparedSigningSession.signingLane,signingSessionCoordinator:e.signingSessionCoordinator,transactionOperation:e.preparedSigningSession.transactionOperation,passkeyEd25519OperationStepUp:e.passkeyEd25519OperationStepUp,emailOtpEd25519StepUp:e.emailOtpEd25519StepUp}}function Ho(e){return ut({walletId:String(e.walletId),curve:`ed25519`,walletSessionId:String(e.prepared.signingLane.walletSessionId),quotaId:String(e.prepared.signingLane.quotaId),projectionVersion:`server-owned`,authorityKey:Oe(e.prepared.signingLane.auth),targetKey:`near:${String(e.nearAccountId)}`})}function Uo(e){if(e.prepared.kind!==`authorized`)throw Error(`[SigningEngine][near] deferred Ed25519 material has no reusable session`);return ut({walletId:String(e.walletId),curve:`ed25519`,walletSessionId:String(e.prepared.selectedLane.walletSessionId),quotaId:String(e.prepared.selectedLane.quotaId),projectionVersion:`projection-unadmitted`,authorityKey:Oe(e.prepared.selectedLane.auth),targetKey:`near:${String(e.nearAccountId)}`})}function Wo(e){if(e.auth.kind!==`passkey`)return;let t=e.auth;return{prepare:async()=>{let n=e.signer,r=await Ko({authorityRef:Go(e.preparation),walletId:n.account.wallet.walletId,rpId:t.rpId,credentialIdB64u:t.credentialIdB64u});return{thresholdSessionId:e.thresholdSessionId,authority:r}}}}function Go(e){switch(e.hydration.kind){case`use_live_runtime`:case`rehydrate_material_activation`:case`reauthorize_public_anchor`:return e.hydration.authority;case`blocked`:throw Error(`[SigningEngine][near] blocked Passkey material has no authority`);default:throw e.hydration,Error(`[SigningEngine][near] unsupported Passkey material authority`)}}async function Ko(e){let t=ve({walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.authorityRef.walletAuthMethodId});if(!t)throw Error(`[SigningEngine][near] exact Passkey step-up authority is invalid`);let n=await ye({authority:t});if(n.walletId!==e.authorityRef.walletId||n.walletAuthMethodId!==e.authorityRef.walletAuthMethodId||n.authorityDigest!==e.authorityRef.authorityDigest)throw Error(`[SigningEngine][near] exact Passkey step-up authority changed`);return t}function qo(e){if(e.auth.kind!==fe.emailOtp||typeof e.deps.requestEmailOtpEd25519SigningChallenge!=`function`||!e.preparation.hydration.materialActivation)return;if(String(e.signer.account.wallet.walletId)!==String(e.commandSubject.walletSession.walletId)||String(e.signer.account.nearAccountId)!==String(e.commandSubject.nearAccount.accountId))throw Error(`[SigningEngine][near] Email OTP step-up lane changed subject`);let t=async t=>{let n=await e.deps.requestEmailOtpEd25519SigningChallenge({walletSession:e.commandSubject.walletSession,operationFingerprintDigest:t.operationFingerprintDigest});return Ao(e.onEvent,e.commandSubject.nearAccount.accountId,{phase:B.STEP_06_AUTH_EMAIL_OTP_INPUT_REQUIRED,status:`waiting_for_user`,interaction:{kind:`otp_input`,overlay:`show`},data:{emailHint:n.emailHint,demoOtpCode:at(n.delivery)}}),n};return{prepare:t,resend:t}}async function Jo(e){let t=Gt({availableLanes:await ns({deps:e.deps,commandSubject:e.commandSubject,authMethod:null}),intent:$o({commandSubject:e.commandSubject,signerSlot:e.signerSlot,authSelectionPolicy:{kind:`any`},operationUsesNeeded:1})});if(!t.ok)throw Error(`[SigningEngine][near] signature-only signing requires exact Ed25519 material`);if(t.kind===`authorization_required`){let n=t.candidate,r=qe({walletId:n.walletId,nearAccountId:n.nearAccountId,nearEd25519SigningKeyId:n.nearEd25519SigningKeyId,signerSlot:n.signerSlot}),i={kind:`near_ed25519_material_identity`,signer:r,auth:n.auth,thresholdSessionId:U.thresholdEd25519Session(n.thresholdSessionId)},a=await zo({deps:e.deps,commandSubject:e.commandSubject,materialIdentity:i});return{kind:`authorization_required`,candidate:n,materialIdentity:i,forceFreshAuth:!0,passkeyEd25519OperationStepUp:Wo({auth:n.auth,signer:r,thresholdSessionId:i.thresholdSessionId,preparation:a.preparation})||null,emailOtpEd25519StepUp:qo({deps:e.deps,commandSubject:e.commandSubject,auth:n.auth,signer:r,preparation:a.preparation,onEvent:e.onEvent})||null,yaoSigningPreparation:a.preparation,yaoMaterialExecutor:a.executor}}let n=t.lane,r=await zo({deps:e.deps,commandSubject:e.commandSubject,selectedLane:n});return{kind:`authorized`,selectedLane:n,forceFreshAuth:e.attempt.forceFreshAuth||Lo(r.preparation),passkeyEd25519OperationStepUp:Wo({auth:n.auth,signer:n.identity.signer,thresholdSessionId:n.identity.thresholdSessionId,preparation:r.preparation})||null,emailOtpEd25519StepUp:qo({deps:e.deps,commandSubject:e.commandSubject,auth:n.auth,signer:n.identity.signer,preparation:r.preparation,onEvent:e.onEvent})||null,yaoSigningPreparation:r.preparation,yaoMaterialExecutor:r.executor}}async function Yo(e){let t=St({materialActivation:e.materialActivation});return await e.deps.withThresholdEd25519CommitQueue({queueKey:t,nearAccountId:e.nearAccountId,enabled:!0,task:e.task})}async function Xo(e){let t=e.availableLanes,n=Gt({availableLanes:t,intent:$o({commandSubject:e.commandSubject,signerSlot:e.input.signerSlot,authSelectionPolicy:{kind:`any`},operationUsesNeeded:kr(e.input.transaction)})});if(!n.ok||n.kind!==`authorization_required`)return null;let r=n.candidate,i=qe({walletId:r.walletId,nearAccountId:r.nearAccountId,nearEd25519SigningKeyId:r.nearEd25519SigningKeyId,signerSlot:r.signerSlot}),a={kind:`near_ed25519_material_identity`,signer:i,auth:r.auth,thresholdSessionId:U.thresholdEd25519Session(r.thresholdSessionId)},o=await zo({deps:e.deps,commandSubject:e.commandSubject,materialIdentity:a});return{candidate:r,preparation:o.preparation,executor:o.executor,passkeyEd25519OperationStepUp:Wo({auth:r.auth,signer:i,thresholdSessionId:a.thresholdSessionId,preparation:o.preparation})||null,emailOtpEd25519StepUp:qo({deps:e.deps,commandSubject:e.commandSubject,auth:r.auth,signer:i,preparation:o.preparation,onEvent:e.input.onEvent})||null}}function Zo(e){switch(e.hydration.kind){case`use_live_runtime`:case`rehydrate_material_activation`:return e.hydration.materialActivation;case`reauthorize_public_anchor`:throw Error(`[SigningEngine][near] retired public material cannot enter the material commit queue`);case`blocked`:throw Error(`[SigningEngine][near] blocked material cannot enter the material commit queue: ${e.hydration.reason}`)}throw e.hydration,Error(`[SigningEngine][near] unsupported material hydration plan`)}function Qo(e){let t=e.authSelectionPolicy||null;if(!t)return null;let n=Vt(Bt(Ht($o({commandSubject:e.commandSubject,signerSlot:e.signerSlot,authSelectionPolicy:t,operationUsesNeeded:e.operationUsesNeeded})),{availableLanes:e.availableLanes}));if(n.tag===`LaneSelected`){if(n.lane.curve!==`ed25519`||n.availableLane.curve!==`ed25519`)throw Error(`[SigningEngine][near] Ed25519 selector returned a non-Ed25519 lane`);return n}if(n.failure.kind===`no_candidate`)return null;throw Error(`[SigningEngine][near] Ed25519 transaction lane selection failed: ${n.failure.kind}`)}function $o(e){return{walletId:he(e.commandSubject.walletSession.walletId),curve:`ed25519`,chain:`near`,signerSelection:es({nearAccountId:e.commandSubject.nearAccount.accountId,signerSlot:e.signerSlot}),authSelectionPolicy:e.authSelectionPolicy,operationUsesNeeded:e.operationUsesNeeded}}function es(e){if(e.signerSlot===void 0)return{kind:`near_account`,nearAccountId:e.nearAccountId};let t=z(e.signerSlot);if(t===null)throw Error(`[SigningEngine][near] signerSlot must be a positive safe integer`);return{kind:`signer_slot`,nearAccountId:e.nearAccountId,signerSlot:t}}function ts(e){return Qo({availableLanes:e.availableLanes,authSelectionPolicy:{kind:`any`},commandSubject:e.commandSubject,signerSlot:e.signerSlot,operationUsesNeeded:e.operationUsesNeeded})}async function ns(e){let t=e.commandSubject.nearAccount.accountId,n=e.commandSubject.walletSession.walletId;if(typeof e.deps.readAvailableSigningLanesForSigning!=`function`)throw Error(`[SigningEngine][near] transaction signing requires available signing lanes reader`);let r=await e.deps.resolveOwnerLaneScope(n);return await e.deps.readAvailableSigningLanesForSigning({walletId:n,curve:`ed25519`,ownerScope:r,...e.authMethod?{authMethod:e.authMethod}:{}}).catch(e=>(console.warn(`[SigningEngine][near] available signing lanes read failed`,{nearAccountId:t,error:e instanceof Error?e.message:String(e||`unknown error`)}),null))}async function rs(e){let t=e.commandSubject.nearAccount.accountId,n=Math.max(1,Math.floor(Number(e.operationUsesNeeded)||1)),r=e.selectedLane.lane,i=qa({commandSubject:e.commandSubject,selectedLane:r,preparation:e.preparation,forceFreshAuth:e.forceFreshAuth,requiredSignatureUses:n}),a=i.lane;jo({signingLane:a,transactionLane:e.selectedLane.lane});let o={readiness:i.coordinatorInput.readiness,expiresAtMs:i.coordinatorInput.expiresAtMs,remainingUses:i.coordinatorInput.remainingUses};r.auth.kind===`email_otp`&&o.readiness.status!==`ready`&&console.warn(`[SigningEngine][near][email-otp] Ed25519 pre-confirm readiness is not ready`,{nearAccountId:t,readiness:o.readiness.status,thresholdSessionId:r.thresholdSessionId,walletSessionId:r.walletSessionId,quotaId:r.quotaId,retention:a.retention,remainingUses:o.remainingUses,expiresAtMs:o.expiresAtMs,requiredSignatureUses:n}),$e(`near`,tt({event:`pre_confirm_readiness_checked`,lane:a,readinessStatus:o.readiness.status,phase:`pre_confirm`}));let s=Kt(e.selectedLane,No({readiness:o.readiness,expiresAtMs:o.expiresAtMs,remainingUses:o.remainingUses})),c=Ut(s),l=Po(a),u={readiness:o.readiness,expiresAtMs:o.expiresAtMs,remainingUses:o.remainingUses};return{lane:a,transactionLane:e.selectedLane.lane,transactionIntent:e.selectedLane.intent,readiness:u,availableLanesGeneration:e.availableLanes?.generation||0,metadata:{transactionLane:e.selectedLane.lane,transactionOperation:c,transactionReadinessState:s,identity:l,availableLanesGeneration:e.availableLanes?.generation||0,readiness:u}}}async function is(e){let t=e.commandSubject.nearAccount.accountId,n=kr(e.input.transaction),r=e.availableLanes,i=ts({commandSubject:e.commandSubject,availableLanes:r,signerSlot:e.input.signerSlot,operationUsesNeeded:n});if(!i)throw console.warn(`[SigningEngine][near][ed25519] exact transaction lane selection failed ${JSON.stringify({nearAccountId:t,signerSlot:e.input.signerSlot??null,requiredSignatureUses:n,availableLanes:ko(r)})}`),Error(`[SigningEngine][near] Ed25519 transaction signing requires an exact selected lane`);let a={kind:`account_class`,authMethod:V(i.lane.auth)},o=await zo({deps:e.deps,commandSubject:e.commandSubject,selectedLane:i.lane});if(o.preparation.authorization.kind===`authorized`){let t=o.preparation.authorization.authorization;if(i.lane.walletSessionId!==t.operationCredential.walletSessionId||i.lane.quotaId!==t.session.quotaId){r=await ns({deps:e.deps,commandSubject:e.commandSubject,authMethod:V(i.lane.auth)});let a=ts({commandSubject:e.commandSubject,availableLanes:r,signerSlot:e.input.signerSlot,operationUsesNeeded:n});if(!a||!Mo(i.lane,a.lane)||a.lane.walletSessionId!==t.operationCredential.walletSessionId||a.lane.quotaId!==t.session.quotaId)throw Error(`[SigningEngine][near] material restoration changed the Wallet Session without an exact refreshed lane`);i=a}}let s=e.forceFreshAuth===!0||Lo(o.preparation),c=await Wt({intent:$o({commandSubject:e.commandSubject,signerSlot:e.input.signerSlot,authSelectionPolicy:a,operationUsesNeeded:n}),coordinator:e.signingSessionCoordinator,forceFreshAuth:s,sensitiveOperationPolicy:e.input.sensitivePolicy||pe.inheritSessionPolicy,onPlannerTrace:e=>Qe(`near`,e),lifecycleAdapter:{prepare:async()=>{let t=await rs({deps:e.deps,commandSubject:e.commandSubject,signingSessionCoordinator:e.signingSessionCoordinator,availableLanes:r,selectedLane:i,preparation:o.preparation,forceFreshAuth:s,operationUsesNeeded:n});return{...t,metadata:t.metadata}}}}),l=c.thresholdOperation,u=c.transactionOperation,d=l.lane,f=u.lane,p=l.metadata.identity,{signingAuthPlan:m}=await Fo({commandSubject:e.commandSubject,preparedOperation:l});return{preparation:o.preparation,executor:o.executor,signingAuthPlan:m,signingLane:d,transactionLane:f,identity:p,thresholdSessionId:U.thresholdEd25519Session(Io({providedThresholdSessionId:e.input.thresholdSessionId,identity:p})),availableLanesGeneration:l.availableLanesGeneration,preparedOperation:l,transactionOperation:u}}async function as(e,t){let n=performance.now();await e.touchConfirm.openTransactionPreparationModal({chain:`near`,walletLabel:String(t.commandSubject.nearAccount.accountId),txSigningRequests:[t.transaction],model:Wn({txSigningRequests:[t.transaction],signerAccount:String(t.commandSubject.nearAccount.accountId),title:t.title,subtitle:t.body}),confirmationConfigOverride:t.confirmationConfigOverride});try{let r=Do();return G(String(r),`preparation_modal`,n),await os(e,t,{signingOperationState:kt({operationId:r})})}finally{e.touchConfirm.closeTransactionPreparationModal()}}async function os(e,t,n){let r=t.commandSubject.nearAccount,i=L(r.accountId),a={signerSlot:t.signerSlot,confirmationConfigOverride:t.confirmationConfigOverride,title:t.title,body:t.body,onEvent:t.onEvent},o=n.signingOperationState.operationId,s=n.signingSessionCoordinator||e.signingSessionCoordinator,c=performance.now(),l=await ns({deps:e,commandSubject:t.commandSubject,authMethod:null}),u=await Xo({deps:e,availableLanes:l,input:t,commandSubject:t.commandSubject,operationId:o});if(G(String(o),`authorization_probe`,c),u){let o=e.getSignerWorkerContext();return await Yo({deps:e,nearAccountId:i,materialActivation:Zo(u.preparation),task:async()=>await go({chain:`near`,kind:`transactionWithActions`,payload:{ctx:o,commandSubject:t.commandSubject,nearAccount:r,transaction:t.transaction,rpcCall:t.rpcCall,signerSlot:a.signerSlot,confirmationConfigOverride:a.confirmationConfigOverride,title:a.title,body:a.body,onEvent:a.onEvent,signingOperationState:n.signingOperationState,signingSessionCoordinator:s,selection:{kind:`authorization_required`,candidate:u.candidate},passkeyEd25519OperationStepUp:u.passkeyEd25519OperationStepUp||void 0,emailOtpEd25519StepUp:u.emailOtpEd25519StepUp||void 0,sensitivePolicy:t.sensitivePolicy,yaoSigningPreparation:u.preparation,yaoMaterialExecutor:u.executor}})})}let d=performance.now(),f=await is({deps:e,availableLanes:l,input:t,commandSubject:t.commandSubject,signingSessionCoordinator:s,operationId:o,forceFreshAuth:n.forceFreshAuth===!0});G(String(o),`lane_preparation`,d);let p=performance.now(),m=f.preparation.authorization,h=f.signingAuthPlan,g=f.signingLane,_=f.transactionLane,v=f.thresholdSessionId;jo({signingLane:g,transactionLane:_});try{return await Yo({deps:e,nearAccountId:i,materialActivation:Zo(f.preparation),task:async()=>{let i=e.getSignerWorkerContext(),c=f,l=Wo({auth:_.auth,signer:_.identity.signer,thresholdSessionId:v,preparation:c.preparation}),u=qo({deps:e,commandSubject:t.commandSubject,auth:_.auth,signer:_.identity.signer,preparation:c.preparation,onEvent:a.onEvent}),d=Vo({preparedSigningSession:f,thresholdSessionId:v,signingSessionCoordinator:s,passkeyEd25519OperationStepUp:l||null,emailOtpEd25519StepUp:u||null}),m={thresholdSessionId:d.thresholdSessionId,signingSessionPlan:d.signingSessionPlan,signingAuthPlan:d.signingAuthPlan,signingLane:d.signingLane},h={ctx:i,commandSubject:t.commandSubject,nearAccount:r,transaction:t.transaction,rpcCall:t.rpcCall,signerSlot:a.signerSlot,confirmationConfigOverride:a.confirmationConfigOverride,title:a.title,body:a.body,onEvent:a.onEvent,signingOperationState:n.signingOperationState,signingSessionCoordinator:d.signingSessionCoordinator,selection:{kind:`authorized`,selectedLane:_},transactionOperation:d.transactionOperation,ed25519SigningBoundary:m,yaoSigningPreparation:c.preparation,yaoMaterialExecutor:c.executor,...d.passkeyEd25519OperationStepUp?{passkeyEd25519OperationStepUp:d.passkeyEd25519OperationStepUp}:{},...d.emailOtpEd25519StepUp?{emailOtpEd25519StepUp:d.emailOtpEd25519StepUp}:{}};return G(String(o),`execution_setup`,p),await go({chain:`near`,kind:`transactionWithActions`,payload:h})}})}catch(r){let o=h.kind===Dt.PasskeyReauth||h.kind===Dt.EmailOtpReauth,c=So(r),l=Co(r),u=ft(r),d=c?.kind===`step_up_required`;if(!n.retryingFreshAuth&&!o&&m.kind===`authorized`&&(d||l)){if(l?.kind===`wait_and_retry_admission`)return await lt(l.retryAfterMs),await os(e,t,{forceFreshAuth:!1,signingOperationState:n.signingOperationState,retryingFreshAuth:n.retryingFreshAuth,signingSessionCoordinator:s});if(await wo({failure:u,coordinator:s,lane:f.transactionLane,expiresAtMs:m.authorization.status.expiresAtMs}),_.auth.kind===`voiceid`)throw Error(`Unlock with VoiceID again to renew the NEAR Wallet Session.`);let r=_.auth.kind===`email_otp`,o=c?.kind===`step_up_required`?c.reason:void 0,d=l?l.reason===`stale_projection`?`wallet_signing_budget_stale_projection`:`wallet_signing_budget_exhausted`:o===`wallet_session_missing`?`threshold_session_missing`:`threshold_session_expired`;if(Ao(a.onEvent,i,{phase:r?B.STEP_06_AUTH_EMAIL_OTP_CHALLENGE_STARTED:B.STEP_09_THRESHOLD_SESSION_RECONNECT_STARTED,status:`running`,message:r?`Signing session needs reauthorization; requesting Email OTP`:`Signing session needs reauthorization; requesting passkey`,interaction:{kind:`none`,overlay:`none`},data:{chain:`near`,reason:d}}),l?.kind===`request_fresh_step_up`){let r=Ho({walletId:t.commandSubject.walletSession.walletId,nearAccountId:i,prepared:f});return await s.runWalletSessionQuotaAdmissionRetry({queueKey:r,refresh:async()=>await os(e,t,{forceFreshAuth:!0,signingOperationState:n.signingOperationState,retryingFreshAuth:!0,signingSessionCoordinator:s}),retryAfterRefresh:async()=>await os(e,t,{forceFreshAuth:!1,signingOperationState:n.signingOperationState,retryingFreshAuth:n.retryingFreshAuth,signingSessionCoordinator:s})})}return await os(e,t,{forceFreshAuth:!0,signingOperationState:n.signingOperationState,retryingFreshAuth:!0,signingSessionCoordinator:s})}throw r}}async function ss(e){return await go({chain:`near`,kind:`delegateAction`,payload:{ctx:e.deps.getSignerWorkerContext(),commandSubject:e.input.commandSubject,nearAccount:e.input.commandSubject.nearAccount,delegate:e.input.delegate,rpcCall:e.normalizedRpcCall,signingSessionCoordinator:e.deps.signingSessionCoordinator,signerSlot:e.input.signerSlot,confirmationConfigOverride:e.input.confirmationConfigOverride,title:e.input.title,body:e.input.body,onEvent:e.input.onEvent,operationId:e.operationId,forceFreshAuth:e.prepared.forceFreshAuth,selection:e.prepared.kind===`authorized`?{kind:`authorized`,selectedLane:e.prepared.selectedLane}:{kind:`authorization_required`,candidate:e.prepared.candidate},passkeyEd25519OperationStepUp:e.prepared.passkeyEd25519OperationStepUp,emailOtpEd25519StepUp:e.prepared.emailOtpEd25519StepUp,yaoSigningPreparation:e.prepared.yaoSigningPreparation,yaoMaterialExecutor:e.prepared.yaoMaterialExecutor}})}async function cs(e){let t=L(e.input.commandSubject.nearAccount.accountId),n=await Jo({deps:e.deps,commandSubject:e.input.commandSubject,signerSlot:e.input.signerSlot,operationId:e.operationId,onEvent:e.input.onEvent,attempt:e.attempt}),r={nearRpcUrl:e.input.rpcCall.nearRpcUrl||e.deps.nearRpcUrl,nearAccountId:t};try{return await Yo({deps:e.deps,nearAccountId:t,materialActivation:Zo(n.yaoSigningPreparation),task:ss.bind(void 0,{deps:e.deps,input:e.input,operationId:e.operationId,prepared:n,normalizedRpcCall:r})})}catch(r){let i=So(r),a=Co(r);if(e.attempt.kind===`initial`&&a){if(a.kind===`wait_and_retry_admission`)return await lt(a.retryAfterMs),await cs(e);let r=Uo({walletId:e.input.commandSubject.walletSession.walletId,nearAccountId:t,prepared:n});return await e.deps.signingSessionCoordinator.runWalletSessionQuotaAdmissionRetry({queueKey:r,refresh:async()=>await cs({...e,attempt:{kind:`fresh_auth_retry`,forceFreshAuth:!0}}),retryAfterRefresh:async()=>await cs({...e,attempt:{kind:`initial`,forceFreshAuth:!1}})})}let o=ft(r);if(e.attempt.kind===`initial`&&!n.forceFreshAuth&&i)return await wo({failure:o,coordinator:e.deps.signingSessionCoordinator,lane:n.selectedLane,expiresAtMs:Ro(n.yaoSigningPreparation)}),await cs({deps:e.deps,input:e.input,operationId:e.operationId,attempt:{kind:`fresh_auth_retry`,forceFreshAuth:!0}});throw r}}async function ls(e,t){try{return await cs({deps:e,input:t,operationId:Bo(e,`delegate`),attempt:{kind:`initial`,forceFreshAuth:!1}})}catch(e){throw console.error(`[SigningEngine][delegate] failed`,e),e}}async function us(e){let t=e.input.commandSubject.nearAccount;return await go({chain:`near`,kind:`nep413`,payload:{ctx:e.deps.getSignerWorkerContext(),commandSubject:e.input.commandSubject,nearAccount:t,signingSessionCoordinator:e.deps.signingSessionCoordinator,onEvent:e.input.onEvent,forceFreshAuth:e.prepared.forceFreshAuth,selection:e.prepared.kind===`authorized`?{kind:`authorized`,selectedLane:e.prepared.selectedLane}:{kind:`authorization_required`,candidate:e.prepared.candidate},passkeyEd25519OperationStepUp:e.prepared.passkeyEd25519OperationStepUp,emailOtpEd25519StepUp:e.prepared.emailOtpEd25519StepUp,yaoSigningPreparation:e.prepared.yaoSigningPreparation,yaoMaterialExecutor:e.prepared.yaoMaterialExecutor,payload:{message:e.input.message,recipient:e.input.recipient,nonce:e.input.nonce,callbackUrl:e.input.callbackUrl,state:e.input.state,accountId:t.accountId,signerSlot:e.input.signerSlot,title:e.input.title,body:e.input.body,confirmationConfigOverride:e.input.confirmationConfigOverride,operationId:e.operationId}}})}async function ds(e){let t=L(e.input.commandSubject.nearAccount.accountId),n=await Jo({deps:e.deps,commandSubject:e.input.commandSubject,signerSlot:e.input.signerSlot,operationId:e.operationId,onEvent:e.input.onEvent,attempt:e.attempt});try{return await Yo({deps:e.deps,nearAccountId:t,materialActivation:Zo(n.yaoSigningPreparation),task:us.bind(void 0,{deps:e.deps,input:e.input,operationId:e.operationId,prepared:n})})}catch(t){let r=So(t),i=ft(t);if(e.attempt.kind===`initial`&&!n.forceFreshAuth&&r!==void 0)return await wo({failure:i,coordinator:e.deps.signingSessionCoordinator,lane:n.selectedLane,expiresAtMs:Ro(n.yaoSigningPreparation)}),await ds({deps:e.deps,input:e.input,operationId:e.operationId,attempt:{kind:`fresh_auth_retry`,forceFreshAuth:!0}});throw t}}async function fs(e,t){try{return await ds({deps:e,input:t,operationId:Bo(e,`nep413`),attempt:{kind:`initial`,forceFreshAuth:!1}})}catch(e){return console.error(`SigningEngine: NEP-413 signing error:`,e),{success:!1,error:e instanceof Error?e.message:String(e||`Unknown error`)}}}function ps(e,t){return{...e,beforeSigning:t}}export{en as _,ii as a,In as c,Sn as d,xn as f,nn as g,fn as h,da as i,Fn as l,ln as m,xo as n,Hn as o,cn as p,Ua as r,Un as s,To as t,wn as u};
@@ -1 +0,0 @@
1
- let e=function(e){return e[e.SignTransactionsWithActionsSuccess=0]=`SignTransactionsWithActionsSuccess`,e[e.SignNep413MessageSuccess=1]=`SignNep413MessageSuccess`,e[e.SignDelegateActionSuccess=2]=`SignDelegateActionSuccess`,e}({});const t={ThresholdEd25519ComputeNep413SigningDigest:`thresholdEd25519ComputeNep413SigningDigest`,ThresholdEd25519ComputeDelegateSigningDigest:`thresholdEd25519ComputeDelegateSigningDigest`,ThresholdEd25519BuildDelegateSigningPayload:`thresholdEd25519BuildDelegateSigningPayload`,ThresholdEd25519FinalizeDelegateFromSignature:`thresholdEd25519FinalizeDelegateFromSignature`,ThresholdEd25519FinalizeNearTxFromSignature:`thresholdEd25519FinalizeNearTxFromSignature`,ThresholdEd25519BuildNearTxUnsignedBorsh:`thresholdEd25519BuildNearTxUnsignedBorsh`,ThresholdEd25519DecodeSignedNearTxBorsh:`thresholdEd25519DecodeSignedNearTxBorsh`},n={uiMode:`modal`,behavior:`requireClick`,autoProceedDelay:0};export{t as n,e as r,n as t};
@@ -1 +0,0 @@
1
- import{o as e,u as t}from"./participants-BXdREC5k.js";import{r as n}from"./base64-BmKR3UqU.js";import{r,t as i}from"./secureRandomId-8LSc91aN.js";import{o as a}from"./signerSlot-D2RZnb27.js";import{t as o}from"./indexedDB-C4SDsyOG.js";import{n as s,s as c,t as l,u}from"./helpers-Dubwo5uK.js";import{i as ee}from"./pendingWalletRecoveryCodeBackup-Cjx-X-pP.js";import{t as d}from"./walletCustodyOperation-DimzAbCB.js";import{t as f}from"./webauthnPromptCoordinator-npsSRD51.js";import{i as p}from"./collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js";function m(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===5&&n.every(e=>[`ok`,`challengeId`,`challenge_digest`,`expiresAtMs`,`otpChannel`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,challengeId:t.get(`challengeId`),challengeDigest:t.get(`challenge_digest`),expiresAtMs:t.get(`expiresAtMs`),otpChannel:t.get(`otpChannel`)};let r=[`ok`,`code`,`message`,`retryAfterMs`];if((t.size===3||t.size===4)&&n.every(e=>r.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`&&typeof t.get(`message`)==`string`&&(t.size===3||typeof t.get(`retryAfterMs`)==`number`)){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function h(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/custody/email-otp/challenge`,body:{walletId:e.walletId,providerSubjectId:e.providerSubjectId,operation:e.operation,payload:e.payload,...e.requestOrigin?{requestOrigin:e.requestOrigin}:{}},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`Email OTP challenge request failed`}}let n=m(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status!==200||n.kind!==`success`)return{kind:t.status>=400&&t.status<500?`rejected`:`transport_failed`,message:r||`Email OTP challenge failed (HTTP ${t.status})`};let i=typeof n.challengeId==`string`?n.challengeId.trim():``,a=typeof n.challengeDigest==`string`?n.challengeDigest.trim():``,o=Number(n.expiresAtMs),s=typeof n.otpChannel==`string`?n.otpChannel.trim():``;return!i||!a||!Number.isSafeInteger(o)||o<=0||!s?{kind:`transport_failed`,message:`Email OTP challenge returned an unusable payload`}:{kind:`ready`,challengeId:i,challenge_digest:a,expiresAtMs:o,otpChannel:s}}function g(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[`ok`,`activeCodeCount`,`totalCodeCount`,`issuedAtMs`,`storeVersion`,`backupOutstanding`],r=[...t.keys()];if(t.size===n.length&&r.every(e=>n.includes(e))&&t.get(`ok`)===!0)return{kind:`success`,activeCodeCount:t.get(`activeCodeCount`),totalCodeCount:t.get(`totalCodeCount`),issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`),backupOutstanding:t.get(`backupOutstanding`)};let i=[`ok`,`code`,`message`];if(t.size===i.length&&r.every(e=>i.includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function _(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/${encodeURIComponent(e.walletId)}/recovery/status`,body:{requestId:e.requestId,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery status request failed`}}let n=g(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery status is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery status failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery status returned an unusable payload`};let i=Number(n.activeCodeCount),a=Number(n.totalCodeCount),o=Number(n.issuedAtMs),s=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(i)||i<0||!Number.isSafeInteger(a)||a<i||!Number.isSafeInteger(o)||o<=0||!s||typeof n.backupOutstanding!=`boolean`?{kind:`transport_failed`,message:`recovery status returned an unusable payload`}:{kind:`ready`,walletId:e.walletId,activeCodeCount:i,totalCodeCount:a,issuedAtMs:o,storeVersion:s,backupOutstanding:n.backupOutstanding,pendingLocalBackup:!1}}function v(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===2&&n.includes(`ok`)&&n.includes(`issuedAtMs`)&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`)};if(t.size===3&&n.includes(`ok`)&&n.includes(`code`)&&n.includes(`message`)&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function y(e){let t;try{t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/acknowledge-backup`,body:{walletId:e.walletId,requestId:e.requestId,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:e.factorProof},fetchImpl:e.fetchImpl})}catch(e){return{kind:`transport_failed`,message:e instanceof Error?e.message:`recovery backup acknowledgement failed`}}let n=v(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===401||t.status===403)return{kind:`unauthorized`,message:r||`recovery backup acknowledgement is unauthorized`};if(t.status===404)return{kind:`no_recovery_set`,message:r||`this wallet has no recovery set`};if(t.status===409)return{kind:`conflict`,message:r||`Recovery codes changed. Check status and review the current set.`};if(t.status!==200)return{kind:`transport_failed`,message:r||`recovery backup acknowledgement failed (HTTP ${t.status})`};if(n.kind!==`success`)return{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`};let i=Number(n.issuedAtMs);return!Number.isSafeInteger(i)||i<=0?{kind:`transport_failed`,message:`recovery backup acknowledgement returned an unusable payload`}:{kind:`acknowledged`,walletId:e.walletId,issuedAtMs:i}}function b(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===3&&n.every(e=>[`ok`,`issuedAtMs`,`storeVersion`].includes(e))&&t.get(`ok`)===!0)return{kind:`success`,issuedAtMs:t.get(`issuedAtMs`),storeVersion:t.get(`storeVersion`)};if(t.size===3&&n.every(e=>[`ok`,`code`,`message`].includes(e))&&t.get(`ok`)===!1&&typeof t.get(`code`)==`string`){let e=t.get(`message`);return{kind:`failure`,message:typeof e==`string`&&e.trim()?e.trim():null}}return{kind:`invalid`}}async function x(e){let t=await S({relayUrl:e.relayUrl,path:`/wallets/recovery/rotate`,body:{walletId:e.walletId,expectedStoreVersion:e.expectedStoreVersion,manifestKekWraps:e.replacement.manifestKekWraps,entries:[e.replacement.entry],recoveryCodeLocators:e.recoveryCodeLocators,factorProof:e.factorProof},fetchImpl:e.fetchImpl}),n=b(await t.json().catch(()=>null)),r=n.kind===`failure`&&n.message?n.message:``;if(t.status===200&&n.kind===`success`){let e=Number(n.issuedAtMs),t=typeof n.storeVersion==`string`?n.storeVersion.trim():``;return!Number.isSafeInteger(e)||e<=0||!t?{kind:`transport_failed`,message:`rotation returned an unusable response`}:{kind:`rotated`,issuedAtMs:e,storeVersion:t}}return t.status===404?{kind:`no_recovery_set`,message:r||`no recovery set`}:t.status===409?{kind:`conflict`,message:r||`recovery set changed`}:t.status===400?{kind:`rejected`,message:r||`rotation rejected`}:{kind:`transport_failed`,message:r||`rotation failed (HTTP ${t.status})`}}async function S(n){let r=`${t(n.relayUrl)}${n.path}`;return await(n.fetchImpl||fetch)(r,e({headers:{Accept:`application/json`},body:n.body}))}var C=class extends Error{code=`wallet_origin_webauthn_unavailable`;constructor(e){super(e),this.name=`WalletOriginWebAuthnUnavailableError`}};async function w(e,t,n){let r=T(e,t);try{return e===`create`?await navigator.credentials.create({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}}):await navigator.credentials.get({publicKey:r,...n.abortSignal?{signal:n.abortSignal}:{}})}catch(t){throw e===`create`&&(N(t)||P(t))?new C(`Wallet-origin WebAuthn registration is unavailable: ${F(t)}`):t}}function T(e,t){return e===`create`?E(t):D(t)}function E(e){return{...e,challenge:M(e.challenge),user:{...e.user,id:M(e.user.id)},excludeCredentials:e.excludeCredentials?.map(O),extensions:k(e.extensions)}}function D(e){return{...e,challenge:M(e.challenge),allowCredentials:e.allowCredentials?.map(O),extensions:k(e.extensions)}}function O(e){return{...e,id:M(e.id)}}function k(e){if(!e)return e;let t={...e},n=t.prf;if(n&&typeof n==`object`){let e={...n};if(e.eval&&typeof e.eval==`object`&&(e.eval=A(e.eval)),e.evalByCredential&&typeof e.evalByCredential==`object`){let t={};for(let[n,r]of Object.entries(e.evalByCredential))t[n]=r&&typeof r==`object`?A(r):r;e.evalByCredential=t}t.prf=e}return t}function A(e){return{...e,...j(e.first)?{first:M(e.first)}:{},...j(e.second)?{second:M(e.second)}:{}}}function j(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function M(e){if(e instanceof ArrayBuffer)return e.slice(0);let t=e,n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice();if(e instanceof DataView)return new DataView(n.buffer);let r=Object.getPrototypeOf(e).constructor;return new r(n.buffer)}function N(e){let t=F(e);return/origin of the document is not the same as its ancestors/i.test(t)}function P(e){let t=I(e),n=F(e),r=t===`NotAllowedError`,i=/document is not focused|not focused|focus/i.test(n);return!!(r&&i)}function F(e){return String(e?.message||``)}function I(e){let t=e?.name;return typeof t==`string`?t:``}function L(e,t){return(e||t||``).toLowerCase()}function R(e){let t=n(String(e||``));if(t.length!==32)throw Error(`Invalid WebAuthn challenge: expected 32 bytes, got ${t.length}`);return t}function z(e){if(e.kind!==`wallet_registration`)throw Error(`Wallet registration challenge is unavailable`);return e.challengeB64u}function B(e){let t=a(String(e.walletId||``).trim());if(String(e.intendedUserName||``).trim()!==String(t))throw Error(`WebAuthn registration user.name must match walletId`);return{walletId:t}}var V=class{rpIdOverride;abortController;removePageAbortHandlers;removeExternalAbortListener;constructor(e){this.rpIdOverride=e}getRpId(){try{return L(this.rpIdOverride,window?.location?.hostname)}catch{return this.rpIdOverride||``}}getAuthenticationCredentialsSerializedForChallengeB64u(e){let t=`webauthn-get-${i(12,`WebAuthn get request IDs`)}`;return f.runImmediate({owner:{kind:`wallet_request`,requestId:t,operation:`authentication`},operation:this.executeAuthenticationCredential.bind(this,e)})}async executeAuthenticationCredential({subjectId:e,challengeB64u:t,allowCredentials:r=[],includeSecondPrfOutput:i=!1,cancellation:a={kind:`none`}}){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,a);let o=this.getRpId(),u={challenge:R(t),rpId:o,userVerification:`preferred`,timeout:6e4,extensions:{prf:{eval:{first:l(),second:s()}}}};r.length>0&&(u.allowCredentials=r.map(e=>({id:n(e.id),type:`public-key`,transports:e.transports})));try{let e=c({credential:await w(`get`,u,{abortSignal:this.abortController.signal}),firstPrfOutput:!0,secondPrfOutput:i});return G(e,t),e}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}generateRegistrationCredentialsInternal(e){switch(e.prompt.kind){case`reserved`:return f.runReserved({reservation:e.prompt.reservation,owner:e.prompt.owner,operation:this.executeRegistrationCredential.bind(this,e)});case`immediate`:return f.runImmediate({owner:{kind:`wallet_request`,requestId:e.prompt.requestId,operation:`registration`},operation:this.executeRegistrationCredential.bind(this,e)})}}async executeRegistrationCredential(e){this.abortController=new AbortController,this.removePageAbortHandlers=q(this.abortController),this.removeExternalAbortListener=H(this.abortController,e.prompt.cancellation);let t=this.getRpId(),r=B({walletId:e.walletId,intendedUserName:e.intendedUserName}),i=e.kind===`wallet_recovery`?e.recoveryRegistration:null,a=e.kind===`wallet_add_auth_method`?e.registration:null,o=i??a,c=o?.rpId??t;if(o&&c!==t)throw Error(`Wallet recovery RP ID does not match the wallet origin`);let u=o?{challenge:R(o.challengeB64u),rp:{name:`Seams Wallet`,id:c},user:{id:n(o.user.idB64u),name:o.user.name,displayName:o.user.displayName},pubKeyCredParams:o.pubKeyCredParams.map(e=>({...e})),authenticatorSelection:{...o.authenticatorSelection},timeout:o.timeoutMs,attestation:o.attestation,extensions:{prf:{eval:{first:n(o.extensions.prf.eval.firstB64u),second:n(o.extensions.prf.eval.secondB64u)}}},excludeCredentials:o.excludeCredentials.map(e=>({type:e.type,id:n(e.id)}))}:{challenge:R(z(e)),rp:{name:`WebAuthn Passkey`,id:c},user:{id:new TextEncoder().encode(K(e.walletId,e.signerSlot)),name:r.walletId,displayName:r.walletId},pubKeyCredParams:[{alg:-7,type:`public-key`},{alg:-257,type:`public-key`}],authenticatorSelection:{residentKey:`required`,userVerification:`preferred`},timeout:6e4,attestation:`none`,extensions:{prf:{eval:{first:l(),second:s()}}}};try{return await w(`create`,u,{abortSignal:this.abortController.signal})}finally{this.removePageAbortHandlers?.(),this.removePageAbortHandlers=void 0,this.removeExternalAbortListener?.(),this.removeExternalAbortListener=void 0,this.abortController=void 0}}};function H(e,t){if(t.kind===`none`)return;let n=t.signal,r=e.abort.bind(e);if(n.aborted){r();return}return n.addEventListener(`abort`,r,{once:!0}),n.removeEventListener.bind(n,`abort`,r)}function U(e){return String(e||``).trim().replace(/=+$/g,``)}function W(e){let t=String(e.response?.clientDataJSON||``).trim();if(!t)throw Error(`WebAuthn authentication response missing clientDataJSON`);let r=``;try{r=new TextDecoder().decode(n(t))}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON encoding: ${e instanceof Error?e.message:String(e)}`)}let i;try{i=JSON.parse(r)}catch(e){throw Error(`WebAuthn authentication response has invalid clientDataJSON JSON: ${e instanceof Error?e.message:String(e)}`)}let a=i&&typeof i==`object`?i.challenge:void 0;if(typeof a!=`string`||!a.trim())throw Error(`WebAuthn authentication response clientDataJSON missing challenge`);return a}function G(e,t){let n=U(W(e)),r=U(t);if(n!==r)throw Error(`Unexpected authentication response challenge "${n}", expected "${r}"`)}function K(e,t){return t===void 0||t===1?e:`${e} (${t})`}function q(e){let t=()=>{document.hidden&&e.abort()},n=()=>{e.abort()},r=()=>{e.abort()};return document.addEventListener(`visibilitychange`,t,{passive:!0}),window.addEventListener(`pagehide`,n,{passive:!0}),window.addEventListener(`beforeunload`,r,{passive:!0}),()=>{document.removeEventListener(`visibilitychange`,t),window.removeEventListener(`pagehide`,n),window.removeEventListener(`beforeunload`,r)}}async function J(e){let t=e.request.payload.walletId,n=window.location.origin,r=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:n}),i=await p({credentialStore:o,touchIdPrompt:new V(e.rpId),walletId:t,challengeB64u:r,includeSecondPrfOutput:!1}),a=ee(i);if(!a)throw Error(`Wallet recovery proof did not receive a passkey credential`);return{kind:`passkey`,walletId:t,rpId:e.rpId,credentialIdB64u:a,challenge_digest:r,webauthn_authentication:u(i)}}function Y(){return r(`wallet-recovery-admin`,16,`wallet recovery administration request IDs`)}async function X(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await J({rpId:e.rpId,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function Z(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await J({rpId:e.rpId,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}async function Q(e){let t=await o.resolveSelectedWalletAuthority(e);if(t.kind!==`resolved`||t.selection.lockState!==`unlocked`||String(t.selection.walletId)!==e||t.selection.walletAuthMethodId!==t.authMethod.walletAuthMethodId||t.authMethod.kind!==`email_otp`||t.authMethod.status!==`active`||t.authority.state!==`active`||String(t.authMethod.walletId)!==e||String(t.authority.walletId)!==e)throw Error(`Unlock this wallet with its active Email OTP method`);let n=await o.listWalletAuthMethodsForWallet(e),r=null;for(let e of n)if(!(e.kind!==`email_otp`||e.status!==`active`||e.localStatus!==`synced`||String(e.authority.bindingId)!==String(t.authMethod.walletAuthMethodId))){if(r!==null)throw Error(`The selected Email OTP owner method is duplicated`);r=String(e.authority.factor.providerUserId||``).trim()}if(!r)throw Error(`The selected Email OTP owner method is unavailable on this wallet`);return{walletAuthMethodId:String(t.authMethod.walletAuthMethodId),providerSubjectId:r}}async function $(e){let t=e.request.payload.walletId,{providerSubjectId:n}=await Q(t),r=window.location.origin,i=await d({walletId:t,operation:e.request.operation,payload:e.request.payload,requestOrigin:r}),a=await h({relayUrl:e.relayUrl,walletId:t,providerSubjectId:n,operation:e.request.operation,payload:e.request.payload,requestOrigin:r});if(a.kind!==`ready`)throw Error(a.message);if(a.challenge_digest!==i)throw Error(`Recovery Email OTP challenge does not match this operation`);let o=await e.context.signingEngine.requestEmailOtpOwnerConfirmation({purpose:e.request.operation,walletId:t,emailAddress:`your email`,challengeId:a.challengeId});if(o.challengeId!==a.challengeId)throw Error(`Recovery Email OTP confirmation changed its challenge`);return{kind:`email_otp`,provider_subject_id:n,challenge_id:o.challengeId,otp_code:o.otpCode,challenge_digest:i}}async function te(e){let t=Y(),n={walletId:e.walletId,requestId:t},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_status`,payload:n}});return await _({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,factorProof:r})}async function ne(e){let t=Y(),n={walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs},r=await $({context:e.context,relayUrl:e.relayUrl,request:{operation:`recovery_backup_acknowledge`,payload:n}});return await y({relayUrl:e.relayUrl,walletId:e.walletId,requestId:t,expectedIssuedAtMs:e.expectedIssuedAtMs,factorProof:r})}export{X as a,_ as c,te as i,h as l,Z as n,Q as o,$ as r,V as s,ne as t,x as u};
@@ -1 +0,0 @@
1
- import{C as e,E as t,M as n,N as r,O as i,c as a,j as o,k as s,s as c}from"./domainIds-t1lp25yU.js";import{S as l,i as u,t as d,y as f}from"./digests-BIaE0DMd.js";import{o as p,u as m}from"./participants-BXdREC5k.js";import{i as h,r as g}from"./base64-BmKR3UqU.js";import{s as _}from"./walletDbName-Ca0rCq5r.js";import{D as v,E as y,G as b,H as x,J as ee,M as S,N as te,O as C,W as w,X as T,j as ne,k as re}from"./activeWalletSession-BJ4B-nJo.js";import{n as ie,t as ae}from"./signingSessionSeal-BFOBKj-J.js";import{l as E}from"./capabilityKinds-DVlGMspk.js";import{x as D}from"./registrationIntent-Do1tD1V7.js";import{d as oe,t as O}from"./accountIds-CW2BP-d9.js";import{m as se}from"./walletAuthority-BTGAuOi8.js";import{A as ce,Ct as le,Dt as ue,Et as de,Nt as fe,Pt as pe,S as me,Tt as he,X as ge,jt as _e,kt as ve,ut as ye,wt as be,xt as xe}from"./digestEncoding-CqNXPZY9.js";import{i as Se}from"./walletAuthMethodRecord-DLBB5fez.js";import{C as Ce}from"./ecdsaCapabilityManifest-DAJEVjlP.js";import{O as we,_ as k,g as Te,h as A,t as j,y as M}from"./indexedDB-C4SDsyOG.js";import{o as Ee}from"./helpers-Dubwo5uK.js";import{M as De,h as Oe,m as ke}from"./accountLifecycle-6DHYWf0v.js";import{r as Ae}from"./walletCustodyEcdsaContinuity-C31YQ9av.js";import{a as je,n as N,t as Me}from"./wallet-recovery-BZB2Vu3X.js";import{n as Ne}from"./challengeDelivery-Dj9HrjW9.js";function Pe(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`wallet recovery target must be an object`);let t=e,n=Object.keys(t);switch(t.kind){case`passkey`:{if(n.length!==2||!n.includes(`rpId`))throw Error(`Passkey recovery target fields are invalid`);let e=r(t.rpId);if(!e.ok)throw Error(`Passkey recovery target RP ID is invalid`);return{kind:`passkey`,rpId:e.value}}case`google_email_otp`:if(n.length!==2||!n.includes(`googleProvider`)||t.googleProvider!==`google`)throw Error(`Google Email OTP recovery target fields are invalid`);return{kind:`google_email_otp`,googleProvider:`google`};default:throw Error(`wallet recovery target kind is unsupported`)}}const Fe=[`ok`,`walletId`,`target`,`recoveryOperationId`,`targetDeviceId`,`targetAuthorityId`,`targetWalletAuthMethodId`,`wrap`,`entries`,`keyManifest`,`reservationId`,`reservationExpiresAtMs`,`storeVersion`],Ie=[...Fe,`registration`];function P(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${t} must be an object`);return e}function Le(e,t,n){let r=new Set(t),i=Object.keys(e);if(i.length!==r.size||i.some(e=>!r.has(e)))throw Error(`${n} contains unexpected fields`)}function F(e,t,n){let r=P(e,n);return Le(r,t,n),r}function I(e,t){return Object.prototype.hasOwnProperty.call(e,t)?Reflect.get(e,t):void 0}function Re(e){try{return P(e,`walletRecoveryPrepare response`)}catch{return null}}function ze(e){let t=s(e.walletId);if(!t.ok)throw Error(`wallet recovery ${t.error.message}`);return JSON.stringify({walletId:String(t.value),wrap:e.prepared.wrap,entry:e.prepared.entries[0]})}async function Be(e){let t=await Ve(e);return t.ok?await He({response:t.response,target:e.target,reservationId:e.reservationId}):{kind:t.kind}}async function Ve(e){let t=`${m(e.relayUrl)}/wallets/recovery/prepare`,n=e.fetchImpl||fetch;try{return{ok:!0,response:await n(t,p({body:{recoveryCodeB64u:e.recoveryCodeB64u,reservationId:e.reservationId,target:e.target}}))}}catch{return{ok:!1,kind:`transport_uncertain`}}}async function He(e){let n=e.response,r=Re(await n.json().catch(()=>({})));if(n.status===200&&r&&I(r,`ok`)===!0)try{let n=F(r,e.target.kind===`passkey`?Ie:Fe,`walletRecoveryPrepare`),a=Je()(I(n,`wrap`),`walletRecoveryPrepare.wrap`),c=Ye(I(n,`entries`)),l=s(I(n,`walletId`));if(!l.ok)throw Error(`walletRecoveryPrepare.walletId is invalid`);let u=l.value,d=Pe(I(n,`target`));if(!Ke(d,e.target))throw Error(`wallet recovery preparation changed the recovery target`);let f=o(I(n,`recoveryOperationId`)),p=E(I(n,`targetDeviceId`)),m=i(I(n,`targetAuthorityId`)),h=t(I(n,`targetWalletAuthMethodId`));if(!f.ok||!p.ok||!m.ok||!h.ok)throw Error(`wallet recovery preparation target identity is invalid`);let g=Xe(I(n,`keyManifest`),u),_=M(I(n,`reservationId`)),v=te(I(n,`reservationExpiresAtMs`),`walletRecoveryPrepare.reservationExpiresAtMs`),y=L(I(n,`storeVersion`),`storeVersion`);if(_!==e.reservationId)throw Error(`wallet recovery preparation changed the reservation identity`);let b={kind:`prepared`,walletId:u,recoveryOperationId:f.value,targetDeviceId:p.value,targetAuthorityId:m.value,targetWalletAuthMethodId:h.value,wrap:a,entries:c,keyManifest:g,reservationId:_,reservationExpiresAtMs:v,storeVersion:y};switch(d.kind){case`passkey`:{let e=Ue(String(u),d.rpId)(I(n,`registration`),`registration`);if(e.walletAuthMethodId!==h.value)throw Error(`wallet recovery registration changed the target auth method`);return{...b,target:d,registration:e}}case`google_email_otp`:if(Object.prototype.hasOwnProperty.call(n,`registration`))throw Error(`Google Email OTP recovery cannot carry passkey registration`);return{...b,target:d};default:return qe(d)}}catch{return{kind:`transport_uncertain`}}return n.status===409?{kind:`retryable_conflict`}:n.status===401&&r&&I(r,`code`)===`recovery_code_used`?{kind:`consumed`}:n.status===401||n.status===400?{kind:`refused`}:{kind:`transport_uncertain`}}function Ue(e,i){let a=h(new TextEncoder().encode(e)),o=w({type:x(`public-key`),id:(e,t)=>{let r=b(n)(e,t);return ct(r,t),r}});return w({kind:x(`webauthn_recovery_registration_v1`),challengeId:L,challengeB64u:(e,t)=>st(e,32,t),replacementId:L,walletAuthMethodId:b(t),rpId:b(r),user:w({idB64u:ct,name:L,displayName:L},(t,n)=>{if(t.idB64u!==a||t.name!==e||t.displayName!==e)throw Error(`${n} is bound to another wallet`)}),pubKeyCredParams:(e,t)=>{if(!Array.isArray(e)||e.length!==2)throw Error(`${t} is invalid`);return[We(-7)(e[0],`${t}[0]`),We(-257)(e[1],`${t}[1]`)]},authenticatorSelection:w({residentKey:x(`required`),userVerification:x(`preferred`)}),timeoutMs:(e,t)=>{let n=Number(e);if(!Number.isSafeInteger(n)||n<=0)throw Error(`${t} is invalid`);return n},attestation:x(`none`),extensions:w({prf:w({eval:w({firstB64u:Ge(ae),secondB64u:Ge(ie)})})}),excludeCredentials:(e,t)=>f(e,t).map((e,n)=>o(e,`${t}[${n}]`))},(e,t)=>{if(e.rpId!==i)throw Error(`${t} changed the relying party`)})}function We(e){return w({type:x(`public-key`),alg:(t,n)=>{if(t!==e)throw Error(`${n} is invalid`);return e}})}function Ge(e){return(t,n)=>{let r=st(t,e.length,n);if(r!==h(e))throw Error(`${n} is unsupported`);return r}}function Ke(e,t){if(e.kind!==t.kind)return!1;switch(e.kind){case`passkey`:return t.kind===`passkey`&&e.rpId===t.rpId;case`google_email_otp`:return t.kind===`google_email_otp`&&e.googleProvider===t.googleProvider;default:return qe(e)}}function qe(e){throw Error(`unsupported wallet recovery target: ${String(e)}`)}function Je(){return w({nonceB64u:re,wrappedManifestKekB64u:C,aadHashB64u:y})}function Ye(e){if(!Array.isArray(e)||e.length!==1)throw Error(`walletRecoveryPrepare.entries must contain exactly one custody seed`);return[je(e[0],`walletRecoveryPrepare.entries[0]`)]}function L(e,t){if(typeof e!=`string`||!e.trim())throw Error(`walletRecoveryPrepare.${t} must be a non-empty string`);return e.trim()}function Xe(e,t){let n=F(e,[`version`,`walletId`,`entries`],`walletRecoveryPrepare.keyManifest`);if(I(n,`version`)!==`wallet_recovery_preparation_key_manifest_v1`)throw Error(`walletRecoveryPrepare.keyManifest version is invalid`);let r=L(I(n,`walletId`),`keyManifest.walletId`);if(r!==t)throw Error(`walletRecoveryPrepare.keyManifest changed the wallet identity`);let i=I(n,`entries`);if(!Array.isArray(i)||i.length===0)throw Error(`walletRecoveryPrepare.keyManifest must contain a key set`);let a=i.map(e=>Ze(e,r));if(new Set(a.map(e=>e.keySetId)).size!==a.length)throw Error(`walletRecoveryPrepare.keyManifest contains duplicate key sets`);return{version:`wallet_recovery_preparation_key_manifest_v1`,walletId:r,entries:a}}function Ze(e,t){switch(I(P(e,`walletRecoveryPrepare.keyManifest.entries[]`),`kind`)){case`near_ed25519`:{let n=F(e,[`kind`,`keySetId`,`signerId`,`nearAccountId`,`recordedKeyManifestDigestB64u`,`recoveryBasis`],`walletRecoveryPrepare.keyManifest.entries[].near_ed25519`),r=L(I(n,`signerId`),`keyManifest.entries[].signerId`),i=L(I(n,`keySetId`),`keyManifest.entries[].keySetId`),a=`near_ed25519:${r}`;if(i!==a)throw Error(`walletRecoveryPrepare NEAR key-set identity is inconsistent`);let o=L(I(n,`nearAccountId`),`keyManifest.entries[].nearAccountId`),s=Qe(I(n,`recoveryBasis`),t);return{kind:`near_ed25519`,keySetId:a,signerId:r,nearAccountId:o,recordedKeyManifestDigestB64u:y(I(n,`recordedKeyManifestDigestB64u`),`walletRecoveryPrepare.keyManifest.entries[].recordedKeyManifestDigestB64u`),recoveryBasis:s}}case`evm_family_ecdsa`:{let n=F(e,[`kind`,`keySetId`,`keyHandle`,`evmFamilySigningKeySlotId`,`recordedKeyManifestDigestB64u`,`recoveryBasis`],`walletRecoveryPrepare.keyManifest.entries[].evm_family_ecdsa`),r=L(I(n,`keyHandle`),`keyManifest.entries[].keyHandle`),i=L(I(n,`keySetId`),`keyManifest.entries[].keySetId`),a=`evm_family_ecdsa:${r}`;if(i!==a)throw Error(`walletRecoveryPrepare ECDSA key-set identity is inconsistent`);let o=$e(I(n,`recoveryBasis`),t);return{kind:`evm_family_ecdsa`,keySetId:a,keyHandle:r,evmFamilySigningKeySlotId:ve(I(n,`evmFamilySigningKeySlotId`)),recordedKeyManifestDigestB64u:y(I(n,`recordedKeyManifestDigestB64u`),`walletRecoveryPrepare.keyManifest.entries[].recordedKeyManifestDigestB64u`),recoveryBasis:o}}default:throw Error(`walletRecoveryPrepare key-manifest entry kind is invalid`)}}function Qe(e,t){let n=F(e,[`capabilityKind`,`activeCapabilityBinding`,`scope`,`applicationBinding`,`participantIds`,`registeredPublicKey`,`runtimePolicyScope`,`activationTranscript`,`activationStateEpoch`,`signingWorkerVerifyingShare`],`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis`),r=I(n,`capabilityKind`);if(r!==`registration`&&r!==`recovery`)throw Error(`walletRecoveryPrepare NEAR recovery capability kind is invalid`);let i=R(I(n,`activeCapabilityBinding`),32,`NEAR recovery active capability binding`),a=rt(I(n,`scope`)),o=it(I(n,`applicationBinding`)),s=ot(I(n,`participantIds`),`NEAR recovery participant IDs`),c=R(I(n,`registeredPublicKey`),32,`NEAR recovery registered public key`),l=at(I(n,`runtimePolicyScope`)),u=R(I(n,`activationTranscript`),32,`NEAR recovery activation transcript`),d=Number(I(n,`activationStateEpoch`));if(!Number.isSafeInteger(d)||d<=0)throw Error(`walletRecoveryPrepare NEAR recovery activation state epoch is invalid`);let f=R(I(n,`signingWorkerVerifyingShare`),32,`NEAR recovery signing-worker verifying share`);if(o.wallet_id!==t||a.account_id!==t||a.root_share_epoch!==l.signingRootVersion)throw Error(`walletRecoveryPrepare NEAR recovery basis changed its wallet scope`);return{capabilityKind:r,activeCapabilityBinding:i,scope:a,applicationBinding:o,participantIds:s,registeredPublicKey:c,runtimePolicyScope:l,activationTranscript:u,activationStateEpoch:d,signingWorkerVerifyingShare:f}}function $e(e,t){let n=F(e,[`publicCapability`,`activationReceipt`,`serverGeneration`,`clientRootPublicKey33B64u`,`chainTargets`,`ecdsaThresholdKeyId`,`signingRootId`,`signingRootVersion`,`runtimePolicyScope`,`participantIds`,`possessionChallenge`],`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis`),r=me(I(n,`publicCapability`)),i=ce(I(n,`activationReceipt`));if(r.client_id!==t)throw Error(`walletRecoveryPrepare ECDSA recovery capability changed the wallet scope`);let a=he(I(n,`signingRootId`)),o=de(I(n,`signingRootVersion`)),s=at(I(n,`runtimePolicyScope`));if(s.signingRootVersion!==o)throw Error(`walletRecoveryPrepare ECDSA recovery scope changed the signing root`);let c=xe(I(n,`serverGeneration`));if(String(i.server_generation)!==String(c))throw Error(`walletRecoveryPrepare ECDSA activation receipt changed server generation`);let l=Me(I(n,`possessionChallenge`));if(l.walletId!==t||l.expectedServerGeneration!==String(c)||l.derivationClientSharePublicKey33B64u!==r.public_identity.derivation_client_share_public_key33_b64u)throw Error(`walletRecoveryPrepare ECDSA possession challenge changed its capability`);return{publicCapability:r,activationReceipt:i,serverGeneration:c,clientRootPublicKey33B64u:be(L(I(n,`clientRootPublicKey33B64u`),`keyManifest.entries[].recoveryBasis.clientRootPublicKey33B64u`)),chainTargets:et(I(n,`chainTargets`)),ecdsaThresholdKeyId:ue(I(n,`ecdsaThresholdKeyId`)),signingRootId:a,signingRootVersion:o,runtimePolicyScope:s,participantIds:nt(I(n,`participantIds`)),possessionChallenge:l}}function et(e){if(!Array.isArray(e)||e.length===0)throw Error(`walletRecoveryPrepare ECDSA recovery chain targets are invalid`);let t=e.map((e,t)=>tt(e,t));if(new Set(t.map(we)).size!==t.length)throw Error(`walletRecoveryPrepare ECDSA recovery chain targets are duplicated`);let n=t[0];if(!n)throw Error(`walletRecoveryPrepare ECDSA recovery chain targets are invalid`);return[n,...t.slice(1)]}function tt(e,t){let n=`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.chainTargets[${t}]`,r=P(e,n),i=I(r,`kind`);Le(r,i===`evm`?[`kind`,`namespace`,`chainId`,`networkSlug`]:[`kind`,`chainId`,`networkSlug`],n);let a=I(r,`namespace`),o=Number(I(r,`chainId`));if(!Number.isSafeInteger(o)||o<=0)throw Error(`walletRecoveryPrepare ECDSA recovery chain id is invalid`);let s=I(r,`networkSlug`),c=typeof s==`string`&&s.trim()?s.trim():null;if(i===`evm`){if(a!==`eip155`)throw Error(`walletRecoveryPrepare ECDSA recovery EVM namespace is invalid`);return{kind:`evm`,namespace:`eip155`,chainId:o,networkSlug:c??`evm-${o}`}}if(i===`tempo`)return{kind:`tempo`,chainId:o,networkSlug:c??`tempo-${o}`};throw Error(`walletRecoveryPrepare ECDSA recovery chain family is invalid`)}function nt(e){if(!Array.isArray(e)||e.length!==2||e[0]!==1||e[1]!==2)throw Error(`walletRecoveryPrepare ECDSA recovery participant IDs are invalid`);return[1,2]}function rt(e){let t=F(e,[`lifecycle_id`,`root_share_epoch`,`account_id`,`threshold_session_id`,`signer_set_id`,`signing_worker_id`,`material_activation`],`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.scope`);return{lifecycle_id:L(I(t,`lifecycle_id`),`keyManifest.entries[].recoveryBasis.scope.lifecycle_id`),root_share_epoch:L(I(t,`root_share_epoch`),`keyManifest.entries[].recoveryBasis.scope.root_share_epoch`),account_id:L(I(t,`account_id`),`keyManifest.entries[].recoveryBasis.scope.account_id`),threshold_session_id:L(I(t,`threshold_session_id`),`keyManifest.entries[].recoveryBasis.scope.threshold_session_id`),signer_set_id:L(I(t,`signer_set_id`),`keyManifest.entries[].recoveryBasis.scope.signer_set_id`),signing_worker_id:L(I(t,`signing_worker_id`),`keyManifest.entries[].recoveryBasis.scope.signing_worker_id`),material_activation:_e(I(t,`material_activation`))}}function it(e){let t=F(e,[`wallet_id`,`near_ed25519_signing_key_id`,`signing_root_id`,`key_creation_signer_slot`],`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.applicationBinding`),n=Number(I(t,`key_creation_signer_slot`));if(!Number.isSafeInteger(n)||n<=0)throw Error(`walletRecoveryPrepare NEAR recovery key-creation signer slot is invalid`);return{wallet_id:L(I(t,`wallet_id`),`keyManifest.entries[].recoveryBasis.applicationBinding.wallet_id`),near_ed25519_signing_key_id:L(I(t,`near_ed25519_signing_key_id`),`keyManifest.entries[].recoveryBasis.applicationBinding.near_ed25519_signing_key_id`),signing_root_id:L(I(t,`signing_root_id`),`keyManifest.entries[].recoveryBasis.applicationBinding.signing_root_id`),key_creation_signer_slot:n}}function at(e){let t=F(e,[`orgId`,`projectId`,`envId`,`signingRootVersion`],`walletRecoveryPrepare.keyManifest.entries[].recoveryBasis.runtimePolicyScope`);try{return T(t)}catch{throw Error(`walletRecoveryPrepare NEAR recovery runtime policy scope is invalid`)}}function ot(e,t){if(!Array.isArray(e)||e.length!==2||!Number.isSafeInteger(e[0])||!Number.isSafeInteger(e[1])||Number(e[0])<=0||Number(e[1])<=0||Number(e[0])===Number(e[1]))throw Error(`walletRecoveryPrepare ${t} is invalid`);return[Number(e[0]),Number(e[1])]}function st(e,t,n){let r=L(e,n),i=g(r);if(i.length!==t||h(i)!==r)throw Error(`walletRecoveryPrepare ${n} is invalid`);return r}function ct(e,t){let n=L(e,t),r=g(n);if(r.length===0||h(r)!==n)throw Error(`walletRecoveryPrepare ${t} is invalid`);return n}function R(e,t,n){if(!Array.isArray(e)||e.length!==t||e.some(e=>!Number.isInteger(e)||e<0||e>255))throw Error(`walletRecoveryPrepare ${n} is invalid`);return e.map(Number)}const lt=`/wallets/recovery/finalize`;async function ut(e){let t=`${m(e.relayUrl)}${lt}`,n=e.fetchImpl||fetch,r;try{r=Ee(e.webauthnRegistration)}catch{return{kind:`refused`}}let i;try{let t=new Set;i=e.ecdsaMaterialPossessionProofs.map(e=>{if(typeof e.keySetId!=`string`||!e.keySetId.startsWith(`evm_family_ecdsa:`)||e.keySetId.length<=17)throw Error(`ECDSA possession proof key-set id is invalid`);if(t.has(e.keySetId))throw Error(`ECDSA possession proof key-set ids are duplicated`);return t.add(e.keySetId),{keySetId:e.keySetId,proof:N(e.proof)}})}catch{return{kind:`refused`}}let a;try{if(a=D(e.replacementEnvelope,`walletRecoveryFinalize.replacementEnvelope`),String(a.walletId)!==String(e.walletId))throw Error(`replacement envelope changed the wallet identity`);if(String(a.envelopeId)!==String(e.replacementId))throw Error(`replacement envelope changed the replacement identity`);if(a.factor.kind!==`passkey`)throw Error(`replacement envelope is not bound to a passkey`)}catch{return{kind:`refused`}}let o;try{o=await n(t,p({body:{kind:`finalize`,walletId:e.walletId,reservationId:e.reservationId,recoveryOperationId:e.recoveryOperationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,challengeId:e.challengeId,replacementId:e.replacementId,webauthnRegistration:r,replacementEnvelope:a,ecdsaMaterialPossessionProofs:i}}))}catch{return{kind:`transport_uncertain`}}let s=ft(await o.json().catch(()=>({})));if(o.status===200&&s.kind===`success`)try{let t=await k(s.projection,pt(e,a));if(t.kind!==`passkey`)throw Error(`recovery projection branch changed`);return{kind:`promoted`,storeVersion:t.storeVersion,authority:t.authority,authMethod:t.authMethod}}catch{return{kind:`transport_uncertain`}}return o.status===409?{kind:`retryable_conflict`}:o.status===400||o.status===401?{kind:`refused`}:{kind:`transport_uncertain`}}async function dt(e){let t;try{if(t=D(e.replacementEnvelope,`walletRecoveryReplay.replacementEnvelope`),String(t.walletId)!==String(e.walletId)||String(t.envelopeId)!==String(e.replacementId)||t.factor.kind!==`passkey`)throw Error(`recovery replay envelope identity is invalid`)}catch{return{kind:`refused`}}let n;try{n=await(e.fetchImpl??fetch)(`${m(e.relayUrl)}${lt}`,p({body:{kind:`replay`,walletId:e.walletId,reservationId:e.reservationId,recoveryOperationId:e.recoveryOperationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,replacementId:e.replacementId,replacementEnvelope:t}}))}catch{return{kind:`transport_uncertain`}}let r=ft(await n.json().catch(()=>({})));if(n.status===200&&r.kind===`success`)try{let n=await k(r.projection,pt(e,t));if(n.kind!==`passkey`)throw Error(`recovery projection branch changed`);return{kind:`promoted`,storeVersion:n.storeVersion,authority:n.authority,authMethod:n.authMethod}}catch{return{kind:`transport_uncertain`}}return n.status===409?{kind:`retryable_conflict`}:n.status===400||n.status===401?{kind:`refused`}:{kind:`transport_uncertain`}}function ft(e){if(typeof e!=`object`||!e||Array.isArray(e)||Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)return{kind:`invalid`};let t=new Map(Object.entries(e)),n=[...t.keys()];if(t.size===2&&n.includes(`ok`)&&n.includes(`projection`)&&t.get(`ok`)===!0)return{kind:`success`,projection:t.get(`projection`)};let r=t.get(`code`),i=t.get(`message`);return t.size===3&&n.includes(`ok`)&&n.includes(`code`)&&n.includes(`message`)&&t.get(`ok`)===!1&&typeof r==`string`&&typeof i==`string`?{kind:`failure`,code:r,message:i}:{kind:`invalid`}}function pt(e,n){if(n.factor.kind!==`passkey`)throw Error(`replacement envelope is not a passkey envelope`);return{kind:`passkey`,walletId:z(s(e.walletId)),recoveryOperationId:z(o(e.recoveryOperationId)),targetDeviceId:z(E(e.targetDeviceId)),targetAuthorityId:z(i(e.targetAuthorityId)),targetWalletAuthMethodId:z(t(e.targetWalletAuthMethodId)),rpId:n.factor.rpId,credentialIdB64u:n.factor.credentialIdB64u}}function z(e){if(!e.ok)throw Error(`invalid recovery identity`);return e.value}function B(e){return e.target.kind===`passkey`}function mt(e){return{kind:`email_otp_enrollment_reference_v1`,enrollmentId:e.enrollment.enrollmentId,enrollmentSealKeyVersion:e.enrollment.kind===`existing`?e.enrollment.enrollmentSealKeyVersion:e.enrollment.material.enrollmentSealKeyVersion}}const ht=[`kind`,`keySetId`,`applicationBindingDigestB64u`,`registeredPublicKeyB64u`,`participantIds`,`stateEpoch`,`signingWorkerVerifyingShareB64u`,`materialActivation`,`sealed`],gt=[`kind`,`keySetId`,`possessionProof`,`readyStateBlobB64u`,`publicFacts`],_t=[`contextBinding32B64u`,`derivationClientSharePublicKey33B64u`,`clientVerifyingShare33B64u`,`relayerPublicKey33B64u`,`groupPublicKey33B64u`,`ethereumAddress`,`clientShareRetryCounter`,`relayerShareRetryCounter`],vt=[`kind`,`version`,`recoveryOperationId`,`walletId`,`reservationId`,`targetDeviceId`,`targetAuthorityId`,`targetWalletAuthMethodId`,`replacementEnvelope`,`keyManifest`,`nearKeySets`,`ecdsaKeySets`,`target`];function V(e,t,n){if(ee(e,t,n),Object.keys(e).length!==t.length)throw Error(n+` fields are invalid`)}function H(e,t){if(typeof e!=`string`||!e||e.trim()!==e)throw Error(t+` must be a non-empty canonical string`);return e}function U(e,t,n){let r=H(e,t),i=g(r);if(n!==void 0&&i.byteLength!==n)throw Error(t+` must decode to `+n+` bytes`);return r}function yt(e,t){if(typeof e!=`number`||!Number.isSafeInteger(e)||e<0)throw Error(t+` must be a non-negative safe integer`);return e}function bt(e,t){if(!Array.isArray(e)||e.length!==2||e.some(xt))throw Error(t+` must contain two positive participant IDs`);return[e[0],e[1]]}function xt(e){return typeof e!=`number`||!Number.isSafeInteger(e)||e<1}function St(e,t){let n=H(l(t,`recovery durable NEAR key set`).keySetId,`recovery durable NEAR keySetId`),r=e.entries.find(e=>e.keySetId===n);if(!r||r.kind!==`near_ed25519`)throw Error(`recovery durable NEAR key-set manifest entry is invalid`);return r}function Ct(e,t){let n=H(l(t,`recovery durable ECDSA key set`).keySetId,`recovery durable ECDSA keySetId`),r=e.entries.find(e=>e.keySetId===n);if(!r||r.kind!==`evm_family_ecdsa`)throw Error(`recovery durable ECDSA key-set manifest entry is invalid`);return r}function wt(e){let t=_(e);if(!t)throw Error(`recovery runtime policy scope is invalid`);return t}function Tt(t,n){let r=l(t,`recovery durable NEAR key set`);if(V(r,ht,`recovery durable NEAR key set`),r.kind!==`near_ed25519`||r.keySetId!==n.keySetId)throw Error(`recovery durable NEAR key-set identity is invalid`);let i=n.recoveryBasis,a=i.scope.threshold_session_id;if(!e(a).ok)throw Error(`recovery durable NEAR thresholdSessionId is invalid`);let o={kind:De,applicationBindingDigestB64u:y(r.applicationBindingDigestB64u,`recovery durable NEAR application binding digest`),registeredPublicKeyB64u:v(r.registeredPublicKeyB64u,`recovery durable NEAR registered public key`),participantIds:bt(r.participantIds,`recovery durable NEAR participantIds`),stateEpoch:H(r.stateEpoch,`recovery durable NEAR stateEpoch`),walletId:i.applicationBinding.wallet_id,nearAccountId:n.nearAccountId,nearEd25519SigningKeyId:i.applicationBinding.near_ed25519_signing_key_id,signerSlot:ne(i.applicationBinding.key_creation_signer_slot,`recovery durable NEAR signerSlot`),signingWorkerId:i.scope.signing_worker_id,signingWorkerVerifyingShareB64u:v(r.signingWorkerVerifyingShareB64u,`recovery durable NEAR signing-worker verifying share`)},s=l(r.sealed,`recovery durable NEAR sealed material`);return V(s,[`ciphertextB64u`,`nonceB64u`],`recovery durable NEAR sealed material`),{kind:`near_ed25519`,keySetId:n.keySetId,binding:o,thresholdSessionId:a,runtimePolicyScope:wt(i.runtimePolicyScope),materialActivation:_e(r.materialActivation),sealed:{ciphertextB64u:C(s.ciphertextB64u,`recovery durable NEAR ciphertext`),nonceB64u:re(s.nonceB64u,`recovery durable NEAR nonce`)}}}function Et(e){let t=l(e,`recovery durable ECDSA public facts`);V(t,_t,`recovery durable ECDSA public facts`);let n=H(t.ethereumAddress,`recovery durable ECDSA ethereumAddress`).toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(n))throw Error(`recovery durable ECDSA ethereumAddress is invalid`);return{contextBinding32B64u:y(t.contextBinding32B64u,`recovery durable ECDSA context binding`),derivationClientSharePublicKey33B64u:S(t.derivationClientSharePublicKey33B64u,`recovery durable ECDSA client share`),clientVerifyingShare33B64u:S(t.clientVerifyingShare33B64u,`recovery durable ECDSA client verifying share`),relayerPublicKey33B64u:S(t.relayerPublicKey33B64u,`recovery durable ECDSA relayer public key`),groupPublicKey33B64u:S(t.groupPublicKey33B64u,`recovery durable ECDSA group public key`),ethereumAddress:n,clientShareRetryCounter:yt(t.clientShareRetryCounter,`recovery durable ECDSA client-share retry counter`),relayerShareRetryCounter:yt(t.relayerShareRetryCounter,`recovery durable ECDSA relayer-share retry counter`)}}function Dt(e,t){let n=l(e,`recovery durable ECDSA key set`);if(V(n,gt,`recovery durable ECDSA key set`),n.kind!==`evm_family_ecdsa`||n.keySetId!==t.keySetId)throw Error(`recovery durable ECDSA key-set identity is invalid`);return{kind:`evm_family_ecdsa`,entry:t,possessionProof:N(n.possessionProof),readyStateBlobB64u:U(n.readyStateBlobB64u,`recovery durable ECDSA ready-state blob`),publicFacts:Et(n.publicFacts)}}function Ot(e){let t=l(e,`recovery durable registration`);if(V(t,[`kind`,`id`,`rawId`,`type`,`authenticatorAttachment`,`response`],`recovery durable registration`),t.kind!==`wallet_recovery_redacted_registration_v1`)throw Error(`recovery durable registration kind is invalid`);if(t.authenticatorAttachment!==null&&typeof t.authenticatorAttachment!=`string`)throw Error(`recovery durable registration authenticatorAttachment is invalid`);let n=l(t.response,`recovery durable registration response`);if(V(n,[`clientDataJSON`,`attestationObject`,`transports`],`recovery durable registration response`),!Array.isArray(n.transports))throw Error(`recovery durable registration transports are invalid`);return{kind:`wallet_recovery_redacted_registration_v1`,id:H(t.id,`recovery durable registration id`),rawId:U(t.rawId,`recovery durable registration rawId`),type:H(t.type,`recovery durable registration type`),authenticatorAttachment:t.authenticatorAttachment,response:{clientDataJSON:U(n.clientDataJSON,`recovery durable registration clientDataJSON`),attestationObject:U(n.attestationObject,`recovery durable registration attestationObject`),transports:n.transports.map((e,t)=>H(e,`recovery durable registration transports[`+t+`]`))}}}function kt(e){let t=l(e,`recovery durable Email OTP enrollment`);if(t.kind===`existing`)return V(t,[`kind`,`enrollmentId`,`enrollmentSealKeyVersion`],`recovery durable existing Email OTP enrollment`),{kind:`existing`,enrollmentId:H(t.enrollmentId,`recovery enrollmentId`),enrollmentSealKeyVersion:H(t.enrollmentSealKeyVersion,`recovery enrollment seal-key version`)};if(t.kind!==`create`)throw Error(`recovery durable Email OTP enrollment kind is invalid`);V(t,[`kind`,`enrollmentId`,`providerSubject`,`verifiedEmail`,`material`],`recovery durable create Email OTP enrollment`);let n=l(t.material,`recovery durable enrollment material`);return V(n,[`enrollmentSealKeyVersion`,`clientUnlockPublicKeyB64u`,`unlockKeyVersion`,`serverSealedFactorCiphertextB64u`],`recovery durable enrollment material`),{kind:`create`,enrollmentId:H(t.enrollmentId,`recovery enrollmentId`),providerSubject:H(t.providerSubject,`recovery enrollment providerSubject`),verifiedEmail:H(t.verifiedEmail,`recovery enrollment verifiedEmail`),material:{enrollmentSealKeyVersion:H(n.enrollmentSealKeyVersion,`recovery enrollment material seal-key version`),clientUnlockPublicKeyB64u:U(n.clientUnlockPublicKeyB64u,`recovery enrollment client unlock public key`),unlockKeyVersion:H(n.unlockKeyVersion,`recovery enrollment unlock-key version`),serverSealedFactorCiphertextB64u:U(n.serverSealedFactorCiphertextB64u,`recovery enrollment sealed factor ciphertext`)}}}function W(e){let n=l(e,`wallet recovery durable payload`);if(n.kind!==`wallet_recovery_durable_payload_v1`||n.version!==1)throw Error(`wallet recovery durable payload version is invalid`);V(n,[...vt,...l(n.target,`wallet recovery durable target`).kind===`passkey`?[`replacementId`,`challengeId`,`registration`]:[`providerSubject`,`verifiedEmail`,`emailHashHex`,`registrationAuthorityId`,`replacementId`,`enrollment`]],`wallet recovery durable payload`);let c=o(n.recoveryOperationId),u=s(n.walletId),d;try{d=M(n.reservationId)}catch(e){throw Error(`wallet recovery durable reservationId is invalid`,{cause:e})}let f=E(n.targetDeviceId),p=i(n.targetAuthorityId),m=t(n.targetWalletAuthMethodId);if(!c.ok||!u.ok||!f.ok||!p.ok||!m.ok)throw Error(`wallet recovery durable payload identity is invalid`);if(!Array.isArray(n.nearKeySets)||!Array.isArray(n.ecdsaKeySets))throw Error(`wallet recovery durable key-set arrays are invalid`);let h=Xe(n.keyManifest,String(u.value)),g=n.nearKeySets.map(e=>Tt(e,St(h,e))),_=n.ecdsaKeySets.map(e=>Dt(e,Ct(h,e))),v=[...g.map(e=>e.keySetId),..._.map(e=>e.entry.keySetId)];if(new Set(v).size!==v.length)throw Error(`wallet recovery durable key-set ids are duplicated`);if(h.entries.length!==v.length||h.entries.some(e=>!v.includes(e.keySetId)))throw Error(`wallet recovery durable key-set manifest coverage is invalid`);let y={kind:`wallet_recovery_durable_payload_v1`,version:1,recoveryOperationId:c.value,walletId:u.value,reservationId:d,targetDeviceId:f.value,targetAuthorityId:p.value,targetWalletAuthMethodId:m.value,replacementEnvelope:D(n.replacementEnvelope,`wallet recovery durable replacementEnvelope`),keyManifest:h,nearKeySets:g,ecdsaKeySets:_};if(String(y.replacementEnvelope.walletId)!==String(u.value))throw Error(`wallet recovery durable replacement envelope wallet changed`);if(y.replacementEnvelope.ownership.kind!==`method_bound`||y.replacementEnvelope.ownership.walletAuthMethodId!==m.value)throw Error(`wallet recovery durable replacement envelope method changed`);for(let e of g)if(e.binding.walletId!==String(u.value))throw Error(`wallet recovery durable NEAR binding wallet changed`);let b=l(n.target,`wallet recovery durable target`);if(b.kind===`passkey`){V(b,[`kind`,`rpId`],`wallet recovery durable passkey target`);let e=r(b.rpId);if(!e.ok)throw Error(`wallet recovery durable passkey RP ID is invalid`);let t=Ot(n.registration);if(t.rawId!==y.replacementEnvelope.factor.credentialIdB64u)throw Error(`wallet recovery durable passkey registration identity changed`);if(y.replacementEnvelope.factor.kind!==`passkey`)throw Error(`wallet recovery durable passkey envelope factor is invalid`);if(y.replacementEnvelope.factor.rpId!==e.value||y.replacementEnvelope.factor.credentialIdB64u!==t.rawId)throw Error(`wallet recovery durable passkey envelope identity changed`);let i=H(n.replacementId,`wallet recovery durable replacementId`);if(String(y.replacementEnvelope.envelopeId)!==i)throw Error(`wallet recovery durable passkey envelope id changed`);return{...y,target:{kind:`passkey`,rpId:e.value},replacementId:i,challengeId:H(n.challengeId,`wallet recovery durable challengeId`),registration:t}}if(b.kind!==`google_email_otp`)throw Error(`wallet recovery durable target kind is invalid`);V(b,[`kind`],`wallet recovery durable Email OTP target`);let x=H(n.providerSubject,`wallet recovery providerSubject`);if(!a(x).ok)throw Error(`wallet recovery durable providerSubject is invalid`);let ee=H(n.verifiedEmail,`wallet recovery durable verifiedEmail`),S=H(n.emailHashHex,`wallet recovery durable emailHashHex`);if(!/^[0-9a-f]{64}$/.test(S))throw Error(`wallet recovery durable emailHashHex is invalid`);let te=H(n.registrationAuthorityId,`wallet recovery durable registrationAuthorityId`),C=kt(n.enrollment);if(y.replacementEnvelope.factor.kind!==`email_otp`)throw Error(`wallet recovery durable Email OTP envelope factor is invalid`);let w=C.kind===`existing`?{enrollmentId:C.enrollmentId,enrollmentSealKeyVersion:C.enrollmentSealKeyVersion}:{enrollmentId:C.enrollmentId,enrollmentSealKeyVersion:C.material.enrollmentSealKeyVersion};if(y.replacementEnvelope.factor.enrollmentId!==w.enrollmentId||y.replacementEnvelope.factor.enrollmentSealKeyVersion!==w.enrollmentSealKeyVersion)throw Error(`wallet recovery durable Email OTP envelope identity changed`);if(C.kind===`create`&&(C.providerSubject!==x||C.verifiedEmail!==ee))throw Error(`wallet recovery durable Email OTP enrollment identity changed`);let T=H(n.replacementId,`wallet recovery durable replacementId`);if(String(y.replacementEnvelope.envelopeId)!==T)throw Error(`wallet recovery durable Email OTP envelope id changed`);return{...y,target:{kind:`google_email_otp`},providerSubject:x,verifiedEmail:ee,emailHashHex:S,registrationAuthorityId:te,replacementId:T,enrollment:C}}function At(e){let t=e.nearKeySets.map(e=>({kind:e.kind,keySetId:e.keySetId,applicationBindingDigestB64u:e.binding.applicationBindingDigestB64u,registeredPublicKeyB64u:e.binding.registeredPublicKeyB64u,participantIds:e.binding.participantIds,stateEpoch:e.binding.stateEpoch,signingWorkerVerifyingShareB64u:e.binding.signingWorkerVerifyingShareB64u,materialActivation:e.materialActivation,sealed:e.sealed})),n=e.ecdsaKeySets.map(e=>({kind:e.kind,keySetId:e.entry.keySetId,possessionProof:e.possessionProof,readyStateBlobB64u:e.readyStateBlobB64u,publicFacts:e.publicFacts})),r={kind:e.kind,version:e.version,recoveryOperationId:String(e.recoveryOperationId),walletId:String(e.walletId),reservationId:String(e.reservationId),targetDeviceId:String(e.targetDeviceId),targetAuthorityId:String(e.targetAuthorityId),targetWalletAuthMethodId:String(e.targetWalletAuthMethodId),replacementEnvelope:e.replacementEnvelope,keyManifest:e.keyManifest,nearKeySets:t,ecdsaKeySets:n},i=B(e)?{...r,target:e.target,replacementId:e.replacementId,challengeId:e.challengeId,registration:e.registration}:{...r,target:e.target,providerSubject:e.providerSubject,verifiedEmail:e.verifiedEmail,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,replacementId:e.replacementId,enrollment:e.enrollment};return W(i),i}async function G(e){if(B(e))return;let t=await u(e.verifiedEmail);if(e.emailHashHex!==t)throw Error(`wallet recovery durable email hash does not match verified email`);if(e.enrollment.kind===`create`&&(e.enrollment.providerSubject!==e.providerSubject||e.enrollment.verifiedEmail!==e.verifiedEmail))throw Error(`wallet recovery durable enrollment does not match Email OTP identity`)}function K(e){if(B(e)){let t=n(e.registration.rawId);if(!t.ok)throw Error(`wallet recovery durable passkey credential id is invalid`);return{kind:`passkey`,rpId:e.target.rpId,credentialIdB64u:t.value}}let t=a(e.providerSubject);if(!t.ok)throw Error(`wallet recovery durable providerSubject is invalid`);return{kind:`google_email_otp`,providerSubject:t.value,emailHashHex:e.emailHashHex,registrationAuthorityId:e.registrationAuthorityId,enrollment:mt(e)}}function jt(e){return{kind:`near_ed25519`,keySetId:e.entry.keySetId,applicationBindingDigestB64u:e.localMaterial.applicationBindingDigestB64u,registeredPublicKeyB64u:h(e.metadata.registeredPublicKey),participantIds:e.metadata.participantIds,stateEpoch:String(e.metadata.stateEpoch),signingWorkerVerifyingShareB64u:h(e.metadata.signingWorkerVerifyingShare),materialActivation:pe(e.metadata.materialActivation),sealed:{ciphertextB64u:e.localMaterial.b64u,nonceB64u:e.localMaterial.nonceB64u}}}function Mt(e){return{kind:`evm_family_ecdsa`,keySetId:e.entry.keySetId,possessionProof:N(e.activation.possessionProof),readyStateBlobB64u:e.readyStateBlobB64u,publicFacts:e.publicFacts}}function Nt(e){return{kind:`wallet_recovery_redacted_registration_v1`,id:e.id,rawId:e.rawId,type:e.type,authenticatorAttachment:e.authenticatorAttachment??null,response:{clientDataJSON:e.response.clientDataJSON,attestationObject:e.response.attestationObject,transports:[...e.response.transports]}}}async function Pt(e){let t={kind:`wallet_recovery_durable_payload_v1`,version:1,recoveryOperationId:String(e.prepared.recoveryOperationId),walletId:e.walletId,reservationId:e.prepared.reservationId,targetDeviceId:e.prepared.targetDeviceId,targetAuthorityId:e.prepared.targetAuthorityId,targetWalletAuthMethodId:e.prepared.targetWalletAuthMethodId,replacementEnvelope:D(e.recovered.replacementEnvelope,`wallet recovery durable replacement envelope`),keyManifest:{version:`wallet_recovery_preparation_key_manifest_v1`,walletId:String(e.walletId),entries:[...e.recovered.nearKeySets.map(e=>e.entry),...e.recovered.ecdsaKeySets.map(e=>e.entry)]},nearKeySets:e.recovered.nearKeySets.map(jt),ecdsaKeySets:e.recovered.ecdsaKeySets.map(Mt)};if(e.replacement.kind===`passkey`){if(e.target.kind!==`passkey`)throw Error(`wallet recovery durable payload branch is invalid`);let n=e.prepared.registration;if(!n)throw Error(`wallet recovery registration options are unavailable`);let r=Nt(e.replacement.registration);if(r.rawId!==e.replacement.credentialIdB64u)throw Error(`wallet recovery passkey registration rawId changed its credential identity`);let i=W({...t,target:{kind:`passkey`,rpId:e.target.rpId},replacementId:n.replacementId,challengeId:n.challengeId,registration:r});return await G(i),i}if(e.target.kind!==`google_email_otp`)throw Error(`wallet recovery durable payload branch is invalid`);let n=e.replacement.enrollment;if(e.replacement.factor.walletAuthMethodId!==t.targetWalletAuthMethodId)throw Error(`wallet recovery Email OTP factor method changed its target identity`);let r=await u(e.replacement.verifiedEmail),i=W({...t,target:{kind:`google_email_otp`},enrollment:n,providerSubject:e.replacement.providerSubject,verifiedEmail:e.replacement.verifiedEmail,emailHashHex:r,registrationAuthorityId:e.replacement.registrationAuthorityId,replacementId:e.replacement.factor.replacementId});return await G(i),i}function Ft(e){return new TextEncoder().encode(d({kind:`pending_wallet_recovery_commit_v1`,version:1,...e}))}function It(e){return Ft({recoveryOperationId:e.recoveryOperationId,walletId:e.walletId,reservationId:e.reservationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,target:K(e)})}async function Lt(e){let t=await crypto.subtle.generateKey({name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`]);if(!(t instanceof CryptoKey))throw Error(`wallet recovery durable key generation failed`);let n=crypto.getRandomValues(new Uint8Array(12)),r=new TextEncoder().encode(JSON.stringify(At(e)));return{kind:`wallet_recovery_encrypted_material_v1`,key:t,iv:n,ciphertext:new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:n,additionalData:It(e)},t,r))}}async function Rt(e){let t=await crypto.subtle.decrypt({name:`AES-GCM`,iv:e.localMaterial.iv.slice(),additionalData:zt(e)},e.localMaterial.key,e.localMaterial.ciphertext.slice()),n=W(JSON.parse(new TextDecoder().decode(t)));if(await G(n),!Bt(e,n))throw Error(`wallet recovery durable payload identity does not match its journal`);return n}function zt(e){return Ft({recoveryOperationId:e.recoveryOperationId,walletId:e.walletId,reservationId:e.reservationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,target:e.target})}function q(e){let t=o(e);if(!t.ok)throw Error(`wallet recovery operation id is invalid`);return t.value}function Bt(e,t){let n={kind:`pending_wallet_recovery_commit_v1`,version:1,recoveryOperationId:q(t.recoveryOperationId),walletId:t.walletId,reservationId:t.reservationId,targetDeviceId:t.targetDeviceId,targetAuthorityId:t.targetAuthorityId,targetWalletAuthMethodId:t.targetWalletAuthMethodId,localMaterial:e.localMaterial,createdAtMs:e.createdAtMs,updatedAtMs:e.updatedAtMs},r=K(t);if(e.stage===`awaiting_server_promotion`)return A(e,{...n,stage:`awaiting_server_promotion`,target:r});switch(r.kind){case`passkey`:return e.projection.kind===`passkey`?A(e,{...n,stage:`server_promoted`,target:r,projection:e.projection}):!1;case`google_email_otp`:return e.projection.kind===`google_email_otp`?A(e,{...n,stage:`server_promoted`,target:r,projection:e.projection}):!1}}function Vt(e,t,n,r){return{kind:`pending_wallet_recovery_commit_v1`,version:1,recoveryOperationId:q(e.recoveryOperationId),walletId:e.walletId,reservationId:e.reservationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,target:K(e),localMaterial:t,createdAtMs:n,updatedAtMs:r}}function Ht(e,t,n=Date.now()){return{...Vt(e,t,n,n),stage:`awaiting_server_promotion`}}function Ut(e,t,n,r=Date.now()){let i=Vt(t,e.localMaterial,e.createdAtMs,Math.max(r,e.createdAtMs+1));if(B(t)){if(n.kind!==`passkey`)throw Error(`wallet recovery promotion projection branch changed`);return{...i,stage:`server_promoted`,target:K(t),projection:n}}if(n.kind!==`google_email_otp`)throw Error(`wallet recovery promotion projection branch changed`);return{...i,stage:`server_promoted`,target:K(t),projection:n}}const Wt=`/wallets/recovery/google-email-otp/finalize`;async function Gt(e){let t=await J(e,`/wallets/recovery/google/verify`,{recoveryOperationId:e.recoveryOperationId,reservationId:e.reservationId,idToken:e.idToken});if(!t.ok)return t.failure;try{let n=Xt(t.body),r=Yt(n,e),i=Q(c(n.challengeId)),a=Number(n.expiresAtMs);if(!Number.isSafeInteger(a)||a<=0)throw Error(`invalid expiry`);return{kind:`verified`,...r,challengeId:i,delivery:Ne(n.delivery,`walletRecoveryGoogleVerify.delivery`),expiresAtMs:a}}catch{return{kind:`transport_uncertain`}}}async function Kt(e){let t=await J(e,`/wallets/recovery/email-otp/verify`,{recoveryOperationId:e.recoveryOperationId,reservationId:e.reservationId,challengeId:e.challengeId,otpCode:e.otpCode});if(!t.ok)return t.failure;try{let n=Zt(t.body),r=Yt(n,e),i=Q(c(n.challengeId));if(i!==e.challengeId)throw Error(`challenge changed`);return{kind:`verified`,...r,challengeId:i}}catch{return{kind:`transport_uncertain`}}}async function qt(e){let t,n;try{if(t=D(e.replacementEnvelope,`walletRecoveryGoogleEmailOtpFinalize.replacementEnvelope`),t.factor.kind!==`email_otp`)throw Error(`wrong factor`);n=e.ecdsaMaterialPossessionProofs.map(e=>({keySetId:e.keySetId,proof:N(e.proof)}))}catch{return{kind:`refused`}}let r=await J(e,Wt,{kind:`finalize`,recoveryOperationId:e.recoveryOperationId,reservationId:e.reservationId,replacementEnvelope:t,ecdsaMaterialPossessionProofs:n,...e.emailOtpEnrollment?{emailOtpEnrollment:e.emailOtpEnrollment}:{}});if(!r.ok)return r.failure;try{let n=await k(Qt(r.body,`walletRecoveryGoogleEmailOtpFinalize`).projection,en(e,t));if(n.kind!==`google_email_otp`)throw Error(`recovery projection branch changed`);return{kind:`promoted`,storeVersion:n.storeVersion,authority:n.authority,authMethod:n.authMethod}}catch{return{kind:`transport_uncertain`}}}async function Jt(e){let t;try{if(t=D(e.replacementEnvelope,`walletRecoveryGoogleEmailOtpReplay.replacementEnvelope`),t.factor.kind!==`email_otp`||String(t.walletId)!==String(e.walletId))throw Error(`recovery replay envelope identity is invalid`)}catch{return{kind:`refused`}}let n=await J(e,Wt,{kind:`replay`,recoveryOperationId:e.recoveryOperationId,reservationId:e.reservationId,replacementEnvelope:t});if(!n.ok)return n.failure;try{let r=await k(Qt(n.body,`walletRecoveryGoogleEmailOtpReplay`).projection,en(e,t));if(r.kind!==`google_email_otp`)throw Error(`recovery projection branch changed`);return{kind:`promoted`,storeVersion:r.storeVersion,authority:r.authority,authMethod:r.authMethod}}catch{return{kind:`transport_uncertain`}}}async function J(e,t,n){let r;try{r=await(e.fetchImpl??fetch)(`${m(e.relayUrl)}${t}`,p({body:n}))}catch{return{ok:!1,failure:{kind:`transport_uncertain`}}}let i=await r.json().catch(()=>void 0);return r.status===200?{ok:!0,body:i}:r.status===409||r.status===429?{ok:!1,failure:{kind:`retryable_conflict`}}:r.status===400||r.status===401?{ok:!1,failure:{kind:`refused`}}:{ok:!1,failure:{kind:`transport_uncertain`}}}function Yt(e,t){let n=Q(o(e.recoveryOperationId)),r=M(e.reservationId);if(n!==t.recoveryOperationId||r!==t.reservationId)throw Error(`recovery operation identity changed`);return{recoveryOperationId:n,reservationId:r}}function Xt(e){let t=Y(e,[`ok`,`recoveryOperationId`,`reservationId`,`challengeId`,`delivery`,`expiresAtMs`],`walletRecoveryGoogleVerify`);return X(t,`walletRecoveryGoogleVerify`),{recoveryOperationId:Z(t,`recoveryOperationId`),reservationId:Z(t,`reservationId`),challengeId:Z(t,`challengeId`),delivery:Z(t,`delivery`),expiresAtMs:Z(t,`expiresAtMs`)}}function Zt(e){let t=Y(e,[`ok`,`recoveryOperationId`,`reservationId`,`challengeId`],`walletRecoveryEmailOtpVerify`);return X(t,`walletRecoveryEmailOtpVerify`),{recoveryOperationId:Z(t,`recoveryOperationId`),reservationId:Z(t,`reservationId`),challengeId:Z(t,`challengeId`)}}function Qt(e,t){let n=Y(e,[`ok`,`projection`],t);return X(n,t),{projection:Z(n,`projection`)}}function Y(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`${n} must be a JSON object`);let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw Error(`${n} must be a plain JSON object`);let i=Object.keys(e);if(i.length!==t.length||!$t(i,t))throw Error(`${n} has an unexpected response shape`);return e}function $t(e,t){for(let n of t)if(!e.includes(n))return!1;return!0}function X(e,t){if(Z(e,`ok`)!==!0)throw Error(`${t} did not succeed`)}function Z(e,t){let n=Object.getOwnPropertyDescriptor(e,t);if(!n||!(`value`in n))throw Error(`response field ${t} is missing`);return n.value}function Q(e){if(!e.ok)throw Error(`invalid domain identity`);return e.value}function $(e){if(typeof e!=`string`||!e.trim())throw Error(`value must be a string`);return e.trim()}function en(e,t){if(t.factor.kind!==`email_otp`)throw Error(`replacement envelope is not an Email OTP envelope`);return{kind:`google_email_otp`,walletId:e.walletId,recoveryOperationId:e.recoveryOperationId,targetDeviceId:e.targetDeviceId,targetAuthorityId:e.targetAuthorityId,targetWalletAuthMethodId:e.targetWalletAuthMethodId,providerSubject:Q(a(e.expectedProviderSubject)),emailHashHex:tn(e.expectedEmailHashHex),registrationAuthorityId:$(e.expectedRegistrationAuthorityId),enrollment:{kind:`email_otp_enrollment_reference_v1`,enrollmentId:$(t.factor.enrollmentId),enrollmentSealKeyVersion:$(t.factor.enrollmentSealKeyVersion)}}}function tn(e){let t=$(e);if(!/^[0-9a-f]{64}$/.test(t))throw Error(`email hash is invalid`);return t}async function nn(e,t){if(e.version!==t.version||e.storeVersion!==t.storeVersion||e.walletId!==t.walletId||e.recoveryOperationId!==t.recoveryOperationId||e.targetDeviceId!==t.targetDeviceId||e.targetAuthorityId!==t.targetAuthorityId||e.targetWalletAuthMethodId!==t.targetWalletAuthMethodId||!await se(e.authority,t.authority)||!Se(e.authMethod,t.authMethod)||e.kind!==t.kind)return!1;switch(e.kind){case`passkey`:return t.kind===`passkey`?e.target.kind===t.target.kind&&e.target.rpId===t.target.rpId&&e.target.credentialIdB64u===t.target.credentialIdB64u:!1;case`google_email_otp`:return t.kind===`google_email_otp`?e.target.kind===t.target.kind&&e.target.provider===t.target.provider&&e.target.providerSubject===t.target.providerSubject&&e.target.emailHashHex===t.target.emailHashHex&&e.target.registrationAuthorityId===t.target.registrationAuthorityId&&e.target.enrollment.kind===t.target.enrollment.kind&&e.target.enrollment.enrollmentId===t.target.enrollment.enrollmentId&&e.target.enrollment.enrollmentSealKeyVersion===t.target.enrollment.enrollmentSealKeyVersion:!1;default:return rn(e)}}function rn(e){throw Error(`unsupported wallet recovery projection: ${String(e)}`)}function an(e){let t=q(e.payload.recoveryOperationId);switch(e.kind){case`passkey`:return Te({kind:`passkey`,storeVersion:e.promotion.storeVersion,walletId:e.payload.walletId,recoveryOperationId:t,targetDeviceId:e.payload.targetDeviceId,targetAuthorityId:e.payload.targetAuthorityId,targetWalletAuthMethodId:e.payload.targetWalletAuthMethodId,authority:e.promotion.authority,authMethod:e.promotion.authMethod});case`google_email_otp`:{let n=a(e.payload.providerSubject);if(!n.ok)throw Error(`wallet recovery provider subject is invalid`);return Te({kind:`google_email_otp`,storeVersion:e.promotion.storeVersion,walletId:e.payload.walletId,recoveryOperationId:t,targetDeviceId:e.payload.targetDeviceId,targetAuthorityId:e.payload.targetAuthorityId,targetWalletAuthMethodId:e.payload.targetWalletAuthMethodId,authority:e.promotion.authority,authMethod:e.promotion.authMethod,providerSubject:n.value,emailHashHex:e.payload.emailHashHex,registrationAuthorityId:e.payload.registrationAuthorityId,enrollment:mt(e.payload)})}}}function on(e){return e.ecdsaKeySets.map(e=>({keySetId:e.entry.keySetId,proof:e.possessionProof}))}function sn(e){return{id:e.registration.id,rawId:e.registration.rawId,type:e.registration.type,authenticatorAttachment:e.registration.authenticatorAttachment??void 0,response:{clientDataJSON:e.registration.response.clientDataJSON,attestationObject:e.registration.response.attestationObject,transports:[...e.registration.response.transports]},clientExtensionResults:{prf:{results:{first:void 0,second:void 0}}}}}async function cn(e){let{payload:t}=e;if(B(t)){let n=await ut({relayUrl:e.relayUrl,walletId:String(t.walletId),reservationId:String(t.reservationId),recoveryOperationId:q(t.recoveryOperationId),targetDeviceId:String(t.targetDeviceId),targetAuthorityId:String(t.targetAuthorityId),targetWalletAuthMethodId:String(t.targetWalletAuthMethodId),challengeId:t.challengeId,replacementId:t.replacementId,webauthnRegistration:sn(t),replacementEnvelope:t.replacementEnvelope,ecdsaMaterialPossessionProofs:on(t),fetchImpl:e.fetchImpl});return n.kind===`promoted`?{kind:`passkey`,payload:t,promotion:n}:n}let n=await qt({relayUrl:e.relayUrl,recoveryOperationId:q(t.recoveryOperationId),reservationId:t.reservationId,walletId:t.walletId,targetDeviceId:t.targetDeviceId,targetAuthorityId:t.targetAuthorityId,targetWalletAuthMethodId:t.targetWalletAuthMethodId,expectedProviderSubject:t.providerSubject,expectedEmailHashHex:t.emailHashHex,expectedRegistrationAuthorityId:t.registrationAuthorityId,replacementEnvelope:t.replacementEnvelope,ecdsaMaterialPossessionProofs:on(t),emailOtpEnrollment:ln(t.enrollment),fetchImpl:e.fetchImpl});return n.kind===`promoted`?{kind:`google_email_otp`,payload:t,promotion:n}:n}function ln(e){return e.kind===`create`?{kind:`create`,material:e.material}:null}async function un(e){let{payload:t}=e;if(B(t)){let n=await dt({relayUrl:e.relayUrl,walletId:String(t.walletId),reservationId:String(t.reservationId),recoveryOperationId:q(t.recoveryOperationId),targetDeviceId:String(t.targetDeviceId),targetAuthorityId:String(t.targetAuthorityId),targetWalletAuthMethodId:String(t.targetWalletAuthMethodId),replacementId:t.replacementId,replacementEnvelope:t.replacementEnvelope,fetchImpl:e.fetchImpl});return n.kind===`promoted`?{kind:`passkey`,payload:t,promotion:n}:n}let n=await Jt({relayUrl:e.relayUrl,recoveryOperationId:q(t.recoveryOperationId),reservationId:t.reservationId,walletId:t.walletId,targetDeviceId:t.targetDeviceId,targetAuthorityId:t.targetAuthorityId,targetWalletAuthMethodId:t.targetWalletAuthMethodId,expectedProviderSubject:t.providerSubject,expectedEmailHashHex:t.emailHashHex,expectedRegistrationAuthorityId:t.registrationAuthorityId,replacementEnvelope:t.replacementEnvelope,fetchImpl:e.fetchImpl});return n.kind===`promoted`?{kind:`google_email_otp`,payload:t,promotion:n}:n}function dn(e){return e.kind===`passkey`||e.kind===`google_email_otp`}async function fn(e){let t=await un(e);return dn(t)||t.kind!==`refused`?t:await cn(e)}function pn(e,t){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:t.target.credentialIdB64u},verifier:{kind:`webauthn`,rpId:t.target.rpId},bindingId:t.authMethod.walletAuthMethodId}}function mn(e,t){let n=ge({walletId:e.walletId,provider:`google`,providerUserId:e.providerSubject,emailHashHex:e.emailHashHex});return{walletId:n.walletId,factor:n.factor,verifier:n.verifier,bindingId:t.authMethod.walletAuthMethodId}}async function hn(e,t){if(B(e)){if(t.kind!==`passkey`)throw Error(`wallet recovery projection branch changed`);return ye({authority:pn(e,t)})}if(t.kind!==`google_email_otp`)throw Error(`wallet recovery projection branch changed`);return ye({authority:mn(e,t)})}async function gn(e){let t=[],n=[];for(let r of e.payload.ecdsaKeySets){let i=r.entry,a=i.recoveryBasis,o=await le({walletId:e.payload.walletId,signingRootId:a.signingRootId,signingRootVersion:a.signingRootVersion}),s=await Ae({authority:e.authority,chainTargets:a.chainTargets,walletId:String(e.payload.walletId),keyHandle:i.keyHandle,ecdsaThresholdKeyId:a.ecdsaThresholdKeyId,signingRootId:a.signingRootId,signingRootVersion:a.signingRootVersion,relayerKeyId:o,participantIds:a.participantIds,publicCapability:a.publicCapability,activationReceipt:a.activationReceipt,runtimePolicyScope:a.runtimePolicyScope,readyStateBlobB64u:r.readyStateBlobB64u,publicFacts:r.publicFacts});n.push(s);for(let n of a.chainTargets)t.push(_n({payload:e.payload,keySet:r,chainTarget:n,materialRef:s.roleLocalMaterialRef,relayerKeyId:o}))}return{walletKeys:t,ecdsaContinuity:n}}function _n(e){let t=e.keySet.entry,n=t.recoveryBasis,r=e.keySet.publicFacts,i=Ce({walletId:e.payload.walletId,chainTarget:e.chainTarget,keyHandle:t.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,applicationBindingDigestB64u:n.publicCapability.context.application_binding_digest_b64u,clientParticipantId:1,relayerParticipantId:2,participantIds:n.participantIds,contextBinding32B64u:r.contextBinding32B64u,derivationClientSharePublicKey33B64u:r.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:r.relayerPublicKey33B64u,groupPublicKey33B64u:r.groupPublicKey33B64u,ethereumAddress:r.ethereumAddress,publicCapability:n.publicCapability});return{keyScope:`evm-family`,chainTarget:e.chainTarget,walletId:String(e.payload.walletId),evmFamilySigningKeySlotId:t.evmFamilySigningKeySlotId,keyHandle:t.keyHandle,ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,thresholdEcdsaPublicKeyB64u:r.groupPublicKey33B64u,thresholdOwnerAddress:r.ethereumAddress,relayerKeyId:e.relayerKeyId,relayerVerifyingShareB64u:r.relayerPublicKey33B64u,participantIds:n.participantIds,publicCapability:n.publicCapability,roleLocalMaterialRef:e.materialRef,ecdsaRoleLocalPublicFacts:i}}function vn(e){if(e.nearKeySets.length!==1)throw Error(`wallet recovery requires exactly one NEAR key set`);return e.nearKeySets[0]}function yn(e){return[...e.registration.response.transports]}function bn(e){return`ed25519:${oe(g(vn(e).binding.registeredPublicKeyB64u))}`}function xn(t,n){let r=e(n.thresholdSessionId);if(!r.ok)throw Error(`recovery NEAR threshold session id is invalid`);return{walletId:t.walletId,nearAccountId:O(n.binding.nearAccountId),thresholdSessionId:r.value,runtimePolicyScope:n.runtimePolicyScope,materialActivation:fe(n.materialActivation)}}async function Sn(e){if(B(e.payload)){if(e.projection.kind!==`passkey`)throw Error(`wallet recovery projection branch changed`);let t={walletId:e.payload.walletId,rpId:e.projection.target.rpId,credentialIdB64u:e.projection.target.credentialIdB64u,credentialPublicKeyB64u:e.projection.authMethod.credentialPublicKeyB64u,transports:yn(e.payload),walletKeys:e.walletKeys};if(e.payload.nearKeySets.length===0)return Oe({kind:`evm_family_ecdsa`,...t});let n=vn(e.payload);return Oe({kind:`near_ed25519`,...t,nearAccountId:O(n.binding.nearAccountId),nearEd25519SigningKeyId:n.binding.nearEd25519SigningKeyId,signerSlot:n.binding.signerSlot,operationalPublicKey:bn(e.payload),relayerKeyId:n.binding.signingWorkerId,participantIds:n.binding.participantIds,custodyMaterials:e.payload.nearKeySets.map(e=>({binding:e.binding,sealed:e.sealed}))})}if(e.projection.kind!==`google_email_otp`)throw Error(`wallet recovery projection branch changed`);let t=mn(e.payload,e.projection),n={walletId:e.payload.walletId,email:e.payload.verifiedEmail,registrationAuthorityId:e.payload.registrationAuthorityId,authority:t,walletKeys:e.walletKeys};if(e.payload.nearKeySets.length===0)return ke({kind:`evm_family_ecdsa`,...n});let r=vn(e.payload);return ke({kind:`near_ed25519`,...n,nearAccountId:O(r.binding.nearAccountId),nearEd25519SigningKeyId:r.binding.nearEd25519SigningKeyId,signerSlot:r.binding.signerSlot,operationalPublicKey:bn(e.payload),relayerKeyId:r.binding.signingWorkerId,participantIds:r.binding.participantIds,custodyMaterials:e.payload.nearKeySets.map(e=>({binding:e.binding,sealed:e.sealed}))})}async function Cn(e){let t=e.pending.projection,n=await hn(e.payload,t),r=await gn({payload:e.payload,authority:n}),i=await Sn({payload:e.payload,projection:t,walletKeys:r.walletKeys});await j.publishPendingWalletRecoveryCommit({pending:e.pending,authority:t.authority,authMethod:t.authMethod,registration:i,ecdsaContinuity:r.ecdsaContinuity,ed25519PublicCapabilityReferences:e.payload.nearKeySets.map(t=>xn(e.payload,t))})}async function wn(e){let t=await j.listPendingWalletRecoveryCommits(),n=[];for(let r of t)try{let t=await Rt(r),i=r.stage===`awaiting_server_promotion`?await fn({relayUrl:e.relayUrl,payload:t,fetchImpl:e.fetchImpl}):await un({relayUrl:e.relayUrl,payload:t,fetchImpl:e.fetchImpl});if(!dn(i)){if(i.kind===`refused`){await j.deletePendingWalletRecoveryCommit(r.recoveryOperationId),n.push({kind:`discarded`,recoveryOperationId:String(r.recoveryOperationId)});continue}n.push({kind:`pending`,recoveryOperationId:String(r.recoveryOperationId),failure:i});continue}let a=i,o=an(a),s=r.stage===`awaiting_server_promotion`?await j.advancePendingWalletRecoveryCommit({awaiting:r,promoted:Ut(r,a.payload,o,r.updatedAtMs+1)}):r;if(r.stage===`server_promoted`&&!await nn(r.projection,o))throw Error(`wallet recovery replay projection changed`);await Cn({pending:s,payload:a.payload}),n.push({kind:`completed`,recoveryOperationId:String(r.recoveryOperationId)})}catch(e){console.warn(`[SeamsWeb] pending wallet recovery replay failed before classification:`,String(r.recoveryOperationId),e instanceof Error?e.message:String(e||`unknown error`)),n.push({kind:`corrupt`,recoveryOperationId:String(r.recoveryOperationId)})}return n}async function Tn(e){let t=await Pt(e.operation);return{payload:t,pending:Ht(t,await Lt(t),e.nowMs)}}async function En(e){let t=an(e.promotion);return j.advancePendingWalletRecoveryCommit({awaiting:e.awaiting,promoted:Ut(e.awaiting,e.promotion.payload,t,e.awaiting.updatedAtMs+1)})}export{qt as a,B as c,Be as d,wn as i,ut as l,En as n,Kt as o,Cn as r,Gt as s,Tn as t,ze as u};