mppx 0.8.17 → 0.8.18
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/CHANGELOG.md +55 -0
- package/README.md +15 -0
- package/dist/Challenge.js +21 -4
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/cli.js +253 -1505
- package/dist/cli/plugins/index.js +19 -5
- package/dist/cli/plugins/tempo.js +7 -3
- package/dist/cli/sessions/Manager.js +7 -4
- package/dist/cli/sessions/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/discovery/Discovery.js +2 -1
- package/dist/evm/client/Charge.js +8 -0
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/stripe/server/Charge.js +2 -4
- package/dist/stripe/server/Methods.d.ts +2 -2
- package/dist/stripe/server/Methods.js +17 -11
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tempo/Methods.d.ts +13 -0
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/client/Charge.d.ts +3 -0
- package/dist/tempo/client/Charge.js +31 -9
- package/dist/tempo/client/Methods.d.ts +13 -0
- package/dist/tempo/internal/defaults.d.ts +11 -0
- package/dist/tempo/internal/defaults.js +11 -0
- package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
- package/dist/tempo/internal/machine-token-charge.js +113 -0
- package/dist/tempo/internal/machine-token-session.d.ts +88 -0
- package/dist/tempo/internal/machine-token-session.js +173 -0
- package/dist/tempo/internal/signature-envelope.d.ts +14 -0
- package/dist/tempo/internal/signature-envelope.js +28 -0
- package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
- package/dist/tempo/legacy/client/ChannelOps.js +11 -5
- package/dist/tempo/legacy/client/Session.d.ts +13 -1
- package/dist/tempo/legacy/client/Session.js +3 -3
- package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
- package/dist/tempo/legacy/client/SessionManager.js +2 -0
- package/dist/tempo/server/Charge.d.ts +3 -0
- package/dist/tempo/server/Charge.js +58 -17
- package/dist/tempo/server/Methods.d.ts +21 -4
- package/dist/tempo/server/Methods.js +8 -4
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
- package/dist/tempo/session/client/ChannelOps.js +35 -6
- package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
- package/dist/tempo/session/client/ChannelStore.js +2 -2
- package/dist/tempo/session/client/CredentialState.d.ts +17 -2
- package/dist/tempo/session/client/CredentialState.js +77 -76
- package/dist/tempo/session/client/Runtime.d.ts +4 -2
- package/dist/tempo/session/client/Runtime.js +21 -5
- package/dist/tempo/session/client/Session.d.ts +15 -3
- package/dist/tempo/session/client/Session.js +186 -63
- package/dist/tempo/session/client/SessionManager.d.ts +3 -1
- package/dist/tempo/session/client/SessionManager.js +35 -11
- package/dist/tempo/session/client/Transports.d.ts +2 -0
- package/dist/tempo/session/client/Transports.js +12 -2
- package/dist/tempo/session/precompile/Chain.d.ts +10 -2
- package/dist/tempo/session/precompile/Chain.js +50 -10
- package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
- package/dist/tempo/session/precompile/Protocol.js +7 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +3 -1
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
- package/dist/tempo/session/server/ChannelStore.js +11 -4
- package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
- package/dist/tempo/session/server/CredentialVerification.js +185 -109
- package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
- package/dist/tempo/session/server/MeteredStream.js +5 -4
- package/dist/tempo/session/server/RequestState.d.ts +19 -0
- package/dist/tempo/session/server/RequestState.js +61 -15
- package/dist/tempo/session/server/Session.d.ts +14 -2
- package/dist/tempo/session/server/Session.js +37 -6
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- package/dist/x402/client/Exact.d.ts +8 -0
- package/dist/x402/client/Exact.js +40 -10
- package/dist/x402/server/EvmCharge.d.ts +22 -0
- package/dist/x402/server/EvmCharge.js +23 -1
- package/package.json +15 -37
- package/dist/BodyDigest.d.ts.map +0 -1
- package/dist/BodyDigest.js.map +0 -1
- package/dist/Challenge.d.ts.map +0 -1
- package/dist/Challenge.js.map +0 -1
- package/dist/Constants.d.ts.map +0 -1
- package/dist/Constants.js.map +0 -1
- package/dist/Credential.d.ts.map +0 -1
- package/dist/Credential.js.map +0 -1
- package/dist/Errors.d.ts.map +0 -1
- package/dist/Errors.js.map +0 -1
- package/dist/Expires.d.ts.map +0 -1
- package/dist/Expires.js.map +0 -1
- package/dist/Html.d.ts.map +0 -1
- package/dist/Html.js.map +0 -1
- package/dist/Mcp.d.ts.map +0 -1
- package/dist/Mcp.js.map +0 -1
- package/dist/Method.d.ts.map +0 -1
- package/dist/Method.js.map +0 -1
- package/dist/PaymentRequest.d.ts.map +0 -1
- package/dist/PaymentRequest.js.map +0 -1
- package/dist/Receipt.d.ts.map +0 -1
- package/dist/Receipt.js.map +0 -1
- package/dist/Store.d.ts.map +0 -1
- package/dist/Store.js.map +0 -1
- package/dist/attestation/Client.d.ts.map +0 -1
- package/dist/attestation/Client.js.map +0 -1
- package/dist/attestation/Constants.d.ts.map +0 -1
- package/dist/attestation/Constants.js.map +0 -1
- package/dist/attestation/Server.d.ts.map +0 -1
- package/dist/attestation/Server.js.map +0 -1
- package/dist/attestation/Types.d.ts.map +0 -1
- package/dist/attestation/Types.js.map +0 -1
- package/dist/attestation/index.d.ts.map +0 -1
- package/dist/attestation/index.js.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
- package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
- package/dist/attestation/internal/SigningContext.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli/account.d.ts.map +0 -1
- package/dist/cli/account.js.map +0 -1
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/internal.d.ts.map +0 -1
- package/dist/cli/internal.js.map +0 -1
- package/dist/cli/plugins/evm.d.ts.map +0 -1
- package/dist/cli/plugins/evm.js.map +0 -1
- package/dist/cli/plugins/index.d.ts.map +0 -1
- package/dist/cli/plugins/index.js.map +0 -1
- package/dist/cli/plugins/plugin.d.ts.map +0 -1
- package/dist/cli/plugins/plugin.js.map +0 -1
- package/dist/cli/plugins/stripe.d.ts.map +0 -1
- package/dist/cli/plugins/stripe.js.map +0 -1
- package/dist/cli/plugins/tempo.d.ts.map +0 -1
- package/dist/cli/plugins/tempo.js.map +0 -1
- package/dist/cli/sessions/Manager.d.ts.map +0 -1
- package/dist/cli/sessions/Manager.js.map +0 -1
- package/dist/cli/sessions/commands.d.ts.map +0 -1
- package/dist/cli/sessions/commands.js.map +0 -1
- package/dist/cli/sessions/request.d.ts.map +0 -1
- package/dist/cli/sessions/request.js.map +0 -1
- package/dist/cli/sessions/store.d.ts.map +0 -1
- package/dist/cli/sessions/store.js.map +0 -1
- package/dist/cli/utils.d.ts.map +0 -1
- package/dist/cli/utils.js.map +0 -1
- package/dist/cli/validate/challenge.d.ts.map +0 -1
- package/dist/cli/validate/challenge.js.map +0 -1
- package/dist/cli/validate/discovery.d.ts.map +0 -1
- package/dist/cli/validate/discovery.js.map +0 -1
- package/dist/cli/validate/helpers.d.ts.map +0 -1
- package/dist/cli/validate/helpers.js.map +0 -1
- package/dist/cli/validate/index.d.ts.map +0 -1
- package/dist/cli/validate/index.js.map +0 -1
- package/dist/cli/validate/messages.d.ts.map +0 -1
- package/dist/cli/validate/messages.js.map +0 -1
- package/dist/cli/validate/payment.d.ts.map +0 -1
- package/dist/cli/validate/payment.js.map +0 -1
- package/dist/client/Methods.d.ts.map +0 -1
- package/dist/client/Methods.js.map +0 -1
- package/dist/client/Mppx.d.ts.map +0 -1
- package/dist/client/Mppx.js.map +0 -1
- package/dist/client/Transport.d.ts.map +0 -1
- package/dist/client/Transport.js.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/internal/Fetch.d.ts.map +0 -1
- package/dist/client/internal/Fetch.js.map +0 -1
- package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
- package/dist/client/internal/MethodChallenge.js.map +0 -1
- package/dist/client/internal/MethodResponse.d.ts.map +0 -1
- package/dist/client/internal/MethodResponse.js.map +0 -1
- package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mcp.js.map +0 -1
- package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mpp.js.map +0 -1
- package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
- package/dist/client/internal/protocols/Protocol.js.map +0 -1
- package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
- package/dist/client/internal/protocols/Shared.js.map +0 -1
- package/dist/client/internal/protocols/X402.d.ts.map +0 -1
- package/dist/client/internal/protocols/X402.js.map +0 -1
- package/dist/client/node.d.ts.map +0 -1
- package/dist/client/node.js.map +0 -1
- package/dist/discovery/Discovery.d.ts.map +0 -1
- package/dist/discovery/Discovery.js.map +0 -1
- package/dist/discovery/OpenApi.d.ts.map +0 -1
- package/dist/discovery/OpenApi.js.map +0 -1
- package/dist/discovery/Validate.d.ts.map +0 -1
- package/dist/discovery/Validate.js.map +0 -1
- package/dist/discovery/index.d.ts.map +0 -1
- package/dist/discovery/index.js.map +0 -1
- package/dist/discovery/internal/Metadata.d.ts.map +0 -1
- package/dist/discovery/internal/Metadata.js.map +0 -1
- package/dist/evm/Assets.d.ts.map +0 -1
- package/dist/evm/Assets.js.map +0 -1
- package/dist/evm/Chains.d.ts.map +0 -1
- package/dist/evm/Chains.js.map +0 -1
- package/dist/evm/Methods.d.ts.map +0 -1
- package/dist/evm/Methods.js.map +0 -1
- package/dist/evm/Types.d.ts.map +0 -1
- package/dist/evm/Types.js.map +0 -1
- package/dist/evm/client/Charge.d.ts.map +0 -1
- package/dist/evm/client/Charge.js.map +0 -1
- package/dist/evm/client/Methods.d.ts.map +0 -1
- package/dist/evm/client/Methods.js.map +0 -1
- package/dist/evm/client/index.d.ts.map +0 -1
- package/dist/evm/client/index.js.map +0 -1
- package/dist/evm/index.d.ts.map +0 -1
- package/dist/evm/index.js.map +0 -1
- package/dist/evm/server/Charge.d.ts.map +0 -1
- package/dist/evm/server/Charge.js.map +0 -1
- package/dist/evm/server/Methods.d.ts.map +0 -1
- package/dist/evm/server/Methods.js.map +0 -1
- package/dist/evm/server/index.d.ts.map +0 -1
- package/dist/evm/server/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/AcceptPayment.d.ts.map +0 -1
- package/dist/internal/AcceptPayment.js.map +0 -1
- package/dist/internal/HeaderCodec.d.ts.map +0 -1
- package/dist/internal/HeaderCodec.js.map +0 -1
- package/dist/internal/constantTimeEqual.d.ts.map +0 -1
- package/dist/internal/constantTimeEqual.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/types.d.ts.map +0 -1
- package/dist/internal/types.js.map +0 -1
- package/dist/mcp/client/McpClient.d.ts.map +0 -1
- package/dist/mcp/client/McpClient.js.map +0 -1
- package/dist/mcp/client/index.d.ts.map +0 -1
- package/dist/mcp/client/index.js.map +0 -1
- package/dist/mcp/server/Transport.d.ts.map +0 -1
- package/dist/mcp/server/Transport.js.map +0 -1
- package/dist/mcp/server/index.d.ts.map +0 -1
- package/dist/mcp/server/index.js.map +0 -1
- package/dist/middlewares/elysia.d.ts.map +0 -1
- package/dist/middlewares/elysia.js.map +0 -1
- package/dist/middlewares/express.d.ts.map +0 -1
- package/dist/middlewares/express.js.map +0 -1
- package/dist/middlewares/hono.d.ts.map +0 -1
- package/dist/middlewares/hono.js.map +0 -1
- package/dist/middlewares/internal/mppx.d.ts.map +0 -1
- package/dist/middlewares/internal/mppx.js.map +0 -1
- package/dist/middlewares/nextjs.d.ts.map +0 -1
- package/dist/middlewares/nextjs.js.map +0 -1
- package/dist/proxy/Proxy.d.ts.map +0 -1
- package/dist/proxy/Proxy.js.map +0 -1
- package/dist/proxy/Service.d.ts.map +0 -1
- package/dist/proxy/Service.js.map +0 -1
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/internal/Headers.d.ts.map +0 -1
- package/dist/proxy/internal/Headers.js.map +0 -1
- package/dist/proxy/internal/Route.d.ts.map +0 -1
- package/dist/proxy/internal/Route.js.map +0 -1
- package/dist/proxy/services/anthropic.d.ts.map +0 -1
- package/dist/proxy/services/anthropic.js.map +0 -1
- package/dist/proxy/services/openai.d.ts.map +0 -1
- package/dist/proxy/services/openai.js.map +0 -1
- package/dist/proxy/services/stripe.d.ts.map +0 -1
- package/dist/proxy/services/stripe.js.map +0 -1
- package/dist/server/Methods.d.ts.map +0 -1
- package/dist/server/Methods.js.map +0 -1
- package/dist/server/Mppx.d.ts.map +0 -1
- package/dist/server/Mppx.js.map +0 -1
- package/dist/server/NodeListener.d.ts.map +0 -1
- package/dist/server/NodeListener.js.map +0 -1
- package/dist/server/Request.d.ts.map +0 -1
- package/dist/server/Request.js.map +0 -1
- package/dist/server/Response.d.ts.map +0 -1
- package/dist/server/Response.js.map +0 -1
- package/dist/server/Transport.d.ts.map +0 -1
- package/dist/server/Transport.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
- package/dist/server/internal/html/compose.main.gen.js.map +0 -1
- package/dist/server/internal/html/config.d.ts.map +0 -1
- package/dist/server/internal/html/config.js.map +0 -1
- package/dist/server/internal/html/constants.d.ts.map +0 -1
- package/dist/server/internal/html/constants.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
- package/dist/server/internal/scope.d.ts.map +0 -1
- package/dist/server/internal/scope.js.map +0 -1
- package/dist/stripe/Methods.d.ts.map +0 -1
- package/dist/stripe/Methods.js.map +0 -1
- package/dist/stripe/client/Charge.d.ts.map +0 -1
- package/dist/stripe/client/Charge.js.map +0 -1
- package/dist/stripe/client/Methods.d.ts.map +0 -1
- package/dist/stripe/client/Methods.js.map +0 -1
- package/dist/stripe/client/index.d.ts.map +0 -1
- package/dist/stripe/client/index.js.map +0 -1
- package/dist/stripe/index.d.ts.map +0 -1
- package/dist/stripe/index.js.map +0 -1
- package/dist/stripe/internal/constants.d.ts.map +0 -1
- package/dist/stripe/internal/constants.js.map +0 -1
- package/dist/stripe/internal/types.d.ts.map +0 -1
- package/dist/stripe/internal/types.js.map +0 -1
- package/dist/stripe/server/Charge.d.ts.map +0 -1
- package/dist/stripe/server/Charge.js.map +0 -1
- package/dist/stripe/server/Methods.d.ts.map +0 -1
- package/dist/stripe/server/Methods.js.map +0 -1
- package/dist/stripe/server/index.d.ts.map +0 -1
- package/dist/stripe/server/index.js.map +0 -1
- package/dist/stripe/server/internal/deposit-address.d.ts.map +0 -1
- package/dist/stripe/server/internal/deposit-address.js.map +0 -1
- package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
- package/dist/stripe/server/internal/html/types.js.map +0 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
- package/dist/stripe/server/internal/html.gen.js.map +0 -1
- package/dist/stripe/server/internal/record-payment.d.ts.map +0 -1
- package/dist/stripe/server/internal/record-payment.js.map +0 -1
- package/dist/stripe/server/internal/request.d.ts.map +0 -1
- package/dist/stripe/server/internal/request.js.map +0 -1
- package/dist/tap/Constants.d.ts.map +0 -1
- package/dist/tap/Constants.js.map +0 -1
- package/dist/tap/Types.d.ts.map +0 -1
- package/dist/tap/Types.js.map +0 -1
- package/dist/tap/client/index.d.ts.map +0 -1
- package/dist/tap/client/index.js.map +0 -1
- package/dist/tap/index.d.ts.map +0 -1
- package/dist/tap/index.js.map +0 -1
- package/dist/tap/server/index.d.ts.map +0 -1
- package/dist/tap/server/index.js.map +0 -1
- package/dist/tempo/Attribution.d.ts.map +0 -1
- package/dist/tempo/Attribution.js.map +0 -1
- package/dist/tempo/Methods.d.ts.map +0 -1
- package/dist/tempo/Methods.js.map +0 -1
- package/dist/tempo/Proof.d.ts.map +0 -1
- package/dist/tempo/Proof.js.map +0 -1
- package/dist/tempo/client/Charge.d.ts.map +0 -1
- package/dist/tempo/client/Charge.js.map +0 -1
- package/dist/tempo/client/Methods.d.ts.map +0 -1
- package/dist/tempo/client/Methods.js.map +0 -1
- package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
- package/dist/tempo/client/ResolveAccount.js.map +0 -1
- package/dist/tempo/client/Subscription.d.ts.map +0 -1
- package/dist/tempo/client/Subscription.js.map +0 -1
- package/dist/tempo/client/index.d.ts.map +0 -1
- package/dist/tempo/client/index.js.map +0 -1
- package/dist/tempo/index.d.ts.map +0 -1
- package/dist/tempo/index.js.map +0 -1
- package/dist/tempo/internal/account.d.ts.map +0 -1
- package/dist/tempo/internal/account.js.map +0 -1
- package/dist/tempo/internal/address.d.ts.map +0 -1
- package/dist/tempo/internal/address.js.map +0 -1
- package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
- package/dist/tempo/internal/auto-swap.js.map +0 -1
- package/dist/tempo/internal/charge.d.ts.map +0 -1
- package/dist/tempo/internal/charge.js.map +0 -1
- package/dist/tempo/internal/defaults.d.ts.map +0 -1
- package/dist/tempo/internal/defaults.js.map +0 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
- package/dist/tempo/internal/fee-payer.js.map +0 -1
- package/dist/tempo/internal/fee-token.d.ts.map +0 -1
- package/dist/tempo/internal/fee-token.js.map +0 -1
- package/dist/tempo/internal/proof.d.ts.map +0 -1
- package/dist/tempo/internal/proof.js.map +0 -1
- package/dist/tempo/internal/selectors.d.ts.map +0 -1
- package/dist/tempo/internal/selectors.js.map +0 -1
- package/dist/tempo/internal/types.d.ts.map +0 -1
- package/dist/tempo/internal/types.js.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
- package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/client/Session.js.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
- package/dist/tempo/legacy/client/index.d.ts.map +0 -1
- package/dist/tempo/legacy/client/index.js.map +0 -1
- package/dist/tempo/legacy/index.d.ts.map +0 -1
- package/dist/tempo/legacy/index.js.map +0 -1
- package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Chain.js.map +0 -1
- package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Channel.js.map +0 -1
- package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Types.js.map +0 -1
- package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Voucher.js.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
- package/dist/tempo/legacy/session/index.d.ts.map +0 -1
- package/dist/tempo/legacy/session/index.js.map +0 -1
- package/dist/tempo/server/Charge.d.ts.map +0 -1
- package/dist/tempo/server/Charge.js.map +0 -1
- package/dist/tempo/server/Methods.d.ts.map +0 -1
- package/dist/tempo/server/Methods.js.map +0 -1
- package/dist/tempo/server/Relay.d.ts.map +0 -1
- package/dist/tempo/server/Relay.js.map +0 -1
- package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
- package/dist/tempo/server/SponsorBudget.js.map +0 -1
- package/dist/tempo/server/Subscription.d.ts.map +0 -1
- package/dist/tempo/server/Subscription.js.map +0 -1
- package/dist/tempo/server/index.d.ts.map +0 -1
- package/dist/tempo/server/index.js.map +0 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
- package/dist/tempo/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
- package/dist/tempo/server/internal/request-body.js.map +0 -1
- package/dist/tempo/server/internal/transport.d.ts.map +0 -1
- package/dist/tempo/server/internal/transport.js.map +0 -1
- package/dist/tempo/session/Snapshot.d.ts.map +0 -1
- package/dist/tempo/session/Snapshot.js.map +0 -1
- package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelOps.js.map +0 -1
- package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelStore.js.map +0 -1
- package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
- package/dist/tempo/session/client/CredentialState.js.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
- package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
- package/dist/tempo/session/client/Runtime.js.map +0 -1
- package/dist/tempo/session/client/Session.d.ts.map +0 -1
- package/dist/tempo/session/client/Session.js.map +0 -1
- package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/SessionManager.js.map +0 -1
- package/dist/tempo/session/client/Transports.d.ts.map +0 -1
- package/dist/tempo/session/client/Transports.js.map +0 -1
- package/dist/tempo/session/client/index.d.ts.map +0 -1
- package/dist/tempo/session/client/index.js.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
- package/dist/tempo/session/index.d.ts.map +0 -1
- package/dist/tempo/session/index.js.map +0 -1
- package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Chain.js.map +0 -1
- package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Channel.js.map +0 -1
- package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Protocol.js.map +0 -1
- package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Voucher.js.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
- package/dist/tempo/session/precompile/index.d.ts.map +0 -1
- package/dist/tempo/session/precompile/index.js.map +0 -1
- package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelOps.js.map +0 -1
- package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelStore.js.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
- package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
- package/dist/tempo/session/server/MeteredStream.js.map +0 -1
- package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
- package/dist/tempo/session/server/RequestState.js.map +0 -1
- package/dist/tempo/session/server/Session.d.ts.map +0 -1
- package/dist/tempo/session/server/Session.js.map +0 -1
- package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
- package/dist/tempo/session/server/Settlement.js.map +0 -1
- package/dist/tempo/session/server/Sse.d.ts.map +0 -1
- package/dist/tempo/session/server/Sse.js.map +0 -1
- package/dist/tempo/session/server/Transports.d.ts.map +0 -1
- package/dist/tempo/session/server/Transports.js.map +0 -1
- package/dist/tempo/session/server/Ws.d.ts.map +0 -1
- package/dist/tempo/session/server/Ws.js.map +0 -1
- package/dist/tempo/session/server/index.d.ts.map +0 -1
- package/dist/tempo/session/server/index.js.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
- package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
- package/dist/tempo/subscription/Receipt.js.map +0 -1
- package/dist/tempo/subscription/Store.d.ts.map +0 -1
- package/dist/tempo/subscription/Store.js.map +0 -1
- package/dist/tempo/subscription/Types.d.ts.map +0 -1
- package/dist/tempo/subscription/Types.js.map +0 -1
- package/dist/tempo/subscription/index.d.ts.map +0 -1
- package/dist/tempo/subscription/index.js.map +0 -1
- package/dist/validation/core.d.ts.map +0 -1
- package/dist/validation/core.js.map +0 -1
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/viem/Account.d.ts.map +0 -1
- package/dist/viem/Account.js.map +0 -1
- package/dist/viem/Client.d.ts.map +0 -1
- package/dist/viem/Client.js.map +0 -1
- package/dist/web-bot-auth/Constants.d.ts.map +0 -1
- package/dist/web-bot-auth/Constants.js.map +0 -1
- package/dist/web-bot-auth/Types.d.ts.map +0 -1
- package/dist/web-bot-auth/Types.js.map +0 -1
- package/dist/web-bot-auth/client/index.d.ts.map +0 -1
- package/dist/web-bot-auth/client/index.js.map +0 -1
- package/dist/web-bot-auth/index.d.ts.map +0 -1
- package/dist/web-bot-auth/index.js.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
- package/dist/web-bot-auth/server/index.d.ts.map +0 -1
- package/dist/web-bot-auth/server/index.js.map +0 -1
- package/dist/x402/Assets.d.ts.map +0 -1
- package/dist/x402/Assets.js.map +0 -1
- package/dist/x402/Header.d.ts.map +0 -1
- package/dist/x402/Header.js.map +0 -1
- package/dist/x402/Types.d.ts.map +0 -1
- package/dist/x402/Types.js.map +0 -1
- package/dist/x402/client/Exact.d.ts.map +0 -1
- package/dist/x402/client/Exact.js.map +0 -1
- package/dist/x402/index.d.ts.map +0 -1
- package/dist/x402/index.js.map +0 -1
- package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
- package/dist/x402/internal/ChallengeBrand.js.map +0 -1
- package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
- package/dist/x402/internal/RouteBinding.js.map +0 -1
- package/dist/x402/server/EvmCharge.d.ts.map +0 -1
- package/dist/x402/server/EvmCharge.js.map +0 -1
- package/dist/x402/server/Facilitator.d.ts.map +0 -1
- package/dist/x402/server/Facilitator.js.map +0 -1
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js.map +0 -1
- package/src/BodyDigest.test.ts +0 -43
- package/src/BodyDigest.ts +0 -55
- package/src/Challenge.fuzz.test.ts +0 -154
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -1060
- package/src/Challenge.ts +0 -687
- package/src/Constants.ts +0 -58
- package/src/Credential.fuzz.test.ts +0 -62
- package/src/Credential.test.ts +0 -378
- package/src/Credential.ts +0 -217
- package/src/Errors.test.ts +0 -520
- package/src/Errors.ts +0 -448
- package/src/Expires.test.ts +0 -112
- package/src/Expires.ts +0 -59
- package/src/Html.ts +0 -67
- package/src/Mcp.ts +0 -85
- package/src/Method.test.ts +0 -177
- package/src/Method.ts +0 -631
- package/src/PaymentRequest.test.ts +0 -147
- package/src/PaymentRequest.ts +0 -108
- package/src/Receipt.test.ts +0 -151
- package/src/Receipt.ts +0 -146
- package/src/Store.test-d.ts +0 -211
- package/src/Store.test.ts +0 -407
- package/src/Store.ts +0 -397
- package/src/attestation/Attestation.integration.test.ts +0 -208
- package/src/attestation/Client.test.ts +0 -83
- package/src/attestation/Client.ts +0 -34
- package/src/attestation/Constants.ts +0 -15
- package/src/attestation/Server.test.ts +0 -60
- package/src/attestation/Server.ts +0 -12
- package/src/attestation/Types.test-d.ts +0 -54
- package/src/attestation/Types.ts +0 -77
- package/src/attestation/index.ts +0 -5
- package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
- package/src/attestation/internal/HttpMessageSignature.ts +0 -429
- package/src/attestation/internal/SigningContext.ts +0 -13
- package/src/bin.js +0 -2
- package/src/bin.ts +0 -4
- package/src/cli/account.ts +0 -269
- package/src/cli/cli.test.ts +0 -2221
- package/src/cli/cli.ts +0 -1650
- package/src/cli/config.test.ts +0 -89
- package/src/cli/config.ts +0 -50
- package/src/cli/internal.ts +0 -114
- package/src/cli/mcp.test.ts +0 -262
- package/src/cli/plugins/evm.ts +0 -55
- package/src/cli/plugins/index.ts +0 -4
- package/src/cli/plugins/plugin.ts +0 -84
- package/src/cli/plugins/stripe.ts +0 -174
- package/src/cli/plugins/tempo.ts +0 -1102
- package/src/cli/sessions/Manager.test.ts +0 -249
- package/src/cli/sessions/Manager.ts +0 -93
- package/src/cli/sessions/commands.ts +0 -444
- package/src/cli/sessions/request.test.ts +0 -51
- package/src/cli/sessions/request.ts +0 -353
- package/src/cli/sessions/store.test.ts +0 -581
- package/src/cli/sessions/store.ts +0 -940
- package/src/cli/utils.test.ts +0 -156
- package/src/cli/utils.ts +0 -394
- package/src/cli/validate/challenge.ts +0 -565
- package/src/cli/validate/discovery.test.ts +0 -435
- package/src/cli/validate/discovery.ts +0 -221
- package/src/cli/validate/helpers.ts +0 -166
- package/src/cli/validate/index.ts +0 -229
- package/src/cli/validate/messages.ts +0 -7
- package/src/cli/validate/payment.ts +0 -774
- package/src/cli/validate.test.ts +0 -843
- package/src/client/Methods.ts +0 -8
- package/src/client/Mppx.test-d.ts +0 -287
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -487
- package/src/client/Transport.test.ts +0 -586
- package/src/client/Transport.ts +0 -170
- package/src/client/index.ts +0 -29
- package/src/client/internal/Fetch.browser.test.ts +0 -197
- package/src/client/internal/Fetch.test-d.ts +0 -109
- package/src/client/internal/Fetch.test.ts +0 -2336
- package/src/client/internal/Fetch.ts +0 -1075
- package/src/client/internal/MethodChallenge.ts +0 -35
- package/src/client/internal/MethodResponse.ts +0 -67
- package/src/client/internal/protocols/Mcp.test.ts +0 -220
- package/src/client/internal/protocols/Mcp.ts +0 -186
- package/src/client/internal/protocols/Mpp.ts +0 -21
- package/src/client/internal/protocols/Protocol.ts +0 -10
- package/src/client/internal/protocols/Shared.ts +0 -25
- package/src/client/internal/protocols/X402.ts +0 -46
- package/src/client/node.test.ts +0 -115
- package/src/client/node.ts +0 -247
- package/src/discovery/Discovery.test.ts +0 -214
- package/src/discovery/Discovery.ts +0 -105
- package/src/discovery/OpenApi.test.ts +0 -623
- package/src/discovery/OpenApi.ts +0 -192
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/discovery/internal/Metadata.ts +0 -51
- package/src/env.d.ts +0 -12
- package/src/evm/Assets.ts +0 -1
- package/src/evm/Chains.ts +0 -11
- package/src/evm/Methods.ts +0 -44
- package/src/evm/PublicInterface.test-d.ts +0 -134
- package/src/evm/Types.ts +0 -140
- package/src/evm/client/Charge.test.ts +0 -347
- package/src/evm/client/Charge.ts +0 -187
- package/src/evm/client/Methods.ts +0 -19
- package/src/evm/client/index.ts +0 -6
- package/src/evm/index.ts +0 -16
- package/src/evm/server/Charge.test.ts +0 -339
- package/src/evm/server/Charge.ts +0 -295
- package/src/evm/server/Methods.ts +0 -22
- package/src/evm/server/index.ts +0 -6
- package/src/index.ts +0 -14
- package/src/internal/AcceptPayment.test.ts +0 -347
- package/src/internal/AcceptPayment.ts +0 -366
- package/src/internal/HeaderCodec.ts +0 -36
- package/src/internal/changeset.test.ts +0 -106
- package/src/internal/constantTimeEqual.test.ts +0 -47
- package/src/internal/constantTimeEqual.ts +0 -10
- package/src/internal/env.test.ts +0 -42
- package/src/internal/env.ts +0 -49
- package/src/internal/types.test-d.ts +0 -21
- package/src/internal/types.ts +0 -479
- package/src/mcp/client/McpClient.integration.test.ts +0 -639
- package/src/mcp/client/McpClient.test-d.ts +0 -144
- package/src/mcp/client/McpClient.test.ts +0 -463
- package/src/mcp/client/McpClient.ts +0 -307
- package/src/mcp/client/McpClient.unit.test.ts +0 -135
- package/src/mcp/client/index.ts +0 -2
- package/src/mcp/server/Transport.test.ts +0 -191
- package/src/mcp/server/Transport.ts +0 -111
- package/src/mcp/server/index.ts +0 -1
- package/src/middlewares/elysia.test.ts +0 -285
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -361
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -473
- package/src/middlewares/hono.ts +0 -153
- package/src/middlewares/internal/mppx.test.ts +0 -177
- package/src/middlewares/internal/mppx.ts +0 -67
- package/src/middlewares/nextjs.test.ts +0 -359
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1038
- package/src/proxy/Proxy.ts +0 -483
- package/src/proxy/Proxy.upstreamError.test.ts +0 -364
- package/src/proxy/Service.test.ts +0 -252
- package/src/proxy/Service.ts +0 -280
- package/src/proxy/index.ts +0 -6
- package/src/proxy/internal/Headers.test.ts +0 -139
- package/src/proxy/internal/Headers.ts +0 -66
- package/src/proxy/internal/Route.test.ts +0 -217
- package/src/proxy/internal/Route.ts +0 -64
- package/src/proxy/services/anthropic.test.ts +0 -132
- package/src/proxy/services/anthropic.ts +0 -53
- package/src/proxy/services/hooks.test-d.ts +0 -14
- package/src/proxy/services/hooks.test.ts +0 -44
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -60
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -59
- package/src/server/Methods.test-d.ts +0 -88
- package/src/server/Methods.test.ts +0 -69
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -494
- package/src/server/Mppx.test.ts +0 -6711
- package/src/server/Mppx.ts +0 -2919
- package/src/server/NodeListener.test.ts +0 -293
- package/src/server/NodeListener.ts +0 -45
- package/src/server/Request.test.ts +0 -255
- package/src/server/Request.ts +0 -155
- package/src/server/Response.test.ts +0 -32
- package/src/server/Response.ts +0 -45
- package/src/server/Transport.test.ts +0 -598
- package/src/server/Transport.ts +0 -320
- package/src/server/index.ts +0 -9
- package/src/server/internal/html/compose.main.gen.ts +0 -2
- package/src/server/internal/html/compose.main.ts +0 -88
- package/src/server/internal/html/config.ts +0 -672
- package/src/server/internal/html/constants.ts +0 -28
- package/src/server/internal/html/serviceWorker.client.ts +0 -28
- package/src/server/internal/html/serviceWorker.gen.ts +0 -2
- package/src/server/internal/html/serviceWorker.ts +0 -27
- package/src/server/internal/html/tsconfig.compose.json +0 -8
- package/src/server/internal/html/tsconfig.worker.client.json +0 -8
- package/src/server/internal/html/tsconfig.worker.json +0 -8
- package/src/server/internal/scope.ts +0 -43
- package/src/stripe/Charge.integration.test.ts +0 -329
- package/src/stripe/Methods.test.ts +0 -62
- package/src/stripe/Methods.ts +0 -44
- package/src/stripe/client/Charge.test.ts +0 -205
- package/src/stripe/client/Charge.ts +0 -132
- package/src/stripe/client/Methods.ts +0 -37
- package/src/stripe/client/index.ts +0 -2
- package/src/stripe/index.ts +0 -1
- package/src/stripe/internal/constants.ts +0 -7
- package/src/stripe/internal/types.ts +0 -47
- package/src/stripe/server/Charge.test-d.ts +0 -81
- package/src/stripe/server/Charge.test.ts +0 -700
- package/src/stripe/server/Charge.ts +0 -487
- package/src/stripe/server/Methods.test-d.ts +0 -157
- package/src/stripe/server/Methods.test.ts +0 -403
- package/src/stripe/server/Methods.ts +0 -441
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/deposit-address.ts +0 -57
- package/src/stripe/server/internal/html/main.ts +0 -165
- package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/stripe/server/internal/html/package.json +0 -9
- package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
- package/src/stripe/server/internal/html/tsconfig.json +0 -8
- package/src/stripe/server/internal/html/types.ts +0 -5
- package/src/stripe/server/internal/html.gen.ts +0 -2
- package/src/stripe/server/internal/record-payment.ts +0 -66
- package/src/stripe/server/internal/request.ts +0 -49
- package/src/tap/Constants.ts +0 -32
- package/src/tap/Tap.test.ts +0 -125
- package/src/tap/Types.ts +0 -11
- package/src/tap/client/index.ts +0 -54
- package/src/tap/index.ts +0 -4
- package/src/tap/server/index.ts +0 -48
- package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
- package/src/tempo/Attribution.test.ts +0 -294
- package/src/tempo/Attribution.ts +0 -185
- package/src/tempo/Methods.test.ts +0 -425
- package/src/tempo/Methods.ts +0 -367
- package/src/tempo/Proof.conformance.test.ts +0 -146
- package/src/tempo/Proof.test-d.ts +0 -32
- package/src/tempo/Proof.test.ts +0 -40
- package/src/tempo/Proof.ts +0 -69
- package/src/tempo/PublicExports.test-d.ts +0 -130
- package/src/tempo/Subscription.integration.test.ts +0 -591
- package/src/tempo/client/Charge.test.ts +0 -501
- package/src/tempo/client/Charge.ts +0 -271
- package/src/tempo/client/Methods.ts +0 -45
- package/src/tempo/client/ResolveAccount.ts +0 -46
- package/src/tempo/client/Subscription.test.ts +0 -180
- package/src/tempo/client/Subscription.ts +0 -156
- package/src/tempo/client/index.ts +0 -17
- package/src/tempo/index.ts +0 -5
- package/src/tempo/internal/account.ts +0 -56
- package/src/tempo/internal/address.test.ts +0 -42
- package/src/tempo/internal/address.ts +0 -6
- package/src/tempo/internal/auto-swap.test.ts +0 -198
- package/src/tempo/internal/auto-swap.ts +0 -145
- package/src/tempo/internal/charge.test.ts +0 -66
- package/src/tempo/internal/charge.ts +0 -43
- package/src/tempo/internal/defaults.test.ts +0 -95
- package/src/tempo/internal/defaults.ts +0 -53
- package/src/tempo/internal/fee-payer.test.ts +0 -1177
- package/src/tempo/internal/fee-payer.ts +0 -808
- package/src/tempo/internal/fee-token.test.ts +0 -165
- package/src/tempo/internal/fee-token.ts +0 -72
- package/src/tempo/internal/proof.test.ts +0 -97
- package/src/tempo/internal/proof.ts +0 -87
- package/src/tempo/internal/selectors.ts +0 -10
- package/src/tempo/internal/types.ts +0 -19
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
- package/src/tempo/legacy/README.md +0 -9
- package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
- package/src/tempo/legacy/client/ChannelOps.ts +0 -271
- package/src/tempo/legacy/client/Session.test.ts +0 -800
- package/src/tempo/legacy/client/Session.ts +0 -397
- package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
- package/src/tempo/legacy/client/SessionManager.ts +0 -909
- package/src/tempo/legacy/client/index.ts +0 -6
- package/src/tempo/legacy/index.ts +0 -4
- package/src/tempo/legacy/session/Chain.test.ts +0 -1349
- package/src/tempo/legacy/session/Chain.ts +0 -830
- package/src/tempo/legacy/session/Channel.test.ts +0 -109
- package/src/tempo/legacy/session/Channel.ts +0 -51
- package/src/tempo/legacy/session/Types.ts +0 -91
- package/src/tempo/legacy/session/Voucher.test.ts +0 -410
- package/src/tempo/legacy/session/Voucher.ts +0 -183
- package/src/tempo/legacy/session/escrow.abi.ts +0 -760
- package/src/tempo/legacy/session/index.ts +0 -8
- package/src/tempo/server/AtomicStore.test-d.ts +0 -63
- package/src/tempo/server/Charge.test.ts +0 -6056
- package/src/tempo/server/Charge.ts +0 -1379
- package/src/tempo/server/Methods.ts +0 -86
- package/src/tempo/server/Relay.test.ts +0 -677
- package/src/tempo/server/Relay.ts +0 -297
- package/src/tempo/server/SponsorBudget.test.ts +0 -154
- package/src/tempo/server/SponsorBudget.ts +0 -219
- package/src/tempo/server/Sse.test.ts +0 -321
- package/src/tempo/server/Subscription.test.ts +0 -1944
- package/src/tempo/server/Subscription.ts +0 -1336
- package/src/tempo/server/index.ts +0 -12
- package/src/tempo/server/internal/html/main.ts +0 -115
- package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/tempo/server/internal/html/package.json +0 -10
- package/src/tempo/server/internal/html/tsconfig.json +0 -8
- package/src/tempo/server/internal/html.gen.ts +0 -2
- package/src/tempo/server/internal/request-body.test.ts +0 -210
- package/src/tempo/server/internal/request-body.ts +0 -61
- package/src/tempo/server/internal/transport.test.ts +0 -922
- package/src/tempo/server/internal/transport.ts +0 -322
- package/src/tempo/session/README.md +0 -320
- package/src/tempo/session/Snapshot.test.ts +0 -41
- package/src/tempo/session/Snapshot.ts +0 -95
- package/src/tempo/session/client/ChannelOps.test.ts +0 -218
- package/src/tempo/session/client/ChannelOps.ts +0 -348
- package/src/tempo/session/client/ChannelStore.ts +0 -111
- package/src/tempo/session/client/CredentialState.test.ts +0 -789
- package/src/tempo/session/client/CredentialState.ts +0 -942
- package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
- package/src/tempo/session/client/Runtime.test.ts +0 -1104
- package/src/tempo/session/client/Runtime.ts +0 -1008
- package/src/tempo/session/client/Session.test.ts +0 -1355
- package/src/tempo/session/client/Session.ts +0 -420
- package/src/tempo/session/client/SessionManager.test.ts +0 -1899
- package/src/tempo/session/client/SessionManager.ts +0 -996
- package/src/tempo/session/client/Transports.test.ts +0 -1141
- package/src/tempo/session/client/Transports.ts +0 -1534
- package/src/tempo/session/client/index.ts +0 -40
- package/src/tempo/session/client/internal/SessionManager.ts +0 -36
- package/src/tempo/session/index.ts +0 -7
- package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
- package/src/tempo/session/precompile/Chain.test.ts +0 -1641
- package/src/tempo/session/precompile/Chain.ts +0 -1269
- package/src/tempo/session/precompile/Channel.test.ts +0 -147
- package/src/tempo/session/precompile/Channel.ts +0 -108
- package/src/tempo/session/precompile/Protocol.test.ts +0 -358
- package/src/tempo/session/precompile/Protocol.ts +0 -520
- package/src/tempo/session/precompile/Voucher.test.ts +0 -354
- package/src/tempo/session/precompile/Voucher.ts +0 -162
- package/src/tempo/session/precompile/escrow.abi.ts +0 -226
- package/src/tempo/session/precompile/index.ts +0 -33
- package/src/tempo/session/server/ChannelOps.test.ts +0 -129
- package/src/tempo/session/server/ChannelOps.ts +0 -157
- package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
- package/src/tempo/session/server/ChannelStore.ts +0 -856
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -1087
- package/src/tempo/session/server/MeteredStream.ts +0 -99
- package/src/tempo/session/server/RequestState.test.ts +0 -574
- package/src/tempo/session/server/RequestState.ts +0 -507
- package/src/tempo/session/server/Session.integration.test.ts +0 -449
- package/src/tempo/session/server/Session.test.ts +0 -4247
- package/src/tempo/session/server/Session.ts +0 -669
- package/src/tempo/session/server/Settlement.test.ts +0 -345
- package/src/tempo/session/server/Settlement.ts +0 -527
- package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
- package/src/tempo/session/server/Sse.test.ts +0 -634
- package/src/tempo/session/server/Sse.ts +0 -261
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -256
- package/src/tempo/session/server/Ws.test.ts +0 -765
- package/src/tempo/session/server/Ws.ts +0 -391
- package/src/tempo/session/server/index.ts +0 -12
- package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
- package/src/tempo/subscription/KeyAuthorization.ts +0 -396
- package/src/tempo/subscription/Receipt.ts +0 -28
- package/src/tempo/subscription/Store.test.ts +0 -609
- package/src/tempo/subscription/Store.ts +0 -449
- package/src/tempo/subscription/Types.ts +0 -68
- package/src/tempo/subscription/index.ts +0 -23
- package/src/tsconfig.json +0 -10
- package/src/validation/core.ts +0 -386
- package/src/validation/index.ts +0 -11
- package/src/viem/Account.test.ts +0 -72
- package/src/viem/Account.ts +0 -30
- package/src/viem/Client.test.ts +0 -366
- package/src/viem/Client.ts +0 -93
- package/src/web-bot-auth/Constants.ts +0 -24
- package/src/web-bot-auth/Types.ts +0 -9
- package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
- package/src/web-bot-auth/client/index.ts +0 -84
- package/src/web-bot-auth/index.ts +0 -6
- package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
- package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
- package/src/web-bot-auth/server/index.ts +0 -113
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -488
- package/src/x402/Exact.localnet.test.ts +0 -475
- package/src/x402/Header.test.ts +0 -73
- package/src/x402/Header.ts +0 -79
- package/src/x402/PublicInterface.test-d.ts +0 -39
- package/src/x402/Types.ts +0 -248
- package/src/x402/client/Exact.test.ts +0 -309
- package/src/x402/client/Exact.ts +0 -186
- package/src/x402/index.ts +0 -6
- package/src/x402/internal/ChallengeBrand.ts +0 -14
- package/src/x402/internal/RouteBinding.ts +0 -18
- package/src/x402/server/EvmCharge.ts +0 -410
- package/src/x402/server/Facilitator.test.ts +0 -111
- package/src/x402/server/Facilitator.ts +0 -56
- package/src/zod.test.ts +0 -169
- package/src/zod.ts +0 -71
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Address } from 'viem';
|
|
1
|
+
import { type Account as ViemAccount, type Address } from 'viem';
|
|
2
2
|
import * as Method from '../../../Method.js';
|
|
3
3
|
import * as Account from '../../../viem/Account.js';
|
|
4
4
|
import * as Client from '../../../viem/Client.js';
|
|
@@ -22,6 +22,7 @@ export declare function session(parameters?: session.Parameters): Method.Client<
|
|
|
22
22
|
credential: {
|
|
23
23
|
payload: import("zod/mini").ZodMiniDiscriminatedUnion<[import("zod/mini").ZodMiniObject<{
|
|
24
24
|
action: import("zod/mini").ZodMiniLiteral<"open">;
|
|
25
|
+
authorizationSignature: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
25
26
|
authorizedSigner: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
26
27
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
27
28
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
@@ -38,15 +39,18 @@ export declare function session(parameters?: session.Parameters): Method.Client<
|
|
|
38
39
|
type: import("zod/mini").ZodMiniLiteral<"transaction">;
|
|
39
40
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
40
41
|
action: import("zod/mini").ZodMiniLiteral<"voucher">;
|
|
42
|
+
authorizationSignature: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
41
43
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
42
44
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
43
45
|
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<Channel.ChannelDescriptor, Channel.ChannelDescriptor>>;
|
|
44
46
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
45
47
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
46
48
|
action: import("zod/mini").ZodMiniLiteral<"close">;
|
|
49
|
+
authorizationSignature: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
47
50
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
48
51
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
49
52
|
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<Channel.ChannelDescriptor, Channel.ChannelDescriptor>>;
|
|
53
|
+
refundSignature: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
50
54
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
51
55
|
}, import("zod/v4/core").$strip>], "action">;
|
|
52
56
|
};
|
|
@@ -57,7 +61,9 @@ export declare function session(parameters?: session.Parameters): Method.Client<
|
|
|
57
61
|
currency: import("zod/mini").ZodMiniString<string>;
|
|
58
62
|
decimals: import("zod/mini").ZodMiniNumber<number>;
|
|
59
63
|
escrowContract: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
60
|
-
feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<
|
|
64
|
+
feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<ViemAccount, ViemAccount>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | ViemAccount>>>;
|
|
65
|
+
feeToken: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
66
|
+
machineTokenEnabled: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniBoolean<boolean>>;
|
|
61
67
|
minVoucherDelta: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
62
68
|
operator: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
63
69
|
recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
@@ -80,6 +86,8 @@ export declare function session(parameters?: session.Parameters): Method.Client<
|
|
|
80
86
|
minVoucherDelta?: string | undefined;
|
|
81
87
|
chainId?: number | undefined;
|
|
82
88
|
feePayer?: boolean | undefined;
|
|
89
|
+
feeToken?: string | undefined;
|
|
90
|
+
machineTokenEnabled?: boolean | undefined;
|
|
83
91
|
operator?: string | undefined;
|
|
84
92
|
sessionProtocol?: "v1" | "v2" | undefined;
|
|
85
93
|
sessionSnapshot?: import("./Runtime.js").SessionSnapshot | undefined;
|
|
@@ -92,6 +100,8 @@ export declare function session(parameters?: session.Parameters): Method.Client<
|
|
|
92
100
|
decimals: number;
|
|
93
101
|
escrowContract?: string | undefined;
|
|
94
102
|
feePayer?: boolean | undefined;
|
|
103
|
+
feeToken?: string | undefined;
|
|
104
|
+
machineTokenEnabled?: boolean | undefined;
|
|
95
105
|
minVoucherDelta?: string | undefined;
|
|
96
106
|
operator?: string | undefined;
|
|
97
107
|
recipient?: string | undefined;
|
|
@@ -124,13 +134,15 @@ export declare namespace session {
|
|
|
124
134
|
type ResolveAccount = ResolveAccount_;
|
|
125
135
|
type ResolveAccountInfo = ResolveAccountInfo_;
|
|
126
136
|
type Parameters = Account.getResolver.Parameters & Client.getResolver.Parameters & {
|
|
137
|
+
/** Accept a noncanonical escrow contract advertised by the server. @default false */
|
|
138
|
+
allowCustomEscrow?: boolean | undefined;
|
|
127
139
|
/** Automatically acquire the session currency from fallback stablecoins before open/top-up. */
|
|
128
140
|
autoSwap?: AutoSwap.resolve.Value | undefined;
|
|
129
141
|
/** Pluggable persistence for reusable channels. Defaults to an in-memory store. */
|
|
130
142
|
channelStore?: ChannelStore | undefined;
|
|
131
143
|
/** Token decimals for parsing human-readable amounts (default: 6). */
|
|
132
144
|
decimals?: number | undefined;
|
|
133
|
-
/** TIP20EscrowChannel address
|
|
145
|
+
/** Exact TIP20EscrowChannel address pin. Takes precedence over `allowCustomEscrow`. */
|
|
134
146
|
escrow?: Address | undefined;
|
|
135
147
|
/** Maximum channel deposit in human-readable units. Caps server-suggested opens and automatic top-ups. */
|
|
136
148
|
maxDeposit?: string | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseUnits } from 'viem';
|
|
1
|
+
import { isAddressEqual, parseUnits } from 'viem';
|
|
2
2
|
import { tempo as tempo_chain } from 'viem/chains';
|
|
3
3
|
import * as MethodChallenge from '../../../client/internal/MethodChallenge.js';
|
|
4
4
|
import * as MethodResponse from '../../../client/internal/MethodResponse.js';
|
|
@@ -9,13 +9,15 @@ import * as Account from '../../../viem/Account.js';
|
|
|
9
9
|
import * as Client from '../../../viem/Client.js';
|
|
10
10
|
import * as AutoSwap from '../../internal/auto-swap.js';
|
|
11
11
|
import * as defaults from '../../internal/defaults.js';
|
|
12
|
+
import * as MachineTokenSession from '../../internal/machine-token-session.js';
|
|
12
13
|
import * as Methods from '../../Methods.js';
|
|
14
|
+
import * as Chain from '../precompile/Chain.js';
|
|
13
15
|
import * as Channel from '../precompile/Channel.js';
|
|
14
|
-
import { deserializeSessionReceipt, isEventStream, readSessionChallengeAmount, requireSessionCredentialContext, } from '../precompile/Protocol.js';
|
|
15
|
-
import { serializeCredential } from './ChannelOps.js';
|
|
16
|
-
import { createChannelStore } from './ChannelStore.js';
|
|
17
|
-
import { canSignDescriptor, executeCredentialPlan, hasSessionAction, planCredential, resolveChallengeContext, resolveRecoverContext, sessionContextSchema, } from './CredentialState.js';
|
|
18
|
-
import { assertWithinMaxDeposit, resolveAutomaticTopUp } from './Runtime.js';
|
|
16
|
+
import { deserializeSessionReceipt, isEventStream, readSessionChallengeAmount, requireSessionCredentialContext, tip20ChannelEscrow, } from '../precompile/Protocol.js';
|
|
17
|
+
import { createVoucherPayload, serializeCredential } from './ChannelOps.js';
|
|
18
|
+
import { createChannelStore, entryKey } from './ChannelStore.js';
|
|
19
|
+
import { canSignDescriptor, executeCredentialPlan, hasSessionAction, planCredential, requireContextAmount, resolveChallengeContext, resolveRecoverContext, sessionContextSchema, } from './CredentialState.js';
|
|
20
|
+
import { assertWithinMaxDeposit, resolveAutomaticTopUp, resolveOpeningDeposit } from './Runtime.js';
|
|
19
21
|
import { getSessionSnapshot, handleSseNeedVoucher, isTip1034SessionChallenge, postTopUp, wrapSseResponse, } from './Transports.js';
|
|
20
22
|
export { sessionContextSchema } from './CredentialState.js';
|
|
21
23
|
/** Tail promise for each payment scope, used to serialize automatic opens per store. */
|
|
@@ -69,6 +71,42 @@ function acknowledgesOpen(outcome, challenge, opened) {
|
|
|
69
71
|
return matchesOpen(opened, getSessionSnapshot(candidate));
|
|
70
72
|
}) ?? false);
|
|
71
73
|
}
|
|
74
|
+
function applyMachineTokenRoute(resolved, route) {
|
|
75
|
+
const snapshotDescriptor = resolved.snapshot?.descriptor;
|
|
76
|
+
const snapshotMatches = snapshotDescriptor &&
|
|
77
|
+
isAddressEqual(snapshotDescriptor.payee, route.payee) &&
|
|
78
|
+
isAddressEqual(snapshotDescriptor.operator, route.operator) &&
|
|
79
|
+
isAddressEqual(snapshotDescriptor.token, route.token);
|
|
80
|
+
return {
|
|
81
|
+
...resolved,
|
|
82
|
+
operator: route.operator,
|
|
83
|
+
payee: route.payee,
|
|
84
|
+
paymentScope: { payee: resolved.payee, token: resolved.token },
|
|
85
|
+
snapshot: snapshotMatches ? resolved.snapshot : undefined,
|
|
86
|
+
token: route.token,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function resolveMachineContext(resolved, context) {
|
|
90
|
+
const descriptor = context?.descriptor ?? resolved.snapshot?.descriptor;
|
|
91
|
+
if (!descriptor)
|
|
92
|
+
return undefined;
|
|
93
|
+
if (!MachineTokenSession.matchDeployment({ chainId: resolved.chainId, descriptor }))
|
|
94
|
+
return undefined;
|
|
95
|
+
const closing = context?.action === 'close';
|
|
96
|
+
if ((!closing && !MachineTokenSession.isEnabledChallenge(resolved.challenge)) ||
|
|
97
|
+
!isAddressEqual(resolved.escrow, tip20ChannelEscrow))
|
|
98
|
+
return undefined;
|
|
99
|
+
const route = await MachineTokenSession.matchRoute(resolved.client, {
|
|
100
|
+
active: !closing,
|
|
101
|
+
chainId: resolved.chainId,
|
|
102
|
+
descriptor,
|
|
103
|
+
merchant: resolved.payee,
|
|
104
|
+
targetToken: resolved.token,
|
|
105
|
+
});
|
|
106
|
+
if (!route)
|
|
107
|
+
throw new Error('Machine-token channel is not bound to this merchant session challenge.');
|
|
108
|
+
return applyMachineTokenRoute(resolved, route);
|
|
109
|
+
}
|
|
72
110
|
/**
|
|
73
111
|
* Creates the low-level TIP-1034 session payment method for use with `Mppx.create()`.
|
|
74
112
|
*
|
|
@@ -77,7 +115,7 @@ function acknowledgesOpen(outcome, challenge, opened) {
|
|
|
77
115
|
* channel descriptor).
|
|
78
116
|
*/
|
|
79
117
|
export function session(parameters = {}) {
|
|
80
|
-
const { account, autoSwap: autoSwapParameter, channelStore, decimals = defaults.decimals, escrow: escrowOverride, getClient: getClientParameter, maxDeposit: maxDepositParameter, topUpAmount: topUpAmountParameter, onChannelUpdate, resolveAccount, } = parameters;
|
|
118
|
+
const { account, allowCustomEscrow = false, autoSwap: autoSwapParameter, channelStore, decimals = defaults.decimals, escrow: escrowOverride, getClient: getClientParameter, maxDeposit: maxDepositParameter, topUpAmount: topUpAmountParameter, onChannelUpdate, resolveAccount, } = parameters;
|
|
81
119
|
const getClient = Client.getResolver({
|
|
82
120
|
chain: tempo_chain,
|
|
83
121
|
getClient: getClientParameter,
|
|
@@ -87,7 +125,15 @@ export function session(parameters = {}) {
|
|
|
87
125
|
const maxDeposit = maxDepositParameter !== undefined ? parseUnits(maxDepositParameter, decimals) : undefined;
|
|
88
126
|
const topUpAmount = topUpAmountParameter !== undefined ? parseUnits(topUpAmountParameter, decimals) : undefined;
|
|
89
127
|
const store = channelStore ?? createChannelStore();
|
|
90
|
-
const
|
|
128
|
+
const commitEntry = async (entry) => {
|
|
129
|
+
if (!entry)
|
|
130
|
+
return;
|
|
131
|
+
if (entry.opened)
|
|
132
|
+
await store.set(entry);
|
|
133
|
+
else
|
|
134
|
+
await store.delete(entryKey(entry));
|
|
135
|
+
onChannelUpdate?.(entry);
|
|
136
|
+
};
|
|
91
137
|
const resolveCredentialAccount = async (resolved, context, entry) => {
|
|
92
138
|
const defaultAccount = getAccount(resolved.client, context);
|
|
93
139
|
const descriptor = context?.action
|
|
@@ -103,60 +149,132 @@ export function session(parameters = {}) {
|
|
|
103
149
|
},
|
|
104
150
|
})) ?? defaultAccount);
|
|
105
151
|
};
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
maxDeposit,
|
|
112
|
-
resolved,
|
|
152
|
+
const resolveContext = (challenge) => resolveChallengeContext({
|
|
153
|
+
allowCustomEscrow,
|
|
154
|
+
challenge,
|
|
155
|
+
escrowOverride,
|
|
156
|
+
getClient,
|
|
113
157
|
});
|
|
158
|
+
/** Selects one rail for this channel lifecycle before any credential is signed. */
|
|
159
|
+
const resolveRail = async (direct, context) => {
|
|
160
|
+
let account;
|
|
161
|
+
const descriptor = context?.descriptor ?? direct.snapshot?.descriptor;
|
|
162
|
+
if (descriptor || hasSessionAction(context)) {
|
|
163
|
+
const machine = descriptor ? await resolveMachineContext(direct, context) : undefined;
|
|
164
|
+
const resolved = machine ?? direct;
|
|
165
|
+
return {
|
|
166
|
+
account,
|
|
167
|
+
entry: await store.get(resolved.key),
|
|
168
|
+
machine: machine !== undefined,
|
|
169
|
+
resolved,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const directEntry = await store.get(direct.key);
|
|
173
|
+
if (directEntry?.opened) {
|
|
174
|
+
if (!MachineTokenSession.matchDeployment({
|
|
175
|
+
chainId: direct.chainId,
|
|
176
|
+
descriptor: directEntry.descriptor,
|
|
177
|
+
}))
|
|
178
|
+
return { account, entry: directEntry, machine: false, resolved: direct };
|
|
179
|
+
const machine = await resolveMachineContext(direct, { descriptor: directEntry.descriptor });
|
|
180
|
+
if (!machine)
|
|
181
|
+
throw new Error('Machine-token channel is not bound to this merchant session challenge.');
|
|
182
|
+
return { account, entry: directEntry, machine: true, resolved: machine };
|
|
183
|
+
}
|
|
184
|
+
if (!MachineTokenSession.isEnabledChallenge(direct.challenge) ||
|
|
185
|
+
!isAddressEqual(direct.escrow, tip20ChannelEscrow))
|
|
186
|
+
return { account, entry: undefined, machine: false, resolved: direct };
|
|
187
|
+
const route = await MachineTokenSession.resolveRoute(direct.client, {
|
|
188
|
+
chainId: direct.chainId,
|
|
189
|
+
merchant: direct.payee,
|
|
190
|
+
targetToken: direct.token,
|
|
191
|
+
}).catch(() => undefined);
|
|
192
|
+
if (!route)
|
|
193
|
+
return { account, entry: undefined, machine: false, resolved: direct };
|
|
194
|
+
const machine = applyMachineTokenRoute(direct, route);
|
|
195
|
+
account = await resolveCredentialAccount(machine, context, undefined);
|
|
196
|
+
const openingDeposit = resolveOpeningDeposit({
|
|
197
|
+
contextDepositRaw: context?.depositRaw,
|
|
198
|
+
maxDeposit,
|
|
199
|
+
requestAmount: direct.amount,
|
|
200
|
+
suggestedDepositRaw: direct.suggestedDepositRaw,
|
|
201
|
+
});
|
|
202
|
+
const funded = await MachineTokenSession.hasSufficientBalance(machine.client, {
|
|
203
|
+
account: account.address,
|
|
204
|
+
amount: openingDeposit,
|
|
205
|
+
token: machine.token,
|
|
206
|
+
});
|
|
207
|
+
return funded
|
|
208
|
+
? { account, entry: undefined, machine: true, resolved: machine }
|
|
209
|
+
: { account, entry: undefined, machine: false, resolved: direct };
|
|
210
|
+
};
|
|
114
211
|
const method = Method.toClient(Methods.session, {
|
|
115
212
|
canHandleChallenge: ({ challenge }) => isTip1034SessionChallenge(challenge),
|
|
116
213
|
context: sessionContextSchema,
|
|
117
214
|
async createCredential(parameters) {
|
|
118
215
|
const { challenge, context } = parameters;
|
|
119
|
-
const resolved = await resolveChallengeContext({
|
|
120
|
-
challenge,
|
|
121
|
-
escrowOverride,
|
|
122
|
-
getClient,
|
|
123
|
-
});
|
|
124
216
|
const attempt = MethodResponse.getAttempt(parameters);
|
|
125
217
|
let release = () => { };
|
|
126
218
|
try {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (nextEntry?.channelId !== entry?.channelId) {
|
|
133
|
-
entry = nextEntry;
|
|
134
|
-
if (entry?.opened) {
|
|
135
|
-
await attempt.prepare();
|
|
136
|
-
entry = await store.get(resolved.key);
|
|
137
|
-
}
|
|
138
|
-
plan = await resolveCredentialPlan(resolved, context, entry);
|
|
139
|
-
}
|
|
219
|
+
const direct = await resolveContext(challenge);
|
|
220
|
+
if (!hasSessionAction(context) && context?.descriptor === undefined) {
|
|
221
|
+
release = await lockChannel(store, direct.key);
|
|
222
|
+
if (attempt && (await store.get(direct.key))?.opened)
|
|
223
|
+
await attempt.prepare();
|
|
140
224
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
225
|
+
const { account, entry, machine, resolved } = await resolveRail(direct, context);
|
|
226
|
+
const credentialAccount = account ?? (await resolveCredentialAccount(resolved, context, entry));
|
|
227
|
+
const plan = planCredential({
|
|
228
|
+
account: credentialAccount,
|
|
229
|
+
entry,
|
|
230
|
+
context,
|
|
231
|
+
decimals,
|
|
232
|
+
maxDeposit,
|
|
233
|
+
resolved,
|
|
234
|
+
});
|
|
235
|
+
if (machine && plan.type === 'manual' && plan.context.action === 'topUp') {
|
|
236
|
+
const additionalDeposit = requireContextAmount(plan.context, plan.decimals, 'additionalDeposit', 'topUp');
|
|
237
|
+
if (!(await MachineTokenSession.hasSufficientBalance(plan.resolved.client, {
|
|
238
|
+
account: plan.account.address,
|
|
239
|
+
amount: additionalDeposit,
|
|
240
|
+
token: plan.resolved.token,
|
|
241
|
+
})))
|
|
242
|
+
throw new Error('Insufficient machine-token balance for session top-up.');
|
|
243
|
+
}
|
|
244
|
+
const feeToken = MachineTokenSession.resolveFeeToken({
|
|
245
|
+
chainId: resolved.chainId,
|
|
246
|
+
override: resolved.feeToken,
|
|
247
|
+
paymentToken: resolved.token,
|
|
248
|
+
});
|
|
249
|
+
const result = await executeCredentialPlan(plan, AutoSwap.resolve(context?.autoSwap ?? autoSwapParameter, AutoSwap.defaultCurrencies), feeToken);
|
|
250
|
+
let { payload } = result;
|
|
251
|
+
if (machine && payload.action !== 'topUp') {
|
|
252
|
+
if (payload.action === 'close') {
|
|
253
|
+
const state = await Chain.getChannelState(plan.resolved.client, payload.channelId, plan.resolved.escrow);
|
|
254
|
+
if (state.deposit === 0n)
|
|
255
|
+
throw new Error('Cannot authorize a machine-token refund for an empty channel.');
|
|
256
|
+
// The refund authorization covers the full on-chain deposit, while
|
|
257
|
+
// the close voucher remains the exact amount the merchant captures.
|
|
258
|
+
const depositSignature = BigInt(payload.cumulativeAmount) === state.deposit
|
|
259
|
+
? payload.signature
|
|
260
|
+
: (await createVoucherPayload(plan.resolved.client, plan.account, payload.descriptor, state.deposit, plan.resolved.chainId, plan.resolved.escrow)).signature;
|
|
261
|
+
payload = { ...payload, refundSignature: depositSignature };
|
|
154
262
|
}
|
|
155
|
-
|
|
156
|
-
|
|
263
|
+
const authorizationSignature = await MachineTokenSession.signAuthorization(plan.resolved.client, plan.account, {
|
|
264
|
+
authorization: {
|
|
265
|
+
channelId: payload.channelId,
|
|
266
|
+
cumulativeAmount: BigInt(payload.cumulativeAmount),
|
|
267
|
+
},
|
|
268
|
+
chainId: plan.resolved.chainId,
|
|
269
|
+
router: plan.resolved.operator,
|
|
270
|
+
});
|
|
271
|
+
payload = { ...payload, authorizationSignature };
|
|
272
|
+
}
|
|
273
|
+
if (!(attempt && plan.type === 'open'))
|
|
274
|
+
await commitEntry(result.entry);
|
|
157
275
|
const credential = await serializeCredential(challenge, payload, resolved.chainId, plan.account);
|
|
158
|
-
if (attempt &&
|
|
159
|
-
const opened =
|
|
276
|
+
if (attempt && plan.type === 'open' && result.entry) {
|
|
277
|
+
const opened = result.entry;
|
|
160
278
|
attempt.settle = async (outcome) => {
|
|
161
279
|
const accepted = outcome.status === 'accepted' || acknowledgesOpen(outcome, challenge, opened);
|
|
162
280
|
if (!accepted && outcome.status === 'pending')
|
|
@@ -166,8 +284,7 @@ export function session(parameters = {}) {
|
|
|
166
284
|
const current = await store.get(resolved.key);
|
|
167
285
|
if (!current?.opened ||
|
|
168
286
|
current.channelId.toLowerCase() !== opened.channelId.toLowerCase()) {
|
|
169
|
-
await
|
|
170
|
-
sink.notifyUpdate(opened);
|
|
287
|
+
await commitEntry(opened);
|
|
171
288
|
}
|
|
172
289
|
}
|
|
173
290
|
return true;
|
|
@@ -211,9 +328,14 @@ export function session(parameters = {}) {
|
|
|
211
328
|
const nextDeposit = knownDeposit + additionalDeposit;
|
|
212
329
|
if (nextDeposit === channel.deposit)
|
|
213
330
|
return;
|
|
214
|
-
const
|
|
331
|
+
const current = await store.get(entryKey(channel));
|
|
332
|
+
const latest = current?.channelId.toLowerCase() === channel.channelId.toLowerCase() ? current : channel;
|
|
333
|
+
const updated = {
|
|
334
|
+
...latest,
|
|
335
|
+
deposit: latest.deposit > nextDeposit ? latest.deposit : nextDeposit,
|
|
336
|
+
};
|
|
215
337
|
await store.set(updated);
|
|
216
|
-
|
|
338
|
+
onChannelUpdate?.(updated);
|
|
217
339
|
};
|
|
218
340
|
MethodChallenge.register(method, async ({ challenge, context, fetch, input }) => {
|
|
219
341
|
if (!isTip1034SessionChallenge(challenge))
|
|
@@ -221,8 +343,11 @@ export function session(parameters = {}) {
|
|
|
221
343
|
const sessionContext = context === undefined ? undefined : sessionContextSchema.parse(context);
|
|
222
344
|
if (hasSessionAction(sessionContext))
|
|
223
345
|
return;
|
|
224
|
-
const
|
|
225
|
-
const channel = await
|
|
346
|
+
const direct = await resolveContext(challenge);
|
|
347
|
+
const { entry: channel, resolved } = await resolveRail(direct, sessionContext).catch(() => ({
|
|
348
|
+
entry: undefined,
|
|
349
|
+
resolved: direct,
|
|
350
|
+
}));
|
|
226
351
|
if (!channel?.opened)
|
|
227
352
|
return;
|
|
228
353
|
const snapshot = resolved.snapshot?.channelId.toLowerCase() === channel.channelId.toLowerCase()
|
|
@@ -250,19 +375,17 @@ export function session(parameters = {}) {
|
|
|
250
375
|
return MethodResponse.register(method, async ({ challenge, credential, fetch, headers, input, refetch, response, signal }) => {
|
|
251
376
|
if (!isTip1034SessionChallenge(challenge))
|
|
252
377
|
return response;
|
|
378
|
+
const credentialContext = requireSessionCredentialContext(Credential.deserialize(credential).payload);
|
|
253
379
|
if (!isEventStream(response)) {
|
|
254
|
-
const credentialContext = requireSessionCredentialContext(Credential.deserialize(credential).payload);
|
|
255
380
|
if (credentialContext.action === 'open' &&
|
|
256
381
|
headers.get('accept')?.toLowerCase().includes('text/event-stream'))
|
|
257
382
|
return (await refetch?.()) ?? response;
|
|
258
383
|
return response;
|
|
259
384
|
}
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
})).key;
|
|
265
|
-
let channel = await store.get(channelKey);
|
|
385
|
+
const resolvedContext = await resolveContext(challenge)
|
|
386
|
+
.then(async (direct) => (await resolveMachineContext(direct, credentialContext)) ?? direct)
|
|
387
|
+
.catch(() => undefined);
|
|
388
|
+
const channel = resolvedContext ? await store.get(resolvedContext.key) : undefined;
|
|
266
389
|
const driver = {
|
|
267
390
|
assertVoucherWithinLocalLimit: (cumulativeAmount) => assertWithinMaxDeposit(cumulativeAmount, maxDeposit),
|
|
268
391
|
createSessionCredential: (challenge, context) => method.createCredential({ challenge, context }),
|
|
@@ -64,6 +64,8 @@ export declare namespace sessionManager {
|
|
|
64
64
|
const serializeSnapshot: typeof serializeSessionSnapshot;
|
|
65
65
|
const deserializeSnapshot: typeof deserializeSessionSnapshot;
|
|
66
66
|
type Parameters = Account.getResolver.Parameters & Client.getResolver.Parameters & {
|
|
67
|
+
/** Accept a noncanonical escrow contract advertised by the server. @default false */
|
|
68
|
+
allowCustomEscrow?: boolean | undefined;
|
|
67
69
|
/** Automatically acquire the session currency from fallback stablecoins before open/top-up. */
|
|
68
70
|
autoSwap?: sessionPlugin.Parameters['autoSwap'];
|
|
69
71
|
/** Enables same-route HEAD bootstrap from a server session snapshot before opening a new channel. */
|
|
@@ -72,7 +74,7 @@ export declare namespace sessionManager {
|
|
|
72
74
|
client?: import('viem').Client | undefined;
|
|
73
75
|
/** Token decimals used to convert `maxDeposit` to raw units. Defaults to `6`. */
|
|
74
76
|
decimals?: number | undefined;
|
|
75
|
-
/** TIP20EscrowChannel
|
|
77
|
+
/** Exact TIP20EscrowChannel address pin. Takes precedence over `allowCustomEscrow`. */
|
|
76
78
|
escrow?: Address | undefined;
|
|
77
79
|
/** Fetch implementation used for HTTP probes, management posts, and paid retries. */
|
|
78
80
|
fetch?: typeof globalThis.fetch | undefined;
|
|
@@ -9,6 +9,7 @@ import * as Account from '../../../viem/Account.js';
|
|
|
9
9
|
import * as Client from '../../../viem/Client.js';
|
|
10
10
|
import { charge as chargePlugin } from '../../client/Charge.js';
|
|
11
11
|
import * as defaults from '../../internal/defaults.js';
|
|
12
|
+
import { hasRewrittenScope, isMachineChannel } from '../client/ChannelOps.js';
|
|
12
13
|
import { createChannelStore, entryKey } from '../client/ChannelStore.js';
|
|
13
14
|
import { hydrateSessionSnapshot } from '../client/CredentialState.js';
|
|
14
15
|
import { session as sessionPlugin } from '../client/Session.js';
|
|
@@ -83,6 +84,7 @@ function resolveSessionManagerConfig(parameters) {
|
|
|
83
84
|
* `channelStore` can persist reusable channels between manager instances.
|
|
84
85
|
*/
|
|
85
86
|
export function sessionManager(parameters) {
|
|
87
|
+
const allowCustomEscrow = parameters.allowCustomEscrow ?? false;
|
|
86
88
|
const config = resolveSessionManagerConfig(parameters);
|
|
87
89
|
const getClient = Client.getResolver({
|
|
88
90
|
chain: tempo_chain,
|
|
@@ -191,6 +193,7 @@ export function sessionManager(parameters) {
|
|
|
191
193
|
}
|
|
192
194
|
const method = sessionPlugin({
|
|
193
195
|
account: parameters.account,
|
|
196
|
+
allowCustomEscrow,
|
|
194
197
|
autoSwap: parameters.autoSwap,
|
|
195
198
|
getClient: parameters.client ? () => parameters.client : parameters.getClient,
|
|
196
199
|
resolveAccount: parameters.resolveAccount,
|
|
@@ -271,7 +274,7 @@ export function sessionManager(parameters) {
|
|
|
271
274
|
});
|
|
272
275
|
}
|
|
273
276
|
/** Persists a server snapshot into the channel store and returns the entry. */
|
|
274
|
-
async function storeSnapshotHeader(response) {
|
|
277
|
+
async function storeSnapshotHeader(response, paymentScope) {
|
|
275
278
|
const header = response.headers.get(Constants.Headers.paymentSessionSnapshot);
|
|
276
279
|
if (!header)
|
|
277
280
|
return undefined;
|
|
@@ -286,11 +289,14 @@ export function sessionManager(parameters) {
|
|
|
286
289
|
kind: 'authorizePaymentChannel',
|
|
287
290
|
},
|
|
288
291
|
})) ?? defaultAccount;
|
|
289
|
-
const
|
|
292
|
+
const hydrated = await hydrateSessionSnapshot({ account, client, snapshot });
|
|
293
|
+
const entry = paymentScope && hasRewrittenScope({ descriptor: hydrated.entry.descriptor, paymentScope })
|
|
294
|
+
? { ...hydrated.entry, paymentScope }
|
|
295
|
+
: hydrated.entry;
|
|
290
296
|
assertVoucherWithinLocalLimit(entry.cumulativeAmount);
|
|
291
297
|
await Promise.resolve(store.set(entry)).catch(() => undefined);
|
|
292
298
|
runtime.channel = entry;
|
|
293
|
-
runtime.spent = spent;
|
|
299
|
+
runtime.spent = hydrated.spent;
|
|
294
300
|
return entry;
|
|
295
301
|
}
|
|
296
302
|
async function bootstrapSession(input, init) {
|
|
@@ -331,7 +337,10 @@ export function sessionManager(parameters) {
|
|
|
331
337
|
},
|
|
332
338
|
});
|
|
333
339
|
if (response.ok)
|
|
334
|
-
return await storeSnapshotHeader(response
|
|
340
|
+
return await storeSnapshotHeader(response, {
|
|
341
|
+
payee: challenge.request.recipient,
|
|
342
|
+
token: challenge.request.currency,
|
|
343
|
+
});
|
|
335
344
|
return undefined;
|
|
336
345
|
}
|
|
337
346
|
catch {
|
|
@@ -372,8 +381,9 @@ export function sessionManager(parameters) {
|
|
|
372
381
|
throw new Error('close snapshot payment scope does not match local session');
|
|
373
382
|
}
|
|
374
383
|
const acceptedCumulative = BigInt(snapshot.acceptedCumulative);
|
|
384
|
+
const settled = BigInt(snapshot.settled);
|
|
375
385
|
const snapshotSpent = BigInt(snapshot.spent);
|
|
376
|
-
if (acceptedCumulative < 0n || snapshotSpent < 0n) {
|
|
386
|
+
if (acceptedCumulative < 0n || settled < 0n || snapshotSpent < 0n) {
|
|
377
387
|
throw new Error('close snapshot amounts must not be negative');
|
|
378
388
|
}
|
|
379
389
|
if (snapshotSpent > acceptedCumulative) {
|
|
@@ -382,7 +392,7 @@ export function sessionManager(parameters) {
|
|
|
382
392
|
if (acceptedCumulative > channel.cumulativeAmount) {
|
|
383
393
|
throw new Error('close snapshot accepted cumulative exceeds local voucher state');
|
|
384
394
|
}
|
|
385
|
-
return { acceptedCumulative, spent: snapshotSpent };
|
|
395
|
+
return { acceptedCumulative, settled, spent: snapshotSpent };
|
|
386
396
|
}
|
|
387
397
|
function applyCloseSnapshot(target, challenge) {
|
|
388
398
|
const snapshot = validateCloseSnapshot(target.channel, challenge);
|
|
@@ -394,11 +404,20 @@ export function sessionManager(parameters) {
|
|
|
394
404
|
}
|
|
395
405
|
if (spent > runtime.spent)
|
|
396
406
|
runtime.spent = spent;
|
|
407
|
+
return snapshot;
|
|
397
408
|
}
|
|
398
409
|
function getValidatedFallbackCloseAmount(target, challenge = target.challenge, applySnapshot = false) {
|
|
399
|
-
|
|
400
|
-
applyCloseSnapshot(target, challenge)
|
|
401
|
-
|
|
410
|
+
const snapshot = applySnapshot
|
|
411
|
+
? applyCloseSnapshot(target, challenge)
|
|
412
|
+
: validateCloseSnapshot(target.channel, challenge);
|
|
413
|
+
const machineSession = isMachineChannel(target.channel);
|
|
414
|
+
const closeAmount = snapshot
|
|
415
|
+
? machineSession
|
|
416
|
+
? snapshot.spent > snapshot.settled
|
|
417
|
+
? snapshot.spent
|
|
418
|
+
: snapshot.settled
|
|
419
|
+
: snapshot.acceptedCumulative
|
|
420
|
+
: getFallbackCloseAmount(challenge, target.channelId);
|
|
402
421
|
if (closeAmount > target.channel.cumulativeAmount) {
|
|
403
422
|
throw new Error('fallback close amount exceeds local voucher state');
|
|
404
423
|
}
|
|
@@ -526,11 +545,10 @@ export function sessionManager(parameters) {
|
|
|
526
545
|
trackCreates: false,
|
|
527
546
|
};
|
|
528
547
|
channelUse = use;
|
|
529
|
-
// Cold starts resume from `channelStore` after the 402 reveals the scope.
|
|
530
|
-
const liveHint = runtime.channel?.opened ? runtime.channel.channelId : undefined;
|
|
531
548
|
try {
|
|
532
549
|
await bootstrapSession(input, init);
|
|
533
550
|
use.trackCreates = true;
|
|
551
|
+
const liveHint = runtime.channel?.opened ? runtime.channel.channelId : undefined;
|
|
534
552
|
let effectiveInit = requestInitWithSessionHint(input, init, liveHint);
|
|
535
553
|
// Stored channels may be stale, so retry once after evicting the resumed entry.
|
|
536
554
|
let canRetryResumed = !previous.channel?.opened;
|
|
@@ -538,6 +556,11 @@ export function sessionManager(parameters) {
|
|
|
538
556
|
const resumed = use.resumed;
|
|
539
557
|
if (!canRetryResumed || !resumed)
|
|
540
558
|
return false;
|
|
559
|
+
// A machine-token entry holds the only local copy of its channel
|
|
560
|
+
// descriptor; evicting it would strand the deposit, so fail loudly
|
|
561
|
+
// instead of retrying without it.
|
|
562
|
+
if (resumed.opened && (isMachineChannel(resumed) || hasRewrittenScope(resumed)))
|
|
563
|
+
return false;
|
|
541
564
|
canRetryResumed = false;
|
|
542
565
|
await ignoreChannel(resumed);
|
|
543
566
|
effectiveInit = requestInitWithSessionHint(input, init, undefined);
|
|
@@ -598,6 +621,7 @@ export function sessionManager(parameters) {
|
|
|
598
621
|
const receipt = await closeHttpSession({
|
|
599
622
|
createSessionCredential,
|
|
600
623
|
fetch: config.fetch,
|
|
624
|
+
getMinimumSpent: () => runtime.spent,
|
|
601
625
|
lastUrl: runtime.lastUrl,
|
|
602
626
|
resolveSignedCloseAmount: (challenge) => getValidatedFallbackCloseAmount(target, challenge, true),
|
|
603
627
|
signedCloseAmount: getValidatedFallbackCloseAmount(target),
|
|
@@ -246,6 +246,8 @@ export type CloseHttpSessionParameters = {
|
|
|
246
246
|
fetch: typeof globalThis.fetch;
|
|
247
247
|
/** Last paid resource URL; used as the management endpoint base. */
|
|
248
248
|
lastUrl: RequestInfo | URL | null;
|
|
249
|
+
/** Returns the latest cumulative spend already confirmed by the client. */
|
|
250
|
+
getMinimumSpent?: (() => bigint) | undefined;
|
|
249
251
|
/** Resolves the close amount again when the server refreshes the challenge. */
|
|
250
252
|
resolveSignedCloseAmount?: ((challenge: TempoSessionChallenge) => string) | undefined;
|
|
251
253
|
/** Final cumulative amount the client is willing to sign. */
|
|
@@ -440,6 +440,7 @@ export async function closeHttpSession(parameters) {
|
|
|
440
440
|
challengeId: closeChallenge.id,
|
|
441
441
|
channelId: parameters.target.channelId,
|
|
442
442
|
expectedCloseAmount: signedCloseAmount,
|
|
443
|
+
minimumSpent: parameters.getMinimumSpent?.() ?? 0n,
|
|
443
444
|
receipt,
|
|
444
445
|
}))
|
|
445
446
|
throw new Error('Session close response included a mismatched payment receipt.');
|
|
@@ -698,7 +699,10 @@ export function isExpectedSocketReceipt(parameters) {
|
|
|
698
699
|
export function validateSocketCloseReadyReceipt(parameters) {
|
|
699
700
|
if (!isExpectedSocketReceipt(parameters))
|
|
700
701
|
return 'received mismatched payment-close-ready frame';
|
|
701
|
-
|
|
702
|
+
const spent = Ws.parseUint96Amount(parameters.receipt.spent);
|
|
703
|
+
if (spent === undefined)
|
|
704
|
+
return 'received invalid payment-close-ready spend';
|
|
705
|
+
if (spent > parameters.cumulativeAmount) {
|
|
702
706
|
return 'received payment-close-ready beyond local voucher state';
|
|
703
707
|
}
|
|
704
708
|
return undefined;
|
|
@@ -710,7 +714,13 @@ export function validateSocketPaymentReceipt(parameters) {
|
|
|
710
714
|
return 'received mismatched payment-receipt frame';
|
|
711
715
|
if (expectedCloseAmount !== null &&
|
|
712
716
|
Boolean(receipt.txHash) &&
|
|
713
|
-
!isExpectedCloseReceipt({
|
|
717
|
+
!isExpectedCloseReceipt({
|
|
718
|
+
challengeId,
|
|
719
|
+
channelId,
|
|
720
|
+
expectedCloseAmount,
|
|
721
|
+
minimumSpent: BigInt(expectedCloseAmount),
|
|
722
|
+
receipt,
|
|
723
|
+
})) {
|
|
714
724
|
return 'received mismatched payment-close receipt frame';
|
|
715
725
|
}
|
|
716
726
|
return undefined;
|