@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
package/README.md CHANGED
@@ -1,19 +1,19 @@
1
1
  # Seams Wallet SDK
2
2
 
3
- `@seams/wallet` **0.17.0** provides browser wallet lifecycle, NEAR and EVM-family
3
+ `@seams/wallet` **0.29.0** provides browser wallet lifecycle, NEAR and EVM-family
4
4
  threshold signing, React components, and hosted wallet runtime assets.
5
5
 
6
6
  ## Install
7
7
 
8
8
  ```sh
9
- pnpm add @seams/wallet@0.17.0
9
+ pnpm add @seams/wallet@0.29.0
10
10
  ```
11
11
 
12
12
  React integrations support React 18 and 19. Import the provider and UI from
13
13
  `@seams/wallet/react` and its stylesheet from `@seams/wallet/react/styles`.
14
14
  Keep the application package, wallet-origin assets, and
15
- `@seams/wallet-server@0.17.0` on the matching release. The wallet iframe protocol
16
- is `16.0.0`. The application and wallet host must use the same protocol version.
15
+ `@seams/wallet-server@0.29.0` on the matching release. The wallet iframe protocol
16
+ is `19.0.0`. The application and wallet host must use the same protocol version.
17
17
 
18
18
  ## Current API
19
19
 
@@ -46,6 +46,31 @@ The SDK selects signers and completes pending activation internally.
46
46
  Request email codes only after a user chooses that method. The wallet host owns
47
47
  the challenge and its expiry. The application receives the typed challenge handle.
48
48
 
49
+ ## Application sessions and fresh owner approval
50
+
51
+ SDK 0.29.0 accepts a handoff from an explicitly trusted application backend.
52
+ Google and app-passkey login can use the same stable application user ID.
53
+ Use `registration.registerOwnerWallet` for NEAR-only passkey onboarding and `near.prepareOwnerTransaction` for fresh approval of each transaction.
54
+ These operations create no reusable signing authority.
55
+ React read connections expose owner-operation handles separately from reusable signers.
56
+ See the [application-session guide](https://wallet.seams.sh/docs/guides/application-auth).
57
+
58
+ ## Bring your own Google authentication
59
+
60
+ SDK 0.29.0 can reuse an application's Google ID token to open associated wallet settings.
61
+ Configure the environment's Google client ID and let the owner associate their wallet once.
62
+ Then pass the token after the application's existing Google login:
63
+
64
+ ```ts
65
+ const result = await seams.auth.authenticate({ method: 'google', walletId, idToken });
66
+ if (!result.ok) throw new Error(result.code);
67
+ ```
68
+
69
+ Apps that retain the token on their backend use `prepareExternalAuth` and a browser-bound handoff.
70
+ Call `seams.auth.lock()` when the app logs out or switches accounts.
71
+ These sessions grant settings reads. Signing, export, recovery, and security changes retain their owner authentication requirements.
72
+ See the [Google SSO guide](https://wallet.seams.sh/docs/guides/google-sso) for both exchange paths, association, expiry, and revocation.
73
+
49
74
  ## React quick start
50
75
 
51
76
  The three required values are the wallet origin, Gateway/relayer URL, and
@@ -1 +1 @@
1
- 454b5591bcd47936d9aea9092966bd446c1e755578e6e1accdd9831099483a70
1
+ 810cdbbc2f95b4a48d4b1ce36a3ab524ffd0f3efff7c5a8eeb00d48a8c98c70c
@@ -42,6 +42,7 @@ function createPublicApi(deps) {
42
42
  setAuthMethodEnabled: deps.registration.setAuthMethodEnabled,
43
43
  addEmail: deps.registration.addEmail,
44
44
  removeAuthMethod: deps.registration.removeAuthMethod,
45
+ registerOwnerWallet: registerOwnerWallet.bind(null, deps.registration),
45
46
  registerWallet: registerWallet.bind(null, deps.registration, deps.configs)
46
47
  },
47
48
  recovery: deps.recovery,
@@ -66,6 +67,7 @@ async function registerWallet(commands, configs, args) {
66
67
  options: args.options ?? {}
67
68
  }) : args.signerSelection;
68
69
  command = {
70
+ completion: "wallet_session",
69
71
  authMethod: args.authMethod,
70
72
  wallet,
71
73
  signerSelection,
@@ -120,6 +122,15 @@ function createReviewedCapabilities(deps, reservation) {
120
122
  evm: evmFamily.evm
121
123
  };
122
124
  }
125
+ async function registerOwnerWallet(commands, args) {
126
+ return await commands.registerWallet({
127
+ completion: "owner_operations",
128
+ authMethod: args.authMethod,
129
+ wallet: args.wallet ?? { kind: "server_allocated" },
130
+ signerSelection: args.signerSelection,
131
+ options: args.options
132
+ });
133
+ }
123
134
  //#endregion
124
135
  export { createApplicationPublicApi };
125
136
 
@@ -2,12 +2,15 @@ import { CAPABILITY_KINDS, NEAR_ED25519_MPC_OPERATION_KINDS } from "../../shared
2
2
  import { toError } from "../../shared-ts/src/utils/errors.js";
3
3
  import { nearTransactionFailure } from "../../core/signingEngine/nearTransactionSubmission.js";
4
4
  import { requireBrowserCapabilityOperation } from "./capabilitySelection.js";
5
+ import { prepareOwnerNearTransaction, resumeOwnerNearTransaction } from "./ownerNearOperation.js";
5
6
  import { accountExists } from "../../core/rpcClients/near/accountExists.js";
6
7
  import { delegateRelayerAuthFromConfigs, sendDelegateAction } from "../operations/near/delegateAction.js";
7
8
  //#region src/SeamsWeb/publicApi/near.ts
8
9
  function createNearSignerCapability(deps) {
9
10
  const signer = new NearSigner(deps);
10
11
  return {
12
+ prepareOwnerTransaction: prepareOwnerNearTransaction.bind(null, deps.commands.ownerOperation),
13
+ resumeOwnerTransaction: resumeOwnerNearTransaction.bind(null, deps.commands.ownerOperation),
11
14
  accountExists: accountExists.bind(null, deps.nearClient),
12
15
  signAndSendTransaction: signer.signAndSendTransaction.bind(signer),
13
16
  signTransaction: signer.signTransaction.bind(signer),
@@ -0,0 +1,175 @@
1
+ import { secureRandomBase64Url } from "../../shared-ts/src/utils/secureRandomId.js";
2
+ import { SigningSessionIds } from "../../core/signingEngine/session/operationState/types.js";
3
+ import { toAccountId } from "../../core/types/accountIds.js";
4
+ import { toActionArgsWasm } from "../../shared-ts/src/near/actions.js";
5
+ import { parseOwnerNearCommand, parseOwnerNearRecovery } from "../walletIframe/shared/ownerNearOperation.js";
6
+ //#region src/SeamsWeb/publicApi/ownerNearOperation.ts
7
+ function prepareOwnerNearTransaction(execute, input) {
8
+ const recovery = {
9
+ operationId: SigningSessionIds.signingOperation(`owner-near:${secureRandomBase64Url(32, "owner NEAR operation IDs")}`),
10
+ walletId: input.authentication.walletId,
11
+ nearAccountId: toAccountId(input.nearAccountId)
12
+ };
13
+ const command = parseOwnerNearCommand({
14
+ action: "approve",
15
+ authentication: input.authentication,
16
+ recovery,
17
+ expiresAtMs: Math.min(input.authentication.expiresAtMs, Date.now() + 12e4),
18
+ transaction: {
19
+ receiverId: input.transaction.receiverId,
20
+ actions: input.transaction.actions.map(toActionArgsWasm)
21
+ }
22
+ });
23
+ if (command.action !== "approve") throw new Error("Invalid prepared owner operation.");
24
+ return new OwnerNearTransaction(execute, command, {
25
+ kind: "prepared",
26
+ recovery,
27
+ expiresAtMs: command.expiresAtMs
28
+ });
29
+ }
30
+ function resumeOwnerNearTransaction(execute, input) {
31
+ const recovery = parseOwnerNearRecovery(input.recovery);
32
+ return new OwnerNearTransaction(execute, parseOwnerNearCommand({
33
+ action: "recover",
34
+ authentication: input.authentication,
35
+ recovery
36
+ }), {
37
+ kind: "unknown",
38
+ recovery
39
+ });
40
+ }
41
+ var OwnerNearTransaction = class {
42
+ controller = new AbortController();
43
+ listeners = /* @__PURE__ */ new Set();
44
+ inFlight = null;
45
+ constructor(execute, command, state) {
46
+ this.execute = execute;
47
+ this.command = command;
48
+ this.state = state;
49
+ }
50
+ getState() {
51
+ return this.state;
52
+ }
53
+ subscribe(listener) {
54
+ this.listeners.add(listener);
55
+ return this.removeListener.bind(this, listener);
56
+ }
57
+ removeListener(listener) {
58
+ this.listeners.delete(listener);
59
+ }
60
+ transition(state) {
61
+ this.state = state;
62
+ for (const listener of this.listeners) try {
63
+ listener();
64
+ } catch {}
65
+ }
66
+ approve() {
67
+ if (this.inFlight) return this.inFlight;
68
+ if (this.command.action !== "approve" || this.state.kind !== "prepared") throw new Error("This operation cannot request another approval.");
69
+ if (this.command.expiresAtMs <= Date.now()) {
70
+ this.transition({
71
+ kind: "expired",
72
+ recovery: this.command.recovery
73
+ });
74
+ return Promise.resolve({ kind: "expired" });
75
+ }
76
+ this.transition({
77
+ kind: "approval",
78
+ recovery: this.command.recovery,
79
+ expiresAtMs: this.command.expiresAtMs
80
+ });
81
+ this.inFlight = this.run(this.command);
82
+ return this.inFlight;
83
+ }
84
+ cancel() {
85
+ if (this.state.kind === "prepared") {
86
+ this.controller.abort();
87
+ this.transition({
88
+ kind: "cancelled",
89
+ recovery: this.command.recovery
90
+ });
91
+ } else if (this.state.kind === "approval") this.controller.abort();
92
+ }
93
+ recover() {
94
+ if (this.inFlight) return this.inFlight;
95
+ if (this.state.kind !== "unknown") throw new Error("Only an unknown outcome requires recovery.");
96
+ this.inFlight = this.run({
97
+ action: "recover",
98
+ authentication: this.command.authentication,
99
+ recovery: this.state.recovery
100
+ });
101
+ return this.inFlight;
102
+ }
103
+ submitted() {
104
+ this.transition({
105
+ kind: "submitting",
106
+ recovery: this.command.recovery
107
+ });
108
+ }
109
+ async run(command) {
110
+ let outcome;
111
+ try {
112
+ outcome = await this.execute(command, {
113
+ signal: command.action === "recover" ? new AbortController().signal : this.controller.signal,
114
+ onSubmission: this.submitted.bind(this)
115
+ });
116
+ } catch {
117
+ outcome = {
118
+ kind: "unknown",
119
+ recovery: command.recovery
120
+ };
121
+ }
122
+ this.settle(outcome, command.recovery);
123
+ this.inFlight = null;
124
+ return outcome;
125
+ }
126
+ settle(outcome, recovery) {
127
+ switch (outcome.kind) {
128
+ case "completed":
129
+ this.transition({
130
+ kind: "completed",
131
+ recovery,
132
+ result: outcome.result
133
+ });
134
+ return;
135
+ case "reverted":
136
+ this.transition({
137
+ kind: "reverted",
138
+ recovery,
139
+ transactionId: outcome.transactionId,
140
+ error: outcome.error
141
+ });
142
+ return;
143
+ case "cancelled":
144
+ this.transition({
145
+ kind: "cancelled",
146
+ recovery
147
+ });
148
+ return;
149
+ case "expired":
150
+ this.transition({
151
+ kind: "expired",
152
+ recovery
153
+ });
154
+ return;
155
+ case "unknown":
156
+ this.transition({
157
+ kind: "unknown",
158
+ recovery: outcome.recovery
159
+ });
160
+ return;
161
+ case "failed":
162
+ this.transition({
163
+ kind: "failed",
164
+ recovery,
165
+ error: outcome.error
166
+ });
167
+ return;
168
+ default: throw new Error("Unsupported owner operation outcome.");
169
+ }
170
+ }
171
+ };
172
+ //#endregion
173
+ export { prepareOwnerNearTransaction, resumeOwnerNearTransaction };
174
+
175
+ //# sourceMappingURL=ownerNearOperation.js.map
@@ -4,6 +4,7 @@ import { nearTransactionFailure, notifyNearTransactionResult } from "../../../co
4
4
  function createApplicationNearCommands(walletIframe, beforeSigning, transactionDispatch) {
5
5
  const commands = new ApplicationNearCommands(walletIframe, beforeSigning, transactionDispatch);
6
6
  return {
7
+ ownerOperation: commands.ownerOperation.bind(commands),
7
8
  signAndSendTransaction: commands.signAndSendTransaction.bind(commands),
8
9
  signTransaction: commands.signTransaction.bind(commands),
9
10
  sendTransaction: commands.sendTransaction.bind(commands),
@@ -17,6 +18,9 @@ var ApplicationNearCommands = class {
17
18
  this.beforeSigning = beforeSigning;
18
19
  this.transactionDispatch = transactionDispatch;
19
20
  }
21
+ async ownerOperation(...args) {
22
+ return await (await this.walletIframe.requireRouter()).ownerNearOperation(...args);
23
+ }
20
24
  async signAndSendTransaction(args) {
21
25
  const walletIframe = this.walletIframe;
22
26
  const nearAccountId = args.nearAccount.accountId;
@@ -0,0 +1,67 @@
1
+ import { parseOwnerNearOutcome, parseOwnerNearSubmissionProgress } from "../shared/ownerNearOperation.js";
2
+ //#region src/SeamsWeb/walletIframe/client/ownerNearOperation.ts
3
+ async function executeOwnerNearRequest(ports, ...args) {
4
+ const [command, execution] = args;
5
+ return await new OwnerNearRequest(ports, command, execution).run();
6
+ }
7
+ var OwnerNearRequest = class {
8
+ requestId;
9
+ state = "preparing";
10
+ constructor(ports, command, execution) {
11
+ this.ports = ports;
12
+ this.command = command;
13
+ this.execution = execution;
14
+ this.requestId = ports.allocateRequestId();
15
+ }
16
+ current() {
17
+ return !this.execution.signal.aborted;
18
+ }
19
+ dispatched() {
20
+ this.state = "dispatched";
21
+ }
22
+ progress(payload) {
23
+ if (parseOwnerNearSubmissionProgress(payload)?.operationId === this.command.recovery.operationId) {
24
+ this.state = "submitting";
25
+ this.execution.onSubmission();
26
+ }
27
+ }
28
+ cancel() {
29
+ this.ports.cancelRequest(this.requestId).catch(ignoreCancellationFailure);
30
+ }
31
+ async run() {
32
+ if (!this.current()) return { kind: "cancelled" };
33
+ const cancel = this.cancel.bind(this);
34
+ this.execution.signal.addEventListener("abort", cancel, { once: true });
35
+ try {
36
+ return parseOwnerNearOutcome((await this.ports.post({
37
+ type: "PM_OWNER_NEAR_TRANSACTION",
38
+ payload: this.command,
39
+ options: { onProgress: this.progress.bind(this) }
40
+ }, {
41
+ requestId: this.requestId,
42
+ timeout: "interactive",
43
+ shouldContinue: this.current.bind(this),
44
+ onDispatched: this.dispatched.bind(this)
45
+ })).result);
46
+ } catch (error) {
47
+ if (this.state !== "submitting" && isOwnerRequestCancellation(error)) return { kind: "cancelled" };
48
+ if (this.state === "preparing" && !this.current()) return { kind: "cancelled" };
49
+ return {
50
+ kind: "unknown",
51
+ recovery: this.command.recovery
52
+ };
53
+ } finally {
54
+ this.execution.signal.removeEventListener("abort", cancel);
55
+ }
56
+ }
57
+ };
58
+ function ignoreCancellationFailure() {}
59
+ function isOwnerRequestCancellation(error) {
60
+ if (!error || typeof error !== "object") return false;
61
+ const code = Reflect.get(error, "code");
62
+ return code === "cancelled" || code === "wallet_operation_step_up_cancelled";
63
+ }
64
+ //#endregion
65
+ export { executeOwnerNearRequest };
66
+
67
+ //# sourceMappingURL=ownerNearOperation.js.map
@@ -86,23 +86,7 @@ var OnEventsProgressBus = class {
86
86
  });
87
87
  return true;
88
88
  }
89
- this.log("dispatch-miss", isWalletFlowEvent(payload) ? {
90
- requestId,
91
- flow: payload.flow,
92
- phase: payload.phase,
93
- status: payload.status
94
- } : isDeviceLinkTargetFactorActivationProgressV1(payload) ? {
95
- requestId,
96
- event: payload.event,
97
- activationKind: payload.activation.kind
98
- } : isDeviceLinkEmailOtpBaseFactorSelectionProgressV1(payload) ? {
99
- requestId,
100
- event: payload.event,
101
- choiceCount: payload.choices.length
102
- } : {
103
- requestId,
104
- span: payload.span
105
- });
89
+ this.log("dispatch-miss", progressDebugFields(requestId, payload));
106
90
  return false;
107
91
  }
108
92
  findSticky(requestId) {
@@ -129,6 +113,32 @@ var OnEventsProgressBus = class {
129
113
  } catch {}
130
114
  }
131
115
  };
116
+ function progressDebugFields(requestId, payload) {
117
+ if (isWalletFlowEvent(payload)) return {
118
+ requestId,
119
+ flow: payload.flow,
120
+ phase: payload.phase,
121
+ status: payload.status
122
+ };
123
+ if (isDeviceLinkTargetFactorActivationProgressV1(payload)) return {
124
+ requestId,
125
+ event: payload.event,
126
+ activationKind: payload.activation.kind
127
+ };
128
+ if (isDeviceLinkEmailOtpBaseFactorSelectionProgressV1(payload)) return {
129
+ requestId,
130
+ event: payload.event,
131
+ choiceCount: payload.choices.length
132
+ };
133
+ if (payload.event === "owner_near_submitting") return {
134
+ requestId,
135
+ event: payload.event
136
+ };
137
+ return {
138
+ requestId,
139
+ span: payload.span
140
+ };
141
+ }
132
142
  //#endregion
133
143
  export { OnEventsProgressBus };
134
144
 
@@ -25,6 +25,7 @@ import { resolveRuntimeAppearance } from "../shared/facadeBoundary.js";
25
25
  import { TransactionReviewError, assertTransactionReviewValid, parseTransactionReviewState, reviewedConfirmationConfig, sameTransactionReviewIdentity, transactionReviewCancellationCode } from "../shared/transactionReview.js";
26
26
  import { needsExplicitActivation } from "../../../utils/deviceDetection.js";
27
27
  import { hostedAuthMenuAnchorMetrics, markHostedAuthMenuAnchorReady, publishHostedAuthMenuAnchorHeight } from "./authMenuAnchor.js";
28
+ import { executeOwnerNearRequest } from "./ownerNearOperation.js";
28
29
  import { parseAuthMethodAvailability } from "../../../core/authMethods/availabilityTypes.js";
29
30
  import { TransactionReviewReservation } from "./transactionReviewReservation.js";
30
31
  import { OnEventsProgressBus } from "./progress/on-events-progress-bus.js";
@@ -44,6 +45,8 @@ function requestSurfaceKindForMessage(type, payload) {
44
45
  case "PM_ADD_PASSKEY":
45
46
  case "PM_ROTATE_WALLET_RECOVERY_CODES": return "registration";
46
47
  case "PM_ACTIVATE_AUTH_METHOD": return "auth_method_activation";
48
+ case "PM_EXTERNAL_OWNER_AUTH":
49
+ case "PM_OWNER_NEAR_TRANSACTION": return "owner_approval";
47
50
  case "PM_ADD_EMAIL_OTP": return "email_otp_enrollment";
48
51
  case "PM_GET_WALLET_RECOVERY_CODE_STATUS":
49
52
  case "PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP": return "recovery_codes";
@@ -94,6 +97,7 @@ function requestSurfacePresentationFor(kind, payload, fallbackUiMode) {
94
97
  case "registration": return modalWalletIframeSurfacePresentation("Confirm passkey registration");
95
98
  case "email_otp_enrollment": return confirmationUiModeForRequest("PM_ADD_EMAIL_OTP", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Enter email code") : modalWalletIframeSurfacePresentation("Enter email code");
96
99
  case "auth_method_activation": return modalWalletIframeSurfacePresentation("Activate authentication method");
100
+ case "owner_approval": return modalWalletIframeSurfacePresentation("Approve wallet operation");
97
101
  case "transaction": return effectiveTransactionSurfaceUiMode(payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm transaction") : modalWalletIframeSurfacePresentation("Confirm transaction");
98
102
  case "key_export_near":
99
103
  case "key_export_threshold": return confirmationUiModeForRequest("PM_EXPORT_KEYPAIR_UI", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm key export") : modalWalletIframeSurfacePresentation("Confirm key export");
@@ -201,6 +205,7 @@ function walletIframeSessionStatesEqual(left, right) {
201
205
  if (left === null || left.kind !== right.kind) return false;
202
206
  switch (left.kind) {
203
207
  case "wallet_locked": return right.kind === "wallet_locked";
208
+ case "external_read": return right.kind === "external_read" && left.walletId === right.walletId && left.externalSessionId === right.externalSessionId && left.expiresAtMs === right.expiresAtMs;
204
209
  case "active_session":
205
210
  case "expired_session": return (right.kind === "active_session" || right.kind === "expired_session") && exactSessionIdentitiesMatch(left, right) && left.authMethod === right.authMethod && left.expiresAtMs === right.expiresAtMs;
206
211
  case "wallet_authenticated_identity_unresolvable": return right.kind === left.kind && left.walletId === right.walletId && left.reason === right.reason;
@@ -213,6 +218,7 @@ function walletIframeSessionStatesEqual(left, right) {
213
218
  }
214
219
  function walletIframeLoginStatusFromExactSession(state) {
215
220
  switch (state.kind) {
221
+ case "external_read":
216
222
  case "active_session":
217
223
  case "expired_session":
218
224
  case "wallet_authenticated_identity_unresolvable":
@@ -1155,6 +1161,7 @@ var WalletIframeRouter = class {
1155
1161
  break;
1156
1162
  case "email_otp_enrollment":
1157
1163
  case "auth_method_activation":
1164
+ case "owner_approval":
1158
1165
  result = this.transitionWalletIframeSurface({
1159
1166
  kind: "transaction_modal_request_started",
1160
1167
  connectionId,
@@ -1605,7 +1612,7 @@ var WalletIframeRouter = class {
1605
1612
  acceptSessionSnapshot(snapshot) {
1606
1613
  if (snapshot.revision <= this.sessionObservationRevision) return false;
1607
1614
  const walletId = this.lastPreferencesChangedPayload?.walletId;
1608
- if (walletId !== void 0 && walletId !== snapshot.walletId) return false;
1615
+ if (snapshot.state.kind !== "external_read" && walletId !== void 0 && walletId !== snapshot.walletId) return false;
1609
1616
  const changed = !walletIframeSessionStatesEqual(this.exactSessionState, snapshot.state);
1610
1617
  this.sessionObservationRevision = snapshot.revision;
1611
1618
  this.updateReviewSession(snapshot.state);
@@ -1768,6 +1775,7 @@ var WalletIframeRouter = class {
1768
1775
  return (await this.post({
1769
1776
  type: "PM_REGISTER_WALLET",
1770
1777
  payload: {
1778
+ completion: payload.completion,
1771
1779
  authMethod: transport.authMethod,
1772
1780
  wallet: payload.wallet,
1773
1781
  signerSelection: registrationSignerSetRequestSelection(payload.signerSelection),
@@ -1903,6 +1911,52 @@ var WalletIframeRouter = class {
1903
1911
  }
1904
1912
  }, { timeout: "interactive" })).result;
1905
1913
  }
1914
+ async authenticate(input) {
1915
+ return (await this.post({
1916
+ type: "PM_EXTERNAL_AUTH",
1917
+ payload: {
1918
+ action: "authenticate",
1919
+ input
1920
+ }
1921
+ })).result;
1922
+ }
1923
+ async prepareExternalAuth(walletId) {
1924
+ return (await this.post({
1925
+ type: "PM_EXTERNAL_AUTH",
1926
+ payload: {
1927
+ action: "prepare",
1928
+ walletId
1929
+ }
1930
+ })).result;
1931
+ }
1932
+ async removeExternalAuth(input) {
1933
+ return (await this.post({
1934
+ type: "PM_EXTERNAL_OWNER_AUTH",
1935
+ payload: {
1936
+ action: "unlink",
1937
+ walletId: input.walletId,
1938
+ associationId: input.associationId
1939
+ }
1940
+ }, { timeout: "interactive" })).result;
1941
+ }
1942
+ async prepareExternalAssociation(walletId) {
1943
+ return (await this.post({
1944
+ type: "PM_EXTERNAL_AUTH",
1945
+ payload: {
1946
+ action: "prepare_association",
1947
+ walletId
1948
+ }
1949
+ })).result;
1950
+ }
1951
+ async associateExternalAuth(input) {
1952
+ return (await this.post({
1953
+ type: "PM_EXTERNAL_OWNER_AUTH",
1954
+ payload: {
1955
+ action: "associate",
1956
+ input
1957
+ }
1958
+ }, { timeout: "interactive" })).result;
1959
+ }
1906
1960
  async getWalletSession(walletId) {
1907
1961
  const expectedWalletId = walletId === void 0 ? void 0 : parseRequestedWalletId(walletId);
1908
1962
  if (!this.state.ready || !this.state.port) await this.init();
@@ -2463,6 +2517,13 @@ var WalletIframeRouter = class {
2463
2517
  } catch {}
2464
2518
  };
2465
2519
  }
2520
+ async ownerNearOperation(...args) {
2521
+ return await executeOwnerNearRequest({
2522
+ post: this.post.bind(this),
2523
+ cancelRequest: this.cancelRequest.bind(this),
2524
+ allocateRequestId: this.allocateRequestId.bind(this)
2525
+ }, ...args);
2526
+ }
2466
2527
  async signAndSendTransaction(payload, transactionDispatch = { kind: "ordinary" }) {
2467
2528
  const request = new NearTransactionRequest({ kind: "sign_and_send" });
2468
2529
  try {
@@ -2847,7 +2908,7 @@ var WalletIframeRouter = class {
2847
2908
  const deadlineAtMs = timeoutPolicy.kind === "deadline" ? timeoutPolicy.deadlineAtMs : null;
2848
2909
  const surfaceKind = requestSurfaceKindForMessage(envelope.type, full.payload);
2849
2910
  let transactionSurfaceLease = null;
2850
- if (!reservation && (surfaceKind === "transaction" || surfaceKind === "email_otp_enrollment" || surfaceKind === "auth_method_activation")) {
2911
+ if (!reservation && (surfaceKind === "transaction" || surfaceKind === "email_otp_enrollment" || surfaceKind === "auth_method_activation" || surfaceKind === "owner_approval")) {
2851
2912
  const queueDeadline = timeoutPolicy.kind === "deadline" ? {
2852
2913
  kind: "deadline",
2853
2914
  atMs: timeoutPolicy.deadlineAtMs
@@ -3,6 +3,11 @@ import { walletIframeUnlockRequestFromLoginHooks } from "../shared/unlockOptions
3
3
  //#region src/SeamsWeb/walletIframe/client/sessionCommands.ts
4
4
  function createApplicationSessionCommands(walletIframe) {
5
5
  return {
6
+ authenticate: authenticate.bind(null, walletIframe),
7
+ prepareExternalAuth: prepareExternalAuth.bind(null, walletIframe),
8
+ prepareExternalAssociation: prepareExternalAssociation.bind(null, walletIframe),
9
+ associateExternalAuth: associateExternalAuth.bind(null, walletIframe),
10
+ removeExternalAuth: removeExternalAuth.bind(null, walletIframe),
6
11
  unlock: unlock.bind(null, walletIframe),
7
12
  unlockWithAuthMethod: unlockWithAuthMethod.bind(null, walletIframe),
8
13
  lock: lock.bind(null, walletIframe),
@@ -11,6 +16,21 @@ function createApplicationSessionCommands(walletIframe) {
11
16
  hasPasskey: hasPasskey.bind(null, walletIframe)
12
17
  };
13
18
  }
19
+ async function authenticate(walletIframe, input) {
20
+ return (await walletIframe.requireRouter()).authenticate(input);
21
+ }
22
+ async function prepareExternalAuth(walletIframe, walletId) {
23
+ return (await walletIframe.requireRouter()).prepareExternalAuth(walletId);
24
+ }
25
+ async function associateExternalAuth(walletIframe, input) {
26
+ return (await walletIframe.requireRouter()).associateExternalAuth(input);
27
+ }
28
+ async function prepareExternalAssociation(walletIframe, walletId) {
29
+ return (await walletIframe.requireRouter()).prepareExternalAssociation(walletId);
30
+ }
31
+ async function removeExternalAuth(walletIframe, input) {
32
+ return (await walletIframe.requireRouter()).removeExternalAuth(input);
33
+ }
14
34
  async function unlock(walletIframe, walletId, options) {
15
35
  const resolvedWalletId = String(walletId || "").trim();
16
36
  if (!resolvedWalletId) throw new Error("unlock requires walletId");
@@ -29,6 +29,11 @@ function walletForHostRequest(request, currentWalletId) {
29
29
  return walletId === null ? null : requiredWallet(walletId);
30
30
  }
31
31
  case "PM_SCAN_AND_LINK_DEVICE": return currentWalletId === null ? null : requiredWallet(currentWalletId);
32
+ case "PM_OWNER_NEAR_TRANSACTION": return request.payload.action === "approve" ? requiredWallet(request.payload.authentication.walletId) : null;
33
+ case "PM_EXTERNAL_OWNER_AUTH": {
34
+ const command = request.payload;
35
+ return requiredWallet(command.action === "associate" ? command.input.walletId : command.walletId);
36
+ }
32
37
  case "PM_SET_TRANSACTION_VIEW":
33
38
  case "PM_TRANSACTION_BROADCAST_STARTED":
34
39
  case "PING":
@@ -44,6 +49,7 @@ function walletForHostRequest(request, currentWalletId) {
44
49
  case "PM_REGISTER_WALLET":
45
50
  case "PM_UNLOCK":
46
51
  case "PM_UNLOCK_AUTH_METHOD":
52
+ case "PM_EXTERNAL_AUTH":
47
53
  case "PM_LOCK":
48
54
  case "PM_LOCK_EXACT_WALLET_SESSION":
49
55
  case "PM_GET_LAST_WALLET_MOVE_REQUEST":