mppx 0.8.15 → 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 +91 -0
- package/README.md +15 -0
- package/dist/Challenge.js +61 -39
- package/dist/Constants.d.ts +17 -17
- package/dist/Errors.d.ts +3 -3
- package/dist/Method.d.ts +35 -5
- package/dist/Method.js +7 -22
- package/dist/Store.d.ts +19 -0
- package/dist/Store.js +43 -0
- package/dist/attestation/Client.d.ts +17 -0
- package/dist/attestation/Client.js +28 -0
- package/dist/attestation/Constants.d.ts +15 -0
- package/dist/attestation/Constants.js +15 -0
- package/dist/attestation/Server.d.ts +4 -0
- package/dist/attestation/Server.js +8 -0
- package/dist/attestation/Types.d.ts +76 -0
- package/dist/attestation/Types.js +2 -0
- package/dist/attestation/index.d.ts +6 -0
- package/dist/attestation/index.js +6 -0
- package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
- package/dist/attestation/internal/HttpMessageSignature.js +320 -0
- package/dist/attestation/internal/SigningContext.d.ts +4 -0
- package/dist/attestation/internal/SigningContext.js +11 -0
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/account.d.ts +14 -14
- package/dist/cli/cli.d.ts +6 -6
- package/dist/cli/cli.js +253 -1504
- 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/commands.d.ts +4 -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/cli/utils.d.ts +1 -1
- package/dist/cli/validate/index.d.ts +3 -3
- package/dist/client/Mppx.d.ts +3 -0
- package/dist/client/Mppx.js +13 -5
- package/dist/client/Transport.d.ts +3 -5
- package/dist/client/Transport.js +1 -17
- package/dist/client/internal/Fetch.js +2 -6
- package/dist/discovery/Discovery.js +2 -1
- package/dist/discovery/OpenApi.d.ts +3 -5
- package/dist/discovery/OpenApi.js +13 -34
- package/dist/discovery/internal/Metadata.d.ts +20 -0
- package/dist/discovery/internal/Metadata.js +36 -0
- package/dist/evm/Methods.d.ts +11 -11
- package/dist/evm/Types.d.ts +17 -17
- package/dist/evm/client/Charge.d.ts +11 -11
- package/dist/evm/client/Charge.js +8 -0
- package/dist/evm/client/Methods.d.ts +11 -11
- package/dist/evm/server/Charge.d.ts +1 -1
- package/dist/evm/server/Charge.js +2 -0
- package/dist/evm/server/Methods.d.ts +11 -11
- package/dist/internal/HeaderCodec.d.ts +2 -2
- package/dist/internal/types.d.ts +6 -0
- package/dist/proxy/Proxy.d.ts +2 -0
- package/dist/proxy/Proxy.js +117 -9
- package/dist/proxy/Service.d.ts +36 -1
- package/dist/proxy/Service.js +9 -8
- package/dist/proxy/services/anthropic.js +1 -0
- package/dist/proxy/services/openai.js +1 -0
- package/dist/proxy/services/stripe.js +1 -0
- package/dist/server/Mppx.d.ts +75 -13
- package/dist/server/Mppx.js +201 -23
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/server/internal/html/config.d.ts +9 -9
- package/dist/server/internal/html/constants.d.ts +17 -17
- package/dist/stripe/Methods.d.ts +10 -10
- package/dist/stripe/client/Charge.d.ts +10 -10
- package/dist/stripe/client/Methods.d.ts +10 -10
- package/dist/stripe/internal/constants.d.ts +1 -1
- package/dist/stripe/internal/constants.js +1 -1
- package/dist/stripe/internal/types.d.ts +1 -0
- package/dist/stripe/server/Charge.d.ts +11 -11
- package/dist/stripe/server/Charge.js +51 -5
- package/dist/stripe/server/Methods.d.ts +137 -48
- package/dist/stripe/server/Methods.js +265 -4
- package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
- package/dist/stripe/server/internal/deposit-address.js +28 -0
- 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/internal/record-payment.d.ts +15 -0
- package/dist/stripe/server/internal/record-payment.js +42 -0
- package/dist/stripe/server/internal/request.d.ts +25 -0
- package/dist/stripe/server/internal/request.js +29 -0
- package/dist/stripe/server/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tap/Constants.d.ts +28 -0
- package/dist/tap/Constants.js +32 -0
- package/dist/tap/Types.d.ts +11 -0
- package/dist/tap/Types.js +2 -0
- package/dist/tap/client/index.d.ts +26 -0
- package/dist/tap/client/index.js +33 -0
- package/dist/tap/index.d.ts +5 -0
- package/dist/tap/index.js +5 -0
- package/dist/tap/server/index.d.ts +20 -0
- package/dist/tap/server/index.js +36 -0
- package/dist/tempo/Attribution.d.ts +1 -1
- package/dist/tempo/Methods.d.ts +73 -60
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/Proof.d.ts +16 -16
- package/dist/tempo/client/Charge.d.ts +22 -19
- package/dist/tempo/client/Charge.js +32 -16
- package/dist/tempo/client/Methods.d.ts +51 -38
- package/dist/tempo/client/Subscription.d.ts +23 -23
- package/dist/tempo/internal/address.d.ts +2 -1
- package/dist/tempo/internal/address.js +3 -1
- package/dist/tempo/internal/auto-swap.js +4 -19
- package/dist/tempo/internal/defaults.d.ts +17 -6
- package/dist/tempo/internal/defaults.js +11 -0
- package/dist/tempo/internal/fee-payer.d.ts +12 -12
- 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/proof.d.ts +17 -17
- 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 +33 -21
- 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/legacy/index.d.ts +1 -3
- package/dist/tempo/legacy/index.js +1 -3
- package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
- package/dist/tempo/server/Charge.d.ts +28 -11
- package/dist/tempo/server/Charge.js +101 -55
- package/dist/tempo/server/Methods.d.ts +58 -56
- package/dist/tempo/server/Methods.js +8 -18
- package/dist/tempo/server/Relay.d.ts +1 -1
- package/dist/tempo/server/Relay.js +2 -2
- package/dist/tempo/server/Subscription.d.ts +25 -25
- package/dist/tempo/server/Subscription.js +2 -0
- package/dist/tempo/server/index.d.ts +1 -1
- package/dist/tempo/server/index.js +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/transport.d.ts +2 -0
- package/dist/tempo/server/internal/transport.js +9 -2
- 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 +18 -3
- 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 +34 -22
- 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 +37 -2
- package/dist/tempo/session/precompile/Chain.js +116 -15
- 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 +7 -5
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
- package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
- package/dist/tempo/session/server/ChannelStore.js +27 -12
- package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
- package/dist/tempo/session/server/CredentialVerification.js +359 -89
- package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
- package/dist/tempo/session/server/MeteredStream.js +8 -5
- 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 +46 -23
- package/dist/tempo/session/server/Session.js +150 -56
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- package/dist/tempo/session/server/Sse.d.ts +3 -1
- package/dist/tempo/session/server/Sse.js +2 -1
- package/dist/tempo/session/server/Transports.d.ts +1 -1
- package/dist/tempo/session/server/Transports.js +1 -0
- package/dist/tempo/session/server/Ws.d.ts +6 -1
- package/dist/tempo/session/server/Ws.js +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
- package/dist/web-bot-auth/Constants.d.ts +20 -0
- package/dist/web-bot-auth/Constants.js +24 -0
- package/dist/web-bot-auth/Types.d.ts +10 -0
- package/dist/web-bot-auth/Types.js +2 -0
- package/dist/web-bot-auth/client/index.d.ts +29 -0
- package/dist/web-bot-auth/client/index.js +64 -0
- package/dist/web-bot-auth/index.d.ts +7 -0
- package/dist/web-bot-auth/index.js +7 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
- package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
- package/dist/web-bot-auth/server/index.d.ts +35 -0
- package/dist/web-bot-auth/server/index.js +88 -0
- package/dist/x402/Types.d.ts +6 -6
- 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 +54 -20
- package/package.json +28 -34
- 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/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/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/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/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/server/Session.d.ts +0 -208
- package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/server/Session.js +0 -698
- package/dist/tempo/legacy/server/Session.js.map +0 -1
- package/dist/tempo/legacy/server/index.d.ts +0 -5
- package/dist/tempo/legacy/server/index.d.ts.map +0 -1
- package/dist/tempo/legacy/server/index.js +0 -5
- package/dist/tempo/legacy/server/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/ChannelStore.d.ts +0 -22
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.js +0 -6
- package/dist/tempo/legacy/session/ChannelStore.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/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 -121
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -995
- package/src/Challenge.ts +0 -683
- 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 -617
- 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 -195
- package/src/Store.test.ts +0 -357
- package/src/Store.ts +0 -329
- 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 -1649
- 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 -270
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -466
- package/src/client/Transport.test.ts +0 -619
- package/src/client/Transport.ts +0 -191
- 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 -1079
- 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 -453
- package/src/discovery/OpenApi.ts +0 -224
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- 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 -290
- 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 -343
- 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 -470
- package/src/mcp/client/McpClient.integration.test.ts +0 -652
- 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 -295
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -371
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -476
- 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 -369
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1031
- package/src/proxy/Proxy.ts +0 -345
- package/src/proxy/Service.test.ts +0 -182
- package/src/proxy/Service.ts +0 -253
- 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 -52
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -59
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -58
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -360
- package/src/server/Mppx.test.ts +0 -5813
- package/src/server/Mppx.ts +0 -2623
- 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 -46
- package/src/stripe/server/Charge.test-d.ts +0 -66
- package/src/stripe/server/Charge.test.ts +0 -621
- package/src/stripe/server/Charge.ts +0 -434
- package/src/stripe/server/Methods.ts +0 -24
- package/src/stripe/server/index.ts +0 -2
- 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/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 -289
- 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.ts +0 -6
- package/src/tempo/internal/auto-swap.test.ts +0 -198
- package/src/tempo/internal/auto-swap.ts +0 -188
- 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 -6
- package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
- package/src/tempo/legacy/server/Session.test.ts +0 -6370
- package/src/tempo/legacy/server/Session.ts +0 -1024
- package/src/tempo/legacy/server/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/ChannelStore.test.ts +0 -58
- package/src/tempo/legacy/session/ChannelStore.ts +0 -39
- 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 -50
- package/src/tempo/server/Charge.test.ts +0 -6121
- package/src/tempo/server/Charge.ts +0 -1351
- package/src/tempo/server/Methods.ts +0 -106
- 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 -1333
- 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 -903
- package/src/tempo/server/internal/transport.ts +0 -310
- package/src/tempo/session/README.md +0 -208
- 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 -1149
- 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 -835
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -775
- package/src/tempo/session/server/MeteredStream.ts +0 -95
- 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 -3862
- package/src/tempo/session/server/Session.ts +0 -570
- 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 -557
- package/src/tempo/session/server/Sse.ts +0 -254
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -255
- package/src/tempo/session/server/Ws.test.ts +0 -594
- package/src/tempo/session/server/Ws.ts +0 -385
- 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/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -448
- 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 -394
- 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,830 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type Account,
|
|
3
|
-
type Address,
|
|
4
|
-
type Client,
|
|
5
|
-
decodeFunctionData,
|
|
6
|
-
encodeFunctionData,
|
|
7
|
-
erc20Abi,
|
|
8
|
-
getAbiItem,
|
|
9
|
-
type Hex,
|
|
10
|
-
type ReadContractReturnType,
|
|
11
|
-
toFunctionSelector,
|
|
12
|
-
} from 'viem'
|
|
13
|
-
import {
|
|
14
|
-
call,
|
|
15
|
-
prepareTransactionRequest,
|
|
16
|
-
readContract,
|
|
17
|
-
sendRawTransaction,
|
|
18
|
-
sendRawTransactionSync,
|
|
19
|
-
signTransaction,
|
|
20
|
-
} from 'viem/actions'
|
|
21
|
-
import { Transaction } from 'viem/tempo'
|
|
22
|
-
|
|
23
|
-
import { BadRequestError, ChannelClosedError, VerificationFailedError } from '../../../Errors.js'
|
|
24
|
-
import * as TempoAddress from '../../internal/address.js'
|
|
25
|
-
import * as defaults from '../../internal/defaults.js'
|
|
26
|
-
import * as FeePayer from '../../internal/fee-payer.js'
|
|
27
|
-
import { resolveFeeToken } from '../../internal/fee-token.js'
|
|
28
|
-
import * as Channel from './Channel.js'
|
|
29
|
-
import { escrowAbi } from './escrow.abi.js'
|
|
30
|
-
import type { LegacySignedVoucher } from './Types.js'
|
|
31
|
-
|
|
32
|
-
export { escrowAbi }
|
|
33
|
-
|
|
34
|
-
type SenderSignedTransaction = {
|
|
35
|
-
from?: Address | undefined
|
|
36
|
-
signature?: unknown
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Asserts that a deserialized transaction has an existing sender signature —
|
|
41
|
-
* required before fee payer co-signing to prevent the fee payer from becoming
|
|
42
|
-
* the sender.
|
|
43
|
-
*/
|
|
44
|
-
function assertSenderSigned(transaction: SenderSignedTransaction): void {
|
|
45
|
-
if (!transaction.signature || !transaction.from)
|
|
46
|
-
throw new BadRequestError({
|
|
47
|
-
reason: 'Transaction must be signed by the sender before fee payer co-signing',
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const UINT128_MAX = 2n ** 128n - 1n
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* On-chain channel state from the escrow contract.
|
|
55
|
-
*/
|
|
56
|
-
export type OnChainChannel = ReadContractReturnType<typeof escrowAbi, 'getChannel'>
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Read channel state from the escrow contract.
|
|
60
|
-
*/
|
|
61
|
-
export async function getOnChainChannel(
|
|
62
|
-
client: Client,
|
|
63
|
-
escrowContract: Address,
|
|
64
|
-
channelId: Hex,
|
|
65
|
-
): Promise<OnChainChannel> {
|
|
66
|
-
return readContract(client, {
|
|
67
|
-
address: escrowContract,
|
|
68
|
-
abi: escrowAbi,
|
|
69
|
-
functionName: 'getChannel',
|
|
70
|
-
args: [channelId],
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Verify a topUp by re-reading on-chain channel state.
|
|
76
|
-
*/
|
|
77
|
-
export async function verifyTopUpTransaction(
|
|
78
|
-
client: Client,
|
|
79
|
-
escrowContract: Address,
|
|
80
|
-
channelId: Hex,
|
|
81
|
-
previousDeposit: bigint,
|
|
82
|
-
): Promise<{ deposit: bigint }> {
|
|
83
|
-
const channel = await getOnChainChannel(client, escrowContract, channelId)
|
|
84
|
-
|
|
85
|
-
if (channel.finalized) {
|
|
86
|
-
throw new ChannelClosedError({ reason: 'channel is finalized on-chain' })
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (channel.deposit <= previousDeposit) {
|
|
90
|
-
throw new VerificationFailedError({ reason: 'channel deposit did not increase' })
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return { deposit: channel.deposit }
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function assertUint128(amount: bigint): void {
|
|
97
|
-
if (amount < 0n || amount > UINT128_MAX) {
|
|
98
|
-
throw new VerificationFailedError({ reason: 'cumulativeAmount exceeds uint128 range' })
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/** Options for {@link settleOnChain}. */
|
|
103
|
-
export type SettleOptions =
|
|
104
|
-
| { candidateFeeTokens?: readonly Address[] | undefined; feePayer: Account; account: Account }
|
|
105
|
-
| {
|
|
106
|
-
candidateFeeTokens?: readonly Address[] | undefined
|
|
107
|
-
feePayer?: undefined
|
|
108
|
-
account?: Account | undefined
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Submit a settle transaction on-chain.
|
|
113
|
-
*/
|
|
114
|
-
export async function settleOnChain(
|
|
115
|
-
client: Client,
|
|
116
|
-
escrowContract: Address,
|
|
117
|
-
voucher: LegacySignedVoucher,
|
|
118
|
-
options?: SettleOptions,
|
|
119
|
-
): Promise<Hex> {
|
|
120
|
-
assertUint128(voucher.cumulativeAmount)
|
|
121
|
-
const resolved = options?.account ?? client.account
|
|
122
|
-
if (!resolved)
|
|
123
|
-
throw new Error(
|
|
124
|
-
'Cannot settle channel: no account available. Pass an `account` to tempo.settle(), or provide a `getClient` that returns an account-bearing client.',
|
|
125
|
-
)
|
|
126
|
-
const args = [voucher.channelId, voucher.cumulativeAmount, voucher.signature] as const
|
|
127
|
-
if (options?.feePayer) {
|
|
128
|
-
const data = encodeFunctionData({ abi: escrowAbi, functionName: 'settle', args })
|
|
129
|
-
return sendFeePayerTx(
|
|
130
|
-
client,
|
|
131
|
-
resolved,
|
|
132
|
-
options.feePayer,
|
|
133
|
-
escrowContract,
|
|
134
|
-
data,
|
|
135
|
-
'settle',
|
|
136
|
-
options.candidateFeeTokens,
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
return sendAccountTx(
|
|
140
|
-
client,
|
|
141
|
-
resolved,
|
|
142
|
-
escrowContract,
|
|
143
|
-
encodeFunctionData({ abi: escrowAbi, functionName: 'settle', args }),
|
|
144
|
-
'settle',
|
|
145
|
-
options?.candidateFeeTokens,
|
|
146
|
-
)
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/** Options for {@link closeOnChain}. */
|
|
150
|
-
export type CloseOptions =
|
|
151
|
-
| {
|
|
152
|
-
candidateFeeTokens?: readonly Address[] | undefined
|
|
153
|
-
feePayer: Account
|
|
154
|
-
account: Account
|
|
155
|
-
}
|
|
156
|
-
| {
|
|
157
|
-
candidateFeeTokens?: readonly Address[] | undefined
|
|
158
|
-
feePayer?: undefined
|
|
159
|
-
account?: Account | undefined
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Submit a close transaction on-chain.
|
|
164
|
-
*/
|
|
165
|
-
export async function closeOnChain(
|
|
166
|
-
client: Client,
|
|
167
|
-
escrowContract: Address,
|
|
168
|
-
voucher: LegacySignedVoucher,
|
|
169
|
-
options?: CloseOptions,
|
|
170
|
-
): Promise<Hex> {
|
|
171
|
-
assertUint128(voucher.cumulativeAmount)
|
|
172
|
-
const resolved = options?.account ?? client.account
|
|
173
|
-
if (!resolved)
|
|
174
|
-
throw new Error(
|
|
175
|
-
'Cannot close channel: no account available. Pass an `account` (viem Account, e.g. privateKeyToAccount("0x...")) to tempo.session(), or provide a `getClient` that returns an account-bearing client.',
|
|
176
|
-
)
|
|
177
|
-
const args = [voucher.channelId, voucher.cumulativeAmount, voucher.signature] as const
|
|
178
|
-
if (options?.feePayer) {
|
|
179
|
-
const data = encodeFunctionData({ abi: escrowAbi, functionName: 'close', args })
|
|
180
|
-
return sendFeePayerTx(
|
|
181
|
-
client,
|
|
182
|
-
resolved,
|
|
183
|
-
options.feePayer,
|
|
184
|
-
escrowContract,
|
|
185
|
-
data,
|
|
186
|
-
'close',
|
|
187
|
-
options.candidateFeeTokens,
|
|
188
|
-
)
|
|
189
|
-
}
|
|
190
|
-
return sendAccountTx(
|
|
191
|
-
client,
|
|
192
|
-
resolved,
|
|
193
|
-
escrowContract,
|
|
194
|
-
encodeFunctionData({ abi: escrowAbi, functionName: 'close', args }),
|
|
195
|
-
'close',
|
|
196
|
-
options?.candidateFeeTokens,
|
|
197
|
-
)
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
async function sendAccountTx(
|
|
201
|
-
client: Client,
|
|
202
|
-
account: Account,
|
|
203
|
-
to: Address,
|
|
204
|
-
data: Hex,
|
|
205
|
-
label: string,
|
|
206
|
-
candidateFeeTokens?: readonly Address[] | undefined,
|
|
207
|
-
): Promise<Hex> {
|
|
208
|
-
const feeToken = await resolveFeeToken({
|
|
209
|
-
account: account.address,
|
|
210
|
-
candidateTokens: candidateFeeTokens,
|
|
211
|
-
client,
|
|
212
|
-
})
|
|
213
|
-
const prepared = await prepareTransactionRequest(client, {
|
|
214
|
-
account,
|
|
215
|
-
calls: [{ to, data }],
|
|
216
|
-
...(feeToken ? { feeToken } : {}),
|
|
217
|
-
} as never)
|
|
218
|
-
prepared.gas = prepared.gas! + 5_000n
|
|
219
|
-
|
|
220
|
-
const serialized = (await signTransaction(client, {
|
|
221
|
-
...prepared,
|
|
222
|
-
account,
|
|
223
|
-
} as never)) as Hex
|
|
224
|
-
|
|
225
|
-
const receipt = await sendRawTransactionSync(client, {
|
|
226
|
-
serializedTransaction: serialized as Transaction.TransactionSerializedTempo,
|
|
227
|
-
})
|
|
228
|
-
|
|
229
|
-
if (receipt.status !== 'success') {
|
|
230
|
-
throw new VerificationFailedError({
|
|
231
|
-
reason: `${label} transaction reverted: ${receipt.transactionHash}`,
|
|
232
|
-
})
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
return receipt.transactionHash
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Build, sign, and broadcast a fee-sponsored type-0x76 transaction.
|
|
240
|
-
*
|
|
241
|
-
* Follows the same signTransaction + sendRawTransactionSync pattern used
|
|
242
|
-
* by broadcastOpenTransaction / broadcastTopUpTransaction, but originates
|
|
243
|
-
* the transaction server-side (estimating gas and fees first).
|
|
244
|
-
*
|
|
245
|
-
* @param account - The logical sender / msg.sender (e.g. the payee).
|
|
246
|
-
* @param feePayer - The gas sponsor — only co-signs to cover fees.
|
|
247
|
-
*/
|
|
248
|
-
async function sendFeePayerTx(
|
|
249
|
-
client: Client,
|
|
250
|
-
account: Account,
|
|
251
|
-
feePayer: Account,
|
|
252
|
-
to: Address,
|
|
253
|
-
data: Hex,
|
|
254
|
-
label: string,
|
|
255
|
-
candidateFeeTokens?: readonly Address[] | undefined,
|
|
256
|
-
): Promise<Hex> {
|
|
257
|
-
const feeToken = await resolveFeeToken({
|
|
258
|
-
account: feePayer.address,
|
|
259
|
-
candidateTokens: candidateFeeTokens,
|
|
260
|
-
client,
|
|
261
|
-
})
|
|
262
|
-
|
|
263
|
-
const prepared = await prepareTransactionRequest(client, {
|
|
264
|
-
account,
|
|
265
|
-
calls: [{ to, data }],
|
|
266
|
-
...(feeToken ? { feeToken } : {}),
|
|
267
|
-
nonceKey: 'expiring',
|
|
268
|
-
validBefore: Math.floor(Date.now() / 1_000) + 25,
|
|
269
|
-
} as never)
|
|
270
|
-
// Estimate before enabling fee-payer mode so Tempo includes sender
|
|
271
|
-
// signature verification costs in the gas budget.
|
|
272
|
-
prepared.gas = (prepared.gas ?? 0n) + 5_000n
|
|
273
|
-
;(prepared as Record<string, unknown>).feePayer = true
|
|
274
|
-
|
|
275
|
-
const serialized = (await signTransaction(client, {
|
|
276
|
-
...prepared,
|
|
277
|
-
account,
|
|
278
|
-
feePayer,
|
|
279
|
-
} as never)) as Hex
|
|
280
|
-
|
|
281
|
-
const receipt = await sendRawTransactionSync(client, {
|
|
282
|
-
serializedTransaction: serialized as Transaction.TransactionSerializedTempo,
|
|
283
|
-
})
|
|
284
|
-
|
|
285
|
-
if (receipt.status !== 'success') {
|
|
286
|
-
throw new VerificationFailedError({
|
|
287
|
-
reason: `${label} transaction reverted: ${receipt.transactionHash}`,
|
|
288
|
-
})
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
return receipt.transactionHash
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
const escrowOpenSelector = /*#__PURE__*/ toFunctionSelector(
|
|
295
|
-
getAbiItem({ abi: escrowAbi, name: 'open' }),
|
|
296
|
-
)
|
|
297
|
-
|
|
298
|
-
const escrowTopUpSelector = /*#__PURE__*/ toFunctionSelector(
|
|
299
|
-
getAbiItem({ abi: escrowAbi, name: 'topUp' }),
|
|
300
|
-
)
|
|
301
|
-
|
|
302
|
-
const erc20ApproveSelector = /*#__PURE__*/ toFunctionSelector(
|
|
303
|
-
'function approve(address spender, uint256 amount)',
|
|
304
|
-
)
|
|
305
|
-
|
|
306
|
-
/** Result returned after a legacy open transaction is broadcast or recovered from on-chain state. */
|
|
307
|
-
export type BroadcastResult = {
|
|
308
|
-
txHash: Hex | undefined
|
|
309
|
-
onChain: OnChainChannel
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
/** Inputs for validating an ERC-20 approve call inside a fee-sponsored legacy channel transaction. */
|
|
313
|
-
type SponsoredApproveCallParameters = {
|
|
314
|
-
action: 'open' | 'topUp'
|
|
315
|
-
call: TempoCall
|
|
316
|
-
currency: Address
|
|
317
|
-
escrowContract: Address
|
|
318
|
-
expectedAmount: bigint
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
/** Inputs for extracting the escrow open call from a fee-sponsored legacy channel transaction. */
|
|
322
|
-
type SponsoredOpenCallsParameters = {
|
|
323
|
-
calls: readonly TempoCall[]
|
|
324
|
-
currency: Address
|
|
325
|
-
deposit: bigint
|
|
326
|
-
escrowContract: Address
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/** Inputs for extracting the escrow top-up call from a fee-sponsored legacy channel transaction. */
|
|
330
|
-
type SponsoredTopUpCallsParameters = {
|
|
331
|
-
calls: readonly TempoCall[]
|
|
332
|
-
currency: Address
|
|
333
|
-
escrowContract: Address
|
|
334
|
-
topUpAmount: bigint
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/** Inputs for broadcasting and validating a legacy contract-backed open transaction. */
|
|
338
|
-
export type BroadcastOpenTransactionParameters = {
|
|
339
|
-
beforeBroadcast?: ((onChain: OnChainChannel) => Promise<void> | void) | undefined
|
|
340
|
-
challengeExpires?: string | undefined
|
|
341
|
-
channelId: Hex
|
|
342
|
-
client: Client
|
|
343
|
-
currency: Address
|
|
344
|
-
escrowContract: Address
|
|
345
|
-
feePayer?: Account | undefined
|
|
346
|
-
feePayerPolicy?: Partial<FeePayer.Policy> | undefined
|
|
347
|
-
isSponsored?: boolean | undefined
|
|
348
|
-
recipient: Address
|
|
349
|
-
serializedTransaction: Hex
|
|
350
|
-
/** When false, simulates instead of waiting for confirmation and returns derived on-chain state. @default true */
|
|
351
|
-
waitForConfirmation?: boolean | undefined
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
/** Inputs for broadcasting and validating a legacy contract-backed top-up transaction. */
|
|
355
|
-
export type BroadcastTopUpTransactionParameters = {
|
|
356
|
-
challengeExpires?: string | undefined
|
|
357
|
-
channelId: Hex
|
|
358
|
-
client: Client
|
|
359
|
-
currency: Address
|
|
360
|
-
declaredDeposit: bigint
|
|
361
|
-
escrowContract: Address
|
|
362
|
-
feePayer?: Account | undefined
|
|
363
|
-
feePayerPolicy?: Partial<FeePayer.Policy> | undefined
|
|
364
|
-
isSponsored?: boolean | undefined
|
|
365
|
-
previousDeposit: bigint
|
|
366
|
-
serializedTransaction: Hex
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/** Result returned after a legacy top-up transaction is broadcast and verified. */
|
|
370
|
-
export type BroadcastTopUpTransactionResult = {
|
|
371
|
-
newDeposit: bigint
|
|
372
|
-
txHash: Hex
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
type TempoCall = NonNullable<ReturnType<(typeof Transaction)['deserialize']>['calls']>[number]
|
|
376
|
-
|
|
377
|
-
function assertCallHasTargetAndData(call: TempoCall): { to: Address; data: Hex } {
|
|
378
|
-
if (!call.to || !call.data) {
|
|
379
|
-
throw new BadRequestError({
|
|
380
|
-
reason: 'fee-sponsored transactions must not contain calls without target or data',
|
|
381
|
-
})
|
|
382
|
-
}
|
|
383
|
-
return { to: call.to, data: call.data }
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
function validateSponsoredApproveCall(parameters: SponsoredApproveCallParameters) {
|
|
387
|
-
const { action, call, currency, escrowContract, expectedAmount } = parameters
|
|
388
|
-
const { to, data } = assertCallHasTargetAndData(call)
|
|
389
|
-
|
|
390
|
-
if (!TempoAddress.isEqual(to, currency) || data.slice(0, 10) !== erc20ApproveSelector) {
|
|
391
|
-
throw new BadRequestError({
|
|
392
|
-
reason: `fee-sponsored ${action} transaction contains an unauthorized call`,
|
|
393
|
-
})
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
const { args } = decodeFunctionData({ abi: erc20Abi, data })
|
|
397
|
-
const [spender, amount] = args as readonly [Address, bigint]
|
|
398
|
-
|
|
399
|
-
if (!TempoAddress.isEqual(spender, escrowContract)) {
|
|
400
|
-
throw new BadRequestError({
|
|
401
|
-
reason: `fee-sponsored ${action} transaction approve spender does not match escrow contract`,
|
|
402
|
-
})
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
if (amount !== expectedAmount) {
|
|
406
|
-
throw new BadRequestError({
|
|
407
|
-
reason: `fee-sponsored ${action} transaction approve amount does not match requested amount`,
|
|
408
|
-
})
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
function validateSponsoredOpenCalls(parameters: SponsoredOpenCallsParameters) {
|
|
413
|
-
const { calls, currency, escrowContract, deposit } = parameters
|
|
414
|
-
|
|
415
|
-
let openCall: TempoCall | undefined
|
|
416
|
-
let approveCall: TempoCall | undefined
|
|
417
|
-
|
|
418
|
-
for (const call of calls) {
|
|
419
|
-
const { to, data } = assertCallHasTargetAndData(call)
|
|
420
|
-
const selector = data.slice(0, 10)
|
|
421
|
-
const isOpen = TempoAddress.isEqual(to, escrowContract) && selector === escrowOpenSelector
|
|
422
|
-
const isApprove = TempoAddress.isEqual(to, currency) && selector === erc20ApproveSelector
|
|
423
|
-
|
|
424
|
-
if (isApprove) {
|
|
425
|
-
if (approveCall || openCall) {
|
|
426
|
-
throw new BadRequestError({
|
|
427
|
-
reason: 'fee-sponsored open transaction contains a smuggled call',
|
|
428
|
-
})
|
|
429
|
-
}
|
|
430
|
-
approveCall = call
|
|
431
|
-
continue
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
if (isOpen) {
|
|
435
|
-
if (openCall) {
|
|
436
|
-
throw new BadRequestError({
|
|
437
|
-
reason: 'fee-sponsored open transaction contains a smuggled call',
|
|
438
|
-
})
|
|
439
|
-
}
|
|
440
|
-
openCall = call
|
|
441
|
-
continue
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
throw new BadRequestError({
|
|
445
|
-
reason: 'fee-sponsored open transaction contains an unauthorized call',
|
|
446
|
-
})
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
if (approveCall) {
|
|
450
|
-
validateSponsoredApproveCall({
|
|
451
|
-
action: 'open',
|
|
452
|
-
call: approveCall,
|
|
453
|
-
currency,
|
|
454
|
-
escrowContract,
|
|
455
|
-
expectedAmount: deposit,
|
|
456
|
-
})
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
return openCall
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
function validateSponsoredTopUpCalls(parameters: SponsoredTopUpCallsParameters) {
|
|
463
|
-
const { calls, currency, escrowContract, topUpAmount } = parameters
|
|
464
|
-
|
|
465
|
-
let topUpCall: TempoCall | undefined
|
|
466
|
-
let approveCall: TempoCall | undefined
|
|
467
|
-
|
|
468
|
-
for (const call of calls) {
|
|
469
|
-
const { to, data } = assertCallHasTargetAndData(call)
|
|
470
|
-
const selector = data.slice(0, 10)
|
|
471
|
-
const isTopUp = TempoAddress.isEqual(to, escrowContract) && selector === escrowTopUpSelector
|
|
472
|
-
const isApprove = TempoAddress.isEqual(to, currency) && selector === erc20ApproveSelector
|
|
473
|
-
|
|
474
|
-
if (isApprove) {
|
|
475
|
-
if (approveCall || topUpCall) {
|
|
476
|
-
throw new BadRequestError({
|
|
477
|
-
reason: 'fee-sponsored topUp transaction contains a smuggled call',
|
|
478
|
-
})
|
|
479
|
-
}
|
|
480
|
-
approveCall = call
|
|
481
|
-
continue
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
if (isTopUp) {
|
|
485
|
-
if (topUpCall) {
|
|
486
|
-
throw new BadRequestError({
|
|
487
|
-
reason: 'fee-sponsored topUp transaction contains a smuggled call',
|
|
488
|
-
})
|
|
489
|
-
}
|
|
490
|
-
topUpCall = call
|
|
491
|
-
continue
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
throw new BadRequestError({
|
|
495
|
-
reason: 'fee-sponsored topUp transaction contains an unauthorized call',
|
|
496
|
-
})
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
if (approveCall) {
|
|
500
|
-
validateSponsoredApproveCall({
|
|
501
|
-
action: 'topUp',
|
|
502
|
-
call: approveCall,
|
|
503
|
-
currency,
|
|
504
|
-
escrowContract,
|
|
505
|
-
expectedAmount: topUpAmount,
|
|
506
|
-
})
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
return topUpCall
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
export async function broadcastOpenTransaction(
|
|
513
|
-
parameters: BroadcastOpenTransactionParameters,
|
|
514
|
-
): Promise<BroadcastResult> {
|
|
515
|
-
const {
|
|
516
|
-
client,
|
|
517
|
-
serializedTransaction,
|
|
518
|
-
escrowContract,
|
|
519
|
-
channelId,
|
|
520
|
-
recipient,
|
|
521
|
-
currency,
|
|
522
|
-
challengeExpires,
|
|
523
|
-
feePayerPolicy,
|
|
524
|
-
feePayer,
|
|
525
|
-
isSponsored = Boolean(feePayer),
|
|
526
|
-
beforeBroadcast,
|
|
527
|
-
waitForConfirmation = true,
|
|
528
|
-
} = parameters
|
|
529
|
-
|
|
530
|
-
if (isSponsored && !FeePayer.isTempoTransaction(serializedTransaction))
|
|
531
|
-
throw new BadRequestError({
|
|
532
|
-
reason: 'Only Tempo (0x76/0x78) transactions are supported',
|
|
533
|
-
})
|
|
534
|
-
|
|
535
|
-
const transaction = Transaction.deserialize(
|
|
536
|
-
serializedTransaction as Transaction.TransactionSerializedTempo,
|
|
537
|
-
)
|
|
538
|
-
|
|
539
|
-
if (isSponsored) assertSenderSigned(transaction)
|
|
540
|
-
|
|
541
|
-
const calls = transaction.calls ?? []
|
|
542
|
-
|
|
543
|
-
const sponsoredOpenCall = isSponsored
|
|
544
|
-
? validateSponsoredOpenCalls({
|
|
545
|
-
calls,
|
|
546
|
-
currency,
|
|
547
|
-
escrowContract,
|
|
548
|
-
deposit: (() => {
|
|
549
|
-
const candidate = calls.find((call) => {
|
|
550
|
-
if (!call.to || !TempoAddress.isEqual(call.to, escrowContract)) return false
|
|
551
|
-
if (!call.data) return false
|
|
552
|
-
return call.data.slice(0, 10) === escrowOpenSelector
|
|
553
|
-
})
|
|
554
|
-
if (!candidate?.data)
|
|
555
|
-
throw new BadRequestError({
|
|
556
|
-
reason: 'transaction does not contain a valid escrow open call',
|
|
557
|
-
})
|
|
558
|
-
const { args } = decodeFunctionData({ abi: escrowAbi, data: candidate.data })
|
|
559
|
-
return (args as readonly [Address, Address, bigint, Hex, Address])[2]
|
|
560
|
-
})(),
|
|
561
|
-
})
|
|
562
|
-
: undefined
|
|
563
|
-
|
|
564
|
-
const openCall =
|
|
565
|
-
sponsoredOpenCall ??
|
|
566
|
-
calls.find((call) => {
|
|
567
|
-
if (!call.to || !TempoAddress.isEqual(call.to, escrowContract)) return false
|
|
568
|
-
if (!call.data) return false
|
|
569
|
-
return call.data.slice(0, 10) === escrowOpenSelector
|
|
570
|
-
})
|
|
571
|
-
|
|
572
|
-
if (!openCall)
|
|
573
|
-
throw new BadRequestError({
|
|
574
|
-
reason: 'transaction does not contain a valid escrow open call',
|
|
575
|
-
})
|
|
576
|
-
|
|
577
|
-
const { args: openArgs } = decodeFunctionData({ abi: escrowAbi, data: openCall.data! })
|
|
578
|
-
const [payee, token, deposit, salt, authorizedSigner] = openArgs as readonly [
|
|
579
|
-
Address,
|
|
580
|
-
Address,
|
|
581
|
-
bigint,
|
|
582
|
-
Hex,
|
|
583
|
-
Address,
|
|
584
|
-
]
|
|
585
|
-
|
|
586
|
-
if (!TempoAddress.isEqual(payee, recipient)) {
|
|
587
|
-
throw new VerificationFailedError({
|
|
588
|
-
reason: 'open transaction payee does not match server recipient',
|
|
589
|
-
})
|
|
590
|
-
}
|
|
591
|
-
if (!TempoAddress.isEqual(token, currency)) {
|
|
592
|
-
throw new VerificationFailedError({
|
|
593
|
-
reason: 'open transaction token does not match server currency',
|
|
594
|
-
})
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
if (!transaction.from) throw new BadRequestError({ reason: 'open transaction has no sender' })
|
|
598
|
-
|
|
599
|
-
const derivedChannelId = Channel.computeId({
|
|
600
|
-
payer: transaction.from as `0x${string}`,
|
|
601
|
-
payee,
|
|
602
|
-
token,
|
|
603
|
-
salt,
|
|
604
|
-
authorizedSigner,
|
|
605
|
-
escrowContract,
|
|
606
|
-
chainId: client.chain!.id,
|
|
607
|
-
})
|
|
608
|
-
if (derivedChannelId.toLowerCase() !== channelId.toLowerCase())
|
|
609
|
-
throw new VerificationFailedError({
|
|
610
|
-
reason: 'open transaction does not match claimed channelId',
|
|
611
|
-
})
|
|
612
|
-
|
|
613
|
-
const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
|
|
614
|
-
const resolvedFeeToken = transaction.feeToken ?? defaultFeeToken
|
|
615
|
-
|
|
616
|
-
const pendingOnChain = {
|
|
617
|
-
finalized: false,
|
|
618
|
-
closeRequestedAt: 0n,
|
|
619
|
-
payer: transaction.from,
|
|
620
|
-
payee,
|
|
621
|
-
token,
|
|
622
|
-
authorizedSigner,
|
|
623
|
-
deposit,
|
|
624
|
-
settled: 0n,
|
|
625
|
-
} as OnChainChannel
|
|
626
|
-
|
|
627
|
-
await beforeBroadcast?.(pendingOnChain)
|
|
628
|
-
|
|
629
|
-
const completeTransaction = async () => {
|
|
630
|
-
if (feePayer) {
|
|
631
|
-
if (!sponsoredOpenCall)
|
|
632
|
-
throw new BadRequestError({
|
|
633
|
-
reason: 'transaction does not contain a valid escrow open call',
|
|
634
|
-
})
|
|
635
|
-
|
|
636
|
-
const completed = await FeePayer.preflightSponsorship({
|
|
637
|
-
transaction,
|
|
638
|
-
simulate: (request) => call(client, request as never),
|
|
639
|
-
async complete() {
|
|
640
|
-
const sponsored = FeePayer.prepareSponsoredTransaction({
|
|
641
|
-
account: feePayer,
|
|
642
|
-
allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
|
|
643
|
-
challengeExpires,
|
|
644
|
-
chainId: client.chain!.id,
|
|
645
|
-
details: { channelId, currency, recipient },
|
|
646
|
-
policy: feePayerPolicy,
|
|
647
|
-
transaction: {
|
|
648
|
-
...transaction,
|
|
649
|
-
...(resolvedFeeToken ? { feeToken: resolvedFeeToken } : {}),
|
|
650
|
-
},
|
|
651
|
-
})
|
|
652
|
-
return { feePayer: feePayer.address, transaction: sponsored }
|
|
653
|
-
},
|
|
654
|
-
})
|
|
655
|
-
return signTransaction(client, completed.transaction as never)
|
|
656
|
-
}
|
|
657
|
-
return serializedTransaction
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
if (!waitForConfirmation) {
|
|
661
|
-
const serializedTransaction_final = await completeTransaction()
|
|
662
|
-
// Local sponsorship already ran sender-context preflight above. Every
|
|
663
|
-
// other optimistic path must still simulate before returning calldata as
|
|
664
|
-
// pending on-chain state, including hosted sponsorship (`isSponsored`).
|
|
665
|
-
if (!feePayer)
|
|
666
|
-
await call(
|
|
667
|
-
client,
|
|
668
|
-
FeePayer.simulationTransaction(transaction, { feePayer: isSponsored }) as never,
|
|
669
|
-
)
|
|
670
|
-
const txHash = await sendRawTransaction(client, {
|
|
671
|
-
serializedTransaction: serializedTransaction_final as Transaction.TransactionSerializedTempo,
|
|
672
|
-
})
|
|
673
|
-
|
|
674
|
-
return {
|
|
675
|
-
txHash,
|
|
676
|
-
onChain: pendingOnChain,
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
let txHash: Hex | undefined
|
|
681
|
-
try {
|
|
682
|
-
// Keep local preflight inside recovery: a retry can legitimately revert
|
|
683
|
-
// during simulation after the original open was mined.
|
|
684
|
-
const serializedTransaction_final = await completeTransaction()
|
|
685
|
-
const receipt = await sendRawTransactionSync(client, {
|
|
686
|
-
serializedTransaction: serializedTransaction_final as Transaction.TransactionSerializedTempo,
|
|
687
|
-
})
|
|
688
|
-
|
|
689
|
-
if (receipt.status !== 'success') {
|
|
690
|
-
throw new VerificationFailedError({
|
|
691
|
-
reason: `open transaction reverted: ${receipt.transactionHash}`,
|
|
692
|
-
})
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
txHash = receipt.transactionHash
|
|
696
|
-
} catch (error) {
|
|
697
|
-
const onChain = await getOnChainChannel(client, escrowContract, channelId)
|
|
698
|
-
if (onChain.deposit > 0n) {
|
|
699
|
-
return { txHash: undefined, onChain }
|
|
700
|
-
}
|
|
701
|
-
throw error
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
const onChain = await getOnChainChannel(client, escrowContract, channelId)
|
|
705
|
-
|
|
706
|
-
return { txHash, onChain }
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
export async function broadcastTopUpTransaction(
|
|
710
|
-
parameters: BroadcastTopUpTransactionParameters,
|
|
711
|
-
): Promise<BroadcastTopUpTransactionResult> {
|
|
712
|
-
const {
|
|
713
|
-
client,
|
|
714
|
-
serializedTransaction,
|
|
715
|
-
escrowContract,
|
|
716
|
-
channelId,
|
|
717
|
-
currency,
|
|
718
|
-
declaredDeposit,
|
|
719
|
-
previousDeposit,
|
|
720
|
-
challengeExpires,
|
|
721
|
-
feePayerPolicy,
|
|
722
|
-
feePayer,
|
|
723
|
-
isSponsored = Boolean(feePayer),
|
|
724
|
-
} = parameters
|
|
725
|
-
|
|
726
|
-
if (isSponsored && !FeePayer.isTempoTransaction(serializedTransaction))
|
|
727
|
-
throw new BadRequestError({
|
|
728
|
-
reason: 'Only Tempo (0x76/0x78) transactions are supported',
|
|
729
|
-
})
|
|
730
|
-
|
|
731
|
-
const transaction = Transaction.deserialize(
|
|
732
|
-
serializedTransaction as Transaction.TransactionSerializedTempo,
|
|
733
|
-
)
|
|
734
|
-
|
|
735
|
-
if (isSponsored) assertSenderSigned(transaction)
|
|
736
|
-
|
|
737
|
-
const calls = transaction.calls ?? []
|
|
738
|
-
|
|
739
|
-
const sponsoredTopUpCall = isSponsored
|
|
740
|
-
? validateSponsoredTopUpCalls({
|
|
741
|
-
calls,
|
|
742
|
-
currency,
|
|
743
|
-
escrowContract,
|
|
744
|
-
topUpAmount: declaredDeposit,
|
|
745
|
-
})
|
|
746
|
-
: undefined
|
|
747
|
-
|
|
748
|
-
const topUpCall =
|
|
749
|
-
sponsoredTopUpCall ??
|
|
750
|
-
calls.find((call) => {
|
|
751
|
-
if (!call.to || !TempoAddress.isEqual(call.to, escrowContract)) return false
|
|
752
|
-
if (!call.data) return false
|
|
753
|
-
return call.data.slice(0, 10) === escrowTopUpSelector
|
|
754
|
-
})
|
|
755
|
-
|
|
756
|
-
if (!topUpCall)
|
|
757
|
-
throw new BadRequestError({
|
|
758
|
-
reason: 'transaction does not contain a valid escrow topUp call',
|
|
759
|
-
})
|
|
760
|
-
|
|
761
|
-
const { args: topUpArgs } = decodeFunctionData({ abi: escrowAbi, data: topUpCall.data! })
|
|
762
|
-
const [txChannelId, txAmount] = topUpArgs as [Hex, bigint]
|
|
763
|
-
|
|
764
|
-
if (txChannelId.toLowerCase() !== channelId.toLowerCase()) {
|
|
765
|
-
throw new VerificationFailedError({
|
|
766
|
-
reason: 'topUp transaction channelId does not match payload channelId',
|
|
767
|
-
})
|
|
768
|
-
}
|
|
769
|
-
if (BigInt(txAmount) !== declaredDeposit) {
|
|
770
|
-
throw new VerificationFailedError({
|
|
771
|
-
reason: `topUp transaction amount (${txAmount}) does not match declared additionalDeposit (${declaredDeposit})`,
|
|
772
|
-
})
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
const serializedTransaction_final = await (async () => {
|
|
776
|
-
if (feePayer) {
|
|
777
|
-
if (!sponsoredTopUpCall)
|
|
778
|
-
throw new BadRequestError({
|
|
779
|
-
reason: 'transaction does not contain a valid escrow topUp call',
|
|
780
|
-
})
|
|
781
|
-
|
|
782
|
-
const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
|
|
783
|
-
const completed = await FeePayer.preflightSponsorship({
|
|
784
|
-
transaction,
|
|
785
|
-
simulate: (request) => call(client, request as never),
|
|
786
|
-
async complete() {
|
|
787
|
-
const sponsored = FeePayer.prepareSponsoredTransaction({
|
|
788
|
-
account: feePayer,
|
|
789
|
-
allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
|
|
790
|
-
challengeExpires,
|
|
791
|
-
chainId: client.chain!.id,
|
|
792
|
-
details: {
|
|
793
|
-
additionalDeposit: declaredDeposit.toString(),
|
|
794
|
-
channelId,
|
|
795
|
-
currency,
|
|
796
|
-
},
|
|
797
|
-
policy: feePayerPolicy,
|
|
798
|
-
transaction: {
|
|
799
|
-
...transaction,
|
|
800
|
-
...((transaction.feeToken ?? defaultFeeToken)
|
|
801
|
-
? { feeToken: transaction.feeToken ?? defaultFeeToken }
|
|
802
|
-
: {}),
|
|
803
|
-
},
|
|
804
|
-
})
|
|
805
|
-
return { feePayer: feePayer.address, transaction: sponsored }
|
|
806
|
-
},
|
|
807
|
-
})
|
|
808
|
-
return signTransaction(client, completed.transaction as never)
|
|
809
|
-
}
|
|
810
|
-
return serializedTransaction
|
|
811
|
-
})()
|
|
812
|
-
|
|
813
|
-
const receipt = await sendRawTransactionSync(client, {
|
|
814
|
-
serializedTransaction: serializedTransaction_final as Transaction.TransactionSerializedTempo,
|
|
815
|
-
})
|
|
816
|
-
|
|
817
|
-
if (receipt.status !== 'success') {
|
|
818
|
-
throw new VerificationFailedError({
|
|
819
|
-
reason: `topUp transaction reverted: ${receipt.transactionHash}`,
|
|
820
|
-
})
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
const onChain = await getOnChainChannel(client, escrowContract, channelId)
|
|
824
|
-
|
|
825
|
-
if (onChain.deposit <= previousDeposit) {
|
|
826
|
-
throw new VerificationFailedError({ reason: 'channel deposit did not increase after topUp' })
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
return { txHash: receipt.transactionHash, newDeposit: onChain.deposit }
|
|
830
|
-
}
|