@seams/wallet 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -2
- package/THIRD_PARTY_NOTICES.md +182 -5
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +1 -0
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +3 -0
- package/dist/esm/SeamsWeb/walletIframe/client/authMenuAnchor.js +44 -0
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +4 -6
- package/dist/esm/SeamsWeb/walletIframe/client/registrationCommands.js +12 -0
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +67 -31
- package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +4 -0
- package/dist/esm/SeamsWeb/walletIframe/client/surface/geometry.js +2 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +2 -2
- package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +22 -3
- package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +6 -2
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -3
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +81 -19
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +1 -4
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +7 -11
- package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +86 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/configuration.js +23 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +7 -1
- package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +20 -1
- package/dist/esm/core/authMethods/availability.js +28 -0
- package/dist/esm/core/authMethods/availabilityTypes.js +29 -0
- package/dist/esm/core/authMethods/plugins.js +17 -0
- package/dist/esm/core/config/configBuilder.js +2 -0
- package/dist/esm/core/config/defaultConfigs.js +1 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +41 -2
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +3 -0
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +1 -1
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/authPlanning.js +2 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +29 -12
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -0
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +2 -1
- package/dist/esm/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +1 -0
- package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +1 -1
- package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +5 -0
- package/dist/esm/core/signingEngine/flows/signNear/signNear.js +16 -12
- package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +2 -3
- package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +16 -1
- package/dist/esm/core/signingEngine/session/identity/signingLaneAuthBinding.js +6 -0
- package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +3 -0
- package/dist/esm/core/signingEngine/session/operationState/lanes.js +21 -4
- package/dist/esm/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +94 -0
- package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +1 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +19 -2
- package/dist/esm/core/signingEngine/uiConfirm/ui/confirmation-model.js +3 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +6 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +59 -23
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +13 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +48 -16
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +146 -9
- package/dist/esm/core/signingEngine/walletCustody/ceremonyStepRunner.js +8 -0
- package/dist/esm/core/signingEngine/walletCustody/resealedEnvelopeResult.js +24 -0
- package/dist/esm/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +74 -0
- package/dist/esm/core/signingEngine/workerManager/workerDeferred.js +25 -0
- package/dist/esm/core/ui/messages.js +15 -4
- package/dist/esm/externalNear/controller.js +36 -0
- package/dist/esm/externalNear/hot.js +1 -0
- package/dist/esm/externalNear/intear.js +1 -0
- package/dist/esm/externalNear/message.js +60 -0
- package/dist/esm/externalNear/meteor.js +12 -0
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +10 -22
- package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +2 -2
- package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +7 -4
- package/dist/esm/react/components/AccountMenuButton/AddEvmAccount.js +124 -0
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +41 -23
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +220 -164
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +7 -5
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +142 -36
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +11 -2
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +12 -10
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +1 -1
- package/dist/esm/react/components/AccountMenuButton/VoiceIdAvailabilityControl.js +186 -0
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +10 -8
- package/dist/esm/react/components/AccountMenuButton/icons/ChevronRightIcon.js +8 -0
- package/dist/esm/react/components/AccountMenuButton/icons/WalletIcon.js +8 -0
- package/dist/esm/react/components/AccountMenuButton/index.js +35 -13
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +8 -4
- package/dist/esm/react/context/useLoginStateRefresher.js +10 -2
- package/dist/esm/react/index.js +2 -4
- package/dist/esm/react/styles/styles.css +22 -332
- package/dist/esm/react/styles.css +0 -1
- package/dist/esm/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
- package/dist/esm/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
- package/dist/esm/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
- package/dist/esm/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
- package/dist/esm/sdk/actions-GYsSR2Q2.js +1 -0
- package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
- package/dist/esm/sdk/adapters-D5MZ5NG5.js +2 -0
- package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
- package/dist/esm/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
- package/dist/esm/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
- package/dist/esm/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
- package/dist/esm/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
- package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
- package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
- package/dist/esm/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
- package/dist/esm/sdk/configBuilder-DrxXNUpV.js +1 -0
- package/dist/esm/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
- package/dist/esm/sdk/configuration-CAqANpTI.js +1 -0
- package/dist/esm/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
- package/dist/esm/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
- package/dist/esm/sdk/domainIds-t1lp25yU.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
- package/dist/esm/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
- package/dist/esm/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
- package/dist/esm/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
- package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
- package/dist/esm/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
- package/dist/esm/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
- package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +1 -0
- package/dist/esm/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
- package/dist/esm/sdk/host-C0Is56lU.js +1 -0
- package/dist/esm/sdk/icons-DyndJzSh.js +1 -0
- package/dist/esm/sdk/indexedDB-C1odKEC6.js +1 -0
- package/dist/esm/sdk/intentDigest-BMXki7yB.js +1 -0
- package/dist/esm/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
- package/dist/esm/sdk/lanes-C7OvAK_L.js +1 -0
- package/dist/esm/sdk/localOnly-BB3Rx3J6.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
- package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
- package/dist/esm/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
- package/dist/esm/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
- package/dist/esm/sdk/presignaturePool-CultzkOG.js +1 -0
- package/dist/esm/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
- package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
- package/dist/esm/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
- package/dist/esm/sdk/registration-CM5a7WYO.js +1 -0
- package/dist/esm/sdk/registration-Hv0xi7-L.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
- package/dist/esm/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
- package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +1 -0
- package/dist/esm/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
- package/dist/esm/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
- package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
- package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +1 -0
- package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
- package/dist/esm/sdk/runtime-export-upMPrZ4V.js +1 -0
- package/dist/esm/sdk/runtime-near-B64Hn3nc.js +1 -0
- package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +1 -0
- package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +1 -0
- package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
- package/dist/esm/sdk/runtimeContext-CNFJjcns.js +6 -0
- package/dist/{public/sdk/sdkSentEvents-BzMVO1AR.js → esm/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
- package/dist/{public/sdk/secp256k1-CYu8ENjP.js → esm/sdk/secp256k1-BGVlx50C.js} +1 -1
- package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
- package/dist/esm/sdk/shared-DcHtE-D-.js +1 -0
- package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +1 -0
- package/dist/{public/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → esm/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
- package/dist/esm/sdk/signNear-r8VCOoTh.js +1 -0
- package/dist/esm/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
- package/dist/esm/sdk/signerDomain-D-EUTlLK.js +1 -0
- package/dist/esm/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
- package/dist/{public/sdk/signingFlow-Co_QtuHK.js → esm/sdk/signingFlow-BVvteILM.js} +1 -1
- package/dist/{public/sdk/signingQueue-Cj9sCJLj.js → esm/sdk/signingQueue-BJzOrwDq.js} +1 -1
- package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
- package/dist/{public/sdk/thresholdEcdsa-LvkD6z8-.js → esm/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
- package/dist/esm/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
- package/dist/esm/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
- package/dist/esm/sdk/transactionReview-DSGnpreN.js +1 -0
- package/dist/esm/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
- package/dist/{public/sdk/transactionState-BaFSiA9t.js → esm/sdk/transactionState-BS1VLT7B.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +418 -109
- package/dist/esm/sdk/types-DdzuHlAQ.js +1 -0
- package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
- package/dist/esm/sdk/voiceid-host.js +1 -0
- 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/esm/sdk/wallet-recovery-BjIQdOha.js +1 -0
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
- package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
- package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
- package/dist/esm/sdk/walletDbName-DDJXrgA5.js +1 -0
- package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
- package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
- package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → esm/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
- package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
- package/dist/esm/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
- package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +4 -1
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +11 -2
- package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +110 -0
- package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +1 -0
- package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +1 -0
- package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +17 -9
- package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +62 -3
- package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
- package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +5 -2
- package/dist/esm/shared-ts/src/utils/domainIds.js +14 -1
- package/dist/esm/shared-ts/src/utils/signerDomain.js +4 -2
- package/dist/esm/shared-ts/src/utils/validation.js +4 -1
- package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +46 -2
- package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +116 -6
- package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +39 -1
- package/dist/esm/voiceid-host.js +47 -0
- package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_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-CTaGM1AE.js +1 -0
- package/dist/public/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
- package/dist/public/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
- package/dist/public/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
- package/dist/public/sdk/actions-GYsSR2Q2.js +1 -0
- package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
- package/dist/public/sdk/adapters-D5MZ5NG5.js +2 -0
- package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
- package/dist/public/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
- package/dist/public/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
- package/dist/public/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
- package/dist/public/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
- package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
- package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
- package/dist/public/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
- package/dist/public/sdk/configBuilder-DrxXNUpV.js +1 -0
- package/dist/public/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
- package/dist/public/sdk/configuration-CAqANpTI.js +1 -0
- package/dist/public/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
- package/dist/public/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
- package/dist/public/sdk/domainIds-t1lp25yU.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
- package/dist/public/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
- package/dist/public/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
- package/dist/public/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
- package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
- package/dist/public/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
- package/dist/public/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
- package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +1 -0
- package/dist/public/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
- package/dist/public/sdk/host-C0Is56lU.js +1 -0
- package/dist/public/sdk/icons-DyndJzSh.js +1 -0
- package/dist/public/sdk/indexedDB-C1odKEC6.js +1 -0
- package/dist/public/sdk/intentDigest-BMXki7yB.js +1 -0
- package/dist/public/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
- package/dist/public/sdk/lanes-C7OvAK_L.js +1 -0
- package/dist/public/sdk/localOnly-BB3Rx3J6.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
- package/dist/public/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
- package/dist/public/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
- package/dist/public/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
- package/dist/public/sdk/presignaturePool-CultzkOG.js +1 -0
- package/dist/public/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
- package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
- package/dist/public/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
- package/dist/public/sdk/registration-CM5a7WYO.js +1 -0
- package/dist/public/sdk/registration-Hv0xi7-L.js +1 -0
- package/dist/public/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
- package/dist/public/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
- package/dist/public/sdk/registrationIntent-DTs2SR9E.js +1 -0
- package/dist/public/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
- package/dist/public/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
- package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
- package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-CVw1KoVD.js +1 -0
- package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
- package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
- package/dist/public/sdk/runtime-export-upMPrZ4V.js +1 -0
- package/dist/public/sdk/runtime-near-B64Hn3nc.js +1 -0
- package/dist/public/sdk/runtime-preferences-CULdHkbg.js +1 -0
- package/dist/public/sdk/runtime-recovery-D2saBaJy.js +1 -0
- package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
- package/dist/public/sdk/runtimeContext-CNFJjcns.js +6 -0
- package/dist/{esm/sdk/sdkSentEvents-BzMVO1AR.js → public/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
- package/dist/{esm/sdk/secp256k1-CYu8ENjP.js → public/sdk/secp256k1-BGVlx50C.js} +1 -1
- package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
- package/dist/public/sdk/shared-DcHtE-D-.js +1 -0
- package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +1 -0
- package/dist/{esm/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → public/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
- package/dist/public/sdk/signNear-r8VCOoTh.js +1 -0
- package/dist/public/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
- package/dist/public/sdk/signerDomain-D-EUTlLK.js +1 -0
- package/dist/public/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
- package/dist/{esm/sdk/signingFlow-Co_QtuHK.js → public/sdk/signingFlow-BVvteILM.js} +1 -1
- package/dist/{esm/sdk/signingQueue-Cj9sCJLj.js → public/sdk/signingQueue-BJzOrwDq.js} +1 -1
- package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
- package/dist/{esm/sdk/thresholdEcdsa-LvkD6z8-.js → public/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
- package/dist/public/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
- package/dist/public/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
- package/dist/public/sdk/transactionReview-DSGnpreN.js +1 -0
- package/dist/public/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
- package/dist/{esm/sdk/transactionState-BaFSiA9t.js → public/sdk/transactionState-BS1VLT7B.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +418 -109
- package/dist/public/sdk/types-DdzuHlAQ.js +1 -0
- package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
- package/dist/public/sdk/voiceid-host.js +1 -0
- 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/public/sdk/wallet-recovery-BjIQdOha.js +1 -0
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
- package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
- package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
- package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
- package/dist/public/sdk/walletDbName-DDJXrgA5.js +1 -0
- package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
- package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
- package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
- package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → public/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
- package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
- package/dist/public/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
- package/dist/public/sdk/workers/device-linking-key.worker.js +93 -5
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +67 -65
- package/dist/public/sdk/workers/email-otp.worker.js +93 -4
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +21 -2
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +20 -2
- 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 +503 -239
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/voiceIdDeviceAssertion.d.ts +32 -0
- package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -1
- package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -0
- package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +4 -4
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +29 -0
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -0
- package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -2
- package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +2 -1
- package/dist/types/shared-ts/src/signing-lanes/records.d.ts +10 -2
- package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +2 -2
- package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +9 -0
- package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/domainIds.d.ts +4 -5
- package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +0 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -0
- package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +32 -2
- package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +15 -1
- package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +20 -0
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +22 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/authMenuAnchor.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/geometry.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +15 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +7 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +3 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +2 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +15 -4
- package/dist/types/wallet/src/core/authMethods/availability.d.ts +13 -0
- package/dist/types/wallet/src/core/authMethods/availabilityTypes.d.ts +13 -0
- package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +82 -0
- package/dist/types/wallet/src/core/authMethods/hostRegistry.d.ts +5 -0
- package/dist/types/wallet/src/core/authMethods/installSession.d.ts +15 -0
- package/dist/types/wallet/src/core/authMethods/plugins.d.ts +7 -0
- package/dist/types/wallet/src/core/authMethods/prepareEcdsaSession.d.ts +6 -0
- package/dist/types/wallet/src/core/authMethods/prepareNearSession.d.ts +18 -0
- package/dist/types/wallet/src/core/authMethods/sessionIdentity.d.ts +53 -0
- package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +11 -1
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +53 -2
- package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
- package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportMaterial.d.ts +6 -3
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.d.ts +8 -2
- package/dist/types/wallet/src/core/signingEngine/session/availability/availableSigningLanes.d.ts +10 -10
- package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +16 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +13 -4
- package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +15 -6
- package/dist/types/wallet/src/core/signingEngine/session/operationState/lanes.d.ts +11 -4
- package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.d.ts +6 -0
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodSelection.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +6 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +11 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirm-ui-types.d.ts +2 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirmation-model.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +4 -0
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/walletCustody/resealedEnvelopeResult.d.ts +10 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -1
- package/dist/types/wallet/src/core/types/seams.d.ts +4 -0
- package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/controller.d.ts +2 -1
- package/dist/types/wallet/src/externalNear/hot.d.ts +3 -2
- package/dist/types/wallet/src/externalNear/index.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/intear.d.ts +3 -2
- package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
- package/dist/types/wallet/src/externalNear/meteor.d.ts +5 -2
- package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +1 -1
- package/dist/types/wallet/src/externalNear/types.d.ts +22 -2
- package/dist/types/wallet/src/index.d.ts +1 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/AddEvmAccount.d.ts +29 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +8 -3
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +1 -2
- package/dist/types/wallet/src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.d.ts +19 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ChevronRightIcon.d.ts +2 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/WalletIcon.d.ts +2 -0
- package/dist/types/wallet/src/react/index.d.ts +1 -4
- package/dist/types/wallet/src/voiceid-host.d.ts +52 -0
- package/dist/workers/device-linking-key.worker.js +93 -5
- package/dist/workers/ecdsa-derivation-client.worker.js +67 -65
- package/dist/workers/email-otp.worker.js +93 -4
- package/dist/workers/passkey-mpc-export.worker.js +21 -2
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/wallet-custody-ceremony.worker.js +20 -2
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
- package/package.json +8 -3
- package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +0 -8
- package/dist/esm/react/components/VoiceAssistantCard.css +0 -313
- package/dist/esm/react/components/VoiceAssistantCard.js +0 -150
- package/dist/esm/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
- package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +0 -1
- package/dist/esm/sdk/adapters-CgJpSAxH.js +0 -2
- package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
- package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
- package/dist/esm/sdk/configBuilder-BMNShuOu.js +0 -1
- package/dist/esm/sdk/domainIds-C3fUa33Q.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
- package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
- package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
- package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
- package/dist/esm/sdk/host-C5KYWEcs.js +0 -1
- package/dist/esm/sdk/intentDigest--FZ63NBy.js +0 -1
- package/dist/esm/sdk/lanes-l274pbT5.js +0 -1
- package/dist/esm/sdk/localOnly-CvFSZFUy.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
- package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
- package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
- package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +0 -1
- package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
- package/dist/esm/sdk/registration-CIxJvbTo.js +0 -1
- package/dist/esm/sdk/registration-CeOmKyCG.js +0 -1
- package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
- package/dist/esm/sdk/runtime-auth-C0V-5znH.js +0 -1
- package/dist/esm/sdk/runtime-device-link-B1jpHQSF.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
- package/dist/esm/sdk/runtime-export-Ba12ChDI.js +0 -1
- package/dist/esm/sdk/runtime-near-DRrdWzmr.js +0 -1
- package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +0 -1
- package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +0 -1
- package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
- package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +0 -1
- package/dist/esm/sdk/shared-B95wnpoD.js +0 -6
- package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +0 -1
- package/dist/esm/sdk/signNear-B_UcqMRf.js +0 -1
- package/dist/esm/sdk/signerDomain-YEHkugWX.js +0 -1
- package/dist/esm/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
- package/dist/esm/sdk/types-BrEW276O.js +0 -1
- package/dist/esm/sdk/wallet-recovery-BEui57xM.js +0 -1
- package/dist/esm/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
- package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
- package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
- package/dist/esm/sdk/walletDbName-BVZhb4xF.js +0 -1
- package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
- package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
- package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
- package/dist/public/sdk/activeWalletSession-BtEHhe99.js +0 -1
- package/dist/public/sdk/adapters-CgJpSAxH.js +0 -2
- package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
- package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
- package/dist/public/sdk/configBuilder-BMNShuOu.js +0 -1
- package/dist/public/sdk/domainIds-C3fUa33Q.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
- package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
- package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
- package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
- package/dist/public/sdk/host-C5KYWEcs.js +0 -1
- package/dist/public/sdk/intentDigest--FZ63NBy.js +0 -1
- package/dist/public/sdk/lanes-l274pbT5.js +0 -1
- package/dist/public/sdk/localOnly-CvFSZFUy.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
- package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
- package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
- package/dist/public/sdk/presignaturePool-DNiA3sgr.js +0 -1
- package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
- package/dist/public/sdk/registration-CIxJvbTo.js +0 -1
- package/dist/public/sdk/registration-CeOmKyCG.js +0 -1
- package/dist/public/sdk/registrationIntent-DW_kKWlx.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
- package/dist/public/sdk/runtime-auth-C0V-5znH.js +0 -1
- package/dist/public/sdk/runtime-device-link-B1jpHQSF.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
- package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
- package/dist/public/sdk/runtime-export-Ba12ChDI.js +0 -1
- package/dist/public/sdk/runtime-near-DRrdWzmr.js +0 -1
- package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +0 -1
- package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +0 -1
- package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
- package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +0 -1
- package/dist/public/sdk/shared-B95wnpoD.js +0 -6
- package/dist/public/sdk/signEvmFamily-C4XMiSue.js +0 -1
- package/dist/public/sdk/signNear-B_UcqMRf.js +0 -1
- package/dist/public/sdk/signerDomain-YEHkugWX.js +0 -1
- package/dist/public/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
- package/dist/public/sdk/types-BrEW276O.js +0 -1
- package/dist/public/sdk/wallet-recovery-BEui57xM.js +0 -1
- package/dist/public/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
- package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
- package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
- package/dist/public/sdk/walletDbName-BVZhb4xF.js +0 -1
- package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
- package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
- package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
- package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +0 -2
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -37
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +0 -2
- /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
- /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
- /package/dist/esm/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
- /package/dist/esm/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
- /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
- /package/dist/esm/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
- /package/dist/esm/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
- /package/dist/esm/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
- /package/dist/esm/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
- /package/dist/esm/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
- /package/dist/esm/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
- /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
- /package/dist/esm/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
- /package/dist/esm/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
- /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
- /package/dist/esm/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
- /package/dist/esm/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
- /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/esm/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
- /package/dist/esm/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
- /package/dist/esm/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
- /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
- /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
- /package/dist/public/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
- /package/dist/public/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
- /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
- /package/dist/public/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
- /package/dist/public/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
- /package/dist/public/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
- /package/dist/public/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
- /package/dist/public/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
- /package/dist/public/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
- /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
- /package/dist/public/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
- /package/dist/public/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
- /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
- /package/dist/public/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
- /package/dist/public/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
- /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
- /package/dist/public/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
- /package/dist/public/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
- /package/dist/public/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "./domainIds.js";
|
|
2
|
+
import { parseDigestB64u } from "./canonicalPrimitives.js";
|
|
3
|
+
import { parseVoiceIdDevicePublicKeyB64u } from "../authorization/voiceIdDeviceAssertion.js";
|
|
2
4
|
import { inspectRawObject, trimString } from "./registrationAuthMethodInput.js";
|
|
3
5
|
//#region ../shared-ts/src/utils/walletAuthMethodRecord.ts
|
|
4
6
|
function sameWalletAuthMethodRecordV2(left, right) {
|
|
@@ -12,6 +14,10 @@ function sameWalletAuthMethodRecordV2(left, right) {
|
|
|
12
14
|
if (right.kind !== "email_otp") return false;
|
|
13
15
|
if (left.emailHashHex === right.emailHashHex && left.registrationAuthorityId === right.registrationAuthorityId) break;
|
|
14
16
|
return false;
|
|
17
|
+
case "voiceid":
|
|
18
|
+
if (right.kind !== "voiceid") return false;
|
|
19
|
+
if (left.deviceKeyId === right.deviceKeyId && left.devicePublicKeyB64u === right.devicePublicKeyB64u) break;
|
|
20
|
+
return false;
|
|
15
21
|
default: return assertNeverWalletAuthMethodRecordV2(left, "wallet auth method kind");
|
|
16
22
|
}
|
|
17
23
|
switch (left.status) {
|
|
@@ -73,6 +79,47 @@ function buildWalletAuthMethodRecordV2(input) {
|
|
|
73
79
|
revokedAtMs: input.revokedAtMs
|
|
74
80
|
};
|
|
75
81
|
}
|
|
82
|
+
if (input.kind === "voiceid") switch (input.status) {
|
|
83
|
+
case "pending_local_install": return {
|
|
84
|
+
version: "wallet_auth_method_v2",
|
|
85
|
+
walletAuthMethodId: input.walletAuthMethodId,
|
|
86
|
+
walletId: input.walletId,
|
|
87
|
+
walletAuthorityId: input.walletAuthorityId,
|
|
88
|
+
kind: "voiceid",
|
|
89
|
+
status: "pending_local_install",
|
|
90
|
+
deviceKeyId: input.deviceKeyId,
|
|
91
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
92
|
+
createdAtMs: input.createdAtMs,
|
|
93
|
+
updatedAtMs: input.updatedAtMs
|
|
94
|
+
};
|
|
95
|
+
case "active": return {
|
|
96
|
+
version: "wallet_auth_method_v2",
|
|
97
|
+
walletAuthMethodId: input.walletAuthMethodId,
|
|
98
|
+
walletId: input.walletId,
|
|
99
|
+
walletAuthorityId: input.walletAuthorityId,
|
|
100
|
+
kind: "voiceid",
|
|
101
|
+
status: "active",
|
|
102
|
+
deviceKeyId: input.deviceKeyId,
|
|
103
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
104
|
+
createdAtMs: input.createdAtMs,
|
|
105
|
+
updatedAtMs: input.updatedAtMs,
|
|
106
|
+
activatedAtMs: input.activatedAtMs
|
|
107
|
+
};
|
|
108
|
+
case "revoked": return {
|
|
109
|
+
version: "wallet_auth_method_v2",
|
|
110
|
+
walletAuthMethodId: input.walletAuthMethodId,
|
|
111
|
+
walletId: input.walletId,
|
|
112
|
+
walletAuthorityId: input.walletAuthorityId,
|
|
113
|
+
kind: "voiceid",
|
|
114
|
+
status: "revoked",
|
|
115
|
+
deviceKeyId: input.deviceKeyId,
|
|
116
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
117
|
+
createdAtMs: input.createdAtMs,
|
|
118
|
+
updatedAtMs: input.updatedAtMs,
|
|
119
|
+
activatedAtMs: input.activatedAtMs,
|
|
120
|
+
revokedAtMs: input.revokedAtMs
|
|
121
|
+
};
|
|
122
|
+
}
|
|
76
123
|
switch (input.status) {
|
|
77
124
|
case "pending_local_install": return {
|
|
78
125
|
version: "wallet_auth_method_v2",
|
|
@@ -121,7 +168,7 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
121
168
|
const version = trimString(record.version);
|
|
122
169
|
const kind = trimString(record.kind);
|
|
123
170
|
const status = trimString(record.status);
|
|
124
|
-
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp") return null;
|
|
171
|
+
if (version !== "wallet_auth_method_v2" || kind !== "passkey" && kind !== "email_otp" && kind !== "voiceid") return null;
|
|
125
172
|
try {
|
|
126
173
|
const common = parseWalletAuthMethodRecordV2Common(record);
|
|
127
174
|
if (kind === "passkey") {
|
|
@@ -139,6 +186,16 @@ function parseWalletAuthMethodRecordV2(raw) {
|
|
|
139
186
|
counter: parseNonNegativeInteger(record.counter)
|
|
140
187
|
});
|
|
141
188
|
}
|
|
189
|
+
if (kind === "voiceid") {
|
|
190
|
+
if (!("deviceKeyId" in record) || !("devicePublicKeyB64u" in record)) return null;
|
|
191
|
+
exactWalletAuthMethodV2Fields(record, "voiceid", status);
|
|
192
|
+
return buildParsedVoiceIdWalletAuthMethodRecordV2({
|
|
193
|
+
common,
|
|
194
|
+
lifecycle: parseWalletAuthMethodLifecycle(record),
|
|
195
|
+
deviceKeyId: parseDigestB64u(record.deviceKeyId),
|
|
196
|
+
devicePublicKeyB64u: parseVoiceIdDevicePublicKeyB64u(record.devicePublicKeyB64u)
|
|
197
|
+
});
|
|
198
|
+
}
|
|
142
199
|
if (!("emailHashHex" in record) || !("registrationAuthorityId" in record)) return null;
|
|
143
200
|
exactWalletAuthMethodV2Fields(record, "email_otp", status);
|
|
144
201
|
const emailHashHex = trimString(record.emailHashHex);
|
|
@@ -170,10 +227,19 @@ function validateWalletAuthMethodRecordV2(value) {
|
|
|
170
227
|
if (!value.walletAuthMethodId || !value.walletId || !value.walletAuthorityId) throw new Error("wallet auth method record identities are required");
|
|
171
228
|
if (!Number.isSafeInteger(value.createdAtMs) || value.createdAtMs < 0) throw new Error("wallet auth method createdAtMs must be a non-negative safe integer");
|
|
172
229
|
if (!Number.isSafeInteger(value.updatedAtMs) || value.updatedAtMs < value.createdAtMs) throw new Error("wallet auth method updatedAtMs must follow createdAtMs");
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
230
|
+
switch (value.kind) {
|
|
231
|
+
case "passkey":
|
|
232
|
+
if (!value.rpId || !value.credentialIdB64u || !value.credentialPublicKeyB64u.trim()) throw new Error("passkey wallet auth method fields are required");
|
|
233
|
+
if (!Number.isSafeInteger(value.counter) || value.counter < 0) throw new Error("passkey authenticator counter must be non-negative");
|
|
234
|
+
break;
|
|
235
|
+
case "email_otp":
|
|
236
|
+
if (!value.emailHashHex.trim() || !value.registrationAuthorityId.trim()) throw new Error("email OTP wallet auth method fields are required");
|
|
237
|
+
break;
|
|
238
|
+
case "voiceid":
|
|
239
|
+
parseDigestB64u(value.deviceKeyId);
|
|
240
|
+
parseVoiceIdDevicePublicKeyB64u(value.devicePublicKeyB64u);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
177
243
|
switch (value.status) {
|
|
178
244
|
case "pending_local_install": return;
|
|
179
245
|
case "active":
|
|
@@ -218,7 +284,8 @@ function exactWalletAuthMethodV2Fields(raw, kind, status) {
|
|
|
218
284
|
"updatedAtMs"
|
|
219
285
|
];
|
|
220
286
|
if (kind === "passkey") fields.push("rpId", "credentialIdB64u", "credentialPublicKeyB64u", "counter");
|
|
221
|
-
else fields.push("emailHashHex", "registrationAuthorityId");
|
|
287
|
+
else if (kind === "email_otp") fields.push("emailHashHex", "registrationAuthorityId");
|
|
288
|
+
else fields.push("deviceKeyId", "devicePublicKeyB64u");
|
|
222
289
|
if (status === "active") fields.push("activatedAtMs");
|
|
223
290
|
if (status === "revoked") fields.push("activatedAtMs", "revokedAtMs");
|
|
224
291
|
if (status !== "pending_local_install" && status !== "active" && status !== "revoked") throw new Error("wallet auth method status is unsupported");
|
|
@@ -319,6 +386,49 @@ function buildParsedEmailOtpWalletAuthMethodRecordV2(input) {
|
|
|
319
386
|
};
|
|
320
387
|
}
|
|
321
388
|
}
|
|
389
|
+
function buildParsedVoiceIdWalletAuthMethodRecordV2(input) {
|
|
390
|
+
switch (input.lifecycle.status) {
|
|
391
|
+
case "pending_local_install": return {
|
|
392
|
+
version: "wallet_auth_method_v2",
|
|
393
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
394
|
+
walletId: input.common.walletId,
|
|
395
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
396
|
+
kind: "voiceid",
|
|
397
|
+
status: "pending_local_install",
|
|
398
|
+
createdAtMs: input.common.createdAtMs,
|
|
399
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
400
|
+
deviceKeyId: input.deviceKeyId,
|
|
401
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u
|
|
402
|
+
};
|
|
403
|
+
case "active": return {
|
|
404
|
+
version: "wallet_auth_method_v2",
|
|
405
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
406
|
+
walletId: input.common.walletId,
|
|
407
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
408
|
+
kind: "voiceid",
|
|
409
|
+
status: "active",
|
|
410
|
+
createdAtMs: input.common.createdAtMs,
|
|
411
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
412
|
+
deviceKeyId: input.deviceKeyId,
|
|
413
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
414
|
+
activatedAtMs: input.lifecycle.activatedAtMs
|
|
415
|
+
};
|
|
416
|
+
case "revoked": return {
|
|
417
|
+
version: "wallet_auth_method_v2",
|
|
418
|
+
walletAuthMethodId: input.common.walletAuthMethodId,
|
|
419
|
+
walletId: input.common.walletId,
|
|
420
|
+
walletAuthorityId: input.common.walletAuthorityId,
|
|
421
|
+
kind: "voiceid",
|
|
422
|
+
status: "revoked",
|
|
423
|
+
createdAtMs: input.common.createdAtMs,
|
|
424
|
+
updatedAtMs: input.common.updatedAtMs,
|
|
425
|
+
deviceKeyId: input.deviceKeyId,
|
|
426
|
+
devicePublicKeyB64u: input.devicePublicKeyB64u,
|
|
427
|
+
activatedAtMs: input.lifecycle.activatedAtMs,
|
|
428
|
+
revokedAtMs: input.lifecycle.revokedAtMs
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
322
432
|
function parseWalletAuthMethodIdRequired(raw) {
|
|
323
433
|
const parsed = parseWalletAuthMethodId(raw);
|
|
324
434
|
if (!parsed.ok) throw new Error(parsed.error.message);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { parseWalletAuthMethodId, parseWalletId, parseWebAuthnRpId } from "./domainIds.js";
|
|
2
|
+
import { parseDigestB64u } from "./canonicalPrimitives.js";
|
|
3
|
+
import { rejectUnknownFields } from "./exactRecord.js";
|
|
2
4
|
import { parseImplicitNearAccountId, parseNamedNearAccountId } from "./near.js";
|
|
3
5
|
import { nearEd25519SigningKeyIdFromString } from "./registrationIds.js";
|
|
4
6
|
//#region ../shared-ts/src/utils/walletCapabilityBindings.ts
|
|
@@ -111,6 +113,14 @@ function buildEmailOtpWalletAuthMethodBinding(args) {
|
|
|
111
113
|
registrationAuthorityId
|
|
112
114
|
};
|
|
113
115
|
}
|
|
116
|
+
function buildVoiceIdWalletAuthMethodBinding(args) {
|
|
117
|
+
return {
|
|
118
|
+
kind: "voiceid",
|
|
119
|
+
walletAuthMethodId: args.walletAuthMethodId,
|
|
120
|
+
wallet: args.wallet,
|
|
121
|
+
deviceKeyId: args.deviceKeyId
|
|
122
|
+
};
|
|
123
|
+
}
|
|
114
124
|
function walletAuthMethodBindingFromRaw(raw) {
|
|
115
125
|
const record = objectRecord(raw);
|
|
116
126
|
if (!record) return missingObject("WalletAuthMethodBinding");
|
|
@@ -120,6 +130,34 @@ function walletAuthMethodBindingFromRaw(raw) {
|
|
|
120
130
|
ok: false,
|
|
121
131
|
error: walletAuthMethodId.error
|
|
122
132
|
};
|
|
133
|
+
if (kind === "voiceid") {
|
|
134
|
+
const wallet = walletIdentityFromRaw(record.wallet);
|
|
135
|
+
if (!wallet.ok) return wallet;
|
|
136
|
+
try {
|
|
137
|
+
rejectUnknownFields(record, [
|
|
138
|
+
"kind",
|
|
139
|
+
"walletAuthMethodId",
|
|
140
|
+
"wallet",
|
|
141
|
+
"deviceKeyId"
|
|
142
|
+
], "VoiceID binding");
|
|
143
|
+
return {
|
|
144
|
+
ok: true,
|
|
145
|
+
value: buildVoiceIdWalletAuthMethodBinding({
|
|
146
|
+
walletAuthMethodId: walletAuthMethodId.value,
|
|
147
|
+
wallet: wallet.value,
|
|
148
|
+
deviceKeyId: parseDigestB64u(record.deviceKeyId)
|
|
149
|
+
})
|
|
150
|
+
};
|
|
151
|
+
} catch {
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
error: {
|
|
155
|
+
code: "invalid",
|
|
156
|
+
message: "VoiceID device key is invalid"
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
123
161
|
if (kind === "passkey") {
|
|
124
162
|
const scope = passkeyAuthScopeFromRaw(record.scope);
|
|
125
163
|
if (!scope.ok) return scope;
|
|
@@ -266,6 +304,6 @@ function nearEd25519SignerBindingFromRaw(raw) {
|
|
|
266
304
|
};
|
|
267
305
|
}
|
|
268
306
|
//#endregion
|
|
269
|
-
export { buildEmailOtpWalletAuthMethodBinding, buildImplicitNearAccountBinding, buildNamedNearAccountBinding, buildNearEd25519SignerBinding, buildNoCurrentWalletAuthMethod, buildPasskeyWalletAuthMethodBinding, buildSelectedCurrentWalletAuthMethod, buildWalletIdentity, nearAccountBindingFromRaw, nearEd25519SignerBindingFromRaw, parseRpId, walletAuthMethodBindingFromRaw };
|
|
307
|
+
export { buildEmailOtpWalletAuthMethodBinding, buildImplicitNearAccountBinding, buildNamedNearAccountBinding, buildNearEd25519SignerBinding, buildNoCurrentWalletAuthMethod, buildPasskeyWalletAuthMethodBinding, buildSelectedCurrentWalletAuthMethod, buildVoiceIdWalletAuthMethodBinding, buildWalletIdentity, nearAccountBindingFromRaw, nearEd25519SignerBindingFromRaw, parseRpId, walletAuthMethodBindingFromRaw };
|
|
270
308
|
|
|
271
309
|
//# sourceMappingURL=walletCapabilityBindings.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { joinNormalizedUrl } from "./shared-ts/src/utils/normalize.js";
|
|
2
|
+
import { isFiniteNumber, isPlainObject, requireRecord } from "./shared-ts/src/utils/validation.js";
|
|
3
|
+
import { buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, sameDelegatedWalletAuthorityV1 } from "./shared-ts/src/authorization/delegatedAuthority.js";
|
|
4
|
+
import { allocateWalletAuthMethodId, mpcMaterialActivationRefsEqual, parsePasskeyEnvelopeId, parseWalletAuthMethodId, parseWalletId } from "./shared-ts/src/utils/domainIds.js";
|
|
5
|
+
import { base64UrlDecode, base64UrlEncode } from "./shared-ts/src/utils/base64.js";
|
|
6
|
+
import { alphabetizeStringify } from "./shared-ts/src/utils/digests.js";
|
|
7
|
+
import { parseDigestB64u, sha256DigestB64u } from "./shared-ts/src/utils/canonicalPrimitives.js";
|
|
8
|
+
import { parseEnvelopeRevision } from "./shared-ts/src/passkey-custody/primitives.js";
|
|
9
|
+
import { rejectUnknownFields } from "./shared-ts/src/utils/exactRecord.js";
|
|
10
|
+
import { toError } from "./shared-ts/src/utils/errors.js";
|
|
11
|
+
import { resolveNearNetwork } from "./core/config/chains.js";
|
|
12
|
+
import { secureRandomId } from "./shared-ts/src/utils/secureRandomId.js";
|
|
13
|
+
import { buildRelayerJsonPostRequestInit, buildWalletSessionAuthorizationHeaders, fetchWithWalletHomeDiscovery, normalizeRelayerBaseUrl } from "./core/rpcClients/relayer/relayerHttp.js";
|
|
14
|
+
import { parseActiveWalletSessionV1, parseWalletSessionOperationCredentialV1 } from "./shared-ts/src/device-linking/activeWalletSession.js";
|
|
15
|
+
import { parseVoiceIdDeviceAssertion, parseVoiceIdDevicePublicKeyB64u, parseVoiceIdWalletSessionChallenge, voiceIdWalletSessionChallengeBytes } from "./shared-ts/src/authorization/voiceIdDeviceAssertion.js";
|
|
16
|
+
import { parseWalletAuthMethodRecordV2 } from "./shared-ts/src/utils/walletAuthMethodRecord.js";
|
|
17
|
+
import { parseLinkedDeviceListResultV1 } from "./shared-ts/src/device-linking/deviceManagement.js";
|
|
18
|
+
import "./shared-ts/src/device-linking/index.js";
|
|
19
|
+
import { walletHostExecutionFingerprint } from "./SeamsWeb/walletIframe/shared/configuration.js";
|
|
20
|
+
import { createCspStylesheetManager, getDefaultCspNonce } from "./core/browser/walletIframe/csp-stylesheet.js";
|
|
21
|
+
import { ActionType } from "./shared-ts/src/near/actions.js";
|
|
22
|
+
import { SEAMS_WALLET_STORES } from "./core/indexedDB/schemaNames.js";
|
|
23
|
+
import { buildWalletCustodySeedBinding } from "./shared-ts/src/passkey-custody/custodySecretBinding.js";
|
|
24
|
+
import { buildMethodBoundEnvelopeOwnership, buildPasskeyCustodyEnvelopeRecord, buildVoiceIdEnvelopeFactor, custodyEnvelopeBindingJsonV1, isVoiceIdSeedEnvelope, parsePasskeyCustodyEnvelopeRecord } from "./shared-ts/src/passkey-custody/custodyEnvelope.js";
|
|
25
|
+
import "./shared-ts/src/passkey-custody/index.js";
|
|
26
|
+
import { walletSessionAuthorizations } from "./core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js";
|
|
27
|
+
import { parseWalletAuthMethodV2StorageRow, parseWalletAuthorityStorageRow, parseWalletSelectionStorageRow } from "./core/indexedDB/seamsWalletDB/repositories.js";
|
|
28
|
+
import { IndexedDBManager } from "./core/indexedDB/index.js";
|
|
29
|
+
import { createWalletIframeSurfaceMeasurementReporter } from "./SeamsWeb/walletIframe/host/surface-measurement-reporter.js";
|
|
30
|
+
import { buildWebauthnP256SignatureWasm, decodeCoseP256PublicKeyWasm } from "./core/signingEngine/chains/evm/evmCryptoWasm.js";
|
|
31
|
+
import { authMenuSuccessCopy } from "./SeamsWeb/walletIframe/host/auth-menu/domain.js";
|
|
32
|
+
import { SeamsWordmark } from "./core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js";
|
|
33
|
+
import { backIcon } from "./SeamsWeb/walletIframe/host/ui/auth-menu/icons.js";
|
|
34
|
+
import { walletForHostRequest } from "./SeamsWeb/walletIframe/host/walletMutationGuard.js";
|
|
35
|
+
import { TransactionReviewError, parseTransactionReviewWire } from "./SeamsWeb/walletIframe/shared/transactionReview.js";
|
|
36
|
+
import { availabilityKey, parseStoredAuthMethodAvailability, readAuthMethodEnabled } from "./core/authMethods/availability.js";
|
|
37
|
+
import { createRelayerExactWalletSessionStatusPort } from "./core/rpcClients/relayer/walletSessionAuthorizationStatus.js";
|
|
38
|
+
import { parseEd25519YaoRecoveryCapabilityV1 } from "./core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js";
|
|
39
|
+
import { parseResealedEnvelopeResult } from "./core/signingEngine/walletCustody/resealedEnvelopeResult.js";
|
|
40
|
+
import { readUnlockedWalletEd25519ExportRootCapabilityV1, walletCustodyCeremonyTransportFromWorkerContextV1 } from "./core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js";
|
|
41
|
+
import { WorkerDeferred } from "./core/signingEngine/workerManager/workerDeferred.js";
|
|
42
|
+
//#region src/voiceid-host.ts
|
|
43
|
+
const VOICE_ID_HOST_API_VERSION = 1;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ActionType, IndexedDBManager, SEAMS_WALLET_STORES, SeamsWordmark, TransactionReviewError, VOICE_ID_HOST_API_VERSION, WorkerDeferred, allocateWalletAuthMethodId, alphabetizeStringify, authMenuSuccessCopy, availabilityKey, backIcon, base64UrlDecode, base64UrlEncode, buildDelegatedWalletAuthorityV1, buildFullOwnerPermissionsV1, buildMethodBoundEnvelopeOwnership, buildPasskeyCustodyEnvelopeRecord, buildRelayerJsonPostRequestInit, buildVoiceIdEnvelopeFactor, buildWalletCustodySeedBinding, buildWalletSessionAuthorizationHeaders, buildWebauthnP256SignatureWasm, createCspStylesheetManager, createRelayerExactWalletSessionStatusPort, createWalletIframeSurfaceMeasurementReporter, custodyEnvelopeBindingJsonV1, decodeCoseP256PublicKeyWasm, fetchWithWalletHomeDiscovery, getDefaultCspNonce, isFiniteNumber, isPlainObject, isVoiceIdSeedEnvelope, joinNormalizedUrl, mpcMaterialActivationRefsEqual, normalizeRelayerBaseUrl, parseActiveWalletSessionV1, parseDigestB64u, parseEd25519YaoRecoveryCapabilityV1, parseEnvelopeRevision, parseLinkedDeviceListResultV1, parsePasskeyCustodyEnvelopeRecord, parsePasskeyEnvelopeId, parseResealedEnvelopeResult, parseStoredAuthMethodAvailability, parseTransactionReviewWire, parseVoiceIdDeviceAssertion, parseVoiceIdDevicePublicKeyB64u, parseVoiceIdWalletSessionChallenge, parseWalletAuthMethodId, parseWalletAuthMethodRecordV2, parseWalletAuthMethodV2StorageRow, parseWalletAuthorityStorageRow, parseWalletId, parseWalletSelectionStorageRow, parseWalletSessionOperationCredentialV1, readAuthMethodEnabled, readUnlockedWalletEd25519ExportRootCapabilityV1, rejectUnknownFields, requireRecord, resolveNearNetwork, sameDelegatedWalletAuthorityV1, secureRandomId, sha256DigestB64u, toError, voiceIdWalletSessionChallengeBytes, walletCustodyCeremonyTransportFromWorkerContextV1, walletForHostRequest, walletHostExecutionFingerprint, walletSessionAuthorizations };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=voiceid-host.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,i as t,r as n}from"./csp-stylesheet-DeuiM0Mo.js";import{c as r,i,r as a,s as o}from"./appearance-token-vars-CgYTfCKg.js";async function s(e,t,n){if(!e.isConnected||n?.aborted)return!1;let r=e.ownerDocument,i=r.defaultView?.navigator.clipboard;if(i?.writeText)try{return await i.writeText(t),!0}catch{}if(!e.isConnected||n?.aborted)return!1;let a=r.createElement(`textarea`);a.value=t,a.readOnly=!0,a.className=`seams-offscreen`,e.appendChild(a),a.select();try{return r.execCommand(`copy`)}finally{a.remove()}}function c(){return n(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[n(`span`,{class:`copy-icon-check`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:n(`path`,{d:`M20 6 9 17l-5-5`})})}),n(`span`,{class:`copy-icon-copy`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[n(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),n(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let l=0;function u(e){return n(d,{...e},e.context)}var d=class extends t{static contextType=a;dialog=e();hosted=e();containerId=`seams-confirmation-modal-${++l}`;componentDidMount(){this.props.context===`standalone`?this.dialog.current?.showModal():this.hosted.current?.focus({preventScroll:!0})}componentWillUnmount(){this.dialog.current?.close()}cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.onCancel()};backdropClick=e=>{let t=this.dialog.current;if(!t||e.target!==t)return;let n=t.getBoundingClientRect();(e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom)&&this.cancel(e)};hostedKeyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};render(){return this.props.context===`standalone`?n(`dialog`,{ref:this.dialog,class:`seams-confirmation-modal`,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,children:n(`div`,{id:this.containerId,class:`modal-container-root`,tabIndex:-1,children:this.props.children})}):n(`div`,{ref:this.hosted,class:`seams-confirmation-modal seams-confirmation-modal--hosted`,tabIndex:-1,onKeyDown:this.hostedKeyDown,children:n(`div`,{id:this.containerId,class:`modal-container-root`,children:this.props.children})})}};function f(e){let t=e.startTranslatePx+e.deltaPx;if(t>=e.restTranslatePx)return t;let n=Math.max(e.sheetHeightPx*.5,e.viewportHeightPx*.5,e.minimumOverpullPx),r=e.restTranslatePx-t;return e.restTranslatePx-n*(1-1/(r/n+1))}function p(e){let t=e.totalDeltaPx/Math.max(1,e.durationMs);return Math.min(e.velocityPxPerMs,t)<=-.6||Math.max(e.velocityPxPerMs,t)>=.7||e.translatePx>=e.sheetHeightPx-50}let m=0;function h(e){return n(g,{...e},e.context)}var g=class extends t{static contextType=a;state={settled:!1};id=`seams-confirmation-drawer-${++m}`;dialog=e();sheet=e();body=e();content=e();observer=null;frame=null;closeTimer=null;gesture={kind:`idle`};lifetime=`active`;closeReported=!1;suppressPointerClick=!1;componentDidMount(){let e=this.sheet.current,t=e.ownerDocument.defaultView;this.dialog.current?.showModal(),this.dialog.current||e.focus({preventScroll:!0}),this.observer=new ResizeObserver(this.measureContent),this.observer.observe(this.content.current),this.observer.observe(e),t.addEventListener(`resize`,this.scheduleMeasure),t.visualViewport?.addEventListener(`resize`,this.scheduleMeasure),this.measure(),this.frame=t.requestAnimationFrame(this.openAfterLayout),this.props.state.kind===`closing`&&this.startClose()}openAfterLayout=()=>{this.frame=null,this.setState({settled:!0})};componentDidUpdate(e){e.styles!==this.props.styles&&(e.styles.deleteDynamicRule(this.id),e.styles.deleteDynamicRule(`${this.id}-drag`),this.resetGesture(),this.measure()),e.state.kind!==this.props.state.kind&&(this.props.state.kind===`closing`?this.startClose():(this.clearCloseTimer(),this.closeReported=!1)),this.props.state.kind===`open`&&this.props.state.interaction===`busy`&&this.resetGesture()}componentWillUnmount(){this.lifetime=`disposed`,this.resetGesture();let e=this.sheet.current.ownerDocument.defaultView;this.frame!==null&&e.cancelAnimationFrame(this.frame),this.clearCloseTimer(),this.observer?.disconnect(),e.removeEventListener(`resize`,this.scheduleMeasure),e.visualViewport?.removeEventListener(`resize`,this.scheduleMeasure),this.props.styles.deleteDynamicRule(this.id),this.dialog.current?.close()}scheduleMeasure=()=>{this.lifetime===`disposed`||this.frame!==null||(this.frame=this.sheet.current.ownerDocument.defaultView.requestAnimationFrame(this.measureFrame))};measureFrame=()=>{this.frame=null,this.measure()};measureContent=()=>{this.lifetime===`active`&&this.measure()};measure(){if(this.gesture.kind!==`idle`)return;let e=this.sheet.current,t=this.content.current,n=Math.round(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top),r=this.props.context===`standalone`?Math.max(0,e.offsetHeight-n):0;this.props.styles.setDynamicDeclarations(this.id,`#${this.id}`,{"--seams-drawer-rest":`${r}px`})}startClose(){this.resetGesture(),this.clearCloseTimer();let e=this.sheet.current.ownerDocument.defaultView,t=e.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:150;this.closeTimer=e.setTimeout(this.reportClosed,t)}clearCloseTimer(){this.closeTimer!==null&&(this.sheet.current.ownerDocument.defaultView.clearTimeout(this.closeTimer),this.closeTimer=null)}reportClosed=()=>{this.clearCloseTimer(),!(this.lifetime===`disposed`||this.closeReported||this.props.state.kind!==`closing`)&&(this.closeReported=!0,this.props.state.onClosed())};transitionEnd=e=>{e.target===this.sheet.current&&e.propertyName===`transform`&&this.reportClosed()};cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.state.kind===`open`&&this.props.onCancel()};backdropClick=e=>{this.props.dismissOnBackdrop!==!1&&e.target===this.dialog.current&&this.canDrag()&&this.cancel(e)};keyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};canDrag(){return this.props.state.kind===`open`&&this.props.state.interaction===`ready`}pointerDown=e=>{if(this.clearClickSuppression(),!this.canDrag()||this.gesture.kind!==`idle`||!e.isPrimary||e.button!==0)return;let t=e.target;if(t instanceof Element&&t.closest(`a, input, textarea, select, summary, button:not(.seams-drawer-handle), [data-seams-drawer-no-drag]`))return;this.gesture={kind:`pending`,pointerId:e.pointerId,startY:e.clientY};let n=this.sheet.current.ownerDocument;n.addEventListener(`pointermove`,this.pointerMove,{passive:!1}),n.addEventListener(`pointerup`,this.pointerUp),n.addEventListener(`pointercancel`,this.pointerCancel)};pointerMove=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=this.sheet.current;if(t.kind===`pending`){if(Math.abs(e.clientY-t.startY)<8||this.body.current.scrollTop>0)return;let r=n.ownerDocument.defaultView,i=new DOMMatrixReadOnly(r.getComputedStyle(n).transform).m42;t={kind:`dragging`,pointerId:t.pointerId,startY:t.startY,lastY:t.startY,startedAt:e.timeStamp,lastTime:e.timeStamp,velocity:0,rest:i,translate:i,height:n.offsetHeight},this.gesture=t,n.setPointerCapture(e.pointerId),n.classList.add(`is-dragging`)}let r=e.timeStamp-t.lastTime;r>0&&(t.velocity=(e.clientY-t.lastY)/r),t.lastY=e.clientY,t.lastTime=e.timeStamp,t.translate=f({startTranslatePx:t.rest,deltaPx:e.clientY-t.startY,restTranslatePx:t.rest,sheetHeightPx:t.height,viewportHeightPx:n.ownerDocument.defaultView.innerHeight,minimumOverpullPx:160}),this.props.styles.setDynamicDeclarations(`${this.id}-drag`,`#${this.id}`,{"--seams-drawer-drag":`${t.translate}px`}),e.preventDefault()};pointerUp=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=t.kind===`dragging`&&p({velocityPxPerMs:t.velocity,totalDeltaPx:t.lastY-t.startY,durationMs:e.timeStamp-t.startedAt,translatePx:t.translate,sheetHeightPx:t.height});t.kind===`dragging`&&(this.suppressPointerClick=!0,e.preventDefault()),this.resetGesture(),n&&this.props.state.kind===`open`&&this.props.onCancel()};pointerCancel=e=>{this.gesture.kind!==`idle`&&this.gesture.pointerId===e.pointerId&&(this.gesture.kind===`dragging`&&(this.suppressPointerClick=!0),this.resetGesture())};clearClickSuppression=()=>{this.suppressPointerClick=!1};suppressDragClick=e=>{!this.suppressPointerClick||e.detail===0||(this.suppressPointerClick=!1,e.preventDefault(),e.stopPropagation())};resetGesture(){let e=this.sheet.current,t=this.gesture;this.gesture={kind:`idle`},t.kind!==`idle`&&e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),e.classList.remove(`is-dragging`);let n=e.ownerDocument;n.removeEventListener(`pointermove`,this.pointerMove),n.removeEventListener(`pointerup`,this.pointerUp),n.removeEventListener(`pointercancel`,this.pointerCancel),this.props.styles.deleteDynamicRule(`${this.id}-drag`),this.lifetime===`active`&&this.scheduleMeasure()}render(){let e=this.state.settled&&this.props.state.kind===`open`,t=[`seams-confirmation-drawer`];e&&t.push(`is-open`),this.gesture.kind===`dragging`&&t.push(`is-dragging`);let a=n(`section`,{ref:this.sheet,id:this.id,class:t.join(` `),"data-context":this.props.context,tabIndex:-1,onPointerDownCapture:this.pointerDown,onClickCapture:this.suppressDragClick,onLostPointerCapture:this.pointerCancel,onTransitionEnd:this.transitionEnd,onKeyDown:this.keyDown,children:[n(`div`,{class:`seams-drawer-controls`,children:[this.props.origin&&n(`div`,{class:`seams-drawer-origin`,children:this.props.origin}),n(`button`,{type:`button`,class:`seams-drawer-handle`,"aria-label":r(this.context,`Dismiss confirmation`),disabled:!this.canDrag(),onClick:this.cancel,children:n(`span`,{})}),n(`button`,{type:`button`,class:`seams-drawer-close`,"aria-label":r(this.context,`Close`),disabled:!this.canDrag(),onClick:this.cancel,children:`×`})]}),n(`div`,{class:`seams-drawer-body`,ref:this.body,children:[this.props.errorMessage&&n(`div`,{class:`error`,children:n(i,{copy:this.props.errorMessage})}),n(`div`,{class:`seams-drawer-content`,ref:this.content,children:this.props.children})]})]});return this.props.context===`wallet-iframe`?a:n(`dialog`,{class:`seams-drawer-dialog`,ref:this.dialog,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,onClickCapture:this.suppressDragClick,onPointerDownCapture:this.clearClickSuppression,children:a})}};export{s as i,u as n,c as r,h as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,T as t}from"./chains-CPmd4s9f.js";import{t as n}from"./errors-CI1xdN0d.js";import{o as r,t as i}from"./accountIds-BzZs7YoX.js";import{r as a}from"./types-BrEW276O.js";import{_ as o,a as s,b as c,d as l,f as u,g as d,h as f,i as p,m,n as ee,o as h,r as g,t as _,u as v,v as y,x as b,y as x}from"./nonceLaneKeys-CR2XEvnk.js";function te(e,t){let n=S(e,t);if(n.ok)return n.state;throw k(n.current,n.transition)}function S(e,t){switch(t){case`release`:return ne(e);case`expire`:return re(e);case`mark_signed`:return ie(e);case`broadcast_accepted`:return ae(e);case`broadcast_rejected`:return oe(e);case`finalize`:return se(e);case`drop`:return ce(e);case`replace`:return C(e);case`reconcile`:return w(e);default:return D(t)}}function ne(e){switch(e){case b.Released:return T(e);case b.Reserved:return T(b.Released);default:return E(e,`release`)}}function re(e){switch(e){case b.Reserved:return T(b.Expired);case b.Signed:return T(b.SignedLeaseExpired);case b.Expired:case b.SignedLeaseExpired:return T(e);default:return E(e,`expire`)}}function ie(e){switch(e){case b.Reserved:case b.Signed:return T(b.Signed);default:return E(e,`mark_signed`)}}function ae(e){switch(e){case b.Signed:case b.BroadcastAccepted:return T(b.BroadcastAccepted);default:return E(e,`broadcast_accepted`)}}function oe(e){switch(e){case b.Signed:case b.BroadcastRejected:return T(b.BroadcastRejected);default:return E(e,`broadcast_rejected`)}}function se(e){switch(e){case b.BroadcastAccepted:case b.Finalized:return T(b.Finalized);default:return E(e,`finalize`)}}function ce(e){switch(e){case b.BroadcastAccepted:case b.Dropped:return T(b.Dropped);default:return E(e,`drop`)}}function C(e){switch(e){case b.BroadcastAccepted:case b.Replaced:return T(b.Replaced);default:return E(e,`replace`)}}function w(e){switch(e){case b.Released:case b.Expired:case b.SignedLeaseExpired:case b.BroadcastRejected:case b.Dropped:case b.Replaced:case b.Reconciled:return T(b.Reconciled);default:return E(e,`reconcile`)}}function T(e){return{ok:!0,state:e}}function E(e,t){return{ok:!1,current:e,transition:t,reason:`illegal_transition`}}function D(e){throw Error(`[NonceCoordinator] unhandled nonce lease transition: ${String(e)}`)}function O(e){return e===b.Reserved||e===b.Signed}function le(e){return e===b.Reserved||e===b.Signed||e===b.BroadcastAccepted}function ue(e){return e===b.Reserved||e===b.Signed||e===b.BroadcastAccepted}function de(e,t){return e.state===c.BroadcastAccepted?!0:(e.state===c.Reserved||e.state===c.Signed)&&e.expiresAtMs>t}function k(e,t){return Error(`[NonceCoordinator] illegal nonce lease transition: ${e} -> ${t}`)}function A(e,t){let n=String(e||``).trim();if(!n)throw Error(`[NonceCoordinator] ${t} is required`);return n}function j(e,t){try{if(typeof e==`bigint`)return e;if(typeof e==`number`&&Number.isSafeInteger(e))return BigInt(e);let t=String(e||``).trim();if(/^\d+$/.test(t))return BigInt(t)}catch{}throw Error(`[NonceCoordinator] invalid ${t}`)}function M(e,t){let n=Math.floor(Number(e));return Number.isFinite(n)&&n>0?n:t}function N(e,t){return String(e||``).trim().toLowerCase().replace(/[^a-z0-9_]+/g,`_`).replace(/^_+|_+$/g,``)||t}function P(...e){return e.length===0?0n:e.reduce((e,t)=>e>t?e:t)}function F(e,t){return e<t?e:t}function fe(){return{chainNonce:null,nextCandidate:null,inFlight:new Map,lastRefreshMs:null,inflightRefresh:null}}function pe(e,t){let n=e.get(t);if(n)return n;let r=fe();return e.set(t,r),r}function me(e){let t=String(e.lane.subjectId||``).trim();if(!t)return;let n=e.accountLaneKeys.get(t);if(!n){e.accountLaneKeys.set(t,new Set([e.laneKey]));return}n.add(e.laneKey)}async function he(e){let{state:t}=e;if(t.inflightRefresh)return await t.inflightRefresh;let n=(async()=>{let n=await e.fetchChainNonce(e.lane),r=n>=0n?n:0n,i=await e.readActiveLeaseNonces({chainNextNonce:r,lane:e.lane}),a=0n;for(let e of i){let t=BigInt(e);t>a&&(a=t)}let o=0n,s=new Map;for(let[e,n]of t.inFlight.entries())n.nonce<r||(s.set(e,n),n.nonce>o&&(o=n.nonce));return t.inFlight=s,t.nextCandidate=P(0n,r,(i.size>0||s.size>0)&&t.nextCandidate||0n,a>0n?a+1n:0n,o>0n?o+1n:0n),t.chainNonce=r,t.lastRefreshMs=e.nowMs,r})();t.inflightRefresh=n;try{return await n}finally{t.inflightRefresh===n&&(t.inflightRefresh=null)}}async function ge(e){return e.state.nextCandidate==null||e.state.lastRefreshMs==null||e.state.inFlight.size>0?!0:(await e.readActiveLeaseNonces({lane:e.lane})).size>0?!1:e.nowMs-e.state.lastRefreshMs>=e.refreshTtlMs}async function _e(e){if(await e.removeCoordinationLease(e.lease),!e.state)return;let t=e.lease.nonce;e.state.inFlight.delete(t.toString()),!((await e.readActiveLeaseNonces({excludeLeaseId:e.lease.leaseId,lane:e.lease.lane})).size>0)&&e.state.inFlight.size===0&&(e.state.lastRefreshMs=null)}async function ve(e){let t=e.lease.nonce,n=ye(e.txHash);e.state.inFlight.set(t.toString(),{nonce:t,txHash:n,status:`accepted`,acceptedAtMs:e.nowMs,updatedAtMs:e.nowMs});let r=t+1n;(e.state.nextCandidate==null||e.state.nextCandidate<r)&&(e.state.nextCandidate=r),await e.persistCoordinationLease(e.lease,{state:c.BroadcastAccepted,txHash:n},e.nowMs+e.staleInFlightThresholdMs)}function ye(e){let t=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(t))throw Error(`[NonceCoordinator] EVM broadcast acceptance requires txHash`);return t}async function be(e){let t=e.lease.nonce;e.state.inFlight.delete(t.toString());let n=t+1n;e.state.chainNonce=e.state.chainNonce==null?n:P(e.state.chainNonce,n),(e.state.nextCandidate==null||e.state.nextCandidate<n)&&(e.state.nextCandidate=n),e.state.lastRefreshMs=e.nowMs,await e.removeCoordinationLease(e.lease)}async function xe(e){let t=e.lease.nonce;if(e.outcome.reason===m.Dropped)e.state.inFlight.delete(t.toString()),(e.state.chainNonce==null||e.state.chainNonce<=t)&&(e.state.nextCandidate=e.state.nextCandidate==null?t:F(e.state.nextCandidate,t));else{let n=e.state.inFlight.get(t.toString());e.state.inFlight.set(t.toString(),{nonce:t,...e.outcome.txHash?{txHash:e.outcome.txHash}:n?.txHash?{txHash:n.txHash}:{},status:`replaced`,acceptedAtMs:n?.acceptedAtMs??e.nowMs,updatedAtMs:e.nowMs})}e.state.lastRefreshMs=null,await e.removeCoordinationLease(e.lease)}async function Se(e){let t=await e.refreshFromChain(e.lane,e.state),n=Array.from(e.state.inFlight.values()).map(e=>e.nonce).sort((e,t)=>e<t?-1:e>t?1:0),r=Ce({state:e.state,nowMs:e.nowMs,staleInFlightThresholdMs:e.staleInFlightThresholdMs});return{chainNextNonce:t,unresolvedInFlightNonces:n,blocked:!!r,...r?{blockedNonce:r.blockedNonce}:{}}}function Ce(e){let{state:t}=e;if(t.inFlight.size===0||t.chainNonce==null)return null;let n=null,r=null;for(let e of t.inFlight.values())(n==null||e.nonce<n)&&(n=e.nonce,r=e.updatedAtMs);if(n==null||r==null||t.chainNonce>n)return null;let i=Math.max(0,e.nowMs-r);return i<e.staleInFlightThresholdMs?null:{blockedNonce:n,ageMs:i}}function we(e){let t=Error(`[NonceCoordinator] nonce lane blocked on ${l(e.lane)} (nonce=${e.blockedNonce.toString()}) for ${e.ageMs}ms; reconcile or replace/dropped report required`);return t.code=`nonce_lane_blocked`,t.retryable=!0,t.details={chain:e.lane.chainTarget.kind,networkKey:l(e.lane),chainId:e.lane.chainTarget.chainId,blockedNonce:e.blockedNonce.toString(),ageMs:e.ageMs},t}function I(e){let t=String(e?.nextNonce??e?.accessKeyInfo?.nonce??`0`).trim();if(!t)return 0n;try{return BigInt(t)}catch{return 0n}}function Te(e){let t={walletId:String(e.walletId||``).trim(),nearAccountId:String(e.nearAccountId||``).trim(),nearPublicKeyStr:String(e.nearPublicKeyStr||``).trim()};if(!e.accessKeyAvailable&&r(t.nearAccountId))return{kind:`implicit_unfunded`,...t};let n={...t,nonce:I(e.transactionContext),accessKeyNonce:String(e.transactionContext?.accessKeyInfo?.nonce??``).trim(),nextNonce:String(e.transactionContext?.nextNonce??``).trim(),txBlockHeight:String(e.transactionContext?.txBlockHeight??``).trim(),txBlockHash:String(e.transactionContext?.txBlockHash??``).trim()};return r(t.nearAccountId)?{kind:`access_key_available`,...n}:{kind:`sponsored_named_ready`,...n}}function L(e){switch(e.lifecycle.kind){case`uninitialized`:return null;case`access_key_bound`:case`access_key_lookup_pending`:case`implicit_unfunded`:case`lookup_failed`:return e.lifecycle.subject;default:return Ne(e.lifecycle)}}function R(e){let t=L(e);if(!t)throw Error(`[NonceCoordinator] NEAR access key is not initialized`);return t}function z(e){return V(e.lifecycle)?.transactionContext??null}function B(e){return z(e)!==null}function Ee(e){return Ae(e)!==null}function De(e){return L(e)?.nearAccountId??null}function Oe(e){return L(e)?.publicKey??null}function V(e){switch(e.kind){case`uninitialized`:case`implicit_unfunded`:case`lookup_failed`:return null;case`access_key_bound`:return e.context.kind===`ready`?e.context:null;case`access_key_lookup_pending`:return e.previousContext.kind===`ready`?e.previousContext:null;default:return Ne(e)}}function ke(e){return V(e)??{kind:`missing`}}function Ae(e){switch(e.lifecycle.kind){case`access_key_lookup_pending`:return e.lifecycle.promise;case`uninitialized`:case`access_key_bound`:case`implicit_unfunded`:case`lookup_failed`:return null;default:return Ne(e.lifecycle)}}function H(e){let t=V(e.state.lifecycle);e.state.lifecycle={kind:`access_key_bound`,subject:e.subject,context:{kind:`ready`,transactionContext:e.transactionContext,lastNonceUpdateMs:e.updateNonce?e.nowMs:t?.lastNonceUpdateMs??e.nowMs,lastBlockHeightUpdateMs:e.updateBlock?e.nowMs:t?.lastBlockHeightUpdateMs??e.nowMs}}}function je(e){e.state.lifecycle={kind:`access_key_lookup_pending`,subject:e.subject,previousContext:ke(e.state.lifecycle),promise:e.promise}}function Me(e){e.state.lifecycle={kind:`implicit_unfunded`,subject:e.subject,readiness:{kind:`implicit_unfunded`,walletId:e.subject.walletId,nearAccountId:e.subject.nearAccountId,nearPublicKeyStr:e.subject.publicKey}}}function U(e){e.state.lifecycle={kind:`lookup_failed`,subject:e.subject,readiness:{kind:`account_lookup_failed`,walletId:e.subject.walletId,nearAccountId:e.subject.nearAccountId,nearPublicKeyStr:e.subject.publicKey,message:e.message}}}function Ne(e){throw Error(`[NonceCoordinator] unhandled NEAR nonce lane lifecycle: ${String(e)}`)}function Pe(){return{lifecycle:{kind:`uninitialized`},inflightId:0,refreshTimer:null,prefetchTimer:null,reservedNonces:new Set,lastReservedNonce:null,inFlight:new Map}}function W(e){e.refreshTimer&&=(clearTimeout(e.refreshTimer),null)}function Fe(e){e.prefetchTimer&&=(clearTimeout(e.prefetchTimer),null)}function G(e){let t=L(e);e.lifecycle=t?{kind:`access_key_bound`,subject:t,context:{kind:`missing`}}:{kind:`uninitialized`},e.reservedNonces.clear(),e.lastReservedNonce=null,e.inFlight.clear(),W(e),Fe(e)}function Ie(e){e.lifecycle={kind:`uninitialized`},G(e)}function Le(e){let t=A(e.nearAccountId,`nearAccountId`),n=A(e.publicKey,`publicKey`),r=A(e.walletId,`walletId`);if(!r)throw Error(`[NonceCoordinator] NEAR access key walletId is required`);let i={walletId:r,nearAccountId:t,publicKey:n},a=L(e.state);a?.walletId===r&&a.nearAccountId===t&&a.publicKey===n||(e.state.lifecycle={kind:`access_key_bound`,subject:i,context:{kind:`missing`}},G(e.state))}function Re(e){Le({state:e.state,walletId:e.walletId,nearAccountId:e.nearAccountId,publicKey:e.publicKey}),H({state:e.state,subject:R(e.state),transactionContext:e.transactionContext,nowMs:e.nowMs,updateNonce:!0,updateBlock:!0})}async function ze(e){let t=z(e.state);if(!t)throw Error(`NEAR transaction context not available - call fetchNearContext() first`);let n=Math.max(0,Math.floor(Number(e.countInput||0)));if(n<=0)return[];let r=v(e.lane),i=await e.readActiveLeaseNonces(r,{lane:e.lane}),a=0n;for(let e of i){let t=BigInt(e);t>a&&(a=t)}let o=P(e.state.lastReservedNonce?BigInt(e.state.lastReservedNonce)+1n:0n,BigInt(t.nextNonce),a>0n?a+1n:0n),s=[],c=o;for(let t=0;t<n;t+=1){for(;e.state.reservedNonces.has(c.toString())||i.has(c.toString());)c+=1n;let t=c.toString();s.push(t),c+=1n}for(let t of s)e.state.reservedNonces.add(t);return e.state.lastReservedNonce=s[s.length-1]||e.state.lastReservedNonce,s}function Be(e){let t=null;for(let n of e)try{let e=BigInt(n);(t===null||e>t)&&(t=e)}catch{}return t===null?null:t.toString()}function Ve(e,t){e.reservedNonces.delete(String(t))&&(e.lastReservedNonce=Be(e.reservedNonces))}async function He(e){let t=BigInt(e.lease.nonce);e.state.inFlight.set(t.toString(),{nonce:t,txHash:e.txHash,acceptedAtMs:e.nowMs,updatedAtMs:e.nowMs}),await e.persistCoordinationLease(e.lease,{state:c.BroadcastAccepted,txHash:e.txHash})}async function Ue(e){Le({state:e.state,walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey});let t=await e.nearClient.viewAccessKey(e.lane.nearAccountId,e.lane.publicKey);if(!q(t))throw Error(`Access key not found or invalid for account ${e.lane.nearAccountId}`);let n=J(t),r=BigInt(n.nonce),i=r+1n,a=[];for(let t of e.activeLeases){let n=BigInt(t.nonce),i=e.state.inFlight.get(n.toString());if(n>r){i&&a.push(n);continue}if(!i?.txHash)continue;let o=await K({nearClient:e.nearClient,txHash:i.txHash,accountId:e.lane.nearAccountId});if(o===`finalized`){e.transitionLease({lease:t,transition:`finalize`,reason:`near_tx_status_finalized`,txHash:i.txHash}),await e.removeCoordinationLease(t),e.state.inFlight.delete(n.toString()),Ve(e.state,n.toString());continue}if(o===`missing`){e.transitionLease({lease:t,transition:`drop`,reason:d.NonceAdvancedHashMissing,txHash:i.txHash}),await e.removeCoordinationLease(t),e.state.inFlight.delete(n.toString()),Ve(e.state,n.toString());continue}a.push(n)}let o=z(e.state),s=P(i,o?.nextNonce?BigInt(o.nextNonce):0n,e.state.lastReservedNonce?BigInt(e.state.lastReservedNonce)+1n:0n);if(H({state:e.state,subject:{walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey},transactionContext:{...o||{nearPublicKeyStr:e.lane.publicKey,txBlockHeight:`0`,txBlockHash:``},accessKeyInfo:n,nextNonce:s.toString()},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),e.state.reservedNonces.size>0){let t=We(r,e.state.reservedNonces);e.state.reservedNonces=t.set,e.state.lastReservedNonce=t.lastReserved}return{chainNextNonce:i,unresolvedInFlightNonces:a.sort((e,t)=>e<t?-1:e>t?1:0),blocked:!1}}async function K(e){try{return await e.nearClient.txStatus(e.txHash,e.accountId),`finalized`}catch(e){let t=n(e);return/unknown transaction|does not exist|not found|not found in storage/i.test(t)?`missing`:`unknown`}}function We(e,t){let n=new Set,r=null;for(let i of t)try{let t=BigInt(i);if(t<=e)continue;n.add(i),(r===null||t>r)&&(r=t)}catch{}return{set:n,lastReserved:r===null?null:r.toString()}}function Ge(e){let t=String(e||``).toLowerCase();return t.includes(`does not exist while viewing`)||t.includes(`access key not found`)||t.includes(`unknown public key`)||t.includes(`unknown_account`)||t.includes(`unknown account`)||t.includes(`unknown_access_key`)||t.includes(`does not exist`)||t.includes(`doesn't exist`)}var Ke=class extends Error{code=`near_implicit_account_unfunded`;nearAccountId;readiness;constructor(e){super(`NEAR account ${e.nearAccountId} needs funding before direct NEAR signing.`),this.name=`NearImplicitAccountFundingRequiredError`,this.nearAccountId=e.nearAccountId,this.readiness=Te({walletId:e.walletId,nearAccountId:e.nearAccountId,nearPublicKeyStr:e.nearPublicKeyStr,accessKeyAvailable:!1})}},qe=class extends Error{code=`near_account_lookup_failed`;nearAccountId;readiness;constructor(e){super(e.message||`NEAR account ${e.nearAccountId} access key lookup failed.`),this.name=`NearAccountLookupFailedError`,this.nearAccountId=e.nearAccountId,this.readiness={kind:`account_lookup_failed`,walletId:e.walletId,nearAccountId:e.nearAccountId,nearPublicKeyStr:e.nearPublicKeyStr,message:this.message}}};async function Je(e){let{state:t}=e,i=Ae(t);if(i&&!e.force)return i;let a=R(t),o=++t.inflightId,s=(async()=>{try{let i=e.now(),s=V(t.lifecycle),c=s?.transactionContext??null,l=e.force||!s||i-s.lastNonceUpdateMs>=e.nonceFreshnessThresholdMs,u=e.force||!s||i-s.lastBlockHeightUpdateMs>=e.blockFreshnessThresholdMs,d=c?.accessKeyInfo,f=c?.txBlockHeight,p=c?.txBlockHash,m=l||!d,ee=u||!f||!p,h=d??null,g=null,_=null,v=null,y=[];if(m&&y.push((async()=>{try{h=await e.nearClient.viewAccessKey(a.nearAccountId,a.publicKey)}catch(e){let t=n(e);if(Ge(t)){if(r(a.nearAccountId)){_=new Ke({walletId:a.walletId,nearAccountId:a.nearAccountId,nearPublicKeyStr:a.publicKey});return}_=new qe({walletId:a.walletId,nearAccountId:a.nearAccountId,nearPublicKeyStr:a.publicKey,message:t});return}_=e}})()),ee&&y.push((async()=>{try{g=await e.nearClient.viewBlock({finality:`final`})}catch(e){v=e}})()),y.length>0&&await Promise.all(y),_)throw _ instanceof Ke?Me({state:t,subject:a}):_ instanceof qe&&U({state:t,subject:a,message:_.message}),_;if(v)throw v;if(m&&(d=q(h)?J(h):c?.accessKeyInfo||$e()),ee){if(!Y(g))throw Error(`[NonceCoordinator] failed to fetch NEAR block info`);f=String(g.header.height),p=g.header.hash}let b=P(d?.nonce===void 0?0n:BigInt(d.nonce)+1n,c?.nextNonce?BigInt(c.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n,1n),x={nearPublicKeyStr:a.publicKey,accessKeyInfo:d,nextNonce:b.toString(),txBlockHeight:f,txBlockHash:p};return et(L(t),a)&&o===t.inflightId&&H({state:t,subject:a,transactionContext:x,nowMs:e.now(),updateNonce:m,updateBlock:ee}),x}finally{if(o===t.inflightId){let e=L(t);t.lifecycle.kind===`access_key_lookup_pending`&&et(e,a)&&(t.lifecycle={kind:`access_key_bound`,subject:a,context:t.lifecycle.previousContext})}}})();return je({state:t,subject:a,promise:s}),s}async function Ye(e){let{state:t}=e,r=R(t);try{let n=await e.nearClient.viewAccessKey(r.nearAccountId,r.publicKey);if(!q(n))throw Error(`Access key not found or invalid for account ${r.nearAccountId}`);let i=J(n),a=BigInt(i.nonce),o=BigInt(e.actualNonce),s=z(t),c=P(a+1n,o+1n,s?.nextNonce?BigInt(s.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n);if(H({state:t,subject:r,transactionContext:s?{...s,accessKeyInfo:i,nextNonce:c.toString()}:{nearPublicKeyStr:r.publicKey,accessKeyInfo:i,nextNonce:c.toString(),txBlockHeight:`0`,txBlockHash:``},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),t.inFlight.delete(e.actualNonce),Ve(t,e.actualNonce),t.reservedNonces.size>0){let e=We(a,t.reservedNonces);t.reservedNonces=e.set,t.lastReservedNonce=e.lastReserved}}catch(i){if(Ge(n(i))){let n=BigInt(e.actualNonce),i=z(t),a=P(n+1n,i?.nextNonce?BigInt(i.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n);H({state:t,subject:r,transactionContext:i?{...i,nextNonce:a.toString()}:{nearPublicKeyStr:r.publicKey,accessKeyInfo:$e(),txBlockHeight:`0`,txBlockHash:``,nextNonce:a.toString()},nowMs:e.now(),updateNonce:!0,updateBlock:!1})}}}async function Xe(e){let{state:t}=e,n=R(t),r=await e.nearClient.viewAccessKey(n.nearAccountId,n.publicKey);if(!q(r))throw Error(`Access key not found or invalid for account ${n.nearAccountId}`);let i=J(r),a=BigInt(i.nonce),o=P(a+1n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n,1n),s=z(t);if(H({state:t,subject:n,transactionContext:s?{...s,accessKeyInfo:i,nextNonce:o.toString()}:{nearPublicKeyStr:n.publicKey,accessKeyInfo:i,nextNonce:o.toString(),txBlockHeight:`0`,txBlockHash:``},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),t.reservedNonces.size>0){let e=We(a,t.reservedNonces);t.reservedNonces=e.set,t.lastReservedNonce=e.lastReserved}}function Ze(e){let t=V(e.state.lifecycle);return!t||e.nowMs-t.lastBlockHeightUpdateMs>=e.blockFreshnessThresholdMs||!t}function q(t){if(!e(t))return!1;try{return j(t.nonce,`near access-key nonce`),!0}catch{return!1}}function J(e){let n=e;return{nonce:j(n.nonce,`near access-key nonce`),permission:Qe(n.permission),block_hash:t(n.block_hash)?n.block_hash:``,block_height:typeof n.block_height==`number`?n.block_height:0}}function Qe(n){if(n===`FullAccess`||!e(n))return`FullAccess`;let r=n.FunctionCall;if(!e(r))return`FullAccess`;let i=Array.isArray(r.method_names)?r.method_names.filter(t):[];return{FunctionCall:{allowance:t(r.allowance)?r.allowance:``,receiver_id:t(r.receiver_id)?r.receiver_id:``,method_names:i}}}function Y(e){let t=e;if(!t||typeof t!=`object`)return!1;let n=t.header;return!!n&&typeof n.hash==`string`&&n.height!==void 0}function $e(){return{nonce:0n,permission:`FullAccess`,block_height:0,block_hash:``}}function et(e,t){return e?.walletId===t.walletId&&e.nearAccountId===t.nearAccountId&&e.publicKey===t.publicKey}function tt(e){let t=e.lane,n=e.fallback||y.InRuntimeLock,r=t?l(t):String(e.networkKey||``).trim(),i=t?u(t):String(e.accountId||``).trim(),a=t?.family||e.laneFamily,o=[e.reason,a||``,r,i,n].join(`|`);if(e.observed.has(o))return null;let s={reason:e.reason,...a?{laneFamily:a}:{},...r?{networkKey:r}:{},...i?{accountId:i}:{},fallback:n};return e.observed.set(o,s),{...t?{lane:t}:{},degradation:s}}function nt(e){let t=[v(e.lane),e.reason].join(`|`),n=e.alerts.get(t),r=n&&e.nowMs-n.firstSeenAtMs<=e.windowMs?{count:n.count+1,firstSeenAtMs:n.firstSeenAtMs,lastSeenAtMs:e.nowMs}:{count:1,firstSeenAtMs:e.nowMs,lastSeenAtMs:e.nowMs};return e.alerts.set(t,r),r.count<e.threshold?null:{alert:{kind:`repeated_dropped_or_replaced`,severity:`warning`,lane:e.lane,reason:e.reason,count:r.count,windowMs:e.windowMs,firstSeenAtMs:r.firstSeenAtMs,lastSeenAtMs:r.lastSeenAtMs},warning:{chainTarget:e.lane.chainTarget,networkKey:l(e.lane),chainId:e.lane.chainTarget.chainId,sender:e.lane.sender,nonceKey:e.lane.nonceKey?.toString(),subjectId:e.lane.subjectId,reason:e.reason,count:r.count,windowMs:e.windowMs}}}function X(){let e={};for(let t of f)e[t]=0;return e}function rt(e,t){let n=(t.lease?.lane?u(t.lease.lane):``)||(t.lane?u(t.lane):``)||t.accountId,r=(t,r)=>{e.push({...n?{accountId:n}:{},kind:t,reason:r})};if(t.event===x.LeaseDropped){r(m.Dropped,m.Dropped);return}if(t.event===x.LeaseReplaced){r(m.Replaced,m.Replaced);return}if(t.event===x.LaneReconciled){r(`reconciled`,N(t.reason,`manual`));return}if(t.event===x.LeaseReleased){r(`released`,N(t.reason,`unspecified`));return}if(t.event===x.LeaseExpired){r(`expired`,N(t.reason,`lease_ttl_elapsed`));return}t.event===x.LeaseBroadcastRejected&&r(b.BroadcastRejected,b.BroadcastRejected)}function it(e,t){let n={droppedCount:0,replacedCount:0,reconciledCount:0,releasedCount:0,expiredCount:0,broadcastRejectedCount:0,releaseReasons:{},reconcileReasons:{},expiryReasons:{}};for(let r of e)if(!(t&&r.accountId!==t)){if(r.kind===m.Dropped){n.droppedCount+=1;continue}if(r.kind===m.Replaced){n.replacedCount+=1;continue}if(r.kind===`broadcast_rejected`){n.broadcastRejectedCount+=1;continue}if(r.kind===`reconciled`){n.reconciledCount+=1,n.reconcileReasons[r.reason]=(n.reconcileReasons[r.reason]||0)+1;continue}if(r.kind===`released`){n.releasedCount+=1,n.releaseReasons[r.reason]=(n.releaseReasons[r.reason]||0)+1;continue}r.kind===`expired`&&(n.expiredCount+=1,n.expiryReasons[r.reason]=(n.expiryReasons[r.reason]||0)+1)}return n}function at(e){let t=e.options?.accountId?String(e.options.accountId).trim():``,n=X(),r=new Map,i=new Set,a=0,o=0,s=0,c=0;for(let l of e.leases){if(t&&u(l.lane)!==t)continue;a+=1,n[l.state]+=1;let d=v(l.lane),f=Math.max(0,e.nowMs-l.reservedAtMs);o=Math.max(o,f),O(l.state)&&(s=Math.max(s,f),l.expiresAtMs<=e.nowMs&&(c+=1,i.add(d)));let p=r.get(d)||{lane:l.lane,leaseCount:0,states:{}};p.leaseCount+=1,p.states[l.state]=(p.states[l.state]||0)+1,r.set(d,p)}let d={atMs:e.nowMs,...t?{accountId:t}:{},leaseCount:a,laneCount:r.size,oldestLeaseAgeMs:o,oldestInFlightLeaseAgeMs:s,staleInFlightLeaseCount:c,staleInFlightLaneCount:i.size,reservedLeaseCount:n[b.Reserved],signedLeaseCount:n[b.Signed],broadcastAcceptedLeaseCount:n[b.BroadcastAccepted],droppedLeaseCount:n[b.Dropped],replacedLeaseCount:n[b.Replaced],reconciledLeaseCount:n[b.Reconciled],releasedLeaseCount:n[b.Released],outcomes:it(e.outcomeMetricEvents,t)},f=De(e.nearState),p=Oe(e.nearState);return{leaseCount:a,leasesByState:n,laneCount:r.size,metrics:d,coordinationWarnings:Array.from(e.observedCoordinationDegradations).filter(e=>!t||!e.accountId||e.accountId===t),lanes:Array.from(r.values()).map(e=>({family:e.lane.family,accountId:u(e.lane),networkKey:l(e.lane),...e.lane.family===`evm`?{chain:e.lane.chainTarget.kind,chainId:e.lane.chainTarget.chainId}:{},leaseCount:e.leaseCount,states:{...e.states}})),near:{...f?{activeAccountId:f}:{},...p?{activePublicKey:p}:{},hasContext:B(e.nearState),reservedNonceCount:e.nearState.reservedNonces.size,...e.nearState.lastReservedNonce?{lastReservedNonce:e.nearState.lastReservedNonce}:{}}}}function Z(e,t){let n=e.trim();if(!n)throw Error(`[NonceCoordinator][near] ${t} is required`);return n}function ot(e){let t=e?.find(e=>String(e.network||``).startsWith(`near-`));return String(t?.network||`near`)}function st(e){return{family:`near`,networkKey:ot(e.chains),walletId:Z(e.walletId,`walletId`),nearAccountId:i(e.nearAccountId),publicKey:Z(e.nearPublicKeyStr,`nearPublicKeyStr`)}}const ct=2e4;async function lt(e,t){try{let n=await e.viewAccessKey(t.nearAccountId,t.publicKey);if(q(n))return{kind:`observed`,nonce:BigInt(n.nonce)}}catch{}return{kind:`unavailable`}}function ut(t){let n=new Map,r=new Map,i=new Map,l=new Map,d=[],f=new Map,S=t.now||Date.now,ne=M(t.leaseTtlMs,12e4),re=M(t.signedLeaseTtlMs,3e4),ie=M(t.evmRefreshTtlMs,5e3),ae=M(t.evmStaleInFlightThresholdMs,45e3),oe=M(t.droppedReplacedAlertThreshold,3),se=M(t.droppedReplacedAlertWindowMs,3e5),ce=t.sameOriginLock===void 0?gt():t.sameOriginLock,C=t.nonceLaneCoordinationStore??null,w=t.nonceLaneCoordinationStore!==void 0,T=s(),E=new Map,D=e=>{rt(d,e);try{t.onTrace?.(e)}catch{}},O=(e,t)=>{let n=tt({observed:E,reason:e,...t});n&&(D({event:x.CoordinationDegraded,...n}),console.warn(`[NonceCoordinator] nonce coordination degraded`,n.degradation))},k=e=>({leaseId:A(e.leaseId,`leaseId`),operationId:a.signingOperation(e.operationId),operationFingerprint:a.signingOperationFingerprint(e.operationFingerprint)}),j=e=>{let t=A(e.leaseId,`leaseId`),r=n.get(t);if(!r)throw Error(`[NonceCoordinator] nonce lease not found`);return ee(r,e.operationId,e.operationFingerprint),r},N=e=>{let t=e.lease.state,n=te(t,e.transition);e.lease.state=n;let r=e.expiresAtMs;typeof r==`number`&&Number.isSafeInteger(r)&&(e.lease.expiresAtMs=r),D({event:e.event,lease:e.lease,previousState:t,nextState:n,...e.reason?{reason:e.reason}:{},...e.txHash?{txHash:e.txHash}:{}})},P=(e,t)=>{te(e.state,t)},F=e=>pe(r,e),fe=(e,t)=>{me({accountLaneKeys:i,lane:e,laneKey:t})},ye=async(e,t)=>{if(!C)return w&&O(o.IndexedDBUnavailable,{lane:t}),[];try{await C.pruneExpired(S())}catch{O(o.DurableStoreError,{lane:t})}try{return await C.readLane(e)}catch{return O(o.DurableStoreError,{lane:t}),[]}},I=async(e,t)=>{let r=new Set;for(let i of n.values()){if(t?.excludeLeaseId&&i.leaseId===t.excludeLeaseId||!Q(i)||v(i.lane)!==e||!le(i.state))continue;let n=i.nonce;t?.chainNextNonce!=null&&n<t.chainNextNonce||r.add(n.toString())}for(let n of await ye(e,t?.lane))n.record.family===`evm`&&(t?.excludeLeaseId&&n.record.leaseId===t.excludeLeaseId||de(n.record,S())&&(t?.chainNextNonce!=null&&n.nonce<t.chainNextNonce||r.add(n.nonce.toString())));return r},Te=async(e,t)=>{let r=new Set;for(let i of n.values()){if(t?.excludeLeaseId&&i.leaseId===t.excludeLeaseId||!$(i)||v(i.lane)!==e||!ue(i.state))continue;let n=BigInt(i.nonce);t?.chainNextNonce!=null&&n<t.chainNextNonce||r.add(n.toString())}for(let n of await ye(e,t?.lane))n.record.family===`near`&&(t?.excludeLeaseId&&n.record.leaseId===t.excludeLeaseId||de(n.record,S())&&(t?.chainNextNonce!=null&&n.nonce<t.chainNextNonce||r.add(n.nonce.toString())));return r},R=async(e,t,n=e.expiresAtMs)=>{let r=C;if(!r){w&&O(o.IndexedDBUnavailable,{lane:e.lane});return}Q(e)?await z(r,pt({lease:e,lifecycle:t,expiresAtMs:n,updatedAtMs:S(),runtimeId:T}),e.lane):$(e)?await z(r,mt({lease:e,lifecycle:t,expiresAtMs:n,updatedAtMs:S(),runtimeId:T}),e.lane):ft(e)},z=async(e,t,n)=>{try{await e.upsert(t)}catch{O(o.DurableStoreError,{lane:n})}},B=async e=>{if(C)try{await C.remove({laneKey:v(e.lane),leaseId:e.leaseId})}catch{O(o.DurableStoreError,{lane:e.lane})}},De=async(e,n)=>{let r=v(e);return await he({lane:e,state:n,nowMs:S(),fetchChainNonce:async e=>await t.evmNonceBackend.fetchChainNonce(h(e)),readActiveLeaseNonces:async e=>await I(r,e)})},V=async(e,t,n)=>await ge({state:t,lane:n,nowMs:S(),refreshTtlMs:ie,readActiveLeaseNonces:async t=>await I(e,t)}),ke=async e=>{await Z(e.lane);let t=v(e.lane),r=F(t);fe(e.lane,t),await V(t,r,e.lane)&&await De(e.lane,r);let i=Ce({state:r,nowMs:S(),staleInFlightThresholdMs:ae});if(i)throw we({lane:e.lane,blockedNonce:i.blockedNonce,ageMs:i.ageMs});let a=r.chainNonce??r.nextCandidate??0n,o=await I(t,{lane:e.lane});for(;o.has(a.toString())||r.inFlight.has(a.toString());)a+=1n;r.nextCandidate=a+1n;let s=S(),l={leaseId:p({operationId:e.operation.operationId,chain:e.lane.chainTarget.kind,nonce:a}),lane:e.lane,operationId:e.operation.operationId,operationFingerprint:e.operation.operationFingerprint,nonce:a,state:b.Reserved,reservedAtMs:s,expiresAtMs:s+ne};return n.set(l.leaseId,l),await R(l,{state:c.Reserved}),D({event:x.LeaseReserved,lease:l}),{...l}},Ae=async e=>{let t=v(e.lane);await _e({lease:e,state:r.get(t),removeCoordinationLease:B,readActiveLeaseNonces:async e=>await I(t,e)})},H=async(e,t)=>{await ve({lease:e,state:F(v(e.lane)),txHash:t,nowMs:S(),staleInFlightThresholdMs:ae,persistCoordinationLease:R})},je=async e=>{await be({lease:e,state:F(v(e.lane)),nowMs:S(),removeCoordinationLease:B})},Me=async(e,t)=>{await xe({lease:e,state:F(v(e.lane)),outcome:t,nowMs:S(),removeCoordinationLease:B})},U=async e=>{let t=v(e),n=F(t);return fe(e,t),await Se({lane:e,state:n,nowMs:S(),staleInFlightThresholdMs:ae,refreshFromChain:De})},Ne=e=>{let t=nt({alerts:l,lane:e.lane,reason:e.reason,nowMs:S(),threshold:oe,windowMs:se});t&&(D({event:x.LaneAlert,lane:e.lane,alert:t.alert}),console.warn(`[NonceCoordinator] repeated EVM-family dropped/replaced nonce outcomes`,t.warning))},W=Pe(),G=()=>{Ie(W)},Be=e=>{let n=e||t.nearClient;if(!n)throw Error(`[NonceCoordinator] NEAR client is not configured`);return n},K=e=>{Le({state:W,...e})},We=async(e,t)=>await ze({state:W,lane:e,countInput:t,readActiveLeaseNonces:Te}),Ge=e=>{Ve(W,e)},Ke=async(e,t=!1)=>await Je({state:W,nearClient:e,force:t,now:S,nonceFreshnessThresholdMs:5e3,blockFreshnessThresholdMs:ct}),qe=async e=>(K({walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey}),{...await Ke(Be(e.nearClient),e.force===!0)}),q=async(e,t)=>{await Ye({state:W,nearClient:e,actualNonce:t,now:S})},J=async e=>{await Xe({state:W,nearClient:e,now:S})},Qe=async e=>{let t=v(e);return await Ue({lane:e,state:W,nearClient:Be(),now:S,activeLeases:Array.from(n.values()).filter(e=>e.lane.family===`near`&&v(e.lane)===t&&e.state===b.BroadcastAccepted),removeCoordinationLease:B,transitionLease:({lease:e,transition:t,reason:n,txHash:r})=>{N({lease:e,transition:t,event:t===`finalize`?x.LeaseFinalized:x.LeaseDropped,reason:n,...r?{txHash:r}:{}})}})},Y=async e=>{if(Q(e)){await Ae(e);return}Ge(String(e.nonce)),await B(e)},$e=async e=>{await Y(e),e.lane.family===`evm`&&(await U(e.lane),D({event:x.LaneReconciled,lane:e.lane}))},et=async(e,t)=>{let n=f.get(e)??Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.catch(()=>void 0).then(()=>i);f.set(e,a),await n.catch(()=>void 0);try{return await t()}finally{r(),f.get(e)===a&&f.delete(e)}},X=async(t,n)=>{let r=v(t),i=async()=>await et(r,n),a=`nonce-coordinator:${r}`;if(ce)return await ce.withLock(a,i);if(C?.withLock){let n=null,r=async()=>{try{return await i()}catch(e){throw n=e,e}};try{return await C.withLock({lockKey:a,ownerId:T,ttlMs:5e3,waitTimeoutMs:3e3},r)}catch(r){throw n===r||O((e(r)?String(r.code||``):``)===o.DurableLockTimeout?o.DurableLockTimeout:o.DurableStoreError,{lane:t,fallback:y.None}),r}}return w&&O(o.WebLocksUnavailable,{lane:t}),await i()},it=async(e,t)=>{if(e.expiresAtMs>t||e.state!==b.Reserved&&e.state!==b.Signed)return null;let n=e.state;return e.state===b.Signed?await $e(e):await Y(e),N({lease:e,transition:`expire`,event:x.LeaseExpired,reason:n===b.Signed?`signed_lease_ttl_elapsed`:`lease_ttl_elapsed`}),{...e}},Z=async e=>{let t=S(),r=v(e),i=[];for(let e of Array.from(n.values())){if(v(e.lane)!==r)continue;let n=await it(e,t);n&&i.push(n)}return i},ot=async e=>{let t=e?.walletId?String(e.walletId).trim():``,r=new Map;for(let e of Array.from(n.values()))t&&u(e.lane)!==t||r.set(v(e.lane),e.lane);let i=[];for(let e of r.values())i.push(...await X(e,async()=>Z(e)));return i},st=async e=>{if(!C){w&&O(o.IndexedDBUnavailable);return}let n=[];try{n=await C.readAllForRecovery(e)}catch{O(o.DurableStoreError);return}let r=new Map;for(let e of n){if(!e.ok){e.leaseId&&await C.remove({laneKey:e.laneKey,leaseId:e.leaseId}),O(e.degradation.reason,{accountId:e.degradation.accountId,networkKey:e.degradation.networkKey,laneFamily:e.degradation.laneFamily,fallback:e.degradation.fallback});continue}let{record:n,lane:i,canonicalLaneKey:a,nonce:s}=e.parsed;await X(i,async()=>{if(n.laneKey!==a){await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),O(o.MalformedDurableRecord,{accountId:u(i),networkKey:n.networkKey,laneFamily:n.family,fallback:y.None});return}let e=n.expiresAtMs<=S();if(e&&n.state!==c.BroadcastAccepted){await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),n.family===`evm`&&await U(i).catch(()=>null),D({event:x.LaneReconciled,lane:i,reason:`startup_recovery_expired_lease`});return}if(n.family===`evm`){let r=i,a=F(n.laneKey),o=null;if(n.state===c.BroadcastAccepted){let e=dt(n.txHash);if(a.inFlight.set(n.nonce.toString(),{nonce:s,txHash:e,status:`accepted`,acceptedAtMs:n.reservedAtMs,updatedAtMs:n.updatedAtMs}),o=await t.evmNonceBackend.fetchBroadcastTransactionStatus({...h(r),txHash:e}).catch(()=>null),o?.kind===`finalized`){a.inFlight.delete(n.nonce.toString()),await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),await U(r).catch(()=>null),D({event:x.LaneReconciled,lane:r,reason:`startup_recovery_finalized_transaction`,txHash:n.txHash});return}}let l=await U(r).catch(()=>null),u=!!l&&l.chainNextNonce>s,d=n.state===c.BroadcastAccepted&&o?.kind===`missing`&&e;(u||d)&&(a.inFlight.delete(n.nonce.toString()),await C.remove({laneKey:n.laneKey,leaseId:n.leaseId})),D({event:x.LaneReconciled,lane:r,reason:d?`startup_recovery_dropped_transaction`:`startup_recovery`,...d&&n.state===c.BroadcastAccepted?{txHash:n.txHash}:{}});return}if(n.family===`near`&&t.nearClient)try{let e=r.get(a);e||(e=await lt(t.nearClient,n),r.set(a,e)),e.kind===`observed`&&e.nonce>=s&&await C.remove({laneKey:n.laneKey,leaseId:n.leaseId})}catch{}})}},ut=async e=>{await Z(e.lane);let t=Math.max(1,Math.floor(Number(e.count||1))),r=await We(e.lane,t);if(r.length!==t)throw Error(`[NonceCoordinator] NEAR nonce reservation returned an incomplete batch`);let i=S(),a=g({operationId:e.operation.operationId,chain:`near`,firstNonce:r[0],count:t}),o=r.map((t,n)=>({leaseId:p({operationId:e.operation.operationId,chain:`near`,nonce:t}),lane:e.lane,operationId:e.operation.operationId,operationFingerprint:e.operation.operationFingerprint,nonce:t,state:b.Reserved,reservedAtMs:i,expiresAtMs:i+ne,batchId:a,txIndex:n}));for(let e of o)n.set(e.leaseId,e),await R(e,{state:c.Reserved}),D({event:x.LeaseReserved,lease:e});return o.map(e=>({...e}))},ht=e=>{let t=e?.accountId?String(e.accountId).trim():``,r=at({options:e,leases:n.values(),nearState:W,observedCoordinationDegradations:E.values(),outcomeMetricEvents:d,nowMs:S()});return e?.emitMetrics&&D({event:x.Metrics,metrics:r.metrics,...t?{accountId:t}:{}}),r};return{async reserve(e){if(e.lane.family===`near`){let t=e.lane;return await X(t,async()=>(await ut({lane:t,operation:e.operation,count:1}))[0])}let t=e.lane;return await X(t,async()=>await ke({lane:t,operation:e.operation}))},async reserveBatch(e){return await X(e.lane,async()=>await ut(e))},async reserveNearContext(e){return await X(e.lane,async()=>{K({walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey});let t={...e.fetchContext?await e.fetchContext():await qe({lane:e.lane,nearClient:e.nearClient,force:e.force!==!1})};Re({state:W,walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey,transactionContext:t,nowMs:S()});let n=await ut({lane:e.lane,operation:e.operation,count:e.count});return n[0]&&(t.nextNonce=String(n[0].nonce)),{context:t,leases:n}})},initializeNearAccessKey:K,getActiveNearPublicKey(){return Oe(W)},async fetchNearContext(e){return await X(e.lane,async()=>qe(e))},async prefetchNearContext(e){if(e?.kind===`access_key_subject`&&K({walletId:e.walletId,nearAccountId:e.nearAccountId,publicKey:e.publicKey}),!L(W))return;Fe(W);let t=Be(e?.nearClient);W.prefetchTimer=setTimeout(()=>{W.prefetchTimer=null,!Ee(W)&&Ze({state:W,nowMs:S(),blockFreshnessThresholdMs:ct})&&Ke(t).catch(()=>void 0)},400)},clearNearAccessKey(){G();for(let[e,t]of n.entries())t.lane.family===`near`&&n.delete(e)},async markSigned(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t),r=S()+re;N({lease:n,transition:`mark_signed`,event:x.LeaseSigned,expiresAtMs:r,...e.signedTxHash?{txHash:e.signedTxHash}:{}}),await R(n,{state:c.Signed},r)})},async markBroadcastAccepted(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t);P(n,`broadcast_accepted`),Q(n)?await H(n,String(e.txHash)):$(n)?await He({lease:n,state:W,txHash:String(e.txHash),nowMs:S(),persistCoordinationLease:R}):ft(n),N({lease:n,transition:`broadcast_accepted`,event:x.LeaseBroadcastAccepted,txHash:String(e.txHash)})})},async markBroadcastRejected(e){let n=k(e);return await X(j(n).lane,async()=>{let r=j(n);if(P(r,`broadcast_rejected`),await Y(r),$(r)&&t.nearClient)try{await J(t.nearClient)}catch{}N({lease:r,transition:`broadcast_rejected`,event:x.LeaseBroadcastRejected,reason:e.error instanceof Error?e.error.message:String(e.error||``)})})},async markFinalized(e){let n=k(e);return await X(j(n).lane,async()=>{let r=j(n);P(r,`finalize`),Q(r)?await je(r):$(r)?(t.nearClient?await q(t.nearClient,String(r.nonce)):await Y(r),await B(r)):ft(r),N({lease:r,transition:`finalize`,event:x.LeaseFinalized,...e.txHash?{txHash:String(e.txHash)}:{}})})},async markDroppedOrReplaced(e){let t=k(e),n=j(t);return _(n),await X(n.lane,async()=>{let n=j(t);_(n),P(n,e.reason===m.Replaced?`replace`:`drop`),await Me(n,{reason:e.reason,...e.txHash?{txHash:String(e.txHash)}:{}}),N({lease:n,transition:e.reason===m.Replaced?`replace`:`drop`,event:e.reason===m.Replaced?x.LeaseReplaced:x.LeaseDropped,reason:e.reason,...e.txHash?{txHash:String(e.txHash)}:{}}),Ne({lane:n.lane,reason:e.reason})})},async release(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t);P(n,`release`),await Y(n),N({lease:n,transition:`release`,event:x.LeaseReleased,reason:e.reason})})},async expireLeases(e){return await ot(e)},async recoverDurableLeases(e){await st(e)},async reconcile(e){return await X(e.lane,async()=>{let t=e.lane.family===`evm`?await U(e.lane):await Qe(e.lane);return D({event:x.LaneReconciled,lane:e.lane}),t})},clearForWallet(e){let t=String(e||``).trim();if(!t)return;C?.clearForWallet(t).catch(()=>O(o.DurableStoreError));let a=i.get(t);if(a){for(let e of a)r.delete(e);i.delete(t)}L(W)?.walletId===t&&G();for(let[e,r]of n.entries())u(r.lane)===t&&n.delete(e);D({event:x.LanesCleared,accountId:t,reason:`clear_for_account`})},clearAll(){r.clear(),i.clear(),l.clear(),C?.clearAll().catch(()=>O(o.DurableStoreError)),G(),n.clear(),f.clear(),D({event:x.LanesCleared,reason:`clear_all`})},getDiagnostics(e){return ht(e)}}}function dt(e){let t=e.trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(t))throw Error(`[NonceCoordinator] recovered EVM broadcast record has invalid txHash`);return t}function Q(e){return e.lane.family===`evm`}function $(e){return e.lane.family===`near`}function ft(e){throw Error(`Unexpected nonce lease variant: ${String(e)}`)}function pt(e){let t=e.lease,n={v:1,laneKey:v(t.lane),leaseId:t.leaseId,networkKey:l(t.lane),nonce:t.nonce,operationId:String(t.operationId),operationFingerprint:String(t.operationFingerprint),reservedAtMs:t.reservedAtMs,expiresAtMs:e.expiresAtMs,updatedAtMs:e.updatedAtMs,runtimeId:e.runtimeId,family:`evm`,chainTarget:t.lane.chainTarget,accountId:t.lane.subjectId,sender:t.lane.sender,...t.lane.nonceKey==null?{}:{nonceKey:t.lane.nonceKey},...ht(t)};switch(e.lifecycle.state){case c.Reserved:case c.Signed:return{...n,state:e.lifecycle.state};case c.BroadcastAccepted:return{...n,state:c.BroadcastAccepted,txHash:dt(e.lifecycle.txHash)}}}function mt(e){let t=e.lease,n={v:1,laneKey:v(t.lane),leaseId:t.leaseId,networkKey:l(t.lane),nonce:BigInt(t.nonce),operationId:String(t.operationId),operationFingerprint:String(t.operationFingerprint),reservedAtMs:t.reservedAtMs,expiresAtMs:e.expiresAtMs,updatedAtMs:e.updatedAtMs,runtimeId:e.runtimeId,family:`near`,walletId:t.lane.walletId,nearAccountId:t.lane.nearAccountId,publicKey:t.lane.publicKey,...ht(t)};switch(e.lifecycle.state){case c.Reserved:case c.Signed:return{...n,state:e.lifecycle.state};case c.BroadcastAccepted:return{...n,state:c.BroadcastAccepted,txHash:e.lifecycle.txHash}}}function ht(e){return{...e.batchId?{batchId:e.batchId}:{},...Number.isSafeInteger(e.txIndex)?{txIndex:e.txIndex}:{}}}function gt(){let e=globalThis.navigator?.locks;return typeof e?.request==`function`?{async withLock(t,n){return await e.request(t,{mode:`exclusive`},n)}}:null}export{st as n,ut as t};
|
|
1
|
+
import{S as e,T as t}from"./chains-gV2K9gA4.js";import{t as n}from"./errors-ADOZT8oV.js";import{o as r,t as i}from"./accountIds-D5NI31F2.js";import{r as a}from"./types-DdzuHlAQ.js";import{_ as o,a as s,b as c,d as l,f as u,g as d,h as f,i as p,m,n as ee,o as h,r as g,t as _,u as v,v as y,x as b,y as x}from"./nonceLaneKeys-BS4fek17.js";function te(e,t){let n=S(e,t);if(n.ok)return n.state;throw k(n.current,n.transition)}function S(e,t){switch(t){case`release`:return ne(e);case`expire`:return re(e);case`mark_signed`:return ie(e);case`broadcast_accepted`:return ae(e);case`broadcast_rejected`:return oe(e);case`finalize`:return se(e);case`drop`:return ce(e);case`replace`:return C(e);case`reconcile`:return w(e);default:return D(t)}}function ne(e){switch(e){case b.Released:return T(e);case b.Reserved:return T(b.Released);default:return E(e,`release`)}}function re(e){switch(e){case b.Reserved:return T(b.Expired);case b.Signed:return T(b.SignedLeaseExpired);case b.Expired:case b.SignedLeaseExpired:return T(e);default:return E(e,`expire`)}}function ie(e){switch(e){case b.Reserved:case b.Signed:return T(b.Signed);default:return E(e,`mark_signed`)}}function ae(e){switch(e){case b.Signed:case b.BroadcastAccepted:return T(b.BroadcastAccepted);default:return E(e,`broadcast_accepted`)}}function oe(e){switch(e){case b.Signed:case b.BroadcastRejected:return T(b.BroadcastRejected);default:return E(e,`broadcast_rejected`)}}function se(e){switch(e){case b.BroadcastAccepted:case b.Finalized:return T(b.Finalized);default:return E(e,`finalize`)}}function ce(e){switch(e){case b.BroadcastAccepted:case b.Dropped:return T(b.Dropped);default:return E(e,`drop`)}}function C(e){switch(e){case b.BroadcastAccepted:case b.Replaced:return T(b.Replaced);default:return E(e,`replace`)}}function w(e){switch(e){case b.Released:case b.Expired:case b.SignedLeaseExpired:case b.BroadcastRejected:case b.Dropped:case b.Replaced:case b.Reconciled:return T(b.Reconciled);default:return E(e,`reconcile`)}}function T(e){return{ok:!0,state:e}}function E(e,t){return{ok:!1,current:e,transition:t,reason:`illegal_transition`}}function D(e){throw Error(`[NonceCoordinator] unhandled nonce lease transition: ${String(e)}`)}function O(e){return e===b.Reserved||e===b.Signed}function le(e){return e===b.Reserved||e===b.Signed||e===b.BroadcastAccepted}function ue(e){return e===b.Reserved||e===b.Signed||e===b.BroadcastAccepted}function de(e,t){return e.state===c.BroadcastAccepted?!0:(e.state===c.Reserved||e.state===c.Signed)&&e.expiresAtMs>t}function k(e,t){return Error(`[NonceCoordinator] illegal nonce lease transition: ${e} -> ${t}`)}function A(e,t){let n=String(e||``).trim();if(!n)throw Error(`[NonceCoordinator] ${t} is required`);return n}function j(e,t){try{if(typeof e==`bigint`)return e;if(typeof e==`number`&&Number.isSafeInteger(e))return BigInt(e);let t=String(e||``).trim();if(/^\d+$/.test(t))return BigInt(t)}catch{}throw Error(`[NonceCoordinator] invalid ${t}`)}function M(e,t){let n=Math.floor(Number(e));return Number.isFinite(n)&&n>0?n:t}function N(e,t){return String(e||``).trim().toLowerCase().replace(/[^a-z0-9_]+/g,`_`).replace(/^_+|_+$/g,``)||t}function P(...e){return e.length===0?0n:e.reduce((e,t)=>e>t?e:t)}function F(e,t){return e<t?e:t}function fe(){return{chainNonce:null,nextCandidate:null,inFlight:new Map,lastRefreshMs:null,inflightRefresh:null}}function pe(e,t){let n=e.get(t);if(n)return n;let r=fe();return e.set(t,r),r}function me(e){let t=String(e.lane.subjectId||``).trim();if(!t)return;let n=e.accountLaneKeys.get(t);if(!n){e.accountLaneKeys.set(t,new Set([e.laneKey]));return}n.add(e.laneKey)}async function he(e){let{state:t}=e;if(t.inflightRefresh)return await t.inflightRefresh;let n=(async()=>{let n=await e.fetchChainNonce(e.lane),r=n>=0n?n:0n,i=await e.readActiveLeaseNonces({chainNextNonce:r,lane:e.lane}),a=0n;for(let e of i){let t=BigInt(e);t>a&&(a=t)}let o=0n,s=new Map;for(let[e,n]of t.inFlight.entries())n.nonce<r||(s.set(e,n),n.nonce>o&&(o=n.nonce));return t.inFlight=s,t.nextCandidate=P(0n,r,(i.size>0||s.size>0)&&t.nextCandidate||0n,a>0n?a+1n:0n,o>0n?o+1n:0n),t.chainNonce=r,t.lastRefreshMs=e.nowMs,r})();t.inflightRefresh=n;try{return await n}finally{t.inflightRefresh===n&&(t.inflightRefresh=null)}}async function ge(e){return e.state.nextCandidate==null||e.state.lastRefreshMs==null||e.state.inFlight.size>0?!0:(await e.readActiveLeaseNonces({lane:e.lane})).size>0?!1:e.nowMs-e.state.lastRefreshMs>=e.refreshTtlMs}async function _e(e){if(await e.removeCoordinationLease(e.lease),!e.state)return;let t=e.lease.nonce;e.state.inFlight.delete(t.toString()),!((await e.readActiveLeaseNonces({excludeLeaseId:e.lease.leaseId,lane:e.lease.lane})).size>0)&&e.state.inFlight.size===0&&(e.state.lastRefreshMs=null)}async function ve(e){let t=e.lease.nonce,n=ye(e.txHash);e.state.inFlight.set(t.toString(),{nonce:t,txHash:n,status:`accepted`,acceptedAtMs:e.nowMs,updatedAtMs:e.nowMs});let r=t+1n;(e.state.nextCandidate==null||e.state.nextCandidate<r)&&(e.state.nextCandidate=r),await e.persistCoordinationLease(e.lease,{state:c.BroadcastAccepted,txHash:n},e.nowMs+e.staleInFlightThresholdMs)}function ye(e){let t=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(t))throw Error(`[NonceCoordinator] EVM broadcast acceptance requires txHash`);return t}async function be(e){let t=e.lease.nonce;e.state.inFlight.delete(t.toString());let n=t+1n;e.state.chainNonce=e.state.chainNonce==null?n:P(e.state.chainNonce,n),(e.state.nextCandidate==null||e.state.nextCandidate<n)&&(e.state.nextCandidate=n),e.state.lastRefreshMs=e.nowMs,await e.removeCoordinationLease(e.lease)}async function xe(e){let t=e.lease.nonce;if(e.outcome.reason===m.Dropped)e.state.inFlight.delete(t.toString()),(e.state.chainNonce==null||e.state.chainNonce<=t)&&(e.state.nextCandidate=e.state.nextCandidate==null?t:F(e.state.nextCandidate,t));else{let n=e.state.inFlight.get(t.toString());e.state.inFlight.set(t.toString(),{nonce:t,...e.outcome.txHash?{txHash:e.outcome.txHash}:n?.txHash?{txHash:n.txHash}:{},status:`replaced`,acceptedAtMs:n?.acceptedAtMs??e.nowMs,updatedAtMs:e.nowMs})}e.state.lastRefreshMs=null,await e.removeCoordinationLease(e.lease)}async function Se(e){let t=await e.refreshFromChain(e.lane,e.state),n=Array.from(e.state.inFlight.values()).map(e=>e.nonce).sort((e,t)=>e<t?-1:e>t?1:0),r=Ce({state:e.state,nowMs:e.nowMs,staleInFlightThresholdMs:e.staleInFlightThresholdMs});return{chainNextNonce:t,unresolvedInFlightNonces:n,blocked:!!r,...r?{blockedNonce:r.blockedNonce}:{}}}function Ce(e){let{state:t}=e;if(t.inFlight.size===0||t.chainNonce==null)return null;let n=null,r=null;for(let e of t.inFlight.values())(n==null||e.nonce<n)&&(n=e.nonce,r=e.updatedAtMs);if(n==null||r==null||t.chainNonce>n)return null;let i=Math.max(0,e.nowMs-r);return i<e.staleInFlightThresholdMs?null:{blockedNonce:n,ageMs:i}}function we(e){let t=Error(`[NonceCoordinator] nonce lane blocked on ${l(e.lane)} (nonce=${e.blockedNonce.toString()}) for ${e.ageMs}ms; reconcile or replace/dropped report required`);return t.code=`nonce_lane_blocked`,t.retryable=!0,t.details={chain:e.lane.chainTarget.kind,networkKey:l(e.lane),chainId:e.lane.chainTarget.chainId,blockedNonce:e.blockedNonce.toString(),ageMs:e.ageMs},t}function I(e){let t=String(e?.nextNonce??e?.accessKeyInfo?.nonce??`0`).trim();if(!t)return 0n;try{return BigInt(t)}catch{return 0n}}function Te(e){let t={walletId:String(e.walletId||``).trim(),nearAccountId:String(e.nearAccountId||``).trim(),nearPublicKeyStr:String(e.nearPublicKeyStr||``).trim()};if(!e.accessKeyAvailable&&r(t.nearAccountId))return{kind:`implicit_unfunded`,...t};let n={...t,nonce:I(e.transactionContext),accessKeyNonce:String(e.transactionContext?.accessKeyInfo?.nonce??``).trim(),nextNonce:String(e.transactionContext?.nextNonce??``).trim(),txBlockHeight:String(e.transactionContext?.txBlockHeight??``).trim(),txBlockHash:String(e.transactionContext?.txBlockHash??``).trim()};return r(t.nearAccountId)?{kind:`access_key_available`,...n}:{kind:`sponsored_named_ready`,...n}}function L(e){switch(e.lifecycle.kind){case`uninitialized`:return null;case`access_key_bound`:case`access_key_lookup_pending`:case`implicit_unfunded`:case`lookup_failed`:return e.lifecycle.subject;default:return Ne(e.lifecycle)}}function R(e){let t=L(e);if(!t)throw Error(`[NonceCoordinator] NEAR access key is not initialized`);return t}function z(e){return V(e.lifecycle)?.transactionContext??null}function B(e){return z(e)!==null}function Ee(e){return Ae(e)!==null}function De(e){return L(e)?.nearAccountId??null}function Oe(e){return L(e)?.publicKey??null}function V(e){switch(e.kind){case`uninitialized`:case`implicit_unfunded`:case`lookup_failed`:return null;case`access_key_bound`:return e.context.kind===`ready`?e.context:null;case`access_key_lookup_pending`:return e.previousContext.kind===`ready`?e.previousContext:null;default:return Ne(e)}}function ke(e){return V(e)??{kind:`missing`}}function Ae(e){switch(e.lifecycle.kind){case`access_key_lookup_pending`:return e.lifecycle.promise;case`uninitialized`:case`access_key_bound`:case`implicit_unfunded`:case`lookup_failed`:return null;default:return Ne(e.lifecycle)}}function H(e){let t=V(e.state.lifecycle);e.state.lifecycle={kind:`access_key_bound`,subject:e.subject,context:{kind:`ready`,transactionContext:e.transactionContext,lastNonceUpdateMs:e.updateNonce?e.nowMs:t?.lastNonceUpdateMs??e.nowMs,lastBlockHeightUpdateMs:e.updateBlock?e.nowMs:t?.lastBlockHeightUpdateMs??e.nowMs}}}function je(e){e.state.lifecycle={kind:`access_key_lookup_pending`,subject:e.subject,previousContext:ke(e.state.lifecycle),promise:e.promise}}function Me(e){e.state.lifecycle={kind:`implicit_unfunded`,subject:e.subject,readiness:{kind:`implicit_unfunded`,walletId:e.subject.walletId,nearAccountId:e.subject.nearAccountId,nearPublicKeyStr:e.subject.publicKey}}}function U(e){e.state.lifecycle={kind:`lookup_failed`,subject:e.subject,readiness:{kind:`account_lookup_failed`,walletId:e.subject.walletId,nearAccountId:e.subject.nearAccountId,nearPublicKeyStr:e.subject.publicKey,message:e.message}}}function Ne(e){throw Error(`[NonceCoordinator] unhandled NEAR nonce lane lifecycle: ${String(e)}`)}function Pe(){return{lifecycle:{kind:`uninitialized`},inflightId:0,refreshTimer:null,prefetchTimer:null,reservedNonces:new Set,lastReservedNonce:null,inFlight:new Map}}function W(e){e.refreshTimer&&=(clearTimeout(e.refreshTimer),null)}function Fe(e){e.prefetchTimer&&=(clearTimeout(e.prefetchTimer),null)}function G(e){let t=L(e);e.lifecycle=t?{kind:`access_key_bound`,subject:t,context:{kind:`missing`}}:{kind:`uninitialized`},e.reservedNonces.clear(),e.lastReservedNonce=null,e.inFlight.clear(),W(e),Fe(e)}function Ie(e){e.lifecycle={kind:`uninitialized`},G(e)}function Le(e){let t=A(e.nearAccountId,`nearAccountId`),n=A(e.publicKey,`publicKey`),r=A(e.walletId,`walletId`);if(!r)throw Error(`[NonceCoordinator] NEAR access key walletId is required`);let i={walletId:r,nearAccountId:t,publicKey:n},a=L(e.state);a?.walletId===r&&a.nearAccountId===t&&a.publicKey===n||(e.state.lifecycle={kind:`access_key_bound`,subject:i,context:{kind:`missing`}},G(e.state))}function Re(e){Le({state:e.state,walletId:e.walletId,nearAccountId:e.nearAccountId,publicKey:e.publicKey}),H({state:e.state,subject:R(e.state),transactionContext:e.transactionContext,nowMs:e.nowMs,updateNonce:!0,updateBlock:!0})}async function ze(e){let t=z(e.state);if(!t)throw Error(`NEAR transaction context not available - call fetchNearContext() first`);let n=Math.max(0,Math.floor(Number(e.countInput||0)));if(n<=0)return[];let r=v(e.lane),i=await e.readActiveLeaseNonces(r,{lane:e.lane}),a=0n;for(let e of i){let t=BigInt(e);t>a&&(a=t)}let o=P(e.state.lastReservedNonce?BigInt(e.state.lastReservedNonce)+1n:0n,BigInt(t.nextNonce),a>0n?a+1n:0n),s=[],c=o;for(let t=0;t<n;t+=1){for(;e.state.reservedNonces.has(c.toString())||i.has(c.toString());)c+=1n;let t=c.toString();s.push(t),c+=1n}for(let t of s)e.state.reservedNonces.add(t);return e.state.lastReservedNonce=s[s.length-1]||e.state.lastReservedNonce,s}function Be(e){let t=null;for(let n of e)try{let e=BigInt(n);(t===null||e>t)&&(t=e)}catch{}return t===null?null:t.toString()}function Ve(e,t){e.reservedNonces.delete(String(t))&&(e.lastReservedNonce=Be(e.reservedNonces))}async function He(e){let t=BigInt(e.lease.nonce);e.state.inFlight.set(t.toString(),{nonce:t,txHash:e.txHash,acceptedAtMs:e.nowMs,updatedAtMs:e.nowMs}),await e.persistCoordinationLease(e.lease,{state:c.BroadcastAccepted,txHash:e.txHash})}async function Ue(e){Le({state:e.state,walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey});let t=await e.nearClient.viewAccessKey(e.lane.nearAccountId,e.lane.publicKey);if(!q(t))throw Error(`Access key not found or invalid for account ${e.lane.nearAccountId}`);let n=J(t),r=BigInt(n.nonce),i=r+1n,a=[];for(let t of e.activeLeases){let n=BigInt(t.nonce),i=e.state.inFlight.get(n.toString());if(n>r){i&&a.push(n);continue}if(!i?.txHash)continue;let o=await K({nearClient:e.nearClient,txHash:i.txHash,accountId:e.lane.nearAccountId});if(o===`finalized`){e.transitionLease({lease:t,transition:`finalize`,reason:`near_tx_status_finalized`,txHash:i.txHash}),await e.removeCoordinationLease(t),e.state.inFlight.delete(n.toString()),Ve(e.state,n.toString());continue}if(o===`missing`){e.transitionLease({lease:t,transition:`drop`,reason:d.NonceAdvancedHashMissing,txHash:i.txHash}),await e.removeCoordinationLease(t),e.state.inFlight.delete(n.toString()),Ve(e.state,n.toString());continue}a.push(n)}let o=z(e.state),s=P(i,o?.nextNonce?BigInt(o.nextNonce):0n,e.state.lastReservedNonce?BigInt(e.state.lastReservedNonce)+1n:0n);if(H({state:e.state,subject:{walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey},transactionContext:{...o||{nearPublicKeyStr:e.lane.publicKey,txBlockHeight:`0`,txBlockHash:``},accessKeyInfo:n,nextNonce:s.toString()},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),e.state.reservedNonces.size>0){let t=We(r,e.state.reservedNonces);e.state.reservedNonces=t.set,e.state.lastReservedNonce=t.lastReserved}return{chainNextNonce:i,unresolvedInFlightNonces:a.sort((e,t)=>e<t?-1:e>t?1:0),blocked:!1}}async function K(e){try{return await e.nearClient.txStatus(e.txHash,e.accountId),`finalized`}catch(e){let t=n(e);return/unknown transaction|does not exist|not found|not found in storage/i.test(t)?`missing`:`unknown`}}function We(e,t){let n=new Set,r=null;for(let i of t)try{let t=BigInt(i);if(t<=e)continue;n.add(i),(r===null||t>r)&&(r=t)}catch{}return{set:n,lastReserved:r===null?null:r.toString()}}function Ge(e){let t=String(e||``).toLowerCase();return t.includes(`does not exist while viewing`)||t.includes(`access key not found`)||t.includes(`unknown public key`)||t.includes(`unknown_account`)||t.includes(`unknown account`)||t.includes(`unknown_access_key`)||t.includes(`does not exist`)||t.includes(`doesn't exist`)}var Ke=class extends Error{code=`near_implicit_account_unfunded`;nearAccountId;readiness;constructor(e){super(`NEAR account ${e.nearAccountId} needs funding before direct NEAR signing.`),this.name=`NearImplicitAccountFundingRequiredError`,this.nearAccountId=e.nearAccountId,this.readiness=Te({walletId:e.walletId,nearAccountId:e.nearAccountId,nearPublicKeyStr:e.nearPublicKeyStr,accessKeyAvailable:!1})}},qe=class extends Error{code=`near_account_lookup_failed`;nearAccountId;readiness;constructor(e){super(e.message||`NEAR account ${e.nearAccountId} access key lookup failed.`),this.name=`NearAccountLookupFailedError`,this.nearAccountId=e.nearAccountId,this.readiness={kind:`account_lookup_failed`,walletId:e.walletId,nearAccountId:e.nearAccountId,nearPublicKeyStr:e.nearPublicKeyStr,message:this.message}}};async function Je(e){let{state:t}=e,i=Ae(t);if(i&&!e.force)return i;let a=R(t),o=++t.inflightId,s=(async()=>{try{let i=e.now(),s=V(t.lifecycle),c=s?.transactionContext??null,l=e.force||!s||i-s.lastNonceUpdateMs>=e.nonceFreshnessThresholdMs,u=e.force||!s||i-s.lastBlockHeightUpdateMs>=e.blockFreshnessThresholdMs,d=c?.accessKeyInfo,f=c?.txBlockHeight,p=c?.txBlockHash,m=l||!d,ee=u||!f||!p,h=d??null,g=null,_=null,v=null,y=[];if(m&&y.push((async()=>{try{h=await e.nearClient.viewAccessKey(a.nearAccountId,a.publicKey)}catch(e){let t=n(e);if(Ge(t)){if(r(a.nearAccountId)){_=new Ke({walletId:a.walletId,nearAccountId:a.nearAccountId,nearPublicKeyStr:a.publicKey});return}_=new qe({walletId:a.walletId,nearAccountId:a.nearAccountId,nearPublicKeyStr:a.publicKey,message:t});return}_=e}})()),ee&&y.push((async()=>{try{g=await e.nearClient.viewBlock({finality:`final`})}catch(e){v=e}})()),y.length>0&&await Promise.all(y),_)throw _ instanceof Ke?Me({state:t,subject:a}):_ instanceof qe&&U({state:t,subject:a,message:_.message}),_;if(v)throw v;if(m&&(d=q(h)?J(h):c?.accessKeyInfo||$e()),ee){if(!Y(g))throw Error(`[NonceCoordinator] failed to fetch NEAR block info`);f=String(g.header.height),p=g.header.hash}let b=P(d?.nonce===void 0?0n:BigInt(d.nonce)+1n,c?.nextNonce?BigInt(c.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n,1n),x={nearPublicKeyStr:a.publicKey,accessKeyInfo:d,nextNonce:b.toString(),txBlockHeight:f,txBlockHash:p};return et(L(t),a)&&o===t.inflightId&&H({state:t,subject:a,transactionContext:x,nowMs:e.now(),updateNonce:m,updateBlock:ee}),x}finally{if(o===t.inflightId){let e=L(t);t.lifecycle.kind===`access_key_lookup_pending`&&et(e,a)&&(t.lifecycle={kind:`access_key_bound`,subject:a,context:t.lifecycle.previousContext})}}})();return je({state:t,subject:a,promise:s}),s}async function Ye(e){let{state:t}=e,r=R(t);try{let n=await e.nearClient.viewAccessKey(r.nearAccountId,r.publicKey);if(!q(n))throw Error(`Access key not found or invalid for account ${r.nearAccountId}`);let i=J(n),a=BigInt(i.nonce),o=BigInt(e.actualNonce),s=z(t),c=P(a+1n,o+1n,s?.nextNonce?BigInt(s.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n);if(H({state:t,subject:r,transactionContext:s?{...s,accessKeyInfo:i,nextNonce:c.toString()}:{nearPublicKeyStr:r.publicKey,accessKeyInfo:i,nextNonce:c.toString(),txBlockHeight:`0`,txBlockHash:``},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),t.inFlight.delete(e.actualNonce),Ve(t,e.actualNonce),t.reservedNonces.size>0){let e=We(a,t.reservedNonces);t.reservedNonces=e.set,t.lastReservedNonce=e.lastReserved}}catch(i){if(Ge(n(i))){let n=BigInt(e.actualNonce),i=z(t),a=P(n+1n,i?.nextNonce?BigInt(i.nextNonce):0n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n);H({state:t,subject:r,transactionContext:i?{...i,nextNonce:a.toString()}:{nearPublicKeyStr:r.publicKey,accessKeyInfo:$e(),txBlockHeight:`0`,txBlockHash:``,nextNonce:a.toString()},nowMs:e.now(),updateNonce:!0,updateBlock:!1})}}}async function Xe(e){let{state:t}=e,n=R(t),r=await e.nearClient.viewAccessKey(n.nearAccountId,n.publicKey);if(!q(r))throw Error(`Access key not found or invalid for account ${n.nearAccountId}`);let i=J(r),a=BigInt(i.nonce),o=P(a+1n,t.lastReservedNonce?BigInt(t.lastReservedNonce)+1n:0n,1n),s=z(t);if(H({state:t,subject:n,transactionContext:s?{...s,accessKeyInfo:i,nextNonce:o.toString()}:{nearPublicKeyStr:n.publicKey,accessKeyInfo:i,nextNonce:o.toString(),txBlockHeight:`0`,txBlockHash:``},nowMs:e.now(),updateNonce:!0,updateBlock:!1}),t.reservedNonces.size>0){let e=We(a,t.reservedNonces);t.reservedNonces=e.set,t.lastReservedNonce=e.lastReserved}}function Ze(e){let t=V(e.state.lifecycle);return!t||e.nowMs-t.lastBlockHeightUpdateMs>=e.blockFreshnessThresholdMs||!t}function q(t){if(!e(t))return!1;try{return j(t.nonce,`near access-key nonce`),!0}catch{return!1}}function J(e){let n=e;return{nonce:j(n.nonce,`near access-key nonce`),permission:Qe(n.permission),block_hash:t(n.block_hash)?n.block_hash:``,block_height:typeof n.block_height==`number`?n.block_height:0}}function Qe(n){if(n===`FullAccess`||!e(n))return`FullAccess`;let r=n.FunctionCall;if(!e(r))return`FullAccess`;let i=Array.isArray(r.method_names)?r.method_names.filter(t):[];return{FunctionCall:{allowance:t(r.allowance)?r.allowance:``,receiver_id:t(r.receiver_id)?r.receiver_id:``,method_names:i}}}function Y(e){let t=e;if(!t||typeof t!=`object`)return!1;let n=t.header;return!!n&&typeof n.hash==`string`&&n.height!==void 0}function $e(){return{nonce:0n,permission:`FullAccess`,block_height:0,block_hash:``}}function et(e,t){return e?.walletId===t.walletId&&e.nearAccountId===t.nearAccountId&&e.publicKey===t.publicKey}function tt(e){let t=e.lane,n=e.fallback||y.InRuntimeLock,r=t?l(t):String(e.networkKey||``).trim(),i=t?u(t):String(e.accountId||``).trim(),a=t?.family||e.laneFamily,o=[e.reason,a||``,r,i,n].join(`|`);if(e.observed.has(o))return null;let s={reason:e.reason,...a?{laneFamily:a}:{},...r?{networkKey:r}:{},...i?{accountId:i}:{},fallback:n};return e.observed.set(o,s),{...t?{lane:t}:{},degradation:s}}function nt(e){let t=[v(e.lane),e.reason].join(`|`),n=e.alerts.get(t),r=n&&e.nowMs-n.firstSeenAtMs<=e.windowMs?{count:n.count+1,firstSeenAtMs:n.firstSeenAtMs,lastSeenAtMs:e.nowMs}:{count:1,firstSeenAtMs:e.nowMs,lastSeenAtMs:e.nowMs};return e.alerts.set(t,r),r.count<e.threshold?null:{alert:{kind:`repeated_dropped_or_replaced`,severity:`warning`,lane:e.lane,reason:e.reason,count:r.count,windowMs:e.windowMs,firstSeenAtMs:r.firstSeenAtMs,lastSeenAtMs:r.lastSeenAtMs},warning:{chainTarget:e.lane.chainTarget,networkKey:l(e.lane),chainId:e.lane.chainTarget.chainId,sender:e.lane.sender,nonceKey:e.lane.nonceKey?.toString(),subjectId:e.lane.subjectId,reason:e.reason,count:r.count,windowMs:e.windowMs}}}function X(){let e={};for(let t of f)e[t]=0;return e}function rt(e,t){let n=(t.lease?.lane?u(t.lease.lane):``)||(t.lane?u(t.lane):``)||t.accountId,r=(t,r)=>{e.push({...n?{accountId:n}:{},kind:t,reason:r})};if(t.event===x.LeaseDropped){r(m.Dropped,m.Dropped);return}if(t.event===x.LeaseReplaced){r(m.Replaced,m.Replaced);return}if(t.event===x.LaneReconciled){r(`reconciled`,N(t.reason,`manual`));return}if(t.event===x.LeaseReleased){r(`released`,N(t.reason,`unspecified`));return}if(t.event===x.LeaseExpired){r(`expired`,N(t.reason,`lease_ttl_elapsed`));return}t.event===x.LeaseBroadcastRejected&&r(b.BroadcastRejected,b.BroadcastRejected)}function it(e,t){let n={droppedCount:0,replacedCount:0,reconciledCount:0,releasedCount:0,expiredCount:0,broadcastRejectedCount:0,releaseReasons:{},reconcileReasons:{},expiryReasons:{}};for(let r of e)if(!(t&&r.accountId!==t)){if(r.kind===m.Dropped){n.droppedCount+=1;continue}if(r.kind===m.Replaced){n.replacedCount+=1;continue}if(r.kind===`broadcast_rejected`){n.broadcastRejectedCount+=1;continue}if(r.kind===`reconciled`){n.reconciledCount+=1,n.reconcileReasons[r.reason]=(n.reconcileReasons[r.reason]||0)+1;continue}if(r.kind===`released`){n.releasedCount+=1,n.releaseReasons[r.reason]=(n.releaseReasons[r.reason]||0)+1;continue}r.kind===`expired`&&(n.expiredCount+=1,n.expiryReasons[r.reason]=(n.expiryReasons[r.reason]||0)+1)}return n}function at(e){let t=e.options?.accountId?String(e.options.accountId).trim():``,n=X(),r=new Map,i=new Set,a=0,o=0,s=0,c=0;for(let l of e.leases){if(t&&u(l.lane)!==t)continue;a+=1,n[l.state]+=1;let d=v(l.lane),f=Math.max(0,e.nowMs-l.reservedAtMs);o=Math.max(o,f),O(l.state)&&(s=Math.max(s,f),l.expiresAtMs<=e.nowMs&&(c+=1,i.add(d)));let p=r.get(d)||{lane:l.lane,leaseCount:0,states:{}};p.leaseCount+=1,p.states[l.state]=(p.states[l.state]||0)+1,r.set(d,p)}let d={atMs:e.nowMs,...t?{accountId:t}:{},leaseCount:a,laneCount:r.size,oldestLeaseAgeMs:o,oldestInFlightLeaseAgeMs:s,staleInFlightLeaseCount:c,staleInFlightLaneCount:i.size,reservedLeaseCount:n[b.Reserved],signedLeaseCount:n[b.Signed],broadcastAcceptedLeaseCount:n[b.BroadcastAccepted],droppedLeaseCount:n[b.Dropped],replacedLeaseCount:n[b.Replaced],reconciledLeaseCount:n[b.Reconciled],releasedLeaseCount:n[b.Released],outcomes:it(e.outcomeMetricEvents,t)},f=De(e.nearState),p=Oe(e.nearState);return{leaseCount:a,leasesByState:n,laneCount:r.size,metrics:d,coordinationWarnings:Array.from(e.observedCoordinationDegradations).filter(e=>!t||!e.accountId||e.accountId===t),lanes:Array.from(r.values()).map(e=>({family:e.lane.family,accountId:u(e.lane),networkKey:l(e.lane),...e.lane.family===`evm`?{chain:e.lane.chainTarget.kind,chainId:e.lane.chainTarget.chainId}:{},leaseCount:e.leaseCount,states:{...e.states}})),near:{...f?{activeAccountId:f}:{},...p?{activePublicKey:p}:{},hasContext:B(e.nearState),reservedNonceCount:e.nearState.reservedNonces.size,...e.nearState.lastReservedNonce?{lastReservedNonce:e.nearState.lastReservedNonce}:{}}}}function Z(e,t){let n=e.trim();if(!n)throw Error(`[NonceCoordinator][near] ${t} is required`);return n}function ot(e){let t=e?.find(e=>String(e.network||``).startsWith(`near-`));return String(t?.network||`near`)}function st(e){return{family:`near`,networkKey:ot(e.chains),walletId:Z(e.walletId,`walletId`),nearAccountId:i(e.nearAccountId),publicKey:Z(e.nearPublicKeyStr,`nearPublicKeyStr`)}}const ct=2e4;async function lt(e,t){try{let n=await e.viewAccessKey(t.nearAccountId,t.publicKey);if(q(n))return{kind:`observed`,nonce:BigInt(n.nonce)}}catch{}return{kind:`unavailable`}}function ut(t){let n=new Map,r=new Map,i=new Map,l=new Map,d=[],f=new Map,S=t.now||Date.now,ne=M(t.leaseTtlMs,12e4),re=M(t.signedLeaseTtlMs,3e4),ie=M(t.evmRefreshTtlMs,5e3),ae=M(t.evmStaleInFlightThresholdMs,45e3),oe=M(t.droppedReplacedAlertThreshold,3),se=M(t.droppedReplacedAlertWindowMs,3e5),ce=t.sameOriginLock===void 0?gt():t.sameOriginLock,C=t.nonceLaneCoordinationStore??null,w=t.nonceLaneCoordinationStore!==void 0,T=s(),E=new Map,D=e=>{rt(d,e);try{t.onTrace?.(e)}catch{}},O=(e,t)=>{let n=tt({observed:E,reason:e,...t});n&&(D({event:x.CoordinationDegraded,...n}),console.warn(`[NonceCoordinator] nonce coordination degraded`,n.degradation))},k=e=>({leaseId:A(e.leaseId,`leaseId`),operationId:a.signingOperation(e.operationId),operationFingerprint:a.signingOperationFingerprint(e.operationFingerprint)}),j=e=>{let t=A(e.leaseId,`leaseId`),r=n.get(t);if(!r)throw Error(`[NonceCoordinator] nonce lease not found`);return ee(r,e.operationId,e.operationFingerprint),r},N=e=>{let t=e.lease.state,n=te(t,e.transition);e.lease.state=n;let r=e.expiresAtMs;typeof r==`number`&&Number.isSafeInteger(r)&&(e.lease.expiresAtMs=r),D({event:e.event,lease:e.lease,previousState:t,nextState:n,...e.reason?{reason:e.reason}:{},...e.txHash?{txHash:e.txHash}:{}})},P=(e,t)=>{te(e.state,t)},F=e=>pe(r,e),fe=(e,t)=>{me({accountLaneKeys:i,lane:e,laneKey:t})},ye=async(e,t)=>{if(!C)return w&&O(o.IndexedDBUnavailable,{lane:t}),[];try{await C.pruneExpired(S())}catch{O(o.DurableStoreError,{lane:t})}try{return await C.readLane(e)}catch{return O(o.DurableStoreError,{lane:t}),[]}},I=async(e,t)=>{let r=new Set;for(let i of n.values()){if(t?.excludeLeaseId&&i.leaseId===t.excludeLeaseId||!Q(i)||v(i.lane)!==e||!le(i.state))continue;let n=i.nonce;t?.chainNextNonce!=null&&n<t.chainNextNonce||r.add(n.toString())}for(let n of await ye(e,t?.lane))n.record.family===`evm`&&(t?.excludeLeaseId&&n.record.leaseId===t.excludeLeaseId||de(n.record,S())&&(t?.chainNextNonce!=null&&n.nonce<t.chainNextNonce||r.add(n.nonce.toString())));return r},Te=async(e,t)=>{let r=new Set;for(let i of n.values()){if(t?.excludeLeaseId&&i.leaseId===t.excludeLeaseId||!$(i)||v(i.lane)!==e||!ue(i.state))continue;let n=BigInt(i.nonce);t?.chainNextNonce!=null&&n<t.chainNextNonce||r.add(n.toString())}for(let n of await ye(e,t?.lane))n.record.family===`near`&&(t?.excludeLeaseId&&n.record.leaseId===t.excludeLeaseId||de(n.record,S())&&(t?.chainNextNonce!=null&&n.nonce<t.chainNextNonce||r.add(n.nonce.toString())));return r},R=async(e,t,n=e.expiresAtMs)=>{let r=C;if(!r){w&&O(o.IndexedDBUnavailable,{lane:e.lane});return}Q(e)?await z(r,pt({lease:e,lifecycle:t,expiresAtMs:n,updatedAtMs:S(),runtimeId:T}),e.lane):$(e)?await z(r,mt({lease:e,lifecycle:t,expiresAtMs:n,updatedAtMs:S(),runtimeId:T}),e.lane):ft(e)},z=async(e,t,n)=>{try{await e.upsert(t)}catch{O(o.DurableStoreError,{lane:n})}},B=async e=>{if(C)try{await C.remove({laneKey:v(e.lane),leaseId:e.leaseId})}catch{O(o.DurableStoreError,{lane:e.lane})}},De=async(e,n)=>{let r=v(e);return await he({lane:e,state:n,nowMs:S(),fetchChainNonce:async e=>await t.evmNonceBackend.fetchChainNonce(h(e)),readActiveLeaseNonces:async e=>await I(r,e)})},V=async(e,t,n)=>await ge({state:t,lane:n,nowMs:S(),refreshTtlMs:ie,readActiveLeaseNonces:async t=>await I(e,t)}),ke=async e=>{await Z(e.lane);let t=v(e.lane),r=F(t);fe(e.lane,t),await V(t,r,e.lane)&&await De(e.lane,r);let i=Ce({state:r,nowMs:S(),staleInFlightThresholdMs:ae});if(i)throw we({lane:e.lane,blockedNonce:i.blockedNonce,ageMs:i.ageMs});let a=r.chainNonce??r.nextCandidate??0n,o=await I(t,{lane:e.lane});for(;o.has(a.toString())||r.inFlight.has(a.toString());)a+=1n;r.nextCandidate=a+1n;let s=S(),l={leaseId:p({operationId:e.operation.operationId,chain:e.lane.chainTarget.kind,nonce:a}),lane:e.lane,operationId:e.operation.operationId,operationFingerprint:e.operation.operationFingerprint,nonce:a,state:b.Reserved,reservedAtMs:s,expiresAtMs:s+ne};return n.set(l.leaseId,l),await R(l,{state:c.Reserved}),D({event:x.LeaseReserved,lease:l}),{...l}},Ae=async e=>{let t=v(e.lane);await _e({lease:e,state:r.get(t),removeCoordinationLease:B,readActiveLeaseNonces:async e=>await I(t,e)})},H=async(e,t)=>{await ve({lease:e,state:F(v(e.lane)),txHash:t,nowMs:S(),staleInFlightThresholdMs:ae,persistCoordinationLease:R})},je=async e=>{await be({lease:e,state:F(v(e.lane)),nowMs:S(),removeCoordinationLease:B})},Me=async(e,t)=>{await xe({lease:e,state:F(v(e.lane)),outcome:t,nowMs:S(),removeCoordinationLease:B})},U=async e=>{let t=v(e),n=F(t);return fe(e,t),await Se({lane:e,state:n,nowMs:S(),staleInFlightThresholdMs:ae,refreshFromChain:De})},Ne=e=>{let t=nt({alerts:l,lane:e.lane,reason:e.reason,nowMs:S(),threshold:oe,windowMs:se});t&&(D({event:x.LaneAlert,lane:e.lane,alert:t.alert}),console.warn(`[NonceCoordinator] repeated EVM-family dropped/replaced nonce outcomes`,t.warning))},W=Pe(),G=()=>{Ie(W)},Be=e=>{let n=e||t.nearClient;if(!n)throw Error(`[NonceCoordinator] NEAR client is not configured`);return n},K=e=>{Le({state:W,...e})},We=async(e,t)=>await ze({state:W,lane:e,countInput:t,readActiveLeaseNonces:Te}),Ge=e=>{Ve(W,e)},Ke=async(e,t=!1)=>await Je({state:W,nearClient:e,force:t,now:S,nonceFreshnessThresholdMs:5e3,blockFreshnessThresholdMs:ct}),qe=async e=>(K({walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey}),{...await Ke(Be(e.nearClient),e.force===!0)}),q=async(e,t)=>{await Ye({state:W,nearClient:e,actualNonce:t,now:S})},J=async e=>{await Xe({state:W,nearClient:e,now:S})},Qe=async e=>{let t=v(e);return await Ue({lane:e,state:W,nearClient:Be(),now:S,activeLeases:Array.from(n.values()).filter(e=>e.lane.family===`near`&&v(e.lane)===t&&e.state===b.BroadcastAccepted),removeCoordinationLease:B,transitionLease:({lease:e,transition:t,reason:n,txHash:r})=>{N({lease:e,transition:t,event:t===`finalize`?x.LeaseFinalized:x.LeaseDropped,reason:n,...r?{txHash:r}:{}})}})},Y=async e=>{if(Q(e)){await Ae(e);return}Ge(String(e.nonce)),await B(e)},$e=async e=>{await Y(e),e.lane.family===`evm`&&(await U(e.lane),D({event:x.LaneReconciled,lane:e.lane}))},et=async(e,t)=>{let n=f.get(e)??Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.catch(()=>void 0).then(()=>i);f.set(e,a),await n.catch(()=>void 0);try{return await t()}finally{r(),f.get(e)===a&&f.delete(e)}},X=async(t,n)=>{let r=v(t),i=async()=>await et(r,n),a=`nonce-coordinator:${r}`;if(ce)return await ce.withLock(a,i);if(C?.withLock){let n=null,r=async()=>{try{return await i()}catch(e){throw n=e,e}};try{return await C.withLock({lockKey:a,ownerId:T,ttlMs:5e3,waitTimeoutMs:3e3},r)}catch(r){throw n===r||O((e(r)?String(r.code||``):``)===o.DurableLockTimeout?o.DurableLockTimeout:o.DurableStoreError,{lane:t,fallback:y.None}),r}}return w&&O(o.WebLocksUnavailable,{lane:t}),await i()},it=async(e,t)=>{if(e.expiresAtMs>t||e.state!==b.Reserved&&e.state!==b.Signed)return null;let n=e.state;return e.state===b.Signed?await $e(e):await Y(e),N({lease:e,transition:`expire`,event:x.LeaseExpired,reason:n===b.Signed?`signed_lease_ttl_elapsed`:`lease_ttl_elapsed`}),{...e}},Z=async e=>{let t=S(),r=v(e),i=[];for(let e of Array.from(n.values())){if(v(e.lane)!==r)continue;let n=await it(e,t);n&&i.push(n)}return i},ot=async e=>{let t=e?.walletId?String(e.walletId).trim():``,r=new Map;for(let e of Array.from(n.values()))t&&u(e.lane)!==t||r.set(v(e.lane),e.lane);let i=[];for(let e of r.values())i.push(...await X(e,async()=>Z(e)));return i},st=async e=>{if(!C){w&&O(o.IndexedDBUnavailable);return}let n=[];try{n=await C.readAllForRecovery(e)}catch{O(o.DurableStoreError);return}let r=new Map;for(let e of n){if(!e.ok){e.leaseId&&await C.remove({laneKey:e.laneKey,leaseId:e.leaseId}),O(e.degradation.reason,{accountId:e.degradation.accountId,networkKey:e.degradation.networkKey,laneFamily:e.degradation.laneFamily,fallback:e.degradation.fallback});continue}let{record:n,lane:i,canonicalLaneKey:a,nonce:s}=e.parsed;await X(i,async()=>{if(n.laneKey!==a){await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),O(o.MalformedDurableRecord,{accountId:u(i),networkKey:n.networkKey,laneFamily:n.family,fallback:y.None});return}let e=n.expiresAtMs<=S();if(e&&n.state!==c.BroadcastAccepted){await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),n.family===`evm`&&await U(i).catch(()=>null),D({event:x.LaneReconciled,lane:i,reason:`startup_recovery_expired_lease`});return}if(n.family===`evm`){let r=i,a=F(n.laneKey),o=null;if(n.state===c.BroadcastAccepted){let e=dt(n.txHash);if(a.inFlight.set(n.nonce.toString(),{nonce:s,txHash:e,status:`accepted`,acceptedAtMs:n.reservedAtMs,updatedAtMs:n.updatedAtMs}),o=await t.evmNonceBackend.fetchBroadcastTransactionStatus({...h(r),txHash:e}).catch(()=>null),o?.kind===`finalized`){a.inFlight.delete(n.nonce.toString()),await C.remove({laneKey:n.laneKey,leaseId:n.leaseId}),await U(r).catch(()=>null),D({event:x.LaneReconciled,lane:r,reason:`startup_recovery_finalized_transaction`,txHash:n.txHash});return}}let l=await U(r).catch(()=>null),u=!!l&&l.chainNextNonce>s,d=n.state===c.BroadcastAccepted&&o?.kind===`missing`&&e;(u||d)&&(a.inFlight.delete(n.nonce.toString()),await C.remove({laneKey:n.laneKey,leaseId:n.leaseId})),D({event:x.LaneReconciled,lane:r,reason:d?`startup_recovery_dropped_transaction`:`startup_recovery`,...d&&n.state===c.BroadcastAccepted?{txHash:n.txHash}:{}});return}if(n.family===`near`&&t.nearClient)try{let e=r.get(a);e||(e=await lt(t.nearClient,n),r.set(a,e)),e.kind===`observed`&&e.nonce>=s&&await C.remove({laneKey:n.laneKey,leaseId:n.leaseId})}catch{}})}},ut=async e=>{await Z(e.lane);let t=Math.max(1,Math.floor(Number(e.count||1))),r=await We(e.lane,t);if(r.length!==t)throw Error(`[NonceCoordinator] NEAR nonce reservation returned an incomplete batch`);let i=S(),a=g({operationId:e.operation.operationId,chain:`near`,firstNonce:r[0],count:t}),o=r.map((t,n)=>({leaseId:p({operationId:e.operation.operationId,chain:`near`,nonce:t}),lane:e.lane,operationId:e.operation.operationId,operationFingerprint:e.operation.operationFingerprint,nonce:t,state:b.Reserved,reservedAtMs:i,expiresAtMs:i+ne,batchId:a,txIndex:n}));for(let e of o)n.set(e.leaseId,e),await R(e,{state:c.Reserved}),D({event:x.LeaseReserved,lease:e});return o.map(e=>({...e}))},ht=e=>{let t=e?.accountId?String(e.accountId).trim():``,r=at({options:e,leases:n.values(),nearState:W,observedCoordinationDegradations:E.values(),outcomeMetricEvents:d,nowMs:S()});return e?.emitMetrics&&D({event:x.Metrics,metrics:r.metrics,...t?{accountId:t}:{}}),r};return{async reserve(e){if(e.lane.family===`near`){let t=e.lane;return await X(t,async()=>(await ut({lane:t,operation:e.operation,count:1}))[0])}let t=e.lane;return await X(t,async()=>await ke({lane:t,operation:e.operation}))},async reserveBatch(e){return await X(e.lane,async()=>await ut(e))},async reserveNearContext(e){return await X(e.lane,async()=>{K({walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey});let t={...e.fetchContext?await e.fetchContext():await qe({lane:e.lane,nearClient:e.nearClient,force:e.force!==!1})};Re({state:W,walletId:e.lane.walletId,nearAccountId:e.lane.nearAccountId,publicKey:e.lane.publicKey,transactionContext:t,nowMs:S()});let n=await ut({lane:e.lane,operation:e.operation,count:e.count});return n[0]&&(t.nextNonce=String(n[0].nonce)),{context:t,leases:n}})},initializeNearAccessKey:K,getActiveNearPublicKey(){return Oe(W)},async fetchNearContext(e){return await X(e.lane,async()=>qe(e))},async prefetchNearContext(e){if(e?.kind===`access_key_subject`&&K({walletId:e.walletId,nearAccountId:e.nearAccountId,publicKey:e.publicKey}),!L(W))return;Fe(W);let t=Be(e?.nearClient);W.prefetchTimer=setTimeout(()=>{W.prefetchTimer=null,!Ee(W)&&Ze({state:W,nowMs:S(),blockFreshnessThresholdMs:ct})&&Ke(t).catch(()=>void 0)},400)},clearNearAccessKey(){G();for(let[e,t]of n.entries())t.lane.family===`near`&&n.delete(e)},async markSigned(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t),r=S()+re;N({lease:n,transition:`mark_signed`,event:x.LeaseSigned,expiresAtMs:r,...e.signedTxHash?{txHash:e.signedTxHash}:{}}),await R(n,{state:c.Signed},r)})},async markBroadcastAccepted(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t);P(n,`broadcast_accepted`),Q(n)?await H(n,String(e.txHash)):$(n)?await He({lease:n,state:W,txHash:String(e.txHash),nowMs:S(),persistCoordinationLease:R}):ft(n),N({lease:n,transition:`broadcast_accepted`,event:x.LeaseBroadcastAccepted,txHash:String(e.txHash)})})},async markBroadcastRejected(e){let n=k(e);return await X(j(n).lane,async()=>{let r=j(n);if(P(r,`broadcast_rejected`),await Y(r),$(r)&&t.nearClient)try{await J(t.nearClient)}catch{}N({lease:r,transition:`broadcast_rejected`,event:x.LeaseBroadcastRejected,reason:e.error instanceof Error?e.error.message:String(e.error||``)})})},async markFinalized(e){let n=k(e);return await X(j(n).lane,async()=>{let r=j(n);P(r,`finalize`),Q(r)?await je(r):$(r)?(t.nearClient?await q(t.nearClient,String(r.nonce)):await Y(r),await B(r)):ft(r),N({lease:r,transition:`finalize`,event:x.LeaseFinalized,...e.txHash?{txHash:String(e.txHash)}:{}})})},async markDroppedOrReplaced(e){let t=k(e),n=j(t);return _(n),await X(n.lane,async()=>{let n=j(t);_(n),P(n,e.reason===m.Replaced?`replace`:`drop`),await Me(n,{reason:e.reason,...e.txHash?{txHash:String(e.txHash)}:{}}),N({lease:n,transition:e.reason===m.Replaced?`replace`:`drop`,event:e.reason===m.Replaced?x.LeaseReplaced:x.LeaseDropped,reason:e.reason,...e.txHash?{txHash:String(e.txHash)}:{}}),Ne({lane:n.lane,reason:e.reason})})},async release(e){let t=k(e);return await X(j(t).lane,async()=>{let n=j(t);P(n,`release`),await Y(n),N({lease:n,transition:`release`,event:x.LeaseReleased,reason:e.reason})})},async expireLeases(e){return await ot(e)},async recoverDurableLeases(e){await st(e)},async reconcile(e){return await X(e.lane,async()=>{let t=e.lane.family===`evm`?await U(e.lane):await Qe(e.lane);return D({event:x.LaneReconciled,lane:e.lane}),t})},clearForWallet(e){let t=String(e||``).trim();if(!t)return;C?.clearForWallet(t).catch(()=>O(o.DurableStoreError));let a=i.get(t);if(a){for(let e of a)r.delete(e);i.delete(t)}L(W)?.walletId===t&&G();for(let[e,r]of n.entries())u(r.lane)===t&&n.delete(e);D({event:x.LanesCleared,accountId:t,reason:`clear_for_account`})},clearAll(){r.clear(),i.clear(),l.clear(),C?.clearAll().catch(()=>O(o.DurableStoreError)),G(),n.clear(),f.clear(),D({event:x.LanesCleared,reason:`clear_all`})},getDiagnostics(e){return ht(e)}}}function dt(e){let t=e.trim().toLowerCase();if(!/^0x[0-9a-f]{64}$/.test(t))throw Error(`[NonceCoordinator] recovered EVM broadcast record has invalid txHash`);return t}function Q(e){return e.lane.family===`evm`}function $(e){return e.lane.family===`near`}function ft(e){throw Error(`Unexpected nonce lease variant: ${String(e)}`)}function pt(e){let t=e.lease,n={v:1,laneKey:v(t.lane),leaseId:t.leaseId,networkKey:l(t.lane),nonce:t.nonce,operationId:String(t.operationId),operationFingerprint:String(t.operationFingerprint),reservedAtMs:t.reservedAtMs,expiresAtMs:e.expiresAtMs,updatedAtMs:e.updatedAtMs,runtimeId:e.runtimeId,family:`evm`,chainTarget:t.lane.chainTarget,accountId:t.lane.subjectId,sender:t.lane.sender,...t.lane.nonceKey==null?{}:{nonceKey:t.lane.nonceKey},...ht(t)};switch(e.lifecycle.state){case c.Reserved:case c.Signed:return{...n,state:e.lifecycle.state};case c.BroadcastAccepted:return{...n,state:c.BroadcastAccepted,txHash:dt(e.lifecycle.txHash)}}}function mt(e){let t=e.lease,n={v:1,laneKey:v(t.lane),leaseId:t.leaseId,networkKey:l(t.lane),nonce:BigInt(t.nonce),operationId:String(t.operationId),operationFingerprint:String(t.operationFingerprint),reservedAtMs:t.reservedAtMs,expiresAtMs:e.expiresAtMs,updatedAtMs:e.updatedAtMs,runtimeId:e.runtimeId,family:`near`,walletId:t.lane.walletId,nearAccountId:t.lane.nearAccountId,publicKey:t.lane.publicKey,...ht(t)};switch(e.lifecycle.state){case c.Reserved:case c.Signed:return{...n,state:e.lifecycle.state};case c.BroadcastAccepted:return{...n,state:c.BroadcastAccepted,txHash:e.lifecycle.txHash}}}function ht(e){return{...e.batchId?{batchId:e.batchId}:{},...Number.isSafeInteger(e.txIndex)?{txIndex:e.txIndex}:{}}}function gt(){let e=globalThis.navigator?.locks;return typeof e?.request==`function`?{async withLock(t,n){return await e.request(t,{mode:`exclusive`},n)}}:null}export{st as n,ut as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./csp-stylesheet-DeuiM0Mo.js";function t(){return e(`svg`,{class:`seams-receipt-wordmark`,viewBox:`0 0 1428 285`,role:`img`,"aria-label":`seams`,children:e(`path`,{d:`M 1152.240 22.260 C 1142.208 32.303, 1134 41.030, 1134 41.653 C 1134 42.276, 1134.625 43.026, 1135.388 43.319 C 1137.220 44.022, 1149.487 58.808, 1154.965 66.916 C 1160.947 75.770, 1167.188 88.708, 1170.922 100 C 1179.875 127.067, 1179.861 153.906, 1170.878 184.346 C 1169.767 188.111, 1169.068 191.402, 1169.325 191.658 C 1169.581 191.915, 1173.776 190.129, 1178.646 187.690 C 1189.458 182.274, 1206.826 175.821, 1220.384 172.183 L 1230.500 169.469 1231.685 161.485 C 1233.180 151.413, 1233.316 131.031, 1231.963 119.974 C 1231.393 115.313, 1229.818 106.851, 1228.463 101.170 C 1227.108 95.488, 1226 90.723, 1226 90.580 C 1226 90.437, 1231.063 91.354, 1237.250 92.617 C 1288.849 103.153, 1340.642 93.721, 1389.671 64.860 C 1397.021 60.533, 1419.577 45.437, 1422.276 43.038 C 1422.979 42.413, 1384.105 4.943, 1381.956 4.174 C 1381.455 3.995, 1378.447 5.832, 1375.273 8.256 C 1352.212 25.865, 1329.230 37.090, 1305.831 42.174 C 1290.920 45.414, 1262.231 45.389, 1247 42.123 C 1221.862 36.733, 1202.051 27.300, 1180.320 10.372 C 1175.820 6.867, 1171.766 4, 1171.309 4 C 1170.853 4, 1162.272 12.217, 1152.240 22.260 M 276 48.064 C 245.671 51.807, 220.471 65.845, 203.537 88.432 C 196.121 98.323, 188.492 116.648, 186.051 130.434 C 184.471 139.355, 184.755 159.897, 186.580 168.731 C 192.404 196.928, 208.854 220.370, 232.901 234.742 C 262.591 252.485, 304.246 254.795, 337.980 240.568 C 350.834 235.146, 367.194 223.594, 373.765 215.297 L 376.932 211.299 361.834 197.711 L 346.737 184.124 339.619 190.143 C 320.291 206.485, 299.180 212.864, 278.754 208.536 C 258.217 204.184, 242.399 188.671, 237.623 168.197 L 236.177 162 311.543 162 L 386.909 162 387.587 158.388 C 387.960 156.402, 388.018 148.189, 387.716 140.138 C 387.277 128.449, 386.625 123.586, 384.479 116 C 379.212 97.381, 371.713 84.617, 359.119 72.834 C 341.964 56.786, 321.656 48.842, 294.709 47.639 C 288.544 47.364, 280.125 47.556, 276 48.064 M 1000.983 49.026 C 981.627 51.294, 962.676 59.399, 951.124 70.351 C 938.360 82.454, 932.081 100.926, 935.370 116.700 C 938.138 129.975, 945.329 140.076, 958.015 148.510 C 967.604 154.885, 980.155 159.892, 1004.029 166.867 C 1015.288 170.156, 1026.528 173.719, 1029.008 174.784 C 1048.926 183.343, 1047.372 201.937, 1026.053 210.140 C 1015.474 214.211, 997.351 212.791, 986.004 207.002 C 979.694 203.783, 970.400 196.188, 965.527 190.269 C 962.915 187.096, 960.339 184.500, 959.804 184.500 C 959.268 184.500, 951.497 190.575, 942.534 198 C 929.678 208.651, 926.415 211.838, 927.076 213.103 C 928.792 216.389, 942.709 229.745, 948.500 233.663 C 980.766 255.495, 1031.930 258.256, 1064.810 239.938 C 1093.327 224.051, 1103.456 188.645, 1086.875 162.806 C 1079.079 150.656, 1060.449 139.092, 1036.756 131.697 C 1030.565 129.765, 1019.425 126.293, 1012 123.982 C 996.026 119.010, 990.228 116.248, 986.523 111.845 C 984.091 108.955, 983.837 107.979, 984.242 103.095 C 984.660 98.058, 985.089 97.243, 989.362 93.375 C 995.842 87.508, 1002.195 85.510, 1014 85.627 C 1029.536 85.780, 1040.165 90.408, 1053 102.609 L 1059.500 108.788 1074.500 95.232 C 1082.750 87.776, 1089.635 81.130, 1089.799 80.462 C 1090.225 78.739, 1079.812 69.686, 1071.224 64.313 C 1057.482 55.715, 1042.661 51.008, 1023.144 49.043 C 1011.825 47.903, 1010.580 47.902, 1000.983 49.026 M 478.921 50.482 C 460.570 53.573, 444.266 60.019, 429.500 70.020 C 421.367 75.529, 412.785 82.902, 413.207 84.017 C 413.368 84.442, 419.475 90.933, 426.777 98.443 L 440.055 112.097 448.277 105.504 C 457.467 98.135, 466.747 93.115, 477.373 89.764 C 483.388 87.867, 486.684 87.524, 498.500 87.561 C 514.277 87.612, 519.926 89.109, 528.209 95.433 C 533.564 99.522, 538.796 108.852, 539.546 115.650 C 539.840 118.318, 540.248 121.894, 540.453 123.597 L 540.825 126.694 512.662 127.312 C 474.264 128.156, 456.457 131.057, 438.650 139.369 C 409.872 152.803, 397.368 179.013, 406.084 207.632 C 408.813 216.591, 412.119 222.196, 418.848 229.266 C 433.800 244.978, 457.890 252.692, 484.002 250.132 C 504.167 248.154, 520.632 240.972, 534.077 228.288 L 541 221.758 541 233.379 L 541 245 566.559 245 L 592.118 245 591.717 179.750 C 591.282 109.141, 591.338 109.914, 585.549 94.533 C 576.527 70.565, 555.039 55.122, 524.252 50.482 C 512.527 48.714, 489.412 48.714, 478.921 50.482 M 72.366 51.570 C 50.831 55.188, 30.787 66.983, 21.508 81.500 C 9.386 100.466, 11.445 124.131, 26.601 140.021 C 37.041 150.966, 47.790 156.186, 80 165.955 C 101.571 172.497, 108.741 175.471, 113.227 179.737 C 122.014 188.093, 117.373 201.967, 103.727 208.137 C 99.071 210.242, 97.079 210.495, 85.500 210.457 C 74.475 210.420, 71.648 210.076, 66.895 208.189 C 57.333 204.394, 48.391 197.450, 39.713 187.077 L 36.013 182.655 31.756 186.047 C 22.049 193.784, 3 210.296, 3 210.975 C 3 212.867, 19.844 229.407, 25.799 233.361 C 42.118 244.199, 63.087 249.992, 86 249.992 C 132.157 249.992, 165.601 226.871, 167.716 193.500 C 168.732 177.462, 164.163 165.154, 153.024 153.923 C 141.991 142.799, 129.353 136.682, 96.500 126.567 C 76.762 120.489, 67.150 116.278, 64.064 112.355 C 60.911 108.346, 60.514 103.886, 62.843 98.621 C 65.477 92.667, 71.720 88.644, 81.804 86.400 C 88.654 84.876, 90.160 84.859, 98.418 86.211 C 110.806 88.240, 117.685 91.723, 127.138 100.754 L 134.931 108.199 137.816 105.850 C 146.860 98.484, 165.983 80.444, 165.693 79.550 C 164.936 77.217, 150.022 65.736, 142.959 62.051 C 122.849 51.558, 96.089 47.585, 72.366 51.570 M 825.539 51.051 C 817.528 52.301, 809.553 54.686, 804.028 57.486 C 796.847 61.125, 787.304 68.749, 783.769 73.673 L 780.532 78.180 779.078 75.840 C 775.424 69.955, 764.796 60.805, 757.750 57.477 C 746.137 51.993, 739.434 50.698, 725.533 51.254 C 706.839 52.001, 694.387 57.102, 681.866 69.140 L 676 74.781 676 65.390 L 676 56 651.661 56 L 627.322 56 626.663 83.750 C 626.300 99.013, 626.003 141.537, 626.002 178.250 L 626 245 650 245 L 674 245 674 187.958 C 674 125.947, 674.350 121.163, 679.650 110.703 C 691.004 88.298, 724.199 85.661, 735.947 106.231 C 741.820 116.514, 742 118.855, 742 184.966 L 742 245.037 765.250 244.768 L 788.500 244.500 789.039 184 C 789.453 137.683, 789.889 122.562, 790.903 119.500 C 794.665 108.131, 800.351 100.945, 809.283 96.269 C 813.828 93.890, 815.659 93.536, 823.500 93.519 C 831.355 93.502, 833.225 93.856, 838.201 96.300 C 845.065 99.670, 850.240 106.160, 853.351 115.297 C 855.395 121.302, 855.473 123.474, 855.781 183.250 L 856.099 245 880.095 245 L 904.091 245 903.766 176.750 C 903.447 109.712, 903.401 108.359, 901.212 100.558 C 894.210 75.604, 876.712 57.823, 854 52.581 C 845.325 50.579, 832.863 49.909, 825.539 51.051 M 279 83.691 C 264.019 86.199, 249.825 96.478, 243.191 109.624 C 240.856 114.250, 237 124.874, 237 126.682 C 237 126.857, 259.500 127, 287 127 C 317.941 127, 337 126.638, 337 126.049 C 337 122.644, 334.294 113.593, 331.779 108.589 C 325.881 96.853, 314.699 87.980, 301.458 84.531 C 296.022 83.115, 284.921 82.700, 279 83.691 M 1373.984 93.932 C 1358.717 101.014, 1349.722 104.330, 1336.008 107.930 L 1325.515 110.685 1324.277 117.592 C 1323.596 121.392, 1323.013 131.475, 1322.982 140 C 1322.924 156.322, 1324.865 170.597, 1328.959 183.948 C 1330.047 187.495, 1330.837 190.497, 1330.714 190.619 C 1330.592 190.742, 1326.893 189.972, 1322.496 188.909 C 1304.642 184.594, 1295.980 183.607, 1276 183.612 C 1260.205 183.616, 1254.056 184.048, 1243.635 185.884 C 1213.691 191.158, 1186.385 202.666, 1158.538 221.745 C 1146.555 229.956, 1134 239.793, 1134 240.971 C 1134 241.645, 1155.018 264.209, 1166.941 276.336 L 1171.695 281.172 1182.932 272.727 C 1209.090 253.066, 1232.355 242.974, 1260.846 238.927 C 1271.516 237.412, 1297.903 238.291, 1308 240.498 C 1333.016 245.966, 1352.163 255.502, 1374.794 273.765 L 1384.088 281.266 1386.294 279.318 C 1387.507 278.246, 1396.721 269.819, 1406.769 260.591 L 1425.039 243.812 1418.769 236.895 C 1393.960 209.525, 1382.368 185.212, 1378.937 153.347 C 1377.153 136.771, 1379.694 114.031, 1385.375 95.750 C 1386.699 91.487, 1387.494 88.028, 1387.141 88.063 C 1386.789 88.098, 1380.868 90.739, 1373.984 93.932 M 487 161.998 C 465.755 164.841, 454 174.462, 454 189.008 C 454 210.801, 485.917 220.760, 513.612 207.607 C 529.505 200.060, 540 183.837, 540 166.818 L 540 161 516.250 161.131 C 503.188 161.203, 490.025 161.593, 487 161.998`,stroke:`none`,fill:`currentColor`,"fill-rule":`evenodd`})})}export{t};
|