@seams/wallet 0.28.0 → 0.30.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.
- package/README.md +29 -4
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +2 -0
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +11 -0
- package/dist/esm/SeamsWeb/publicApi/near.js +3 -0
- package/dist/esm/SeamsWeb/publicApi/ownerNearOperation.js +175 -0
- package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +9 -0
- package/dist/esm/SeamsWeb/walletIframe/client/nearCommands.js +4 -0
- package/dist/esm/SeamsWeb/walletIframe/client/ownerNearOperation.js +67 -0
- package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +27 -17
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +60 -7
- package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +4 -0
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +88 -47
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.js +67 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +13 -0
- package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +6 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +15 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +20 -6
- package/dist/esm/SeamsWeb/walletIframe/shared/ownerNearOperation.js +152 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/walletAlternatives.js +109 -0
- package/dist/esm/core/accountData/near/accountProjection.js +1 -1
- package/dist/esm/core/config/configBuilder.js +1 -1
- package/dist/esm/core/config/defaultConfigs.js +9 -2
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +4 -3
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +1 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
- package/dist/esm/core/signingEngine/flows/shared/signingConfirmation.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +2 -2
- package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -2
- package/dist/esm/core/signingEngine/flows/signNear/signNear.js +3 -8
- package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/signTransactions.js +3 -4
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
- package/dist/esm/core/ui/messages.js +3 -1
- package/dist/esm/core/ui/walletIcon.js +10 -0
- package/dist/esm/externalEvm/boundary.js +4 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/react/boundWallet.js +24 -0
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +26 -6
- package/dist/esm/react/components/HostedSeamsAuthMenu/walletAlternatives.js +178 -0
- package/dist/esm/react/context/useLoginStateRefresher.js +1 -0
- package/dist/esm/react/hooks/useAccountInput.js +1 -1
- package/dist/esm/react/hooks/useOwnerNearOperation.js +10 -0
- package/dist/esm/react/index.js +3 -3
- package/dist/esm/react/styles/styles.css +0 -183
- package/dist/esm/react/styles.css +0 -1
- package/dist/esm/sdk/{ConfirmationDrawer-MJoE0AAo.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
- package/dist/esm/sdk/NonceCoordinator-C1lw03Ce.js +1 -0
- package/dist/esm/sdk/{SeamsWordmark-DwvPx2UA.js → SeamsWordmark-CeEi2RlU.js} +1 -1
- package/dist/esm/sdk/accountLifecycle-B5a9SCM7.js +1 -0
- package/dist/{public/sdk/activeWalletSession-BJ4B-nJo.js → esm/sdk/activeWalletSession-HAOgRKzn.js} +1 -1
- package/dist/{public/sdk/adapters-C-g_hkkZ.js → esm/sdk/adapters-BY1wGpm5.js} +1 -1
- package/dist/esm/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
- package/dist/esm/sdk/authorization-D_NueqAv.js +1 -0
- package/dist/esm/sdk/clientSessionPersistenceState-B3gU3515.js +1 -0
- package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js → collectAuthenticationCredentialForChallengeB64u-BoFVpdRS.js} +1 -1
- package/dist/esm/sdk/{commitQueue-CYruPlkm.js → commitQueue-CbyuhEW9.js} +1 -1
- package/dist/esm/sdk/confirm-ui-DWFcGTsT.js +2 -0
- package/dist/{public/sdk/device-linking-DiCNt3iA.js → esm/sdk/device-linking-BL2aDEUF.js} +1 -1
- package/dist/esm/sdk/{deviceLinkApproval-x3WkiYrd.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
- package/dist/{public/sdk/digestEncoding-CqNXPZY9.js → esm/sdk/digestEncoding-Rx8Vjy4J.js} +1 -1
- package/dist/esm/sdk/{display-D0EPmU4w.js → display-8NGPOhQT.js} +1 -1
- package/dist/{public/sdk/ecdsaCapabilityManifest-DAJEVjlP.js → esm/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
- package/dist/esm/sdk/{ecdsaDerivationClientWasm-AYOJgTJm.js → ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-jm2VBMz_.js +1 -0
- package/dist/esm/sdk/{ecdsaWalletRecords-WLyq414E.js → ecdsaWalletRecords-CKaXfsVu.js} +1 -1
- package/dist/esm/sdk/ed25519OperationFingerprint-Dev4P6Og.js +1 -0
- package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
- package/dist/esm/sdk/{enrichDisplayModelWithAbi-O6Mw4i2E.js → enrichDisplayModelWithAbi-JeAcpa7r.js} +1 -1
- package/dist/esm/sdk/{evmCryptoWasm-BUPb4hBH.js → evmCryptoWasm-CeH6Qeaa.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-BSTfHhau.js → export-viewer-host-TzgdJQuZ.js} +1 -1
- package/dist/esm/sdk/exportKeypairOperation-B9_ulzNz.js +1 -0
- package/dist/esm/sdk/host-Csu5L7VF.js +1 -0
- package/dist/{public/sdk/icons-BlMXolHv.js → esm/sdk/icons-pSZJ5Xrm.js} +1 -1
- package/dist/esm/sdk/indexedDB-BqsYXybq.js +1 -0
- package/dist/esm/sdk/{intentDigest-HvRsBQ1z.js → intentDigest-gM3r4SVX.js} +1 -1
- package/dist/esm/sdk/{lanes-BU-fGqY4.js → lanes-0WT2w1Xz.js} +1 -1
- package/dist/esm/sdk/{localOnly-Xs89Xajm.js → localOnly-DFrtrfdO.js} +1 -1
- package/dist/{public/sdk/mountExportPrivateKeySurface-CsUEKeum.js → esm/sdk/mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
- package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-kFLo5zLk.js → mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Cz2Gb95g.js +1 -0
- package/dist/esm/sdk/{nonceLaneKeys-BF_UpvIy.js → nonceLaneKeys-DtBpxubF.js} +1 -1
- package/dist/esm/sdk/{normalization-Df9fZWJC.js → normalization-DmfGvZ_3.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
- package/dist/esm/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
- package/dist/{public/sdk/pendingWalletRecoveryCodeBackup-B-R_U34I.js → esm/sdk/pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
- package/dist/esm/sdk/{presignaturePool-BbvqRWYw.js → presignaturePool-CaI45td2.js} +1 -1
- package/dist/{public/sdk/presignatures-BCeq56DG.js → esm/sdk/presignatures-B9KnQyfE.js} +1 -1
- package/dist/{public/sdk/recovery-entrypoint-DJbMDC_m.js → esm/sdk/recovery-entrypoint-DA2FGLG6.js} +1 -1
- package/dist/esm/sdk/registration-C7w_51wE.js +1 -0
- package/dist/esm/sdk/{registration-C2fb9kRQ.js → registration-XNyt1YRK.js} +1 -1
- package/dist/esm/sdk/{registrationAccounts-4r74gX1l.js → registrationAccounts-Bso0ntMs.js} +1 -1
- package/dist/{public/sdk/registrationIntent-Do1tD1V7.js → esm/sdk/registrationIntent-Cb3tggIM.js} +1 -1
- package/dist/{public/sdk/registrationSignerPlan-DK2b3N_p.js → esm/sdk/registrationSignerPlan-CeMidFme.js} +1 -1
- package/dist/esm/sdk/{requireStepUpAuth-COqCGb1i.js → requireStepUpAuth-ByMTPBu4.js} +1 -1
- package/dist/esm/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-BMT_gIKI.js +1 -0
- package/dist/esm/sdk/runtime-device-link-DQe0aqRi.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-DKkeMMpm.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-CzTe7r9I.js +1 -0
- package/dist/esm/sdk/runtime-export-BiyLbdCe.js +1 -0
- package/dist/esm/sdk/runtime-near-Kk0n1FSf.js +1 -0
- package/dist/esm/sdk/runtime-preferences-B-A3hddU.js +1 -0
- package/dist/esm/sdk/runtime-recovery-C9p1TU1w.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-si1fGktB.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
- package/dist/esm/sdk/runtimeContext-ChuvOC0h.js +7 -0
- package/dist/esm/sdk/{secp256k1-CE7-q9Sn.js → secp256k1-sDDAa4Ga.js} +1 -1
- package/dist/esm/sdk/signEvmFamily-CMrXkVsZ.js +1 -0
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-CGrLtMV6.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
- package/dist/esm/sdk/signNear-DyFk--I3.js +1 -0
- package/dist/esm/sdk/{signatureUses-kSrUHSSH.js → signatureUses-BLOoPRsb.js} +1 -1
- package/dist/{public/sdk/signingFlow-BcetvUeS.js → esm/sdk/signingFlow-DTP4D19E.js} +2 -2
- package/dist/{public/sdk/signingQueue-dMFOFOP5.js → esm/sdk/signingQueue-Dy5mYMus.js} +1 -1
- package/dist/esm/sdk/{thresholdEcdsa-CqR1fFA-.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
- package/dist/esm/sdk/{trace--mRP2OQc.js → trace-BA8jya7O.js} +1 -1
- package/dist/esm/sdk/{transaction-activity-DCzHGg3b.js → transaction-activity-BXSxMp1E.js} +1 -1
- package/dist/esm/sdk/{transactionState-29T9xfvL.js → transactionState-BCbaT2hO.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +3 -1
- package/dist/esm/sdk/{types-f7dyj5N6.js → types-D2Zk1W7I.js} +1 -1
- package/dist/esm/sdk/{unlockedEd25519ExportRootCapability-yzxQjIFd.js → unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
- package/dist/esm/sdk/voiceid-host.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{public/sdk/wallet-recovery-BZB2Vu3X.js → esm/sdk/wallet-recovery-Bfm-oUoP.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/esm/sdk/{walletAuthMethodRecord-DLBB5fez.js → walletAuthMethodRecord--fvGr8r1.js} +1 -1
- package/dist/{public/sdk/walletAuthority-BTGAuOi8.js → esm/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
- package/dist/esm/sdk/{walletCapabilityBindings-D5YYB7nN.js → walletCapabilityBindings-mPx-6_r-.js} +1 -1
- package/dist/{public/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js → esm/sdk/walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
- package/dist/esm/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
- package/dist/esm/sdk/{walletCustodyOperation-DimzAbCB.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
- package/dist/{public/sdk/walletOwnershipGeneration-CgjCtPrV.js → esm/sdk/walletOwnershipGeneration-B3uE9GRG.js} +1 -1
- package/dist/esm/sdk/walletRecoveryAdminProof-BmZaP0Q8.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-CSYNbYNd.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStatus-DG7DPcgR.js → esm/sdk/walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
- package/dist/esm/sdk/{walletSessionAuthorizationStore-B9Vwkshr.js → walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
- package/dist/esm/sdk/{webauthnP256-BsQQPurm.js → webauthnP256-BGHikiNl.js} +1 -1
- package/dist/esm/shared-ts/src/auth/externalAuth.js +2 -2
- package/dist/esm/shared-ts/src/utils/index.js +3 -3
- package/dist/esm/voiceid-host.js +1 -1
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/{ConfirmationDrawer-MJoE0AAo.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
- package/dist/public/sdk/NonceCoordinator-C1lw03Ce.js +1 -0
- package/dist/public/sdk/{SeamsWordmark-DwvPx2UA.js → SeamsWordmark-CeEi2RlU.js} +1 -1
- package/dist/public/sdk/accountLifecycle-B5a9SCM7.js +1 -0
- package/dist/{esm/sdk/activeWalletSession-BJ4B-nJo.js → public/sdk/activeWalletSession-HAOgRKzn.js} +1 -1
- package/dist/{esm/sdk/adapters-C-g_hkkZ.js → public/sdk/adapters-BY1wGpm5.js} +1 -1
- package/dist/public/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
- package/dist/public/sdk/authorization-D_NueqAv.js +1 -0
- package/dist/public/sdk/clientSessionPersistenceState-B3gU3515.js +1 -0
- package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-I4wq8OGq.js → collectAuthenticationCredentialForChallengeB64u-BoFVpdRS.js} +1 -1
- package/dist/public/sdk/{commitQueue-CYruPlkm.js → commitQueue-CbyuhEW9.js} +1 -1
- package/dist/public/sdk/confirm-ui-DWFcGTsT.js +2 -0
- package/dist/{esm/sdk/device-linking-DiCNt3iA.js → public/sdk/device-linking-BL2aDEUF.js} +1 -1
- package/dist/public/sdk/{deviceLinkApproval-x3WkiYrd.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
- package/dist/{esm/sdk/digestEncoding-CqNXPZY9.js → public/sdk/digestEncoding-Rx8Vjy4J.js} +1 -1
- package/dist/public/sdk/{display-D0EPmU4w.js → display-8NGPOhQT.js} +1 -1
- package/dist/{esm/sdk/ecdsaCapabilityManifest-DAJEVjlP.js → public/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
- package/dist/public/sdk/{ecdsaDerivationClientWasm-AYOJgTJm.js → ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationExport-jm2VBMz_.js +1 -0
- package/dist/public/sdk/{ecdsaWalletRecords-WLyq414E.js → ecdsaWalletRecords-CKaXfsVu.js} +1 -1
- package/dist/public/sdk/ed25519OperationFingerprint-Dev4P6Og.js +1 -0
- package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-HFQXc1Yw.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
- package/dist/public/sdk/{enrichDisplayModelWithAbi-O6Mw4i2E.js → enrichDisplayModelWithAbi-JeAcpa7r.js} +1 -1
- package/dist/public/sdk/{evmCryptoWasm-BUPb4hBH.js → evmCryptoWasm-CeH6Qeaa.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-BSTfHhau.js → export-viewer-host-TzgdJQuZ.js} +1 -1
- package/dist/public/sdk/exportKeypairOperation-B9_ulzNz.js +1 -0
- package/dist/public/sdk/host-Csu5L7VF.js +1 -0
- package/dist/{esm/sdk/icons-BlMXolHv.js → public/sdk/icons-pSZJ5Xrm.js} +1 -1
- package/dist/public/sdk/indexedDB-BqsYXybq.js +1 -0
- package/dist/public/sdk/{intentDigest-HvRsBQ1z.js → intentDigest-gM3r4SVX.js} +1 -1
- package/dist/public/sdk/{lanes-BU-fGqY4.js → lanes-0WT2w1Xz.js} +1 -1
- package/dist/public/sdk/{localOnly-Xs89Xajm.js → localOnly-DFrtrfdO.js} +1 -1
- package/dist/{esm/sdk/mountExportPrivateKeySurface-CsUEKeum.js → public/sdk/mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
- package/dist/public/sdk/{mountRecoveryCodeBackupSurface-kFLo5zLk.js → mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-Cz2Gb95g.js +1 -0
- package/dist/public/sdk/{nonceLaneKeys-BF_UpvIy.js → nonceLaneKeys-DtBpxubF.js} +1 -1
- package/dist/public/sdk/{normalization-Df9fZWJC.js → normalization-DmfGvZ_3.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
- package/dist/public/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
- package/dist/{esm/sdk/pendingWalletRecoveryCodeBackup-B-R_U34I.js → public/sdk/pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
- package/dist/public/sdk/{presignaturePool-BbvqRWYw.js → presignaturePool-CaI45td2.js} +1 -1
- package/dist/{esm/sdk/presignatures-BCeq56DG.js → public/sdk/presignatures-B9KnQyfE.js} +1 -1
- package/dist/{esm/sdk/recovery-entrypoint-DJbMDC_m.js → public/sdk/recovery-entrypoint-DA2FGLG6.js} +1 -1
- package/dist/public/sdk/registration-C7w_51wE.js +1 -0
- package/dist/public/sdk/{registration-C2fb9kRQ.js → registration-XNyt1YRK.js} +1 -1
- package/dist/public/sdk/{registrationAccounts-4r74gX1l.js → registrationAccounts-Bso0ntMs.js} +1 -1
- package/dist/{esm/sdk/registrationIntent-Do1tD1V7.js → public/sdk/registrationIntent-Cb3tggIM.js} +1 -1
- package/dist/{esm/sdk/registrationSignerPlan-DK2b3N_p.js → public/sdk/registrationSignerPlan-CeMidFme.js} +1 -1
- package/dist/public/sdk/{requireStepUpAuth-COqCGb1i.js → requireStepUpAuth-ByMTPBu4.js} +1 -1
- package/dist/public/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-BMT_gIKI.js +1 -0
- package/dist/public/sdk/runtime-device-link-DQe0aqRi.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-DKkeMMpm.js +1 -0
- package/dist/public/sdk/runtime-email-otp-CzTe7r9I.js +1 -0
- package/dist/public/sdk/runtime-export-BiyLbdCe.js +1 -0
- package/dist/public/sdk/runtime-near-Kk0n1FSf.js +1 -0
- package/dist/public/sdk/runtime-preferences-B-A3hddU.js +1 -0
- package/dist/public/sdk/runtime-recovery-C9p1TU1w.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-si1fGktB.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
- package/dist/public/sdk/runtimeContext-ChuvOC0h.js +7 -0
- package/dist/public/sdk/{secp256k1-CE7-q9Sn.js → secp256k1-sDDAa4Ga.js} +1 -1
- package/dist/public/sdk/signEvmFamily-CMrXkVsZ.js +1 -0
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CrMIAXUe.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-CGrLtMV6.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
- package/dist/public/sdk/signNear-DyFk--I3.js +1 -0
- package/dist/public/sdk/{signatureUses-kSrUHSSH.js → signatureUses-BLOoPRsb.js} +1 -1
- package/dist/{esm/sdk/signingFlow-BcetvUeS.js → public/sdk/signingFlow-DTP4D19E.js} +2 -2
- package/dist/{esm/sdk/signingQueue-dMFOFOP5.js → public/sdk/signingQueue-Dy5mYMus.js} +1 -1
- package/dist/public/sdk/{thresholdEcdsa-CqR1fFA-.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
- package/dist/public/sdk/{trace--mRP2OQc.js → trace-BA8jya7O.js} +1 -1
- package/dist/public/sdk/{transaction-activity-DCzHGg3b.js → transaction-activity-BXSxMp1E.js} +1 -1
- package/dist/public/sdk/{transactionState-29T9xfvL.js → transactionState-BCbaT2hO.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +3 -1
- package/dist/public/sdk/{types-f7dyj5N6.js → types-D2Zk1W7I.js} +1 -1
- package/dist/public/sdk/{unlockedEd25519ExportRootCapability-yzxQjIFd.js → unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
- package/dist/public/sdk/voiceid-host.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{esm/sdk/wallet-recovery-BZB2Vu3X.js → public/sdk/wallet-recovery-Bfm-oUoP.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/public/sdk/{walletAuthMethodRecord-DLBB5fez.js → walletAuthMethodRecord--fvGr8r1.js} +1 -1
- package/dist/{esm/sdk/walletAuthority-BTGAuOi8.js → public/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
- package/dist/public/sdk/{walletCapabilityBindings-D5YYB7nN.js → walletCapabilityBindings-mPx-6_r-.js} +1 -1
- package/dist/{esm/sdk/walletCustodyEcdsaContinuity-C31YQ9av.js → public/sdk/walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
- package/dist/public/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
- package/dist/public/sdk/{walletCustodyOperation-DimzAbCB.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
- package/dist/{esm/sdk/walletOwnershipGeneration-CgjCtPrV.js → public/sdk/walletOwnershipGeneration-B3uE9GRG.js} +1 -1
- package/dist/public/sdk/walletRecoveryAdminProof-BmZaP0Q8.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-CSYNbYNd.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStatus-DG7DPcgR.js → public/sdk/walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
- package/dist/public/sdk/{walletSessionAuthorizationStore-B9Vwkshr.js → walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
- package/dist/public/sdk/{webauthnP256-BsQQPurm.js → webauthnP256-BGHikiNl.js} +1 -1
- package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
- package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
- package/dist/public/wallet-assets.manifest.json +264 -264
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/auth/externalAuth.d.ts +51 -8
- package/dist/types/shared-ts/src/authorization/index.d.ts +1 -1
- package/dist/types/shared-ts/src/authorization/walletOwnerOperation.d.ts +10 -0
- package/dist/types/shared-ts/src/utils/registrationEstablishedSession.d.ts +4 -0
- package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +2 -0
- package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/index.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registration.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationPasskeyMaterial.d.ts +24 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/nearCommands.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/ownerNearOperation.d.ts +58 -0
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +17 -6
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +57 -56
- package/dist/types/wallet/src/SeamsWeb/signingSurface/nearOwnerOperation.d.ts +16 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/nearPasskeyOperationMaterial.d.ts +72 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/inboundMessages.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/ownerNearOperation.d.ts +25 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +7 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +6 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +5 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createNearCommands.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +6 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/externalAuth.d.ts +10 -8
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/externalOwnerApproval.d.ts +24 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ownerNearOperation.d.ts +12 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.d.ts +13 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionState.d.ts +8 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +26 -9
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/ownerNearOperation.d.ts +51 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/walletAlternatives.d.ts +52 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +1 -0
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +4 -0
- package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +4 -0
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryRotate.d.ts +2 -2
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +21 -0
- package/dist/types/wallet/src/core/types/seams.d.ts +9 -2
- package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
- package/dist/types/wallet/src/core/ui/walletIcon.d.ts +3 -0
- package/dist/types/wallet/src/index.d.ts +3 -0
- package/dist/types/wallet/src/react/boundWallet.d.ts +21 -1
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/public.d.ts +1 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/types.d.ts +4 -0
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/walletAlternatives.d.ts +48 -0
- package/dist/types/wallet/src/react/hooks/useOwnerNearOperation.d.ts +4 -0
- package/dist/types/wallet/src/react/index.d.ts +4 -2
- package/dist/workers/email_otp_runtime_bg.wasm +0 -0
- package/dist/workers/evm_crypto_bg.wasm +0 -0
- package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
- package/dist/workers/tempo_signer_bg.wasm +0 -0
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +1 -1
- package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.css +0 -182
- package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.js +0 -315
- package/dist/esm/sdk/NonceCoordinator-3YhmDTS5.js +0 -1
- package/dist/esm/sdk/accountLifecycle-6DHYWf0v.js +0 -1
- package/dist/esm/sdk/appearance-token-vars-01eH9pgA.js +0 -1
- package/dist/esm/sdk/clientSessionPersistenceState-BCkJAYSz.js +0 -1
- package/dist/esm/sdk/confirm-ui-em0vkd2m.js +0 -2
- package/dist/esm/sdk/ecdsaDerivationExport-DJKOzDbS.js +0 -1
- package/dist/esm/sdk/exportKeypairOperation-CjST_NUK.js +0 -1
- package/dist/esm/sdk/host-C51z-AxP.js +0 -1
- package/dist/esm/sdk/indexedDB-C4SDsyOG.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +0 -1
- package/dist/esm/sdk/registration-Byl4l4yZ.js +0 -1
- package/dist/esm/sdk/resealedEnvelopeResult-CLW00Vbw.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-D-UZmCBS.js +0 -1
- package/dist/esm/sdk/runtime-auth-ufbVur2p.js +0 -1
- package/dist/esm/sdk/runtime-device-link-CagI2Q62.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-Rctxr0yM.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-BQtcG-LF.js +0 -1
- package/dist/esm/sdk/runtime-export-wTeEaqlk.js +0 -1
- package/dist/esm/sdk/runtime-near-59yU_3ud.js +0 -1
- package/dist/esm/sdk/runtime-preferences-B9qLHX8W.js +0 -1
- package/dist/esm/sdk/runtime-recovery-DNyzdMBj.js +0 -1
- package/dist/esm/sdk/runtimeContext-ByeM6Z4Z.js +0 -6
- package/dist/esm/sdk/sessionObservationRevision-ihBwjS3y.js +0 -1
- package/dist/esm/sdk/signEvmFamily-BY5jlZEG.js +0 -1
- package/dist/esm/sdk/signNear-DMpJFkwF.js +0 -1
- package/dist/esm/sdk/signer-worker-BNodGJKY.js +0 -1
- package/dist/esm/sdk/walletRecoveryAdminProof-B4Ic07jY.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-Cc2LAkCS.js +0 -1
- package/dist/public/sdk/NonceCoordinator-3YhmDTS5.js +0 -1
- package/dist/public/sdk/accountLifecycle-6DHYWf0v.js +0 -1
- package/dist/public/sdk/appearance-token-vars-01eH9pgA.js +0 -1
- package/dist/public/sdk/clientSessionPersistenceState-BCkJAYSz.js +0 -1
- package/dist/public/sdk/confirm-ui-em0vkd2m.js +0 -2
- package/dist/public/sdk/ecdsaDerivationExport-DJKOzDbS.js +0 -1
- package/dist/public/sdk/exportKeypairOperation-CjST_NUK.js +0 -1
- package/dist/public/sdk/host-C51z-AxP.js +0 -1
- package/dist/public/sdk/indexedDB-C4SDsyOG.js +0 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-BfXmy3Jr.js +0 -1
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-DHNk0F8e.js +0 -1
- package/dist/public/sdk/registration-Byl4l4yZ.js +0 -1
- package/dist/public/sdk/resealedEnvelopeResult-CLW00Vbw.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-D-UZmCBS.js +0 -1
- package/dist/public/sdk/runtime-auth-ufbVur2p.js +0 -1
- package/dist/public/sdk/runtime-device-link-CagI2Q62.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-Rctxr0yM.js +0 -1
- package/dist/public/sdk/runtime-email-otp-BQtcG-LF.js +0 -1
- package/dist/public/sdk/runtime-export-wTeEaqlk.js +0 -1
- package/dist/public/sdk/runtime-near-59yU_3ud.js +0 -1
- package/dist/public/sdk/runtime-preferences-B9qLHX8W.js +0 -1
- package/dist/public/sdk/runtime-recovery-DNyzdMBj.js +0 -1
- package/dist/public/sdk/runtimeContext-ByeM6Z4Z.js +0 -6
- package/dist/public/sdk/sessionObservationRevision-ihBwjS3y.js +0 -1
- package/dist/public/sdk/signEvmFamily-BY5jlZEG.js +0 -1
- package/dist/public/sdk/signNear-DMpJFkwF.js +0 -1
- package/dist/public/sdk/signer-worker-BNodGJKY.js +0 -1
- package/dist/public/sdk/walletRecoveryAdminProof-B4Ic07jY.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-Cc2LAkCS.js +0 -1
- package/dist/types/shared-ts/src/authorization/walletCustodyOperation.d.ts +0 -10
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.d.ts +0 -31
- /package/dist/esm/sdk/{accountIds-CW2BP-d9.js → accountIds-DGWFzEnw.js} +0 -0
- /package/dist/esm/sdk/{actions-DrtSTGus.js → actions-7SvZZut1.js} +0 -0
- /package/dist/esm/sdk/{authenticatorOptions-WCDKYRux.js → authenticatorOptions-B4q62CLs.js} +0 -0
- /package/dist/esm/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
- /package/dist/esm/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
- /package/dist/esm/sdk/{confirmTypes-BvVtQs-M.js → confirmTypes-DmEPoxys.js} +0 -0
- /package/dist/esm/sdk/{csp-stylesheet-DUSqfXvZ.js → csp-stylesheet-5LU6VGKK.js} +0 -0
- /package/dist/esm/sdk/{ecdsaChainTarget-Bm5X4k-V.js → ecdsaChainTarget-BoRVQtjQ.js} +0 -0
- /package/dist/esm/sdk/{executeWorkerOperation-C9FOCCR7.js → executeWorkerOperation-CAYSt0NA.js} +0 -0
- /package/dist/esm/sdk/{helpers-Dubwo5uK.js → helpers-B7c1zc7h.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-DGzeiNSa.js} +0 -0
- /package/dist/esm/sdk/{keccak-mS0Mejjx.js → keccak-DGHI1G6t.js} +0 -0
- /package/dist/esm/sdk/{keyMaterialEnvelope-Dm2ZEilb.js → keyMaterialEnvelope-Czkks9Ki.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-C5sNt-s2.js → profileAccountProjection-dvLchPBo.js} +0 -0
- /package/dist/esm/sdk/{registrationAuthMethodInput-BR1WVbK3.js → registrationAuthMethodInput-C4o7yFBJ.js} +0 -0
- /package/dist/esm/sdk/{sdkSentEvents-DjOlKtdW.js → sdkSentEvents-BFwv3mBw.js} +0 -0
- /package/dist/esm/sdk/{signerDomain-BAsLT3XN.js → signerDomain-D-EUTlLK.js} +0 -0
- /package/dist/esm/sdk/{signerSlot-D2RZnb27.js → signerSlot-BlijMq8C.js} +0 -0
- /package/dist/esm/sdk/{surface-measurement-reporter-DXsvq401.js → surface-measurement-reporter-DJ_dQhBV.js} +0 -0
- /package/dist/esm/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/public/sdk/{accountIds-CW2BP-d9.js → accountIds-DGWFzEnw.js} +0 -0
- /package/dist/public/sdk/{actions-DrtSTGus.js → actions-7SvZZut1.js} +0 -0
- /package/dist/public/sdk/{authenticatorOptions-WCDKYRux.js → authenticatorOptions-B4q62CLs.js} +0 -0
- /package/dist/public/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
- /package/dist/public/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
- /package/dist/public/sdk/{confirmTypes-BvVtQs-M.js → confirmTypes-DmEPoxys.js} +0 -0
- /package/dist/public/sdk/{csp-stylesheet-DUSqfXvZ.js → csp-stylesheet-5LU6VGKK.js} +0 -0
- /package/dist/public/sdk/{ecdsaChainTarget-Bm5X4k-V.js → ecdsaChainTarget-BoRVQtjQ.js} +0 -0
- /package/dist/public/sdk/{executeWorkerOperation-C9FOCCR7.js → executeWorkerOperation-CAYSt0NA.js} +0 -0
- /package/dist/public/sdk/{helpers-Dubwo5uK.js → helpers-B7c1zc7h.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-DGzeiNSa.js} +0 -0
- /package/dist/public/sdk/{keccak-mS0Mejjx.js → keccak-DGHI1G6t.js} +0 -0
- /package/dist/public/sdk/{keyMaterialEnvelope-Dm2ZEilb.js → keyMaterialEnvelope-Czkks9Ki.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-C5sNt-s2.js → profileAccountProjection-dvLchPBo.js} +0 -0
- /package/dist/public/sdk/{registrationAuthMethodInput-BR1WVbK3.js → registrationAuthMethodInput-C4o7yFBJ.js} +0 -0
- /package/dist/public/sdk/{sdkSentEvents-DjOlKtdW.js → sdkSentEvents-BFwv3mBw.js} +0 -0
- /package/dist/public/sdk/{signerDomain-BAsLT3XN.js → signerDomain-D-EUTlLK.js} +0 -0
- /package/dist/public/sdk/{signerSlot-D2RZnb27.js → signerSlot-BlijMq8C.js} +0 -0
- /package/dist/public/sdk/{surface-measurement-reporter-DXsvq401.js → surface-measurement-reporter-DJ_dQhBV.js} +0 -0
- /package/dist/public/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# Seams Wallet SDK
|
|
2
2
|
|
|
3
|
-
`@seams/wallet` **0.
|
|
3
|
+
`@seams/wallet` **0.30.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.
|
|
9
|
+
pnpm add @seams/wallet@0.30.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.
|
|
16
|
-
is `
|
|
15
|
+
`@seams/wallet-server@0.30.0` on the matching release. The wallet iframe protocol
|
|
16
|
+
is `20.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.30.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.30.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
|
-
|
|
1
|
+
fc980903c573c287e8206786d90025fc12bbd72eab183d74520e08097b5b3360
|
|
@@ -71,6 +71,8 @@ var SeamsWeb = class {
|
|
|
71
71
|
prepare: this.walletIframe.prepareHostedAuthMenu.bind(this.walletIframe),
|
|
72
72
|
open: this.walletIframe.openHostedAuthMenu.bind(this.walletIframe),
|
|
73
73
|
cancel: this.walletIframe.cancelHostedAuthMenu.bind(this.walletIframe),
|
|
74
|
+
onWalletConnectionRequest: this.walletIframe.onWalletConnectionRequest.bind(this.walletIframe),
|
|
75
|
+
resolveWalletConnection: this.walletIframe.resolveWalletConnection.bind(this.walletIframe),
|
|
74
76
|
onExternalAuthRequest: this.walletIframe.onHostedAuthMenuExternalAuthRequest.bind(this.walletIframe),
|
|
75
77
|
resolveExternalAuth: this.walletIframe.resolveHostedAuthMenuExternalAuth.bind(this.walletIframe)
|
|
76
78
|
};
|
|
@@ -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
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isObject } from "../../../shared-ts/src/utils/validation.js";
|
|
2
2
|
import { isWalletFlowEvent, parseSdkLifecycleEvent } from "../../../core/types/sdkSentEvents.js";
|
|
3
|
+
import { parseWalletConnectionRequest } from "../shared/walletAlternatives.js";
|
|
3
4
|
import { isDeviceLinkEmailOtpBaseFactorSelectionProgressV1, isDeviceLinkTargetFactorActivationProgressV1, isRegistrationTimingSpanV1, parseHostedAuthMenuErrorEvent, parseHostedAuthMenuExternalAuthRequest, parseWalletIframeSurfaceMeasurement } from "../shared/messages.js";
|
|
4
5
|
import { parseWalletIframeExactSessionSnapshot, parseWalletIframeSessionRevision } from "../shared/exactSessionState.js";
|
|
5
6
|
import { parseTransactionReviewState } from "../shared/transactionReview.js";
|
|
@@ -134,6 +135,14 @@ function parseClientChildToParentEnvelope(value) {
|
|
|
134
135
|
payload
|
|
135
136
|
} : null;
|
|
136
137
|
}
|
|
138
|
+
case "WALLET_CONNECTION_REQUEST": {
|
|
139
|
+
const payload = parseWalletConnectionRequest(Reflect.get(record, "payload"));
|
|
140
|
+
return payload ? {
|
|
141
|
+
...requestIdFields,
|
|
142
|
+
type,
|
|
143
|
+
payload
|
|
144
|
+
} : null;
|
|
145
|
+
}
|
|
137
146
|
case "AUTH_MENU_EXTERNAL_AUTH_REQUEST": {
|
|
138
147
|
const payload = parseHostedAuthMenuExternalAuthRequest(Reflect.get(record, "payload"));
|
|
139
148
|
return payload ? {
|
|
@@ -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",
|
|
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
|
|
|
@@ -14,6 +14,7 @@ import { AccountSyncEventPhase, KeyExportEventPhase, LinkDeviceEventPhase, Regis
|
|
|
14
14
|
import { requireTempoFeeTokenPreferenceSigningRequest } from "../../../core/signingEngine/chains/tempo/feeToken.js";
|
|
15
15
|
import { buildPMUnlockPayload } from "../shared/unlockOptions.js";
|
|
16
16
|
import { walletIframeSurfaceIdFromBoundary } from "../../../core/types/walletIframeIdentity.js";
|
|
17
|
+
import { parseWalletConnectionResolution } from "../shared/walletAlternatives.js";
|
|
17
18
|
import { HOSTED_AUTH_MENU_ERROR_EVENT, buildHostedAuthMenuCancelPayload, buildPMRedeemHostedWalletSeamsSessionPayload, hostedAuthMenuSessionIdFromBoundary, isDeviceLinkEmailOtpBaseFactorSelectionProgressV1, isDeviceLinkTargetFactorActivationProgressV1, isRegistrationTimingSpanV1, parseHostedAuthMenuErrorEvent, parseHostedAuthMenuExternalAuthRequest, parseHostedAuthMenuExternalAuthResolution, parseHostedAuthMenuOpenRequest, parseHostedAuthMenuOutcome, parseWalletIframeSurfaceMeasurement } from "../shared/messages.js";
|
|
18
19
|
import { replaceWalletHostAppearance } from "../shared/configuration.js";
|
|
19
20
|
import { anchorWalletIframeModalGeometry, isWalletIframeModalGeometry, resolveWalletIframeSurfaceGeometry } from "./surface/geometry.js";
|
|
@@ -25,6 +26,7 @@ import { resolveRuntimeAppearance } from "../shared/facadeBoundary.js";
|
|
|
25
26
|
import { TransactionReviewError, assertTransactionReviewValid, parseTransactionReviewState, reviewedConfirmationConfig, sameTransactionReviewIdentity, transactionReviewCancellationCode } from "../shared/transactionReview.js";
|
|
26
27
|
import { needsExplicitActivation } from "../../../utils/deviceDetection.js";
|
|
27
28
|
import { hostedAuthMenuAnchorMetrics, markHostedAuthMenuAnchorReady, publishHostedAuthMenuAnchorHeight } from "./authMenuAnchor.js";
|
|
29
|
+
import { executeOwnerNearRequest } from "./ownerNearOperation.js";
|
|
28
30
|
import { parseAuthMethodAvailability } from "../../../core/authMethods/availabilityTypes.js";
|
|
29
31
|
import { TransactionReviewReservation } from "./transactionReviewReservation.js";
|
|
30
32
|
import { OnEventsProgressBus } from "./progress/on-events-progress-bus.js";
|
|
@@ -44,6 +46,8 @@ function requestSurfaceKindForMessage(type, payload) {
|
|
|
44
46
|
case "PM_ADD_PASSKEY":
|
|
45
47
|
case "PM_ROTATE_WALLET_RECOVERY_CODES": return "registration";
|
|
46
48
|
case "PM_ACTIVATE_AUTH_METHOD": return "auth_method_activation";
|
|
49
|
+
case "PM_EXTERNAL_OWNER_AUTH":
|
|
50
|
+
case "PM_OWNER_NEAR_TRANSACTION": return "owner_approval";
|
|
47
51
|
case "PM_ADD_EMAIL_OTP": return "email_otp_enrollment";
|
|
48
52
|
case "PM_GET_WALLET_RECOVERY_CODE_STATUS":
|
|
49
53
|
case "PM_ACKNOWLEDGE_WALLET_RECOVERY_CODE_BACKUP": return "recovery_codes";
|
|
@@ -94,6 +98,7 @@ function requestSurfacePresentationFor(kind, payload, fallbackUiMode) {
|
|
|
94
98
|
case "registration": return modalWalletIframeSurfacePresentation("Confirm passkey registration");
|
|
95
99
|
case "email_otp_enrollment": return confirmationUiModeForRequest("PM_ADD_EMAIL_OTP", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Enter email code") : modalWalletIframeSurfacePresentation("Enter email code");
|
|
96
100
|
case "auth_method_activation": return modalWalletIframeSurfacePresentation("Activate authentication method");
|
|
101
|
+
case "owner_approval": return modalWalletIframeSurfacePresentation("Approve wallet operation");
|
|
97
102
|
case "transaction": return effectiveTransactionSurfaceUiMode(payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm transaction") : modalWalletIframeSurfacePresentation("Confirm transaction");
|
|
98
103
|
case "key_export_near":
|
|
99
104
|
case "key_export_threshold": return confirmationUiModeForRequest("PM_EXPORT_KEYPAIR_UI", payload, fallbackUiMode) === "drawer" ? drawerWalletIframeSurfacePresentation("Confirm key export") : modalWalletIframeSurfacePresentation("Confirm key export");
|
|
@@ -201,6 +206,7 @@ function walletIframeSessionStatesEqual(left, right) {
|
|
|
201
206
|
if (left === null || left.kind !== right.kind) return false;
|
|
202
207
|
switch (left.kind) {
|
|
203
208
|
case "wallet_locked": return right.kind === "wallet_locked";
|
|
209
|
+
case "external_read": return right.kind === "external_read" && left.walletId === right.walletId && left.externalSessionId === right.externalSessionId && left.expiresAtMs === right.expiresAtMs;
|
|
204
210
|
case "active_session":
|
|
205
211
|
case "expired_session": return (right.kind === "active_session" || right.kind === "expired_session") && exactSessionIdentitiesMatch(left, right) && left.authMethod === right.authMethod && left.expiresAtMs === right.expiresAtMs;
|
|
206
212
|
case "wallet_authenticated_identity_unresolvable": return right.kind === left.kind && left.walletId === right.walletId && left.reason === right.reason;
|
|
@@ -213,6 +219,7 @@ function walletIframeSessionStatesEqual(left, right) {
|
|
|
213
219
|
}
|
|
214
220
|
function walletIframeLoginStatusFromExactSession(state) {
|
|
215
221
|
switch (state.kind) {
|
|
222
|
+
case "external_read":
|
|
216
223
|
case "active_session":
|
|
217
224
|
case "expired_session":
|
|
218
225
|
case "wallet_authenticated_identity_unresolvable":
|
|
@@ -544,6 +551,7 @@ var WalletIframeRouter = class {
|
|
|
544
551
|
connectionClosed: /* @__PURE__ */ new Set(),
|
|
545
552
|
sessionChanged: /* @__PURE__ */ new Set(),
|
|
546
553
|
preferencesChanged: /* @__PURE__ */ new Set(),
|
|
554
|
+
walletConnectionRequest: /* @__PURE__ */ new Set(),
|
|
547
555
|
hostedAuthMenuExternalAuthRequest: /* @__PURE__ */ new Set(),
|
|
548
556
|
sdkLifecycleEvent: /* @__PURE__ */ new Set()
|
|
549
557
|
};
|
|
@@ -1155,6 +1163,7 @@ var WalletIframeRouter = class {
|
|
|
1155
1163
|
break;
|
|
1156
1164
|
case "email_otp_enrollment":
|
|
1157
1165
|
case "auth_method_activation":
|
|
1166
|
+
case "owner_approval":
|
|
1158
1167
|
result = this.transitionWalletIframeSurface({
|
|
1159
1168
|
kind: "transaction_modal_request_started",
|
|
1160
1169
|
connectionId,
|
|
@@ -1374,6 +1383,25 @@ var WalletIframeRouter = class {
|
|
|
1374
1383
|
this.listeners.connectionClosed.add(listener);
|
|
1375
1384
|
return this.listeners.connectionClosed.delete.bind(this.listeners.connectionClosed, listener);
|
|
1376
1385
|
}
|
|
1386
|
+
onWalletConnectionRequest(listener) {
|
|
1387
|
+
this.listeners.walletConnectionRequest.add(listener);
|
|
1388
|
+
return this.listeners.walletConnectionRequest.delete.bind(this.listeners.walletConnectionRequest, listener);
|
|
1389
|
+
}
|
|
1390
|
+
async resolveWalletConnection(resolution) {
|
|
1391
|
+
const requestId = this.hostedAuthMenuRequestIds.get(resolution.authMenuSessionId);
|
|
1392
|
+
if (!requestId) return;
|
|
1393
|
+
const payload = parseWalletConnectionResolution({
|
|
1394
|
+
authMenuSessionId: resolution.authMenuSessionId,
|
|
1395
|
+
connectionRequestId: resolution.connectionRequestId,
|
|
1396
|
+
requestId,
|
|
1397
|
+
result: resolution.result
|
|
1398
|
+
});
|
|
1399
|
+
if (!payload) throw new Error("Invalid wallet connection resolution");
|
|
1400
|
+
await this.post({
|
|
1401
|
+
type: "PM_RESOLVE_WALLET_CONNECTION",
|
|
1402
|
+
payload
|
|
1403
|
+
});
|
|
1404
|
+
}
|
|
1377
1405
|
onHostedAuthMenuExternalAuthRequest(listener) {
|
|
1378
1406
|
this.listeners.hostedAuthMenuExternalAuthRequest.add(listener);
|
|
1379
1407
|
return () => this.listeners.hostedAuthMenuExternalAuthRequest.delete(listener);
|
|
@@ -1605,7 +1633,7 @@ var WalletIframeRouter = class {
|
|
|
1605
1633
|
acceptSessionSnapshot(snapshot) {
|
|
1606
1634
|
if (snapshot.revision <= this.sessionObservationRevision) return false;
|
|
1607
1635
|
const walletId = this.lastPreferencesChangedPayload?.walletId;
|
|
1608
|
-
if (walletId !== void 0 && walletId !== snapshot.walletId) return false;
|
|
1636
|
+
if (snapshot.state.kind !== "external_read" && walletId !== void 0 && walletId !== snapshot.walletId) return false;
|
|
1609
1637
|
const changed = !walletIframeSessionStatesEqual(this.exactSessionState, snapshot.state);
|
|
1610
1638
|
this.sessionObservationRevision = snapshot.revision;
|
|
1611
1639
|
this.updateReviewSession(snapshot.state);
|
|
@@ -1768,6 +1796,7 @@ var WalletIframeRouter = class {
|
|
|
1768
1796
|
return (await this.post({
|
|
1769
1797
|
type: "PM_REGISTER_WALLET",
|
|
1770
1798
|
payload: {
|
|
1799
|
+
completion: payload.completion,
|
|
1771
1800
|
authMethod: transport.authMethod,
|
|
1772
1801
|
wallet: payload.wallet,
|
|
1773
1802
|
signerSelection: registrationSignerSetRequestSelection(payload.signerSelection),
|
|
@@ -1923,23 +1952,31 @@ var WalletIframeRouter = class {
|
|
|
1923
1952
|
}
|
|
1924
1953
|
async removeExternalAuth(input) {
|
|
1925
1954
|
return (await this.post({
|
|
1926
|
-
type: "
|
|
1955
|
+
type: "PM_EXTERNAL_OWNER_AUTH",
|
|
1927
1956
|
payload: {
|
|
1928
1957
|
action: "unlink",
|
|
1929
1958
|
walletId: input.walletId,
|
|
1930
1959
|
associationId: input.associationId
|
|
1931
1960
|
}
|
|
1961
|
+
}, { timeout: "interactive" })).result;
|
|
1962
|
+
}
|
|
1963
|
+
async prepareExternalAssociation(walletId) {
|
|
1964
|
+
return (await this.post({
|
|
1965
|
+
type: "PM_EXTERNAL_AUTH",
|
|
1966
|
+
payload: {
|
|
1967
|
+
action: "prepare_association",
|
|
1968
|
+
walletId
|
|
1969
|
+
}
|
|
1932
1970
|
})).result;
|
|
1933
1971
|
}
|
|
1934
1972
|
async associateExternalAuth(input) {
|
|
1935
1973
|
return (await this.post({
|
|
1936
|
-
type: "
|
|
1974
|
+
type: "PM_EXTERNAL_OWNER_AUTH",
|
|
1937
1975
|
payload: {
|
|
1938
1976
|
action: "associate",
|
|
1939
|
-
|
|
1940
|
-
idToken: input.idToken
|
|
1977
|
+
input
|
|
1941
1978
|
}
|
|
1942
|
-
})).result;
|
|
1979
|
+
}, { timeout: "interactive" })).result;
|
|
1943
1980
|
}
|
|
1944
1981
|
async getWalletSession(walletId) {
|
|
1945
1982
|
const expectedWalletId = walletId === void 0 ? void 0 : parseRequestedWalletId(walletId);
|
|
@@ -2501,6 +2538,13 @@ var WalletIframeRouter = class {
|
|
|
2501
2538
|
} catch {}
|
|
2502
2539
|
};
|
|
2503
2540
|
}
|
|
2541
|
+
async ownerNearOperation(...args) {
|
|
2542
|
+
return await executeOwnerNearRequest({
|
|
2543
|
+
post: this.post.bind(this),
|
|
2544
|
+
cancelRequest: this.cancelRequest.bind(this),
|
|
2545
|
+
allocateRequestId: this.allocateRequestId.bind(this)
|
|
2546
|
+
}, ...args);
|
|
2547
|
+
}
|
|
2504
2548
|
async signAndSendTransaction(payload, transactionDispatch = { kind: "ordinary" }) {
|
|
2505
2549
|
const request = new NearTransactionRequest({ kind: "sign_and_send" });
|
|
2506
2550
|
try {
|
|
@@ -2716,6 +2760,15 @@ var WalletIframeRouter = class {
|
|
|
2716
2760
|
this.handlePreferencesChanged(payload);
|
|
2717
2761
|
return;
|
|
2718
2762
|
}
|
|
2763
|
+
if (msg.type === "WALLET_CONNECTION_REQUEST") {
|
|
2764
|
+
const payload = msg.payload;
|
|
2765
|
+
const activeRequestId = this.hostedAuthMenuRequestIds.get(payload.authMenuSessionId);
|
|
2766
|
+
if (!activeRequestId || msg.requestId !== activeRequestId) return;
|
|
2767
|
+
for (const listener of this.listeners.walletConnectionRequest) try {
|
|
2768
|
+
listener(payload);
|
|
2769
|
+
} catch {}
|
|
2770
|
+
return;
|
|
2771
|
+
}
|
|
2719
2772
|
if (msg.type === "AUTH_MENU_EXTERNAL_AUTH_REQUEST") {
|
|
2720
2773
|
const payload = parseHostedAuthMenuExternalAuthRequest(msg.payload);
|
|
2721
2774
|
if (!payload) return;
|
|
@@ -2885,7 +2938,7 @@ var WalletIframeRouter = class {
|
|
|
2885
2938
|
const deadlineAtMs = timeoutPolicy.kind === "deadline" ? timeoutPolicy.deadlineAtMs : null;
|
|
2886
2939
|
const surfaceKind = requestSurfaceKindForMessage(envelope.type, full.payload);
|
|
2887
2940
|
let transactionSurfaceLease = null;
|
|
2888
|
-
if (!reservation && (surfaceKind === "transaction" || surfaceKind === "email_otp_enrollment" || surfaceKind === "auth_method_activation")) {
|
|
2941
|
+
if (!reservation && (surfaceKind === "transaction" || surfaceKind === "email_otp_enrollment" || surfaceKind === "auth_method_activation" || surfaceKind === "owner_approval")) {
|
|
2889
2942
|
const queueDeadline = timeoutPolicy.kind === "deadline" ? {
|
|
2890
2943
|
kind: "deadline",
|
|
2891
2944
|
atMs: timeoutPolicy.deadlineAtMs
|
|
@@ -5,6 +5,7 @@ function createApplicationSessionCommands(walletIframe) {
|
|
|
5
5
|
return {
|
|
6
6
|
authenticate: authenticate.bind(null, walletIframe),
|
|
7
7
|
prepareExternalAuth: prepareExternalAuth.bind(null, walletIframe),
|
|
8
|
+
prepareExternalAssociation: prepareExternalAssociation.bind(null, walletIframe),
|
|
8
9
|
associateExternalAuth: associateExternalAuth.bind(null, walletIframe),
|
|
9
10
|
removeExternalAuth: removeExternalAuth.bind(null, walletIframe),
|
|
10
11
|
unlock: unlock.bind(null, walletIframe),
|
|
@@ -24,6 +25,9 @@ async function prepareExternalAuth(walletIframe, walletId) {
|
|
|
24
25
|
async function associateExternalAuth(walletIframe, input) {
|
|
25
26
|
return (await walletIframe.requireRouter()).associateExternalAuth(input);
|
|
26
27
|
}
|
|
28
|
+
async function prepareExternalAssociation(walletIframe, walletId) {
|
|
29
|
+
return (await walletIframe.requireRouter()).prepareExternalAssociation(walletId);
|
|
30
|
+
}
|
|
27
31
|
async function removeExternalAuth(walletIframe, input) {
|
|
28
32
|
return (await walletIframe.requireRouter()).removeExternalAuth(input);
|
|
29
33
|
}
|