mppx 0.6.31 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +20 -11
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +27 -13
- package/dist/Challenge.js.map +1 -1
- package/dist/Constants.d.ts +46 -0
- package/dist/Constants.d.ts.map +1 -0
- package/dist/Constants.js +46 -0
- package/dist/Constants.js.map +1 -0
- package/dist/Credential.d.ts.map +1 -1
- package/dist/Credential.js +5 -4
- package/dist/Credential.js.map +1 -1
- package/dist/Mcp.d.ts +3 -0
- package/dist/Mcp.d.ts.map +1 -1
- package/dist/Mcp.js +2 -0
- package/dist/Mcp.js.map +1 -1
- package/dist/Method.d.ts +32 -4
- package/dist/Method.d.ts.map +1 -1
- package/dist/Method.js +5 -2
- package/dist/Method.js.map +1 -1
- package/dist/PaymentRequest.d.ts +10 -10
- package/dist/PaymentRequest.js +8 -8
- package/dist/Receipt.d.ts.map +1 -1
- package/dist/Receipt.js +3 -2
- package/dist/Receipt.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +19 -11
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/plugins/tempo.d.ts.map +1 -1
- package/dist/cli/plugins/tempo.js +17 -6
- package/dist/cli/plugins/tempo.js.map +1 -1
- package/dist/cli/utils.d.ts +5 -0
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +10 -0
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/Methods.d.ts +5 -2
- package/dist/client/Methods.d.ts.map +1 -1
- package/dist/client/Methods.js +5 -2
- package/dist/client/Methods.js.map +1 -1
- package/dist/client/Mppx.js +2 -2
- package/dist/client/Mppx.js.map +1 -1
- package/dist/client/Transport.d.ts +11 -16
- package/dist/client/Transport.d.ts.map +1 -1
- package/dist/client/Transport.js +55 -76
- package/dist/client/Transport.js.map +1 -1
- package/dist/client/index.d.ts +5 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal/Fetch.d.ts.map +1 -1
- package/dist/client/internal/Fetch.js +60 -13
- package/dist/client/internal/Fetch.js.map +1 -1
- package/dist/client/internal/protocols/Mcp.d.ts +7 -0
- package/dist/client/internal/protocols/Mcp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mcp.js +159 -0
- package/dist/client/internal/protocols/Mcp.js.map +1 -0
- package/dist/client/internal/protocols/Mpp.d.ts +4 -0
- package/dist/client/internal/protocols/Mpp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mpp.js +18 -0
- package/dist/client/internal/protocols/Mpp.js.map +1 -0
- package/dist/client/internal/protocols/Protocol.d.ts +10 -0
- package/dist/client/internal/protocols/Protocol.d.ts.map +1 -0
- package/dist/client/internal/protocols/Protocol.js +2 -0
- package/dist/client/internal/protocols/Protocol.js.map +1 -0
- package/dist/client/internal/protocols/Shared.d.ts +5 -0
- package/dist/client/internal/protocols/Shared.d.ts.map +1 -0
- package/dist/client/internal/protocols/Shared.js +20 -0
- package/dist/client/internal/protocols/Shared.js.map +1 -0
- package/dist/client/internal/protocols/X402.d.ts +8 -0
- package/dist/client/internal/protocols/X402.d.ts.map +1 -0
- package/dist/client/internal/protocols/X402.js +39 -0
- package/dist/client/internal/protocols/X402.js.map +1 -0
- package/dist/evm/client/index.d.ts +1 -0
- package/dist/evm/client/index.d.ts.map +1 -1
- package/dist/evm/client/index.js +1 -0
- package/dist/evm/client/index.js.map +1 -1
- package/dist/evm/index.d.ts +2 -0
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +2 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/server/Methods.d.ts +1 -1
- package/dist/evm/server/Methods.d.ts.map +1 -1
- package/dist/evm/server/index.d.ts +1 -0
- package/dist/evm/server/index.d.ts.map +1 -1
- package/dist/evm/server/index.js +1 -0
- package/dist/evm/server/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/AcceptPayment.d.ts +3 -0
- package/dist/internal/AcceptPayment.d.ts.map +1 -1
- package/dist/internal/AcceptPayment.js +15 -11
- package/dist/internal/AcceptPayment.js.map +1 -1
- package/dist/mcp/client/McpClient.d.ts +101 -0
- package/dist/mcp/client/McpClient.d.ts.map +1 -0
- package/dist/mcp/client/McpClient.js +162 -0
- package/dist/mcp/client/McpClient.js.map +1 -0
- package/dist/mcp/client/index.d.ts.map +1 -0
- package/dist/mcp/client/index.js.map +1 -0
- package/dist/mcp/server/Transport.d.ts.map +1 -0
- package/dist/mcp/server/Transport.js.map +1 -0
- package/dist/mcp/server/index.d.ts.map +1 -0
- package/dist/mcp/server/index.js.map +1 -0
- package/dist/server/Mppx.d.ts +12 -4
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +85 -27
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Response.d.ts.map +1 -1
- package/dist/server/Response.js +2 -1
- package/dist/server/Response.js.map +1 -1
- package/dist/server/Transport.d.ts +1 -1
- package/dist/server/Transport.d.ts.map +1 -1
- package/dist/server/Transport.js +5 -4
- package/dist/server/Transport.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/stripe/client/Charge.d.ts +1 -1
- package/dist/stripe/client/Charge.d.ts.map +1 -1
- package/dist/stripe/client/Charge.js +3 -1
- package/dist/stripe/client/Charge.js.map +1 -1
- package/dist/stripe/server/Charge.d.ts +1 -1
- package/dist/stripe/server/Charge.d.ts.map +1 -1
- package/dist/stripe/server/Charge.js +9 -2
- package/dist/stripe/server/Charge.js.map +1 -1
- package/dist/stripe/server/Methods.d.ts +1 -1
- package/dist/stripe/server/Methods.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/Methods.d.ts +18 -0
- package/dist/tempo/Methods.d.ts.map +1 -1
- package/dist/tempo/Methods.js +16 -1
- package/dist/tempo/Methods.js.map +1 -1
- package/dist/tempo/Proof.d.ts +85 -1
- package/dist/tempo/Proof.d.ts.map +1 -1
- package/dist/tempo/Proof.js +35 -0
- package/dist/tempo/Proof.js.map +1 -1
- package/dist/tempo/client/Charge.d.ts +19 -1
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +47 -27
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +41 -10
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/client/Methods.js +16 -7
- package/dist/tempo/client/Methods.js.map +1 -1
- package/dist/tempo/client/ResolveAccount.d.ts +40 -0
- package/dist/tempo/client/ResolveAccount.d.ts.map +1 -0
- package/dist/tempo/client/ResolveAccount.js +2 -0
- package/dist/tempo/client/ResolveAccount.js.map +1 -0
- package/dist/tempo/client/index.d.ts +7 -4
- package/dist/tempo/client/index.d.ts.map +1 -1
- package/dist/tempo/client/index.js +5 -3
- package/dist/tempo/client/index.js.map +1 -1
- package/dist/tempo/index.d.ts +1 -0
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +1 -0
- package/dist/tempo/index.js.map +1 -1
- package/dist/tempo/internal/fee-payer.d.ts +29 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +138 -4
- package/dist/tempo/internal/fee-payer.js.map +1 -1
- package/dist/tempo/internal/proof.d.ts +71 -5
- package/dist/tempo/internal/proof.d.ts.map +1 -1
- package/dist/tempo/internal/proof.js +42 -6
- package/dist/tempo/internal/proof.js.map +1 -1
- package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
- package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
- package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.js +14 -7
- package/dist/tempo/legacy/client/Session.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.js +30 -19
- package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
- package/dist/tempo/legacy/client/index.d.ts +7 -0
- package/dist/tempo/legacy/client/index.d.ts.map +1 -0
- package/dist/tempo/legacy/client/index.js +5 -0
- package/dist/tempo/legacy/client/index.js.map +1 -0
- package/dist/tempo/legacy/index.d.ts +7 -0
- package/dist/tempo/legacy/index.d.ts.map +1 -0
- package/dist/tempo/legacy/index.js +7 -0
- package/dist/tempo/legacy/index.js.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
- package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.js +12 -10
- package/dist/tempo/legacy/server/Session.js.map +1 -0
- package/dist/tempo/legacy/server/index.d.ts +5 -0
- package/dist/tempo/legacy/server/index.d.ts.map +1 -0
- package/dist/tempo/legacy/server/index.js +5 -0
- package/dist/tempo/legacy/server/index.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
- package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
- package/dist/tempo/legacy/session/Chain.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
- package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Channel.js.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.js +6 -0
- package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
- package/dist/tempo/legacy/session/Types.d.ts +73 -0
- package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Types.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
- package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
- package/dist/tempo/legacy/session/Voucher.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
- package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
- package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
- package/dist/tempo/legacy/session/index.d.ts +9 -0
- package/dist/tempo/legacy/session/index.d.ts.map +1 -0
- package/dist/tempo/legacy/session/index.js +9 -0
- package/dist/tempo/legacy/session/index.js.map +1 -0
- package/dist/tempo/server/Charge.d.ts +1 -1
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +51 -30
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +67 -8
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +40 -10
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +11 -1
- package/dist/tempo/server/Subscription.d.ts.map +1 -1
- package/dist/tempo/server/Subscription.js +135 -23
- package/dist/tempo/server/Subscription.js.map +1 -1
- package/dist/tempo/server/index.d.ts +6 -5
- package/dist/tempo/server/index.d.ts.map +1 -1
- package/dist/tempo/server/index.js +5 -5
- package/dist/tempo/server/index.js.map +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/server/internal/request-body.d.ts +7 -2
- package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
- package/dist/tempo/server/internal/request-body.js +20 -3
- package/dist/tempo/server/internal/request-body.js.map +1 -1
- package/dist/tempo/server/internal/transport.d.ts +8 -4
- package/dist/tempo/server/internal/transport.d.ts.map +1 -1
- package/dist/tempo/server/internal/transport.js +8 -7
- package/dist/tempo/server/internal/transport.js.map +1 -1
- package/dist/tempo/session/Snapshot.d.ts +32 -0
- package/dist/tempo/session/Snapshot.d.ts.map +1 -0
- package/dist/tempo/session/Snapshot.js +37 -0
- package/dist/tempo/session/Snapshot.js.map +1 -0
- package/dist/tempo/session/client/ChannelOps.d.ts +81 -0
- package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelOps.js +201 -0
- package/dist/tempo/session/client/ChannelOps.js.map +1 -0
- package/dist/tempo/session/client/ChannelStore.d.ts +51 -0
- package/dist/tempo/session/client/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelStore.js +63 -0
- package/dist/tempo/session/client/ChannelStore.js.map +1 -0
- package/dist/tempo/session/client/CredentialState.d.ts +245 -0
- package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
- package/dist/tempo/session/client/CredentialState.js +419 -0
- package/dist/tempo/session/client/CredentialState.js.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
- package/dist/tempo/session/client/Runtime.d.ts +464 -0
- package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
- package/dist/tempo/session/client/Runtime.js +499 -0
- package/dist/tempo/session/client/Runtime.js.map +1 -0
- package/dist/tempo/session/client/Session.d.ts +138 -0
- package/dist/tempo/session/client/Session.d.ts.map +1 -0
- package/dist/tempo/session/client/Session.js +69 -0
- package/dist/tempo/session/client/Session.js.map +1 -0
- package/dist/tempo/session/client/SessionManager.d.ts +84 -0
- package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/session/client/SessionManager.js +577 -0
- package/dist/tempo/session/client/SessionManager.js.map +1 -0
- package/dist/tempo/session/client/Transports.d.ts +449 -0
- package/dist/tempo/session/client/Transports.d.ts.map +1 -0
- package/dist/tempo/session/client/Transports.js +721 -0
- package/dist/tempo/session/client/Transports.js.map +1 -0
- package/dist/tempo/session/client/index.d.ts +11 -0
- package/dist/tempo/session/client/index.d.ts.map +1 -0
- package/dist/tempo/session/client/index.js +6 -0
- package/dist/tempo/session/client/index.js.map +1 -0
- package/dist/tempo/session/index.d.ts +7 -8
- package/dist/tempo/session/index.d.ts.map +1 -1
- package/dist/tempo/session/index.js +7 -8
- package/dist/tempo/session/index.js.map +1 -1
- package/dist/tempo/session/precompile/Chain.d.ts +319 -0
- package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Chain.js +492 -0
- package/dist/tempo/session/precompile/Chain.js.map +1 -0
- package/dist/tempo/session/precompile/Channel.d.ts +46 -0
- package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Channel.js +56 -0
- package/dist/tempo/session/precompile/Channel.js.map +1 -0
- package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
- package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Protocol.js +264 -0
- package/dist/tempo/session/precompile/Protocol.js.map +1 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
- package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Voucher.js +125 -0
- package/dist/tempo/session/precompile/Voucher.js.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.js +224 -0
- package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
- package/dist/tempo/session/precompile/index.d.ts +24 -0
- package/dist/tempo/session/precompile/index.d.ts.map +1 -0
- package/dist/tempo/session/precompile/index.js +22 -0
- package/dist/tempo/session/precompile/index.js.map +1 -0
- package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
- package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelOps.js +91 -0
- package/dist/tempo/session/server/ChannelOps.js.map +1 -0
- package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
- package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelStore.js +404 -0
- package/dist/tempo/session/server/ChannelStore.js.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.js +494 -0
- package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
- package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
- package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
- package/dist/tempo/session/server/MeteredStream.js +42 -0
- package/dist/tempo/session/server/MeteredStream.js.map +1 -0
- package/dist/tempo/session/server/RequestState.d.ts +208 -0
- package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
- package/dist/tempo/session/server/RequestState.js +252 -0
- package/dist/tempo/session/server/RequestState.js.map +1 -0
- package/dist/tempo/session/server/Session.d.ts +169 -0
- package/dist/tempo/session/server/Session.d.ts.map +1 -0
- package/dist/tempo/session/server/Session.js +351 -0
- package/dist/tempo/session/server/Session.js.map +1 -0
- package/dist/tempo/session/server/Settlement.d.ts +185 -0
- package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
- package/dist/tempo/session/server/Settlement.js +252 -0
- package/dist/tempo/session/server/Settlement.js.map +1 -0
- package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
- package/dist/tempo/session/server/Sse.d.ts.map +1 -0
- package/dist/tempo/session/server/Sse.js +184 -0
- package/dist/tempo/session/server/Sse.js.map +1 -0
- package/dist/tempo/session/server/Transports.d.ts +89 -0
- package/dist/tempo/session/server/Transports.d.ts.map +1 -0
- package/dist/tempo/session/server/Transports.js +149 -0
- package/dist/tempo/session/server/Transports.js.map +1 -0
- package/dist/tempo/session/server/Ws.d.ts +48 -0
- package/dist/tempo/session/server/Ws.d.ts.map +1 -0
- package/dist/tempo/session/server/Ws.js +244 -0
- package/dist/tempo/session/server/Ws.js.map +1 -0
- package/dist/tempo/session/server/index.d.ts +4 -0
- package/dist/tempo/session/server/index.d.ts.map +1 -0
- package/dist/tempo/session/server/index.js +2 -0
- package/dist/tempo/session/server/index.js.map +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +712 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.d.ts +2 -0
- package/dist/tempo/subscription/Store.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.js +16 -1
- package/dist/tempo/subscription/Store.js.map +1 -1
- package/dist/x402/index.d.ts +1 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +1 -0
- package/dist/x402/index.js.map +1 -1
- package/package.json +25 -9
- package/src/Challenge.test.ts +40 -0
- package/src/Challenge.ts +28 -13
- package/src/Constants.ts +58 -0
- package/src/Credential.ts +5 -4
- package/src/Mcp.ts +4 -0
- package/src/Method.ts +46 -5
- package/src/PaymentRequest.ts +10 -10
- package/src/Receipt.ts +3 -2
- package/src/cli/cli.test.ts +38 -43
- package/src/cli/cli.ts +23 -10
- package/src/cli/mcp.test.ts +21 -7
- package/src/cli/plugins/tempo.ts +21 -8
- package/src/cli/utils.test.ts +25 -1
- package/src/cli/utils.ts +10 -0
- package/src/client/Methods.ts +5 -2
- package/src/client/Mppx.test-d.ts +31 -1
- package/src/client/Mppx.test.ts +76 -1
- package/src/client/Mppx.ts +2 -2
- package/src/client/Transport.test.ts +225 -178
- package/src/client/Transport.ts +77 -84
- package/src/client/index.ts +25 -1
- package/src/client/internal/Fetch.test.ts +236 -6
- package/src/client/internal/Fetch.ts +69 -11
- package/src/client/internal/protocols/Mcp.test.ts +220 -0
- package/src/client/internal/protocols/Mcp.ts +162 -0
- package/src/client/internal/protocols/Mpp.ts +21 -0
- package/src/client/internal/protocols/Protocol.ts +10 -0
- package/src/client/internal/protocols/Shared.ts +25 -0
- package/src/client/internal/protocols/X402.ts +42 -0
- package/src/discovery/OpenApi.test.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/evm/PublicInterface.test-d.ts +1 -1
- package/src/evm/client/index.ts +1 -0
- package/src/evm/index.ts +2 -0
- package/src/evm/server/Charge.test.ts +1 -1
- package/src/evm/server/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/internal/AcceptPayment.test.ts +61 -0
- package/src/internal/AcceptPayment.ts +21 -14
- package/src/{mcp-sdk → mcp}/client/McpClient.integration.test.ts +18 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test-d.ts +45 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test.ts +211 -5
- package/src/mcp/client/McpClient.ts +307 -0
- package/src/mcp/client/McpClient.unit.test.ts +135 -0
- package/src/middlewares/elysia.test.ts +9 -5
- package/src/middlewares/express.test.ts +9 -5
- package/src/middlewares/hono.test.ts +5 -5
- package/src/middlewares/internal/mppx.test.ts +1 -1
- package/src/middlewares/nextjs.test.ts +9 -5
- package/src/proxy/Proxy.test.ts +9 -9
- package/src/proxy/services/anthropic.test.ts +1 -1
- package/src/proxy/services/openai.test.ts +1 -1
- package/src/proxy/services/stripe.test.ts +1 -1
- package/src/server/Mppx.authorize.test.ts +1 -1
- package/src/server/Mppx.test-d.ts +55 -1
- package/src/server/Mppx.test.ts +220 -9
- package/src/server/Mppx.ts +501 -407
- package/src/server/Response.ts +2 -1
- package/src/server/Transport.test.ts +6 -6
- package/src/server/Transport.ts +5 -4
- package/src/server/index.ts +1 -0
- package/src/stripe/Charge.integration.test.ts +1 -1
- package/src/stripe/client/Charge.test.ts +21 -6
- package/src/stripe/client/Charge.ts +6 -2
- package/src/stripe/server/Charge.test.ts +115 -2
- package/src/stripe/server/Charge.ts +13 -2
- package/src/stripe/server/internal/html/package.json +1 -1
- package/src/stripe/server/internal/html.gen.ts +1 -1
- package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
- package/src/tempo/Methods.test.ts +45 -17
- package/src/tempo/Methods.ts +22 -0
- package/src/tempo/Proof.conformance.test.ts +146 -0
- package/src/tempo/Proof.test-d.ts +15 -0
- package/src/tempo/Proof.ts +52 -1
- package/src/tempo/PublicExports.test-d.ts +105 -0
- package/src/tempo/Subscription.integration.test.ts +1 -1
- package/src/tempo/client/Charge.test.ts +258 -0
- package/src/tempo/client/Charge.ts +84 -38
- package/src/tempo/client/Methods.ts +22 -8
- package/src/tempo/client/ResolveAccount.ts +46 -0
- package/src/tempo/client/index.ts +15 -4
- package/src/tempo/index.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +296 -17
- package/src/tempo/internal/fee-payer.ts +186 -4
- package/src/tempo/internal/fee-token.test.ts +14 -9
- package/src/tempo/internal/proof.test.ts +12 -4
- package/src/tempo/internal/proof.ts +55 -6
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
- package/src/tempo/legacy/README.md +9 -0
- package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
- package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
- package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
- package/src/tempo/{client → legacy/client}/Session.ts +25 -11
- package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
- package/src/tempo/{client → legacy/client}/SessionManager.ts +52 -23
- package/src/tempo/legacy/client/index.ts +6 -0
- package/src/tempo/legacy/index.ts +6 -0
- package/src/tempo/{server → legacy/server}/Session.test.ts +136 -71
- package/src/tempo/{server → legacy/server}/Session.ts +32 -23
- package/src/tempo/legacy/server/index.ts +4 -0
- package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
- package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
- package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
- package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
- package/src/tempo/legacy/session/ChannelStore.ts +39 -0
- package/src/tempo/legacy/session/Types.ts +91 -0
- package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
- package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
- package/src/tempo/legacy/session/index.ts +8 -0
- package/src/tempo/server/AtomicStore.test-d.ts +16 -11
- package/src/tempo/server/Charge.test.ts +480 -31
- package/src/tempo/server/Charge.ts +54 -30
- package/src/tempo/server/Methods.ts +58 -10
- package/src/tempo/server/Sse.test.ts +2 -2
- package/src/tempo/server/Subscription.test.ts +465 -3
- package/src/tempo/server/Subscription.ts +174 -19
- package/src/tempo/server/index.ts +6 -5
- package/src/tempo/server/internal/html/package.json +2 -2
- package/src/tempo/server/internal/html.gen.ts +1 -1
- package/src/tempo/server/internal/request-body.test.ts +37 -4
- package/src/tempo/server/internal/request-body.ts +25 -6
- package/src/tempo/server/internal/transport.test.ts +4 -4
- package/src/tempo/server/internal/transport.ts +19 -10
- package/src/tempo/session/Snapshot.test.ts +41 -0
- package/src/tempo/session/Snapshot.ts +74 -0
- package/src/tempo/session/client/ChannelOps.test.ts +163 -0
- package/src/tempo/session/client/ChannelOps.ts +330 -0
- package/src/tempo/session/client/ChannelStore.ts +111 -0
- package/src/tempo/session/client/CredentialState.test.ts +789 -0
- package/src/tempo/session/client/CredentialState.ts +799 -0
- package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
- package/src/tempo/session/client/Runtime.test.ts +1092 -0
- package/src/tempo/session/client/Runtime.ts +986 -0
- package/src/tempo/session/client/Session.test.ts +774 -0
- package/src/tempo/session/client/Session.ts +123 -0
- package/src/tempo/session/client/SessionManager.test.ts +1397 -0
- package/src/tempo/session/client/SessionManager.ts +751 -0
- package/src/tempo/session/client/Transports.test.ts +837 -0
- package/src/tempo/session/client/Transports.ts +1292 -0
- package/src/tempo/session/client/index.ts +40 -0
- package/src/tempo/session/index.ts +7 -8
- package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
- package/src/tempo/session/precompile/Chain.test.ts +1258 -0
- package/src/tempo/session/precompile/Chain.ts +979 -0
- package/src/tempo/session/precompile/Channel.test.ts +138 -0
- package/src/tempo/session/precompile/Channel.ts +103 -0
- package/src/tempo/session/precompile/Protocol.test.ts +358 -0
- package/src/tempo/session/precompile/Protocol.ts +520 -0
- package/src/tempo/session/precompile/Voucher.test.ts +354 -0
- package/src/tempo/session/precompile/Voucher.ts +162 -0
- package/src/tempo/session/precompile/escrow.abi.ts +226 -0
- package/src/tempo/session/precompile/index.ts +33 -0
- package/src/tempo/session/server/ChannelOps.test.ts +129 -0
- package/src/tempo/session/server/ChannelOps.ts +157 -0
- package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
- package/src/tempo/session/server/ChannelStore.ts +835 -0
- package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
- package/src/tempo/session/server/CredentialVerification.ts +710 -0
- package/src/tempo/session/server/MeteredStream.ts +88 -0
- package/src/tempo/session/server/RequestState.test.ts +531 -0
- package/src/tempo/session/server/RequestState.ts +499 -0
- package/src/tempo/session/server/Session.integration.test.ts +444 -0
- package/src/tempo/session/server/Session.test.ts +3253 -0
- package/src/tempo/session/server/Session.ts +543 -0
- package/src/tempo/session/server/Settlement.test.ts +329 -0
- package/src/tempo/session/server/Settlement.ts +471 -0
- package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
- package/src/tempo/session/server/Sse.ts +254 -0
- package/src/tempo/session/server/Transports.test.ts +346 -0
- package/src/tempo/session/server/Transports.ts +255 -0
- package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
- package/src/tempo/session/server/Ws.ts +380 -0
- package/src/tempo/session/server/index.ts +8 -0
- package/src/tempo/subscription/Store.ts +27 -9
- package/src/x402/Exact.e2e.test.ts +1 -1
- package/src/x402/PublicInterface.test-d.ts +1 -1
- package/src/x402/index.ts +1 -0
- package/dist/mcp-sdk/client/McpClient.d.ts +0 -78
- package/dist/mcp-sdk/client/McpClient.d.ts.map +0 -1
- package/dist/mcp-sdk/client/McpClient.js +0 -105
- package/dist/mcp-sdk/client/McpClient.js.map +0 -1
- package/dist/mcp-sdk/client/index.d.ts.map +0 -1
- package/dist/mcp-sdk/client/index.js.map +0 -1
- package/dist/mcp-sdk/server/Transport.d.ts.map +0 -1
- package/dist/mcp-sdk/server/Transport.js.map +0 -1
- package/dist/mcp-sdk/server/index.d.ts.map +0 -1
- package/dist/mcp-sdk/server/index.js.map +0 -1
- package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/client/ChannelOps.js.map +0 -1
- package/dist/tempo/client/Session.d.ts.map +0 -1
- package/dist/tempo/client/Session.js.map +0 -1
- package/dist/tempo/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/client/SessionManager.js.map +0 -1
- package/dist/tempo/server/Session.d.ts.map +0 -1
- package/dist/tempo/server/Session.js.map +0 -1
- package/dist/tempo/session/Chain.d.ts.map +0 -1
- package/dist/tempo/session/Chain.js.map +0 -1
- package/dist/tempo/session/Channel.d.ts.map +0 -1
- package/dist/tempo/session/Channel.js.map +0 -1
- package/dist/tempo/session/ChannelStore.d.ts +0 -117
- package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/ChannelStore.js +0 -172
- package/dist/tempo/session/ChannelStore.js.map +0 -1
- package/dist/tempo/session/Receipt.d.ts +0 -22
- package/dist/tempo/session/Receipt.d.ts.map +0 -1
- package/dist/tempo/session/Receipt.js +0 -34
- package/dist/tempo/session/Receipt.js.map +0 -1
- package/dist/tempo/session/Sse.d.ts.map +0 -1
- package/dist/tempo/session/Sse.js +0 -363
- package/dist/tempo/session/Sse.js.map +0 -1
- package/dist/tempo/session/Types.d.ts +0 -78
- package/dist/tempo/session/Types.d.ts.map +0 -1
- package/dist/tempo/session/Types.js.map +0 -1
- package/dist/tempo/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/Voucher.js.map +0 -1
- package/dist/tempo/session/Ws.d.ts +0 -87
- package/dist/tempo/session/Ws.d.ts.map +0 -1
- package/dist/tempo/session/Ws.js +0 -443
- package/dist/tempo/session/Ws.js.map +0 -1
- package/dist/tempo/session/escrow.abi.js.map +0 -1
- package/src/mcp-sdk/client/McpClient.ts +0 -196
- package/src/tempo/session/ChannelStore.ts +0 -308
- package/src/tempo/session/Receipt.test.ts +0 -89
- package/src/tempo/session/Receipt.ts +0 -46
- package/src/tempo/session/Sse.ts +0 -462
- package/src/tempo/session/Types.ts +0 -86
- package/src/tempo/session/Ws.ts +0 -576
- /package/dist/{mcp-sdk → mcp}/client/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/client/index.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
- /package/src/{mcp-sdk → mcp}/client/index.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.test.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/index.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
- /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { session as sessionLegacy_, settle as settleLegacy_ } from '../legacy/server/index.js';
|
|
2
|
+
import { charge as sessionCharge_, session as session_, settle as settle_, settleBatch as settleBatch_ } from '../session/server/Session.js';
|
|
3
|
+
import * as Ws_ from '../session/server/Ws.js';
|
|
2
4
|
import { charge as charge_ } from './Charge.js';
|
|
3
|
-
import { session as session_, settle as settle_ } from './Session.js';
|
|
4
5
|
import { renew as renewSubscription_, subscription as subscription_ } from './Subscription.js';
|
|
6
|
+
declare function createSessionLegacyMethod<const parameters extends NonNullable<Parameters<typeof sessionLegacy_>[0]>>(parameters?: parameters): never;
|
|
7
|
+
/** Creates a legacy contract-backed Tempo `session` server method. */
|
|
8
|
+
export declare const sessionLegacy: typeof createSessionLegacyMethod & {
|
|
9
|
+
settle: typeof settleLegacy_;
|
|
10
|
+
Ws: typeof Ws_;
|
|
11
|
+
};
|
|
12
|
+
/** Settles a legacy contract-backed Tempo session channel. */
|
|
13
|
+
export declare const settleLegacy: typeof settleLegacy_;
|
|
5
14
|
/**
|
|
6
|
-
* Creates
|
|
15
|
+
* Creates the common Tempo `charge` and `session` methods from shared parameters.
|
|
7
16
|
*
|
|
8
17
|
* @example
|
|
9
18
|
* ```ts
|
|
10
19
|
* import { Mppx, tempo } from 'mppx/server'
|
|
11
20
|
*
|
|
12
21
|
* const mppx = Mppx.create({
|
|
13
|
-
* methods: [tempo({ currency: '0x...', recipient: '0x...' })],
|
|
22
|
+
* methods: [tempo.common({ currency: '0x...', recipient: '0x...' })],
|
|
14
23
|
* })
|
|
15
24
|
* ```
|
|
16
25
|
*/
|
|
@@ -84,7 +93,15 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
|
|
|
84
93
|
supportedModes?: ("push" | "pull")[] | undefined;
|
|
85
94
|
}>>;
|
|
86
95
|
};
|
|
87
|
-
},
|
|
96
|
+
}, charge_.DeriveDefaults<{
|
|
97
|
+
html?: boolean | import("../../Html.js").Config | undefined;
|
|
98
|
+
feePayerPolicy?: charge_.FeePayerPolicy | undefined;
|
|
99
|
+
testnet?: boolean | undefined;
|
|
100
|
+
store?: import("../../Store.js").AtomicStore | undefined;
|
|
101
|
+
validateSender?: charge_.ValidateSender | undefined;
|
|
102
|
+
storeKeyPrefix?: string | undefined;
|
|
103
|
+
waitForConfirmation?: boolean | undefined;
|
|
104
|
+
} & import("../../viem/Client.js").getResolver.Parameters & import("../internal/account.js").resolve.Parameters & charge_.Defaults>, undefined, {}, undefined>, import("../../Method.js").Server<{
|
|
88
105
|
readonly name: "tempo";
|
|
89
106
|
readonly intent: "session";
|
|
90
107
|
readonly schema: {
|
|
@@ -94,6 +111,7 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
|
|
|
94
111
|
authorizedSigner: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
95
112
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
96
113
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
114
|
+
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
|
|
97
115
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
98
116
|
transaction: import("zod/mini").ZodMiniString<string>;
|
|
99
117
|
type: import("zod/mini").ZodMiniLiteral<"transaction">;
|
|
@@ -101,17 +119,20 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
|
|
|
101
119
|
action: import("zod/mini").ZodMiniLiteral<"topUp">;
|
|
102
120
|
additionalDeposit: import("zod/mini").ZodMiniString<string>;
|
|
103
121
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
122
|
+
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
|
|
104
123
|
transaction: import("zod/mini").ZodMiniString<string>;
|
|
105
124
|
type: import("zod/mini").ZodMiniLiteral<"transaction">;
|
|
106
125
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
107
126
|
action: import("zod/mini").ZodMiniLiteral<"voucher">;
|
|
108
127
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
109
128
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
129
|
+
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
|
|
110
130
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
111
131
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
112
132
|
action: import("zod/mini").ZodMiniLiteral<"close">;
|
|
113
133
|
channelId: import("zod/mini").ZodMiniString<string>;
|
|
114
134
|
cumulativeAmount: import("zod/mini").ZodMiniString<string>;
|
|
135
|
+
descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
|
|
115
136
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
116
137
|
}, import("zod/v4/core").$strip>], "action">;
|
|
117
138
|
};
|
|
@@ -124,11 +145,20 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
|
|
|
124
145
|
escrowContract: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
125
146
|
feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<import("viem").Account, import("viem").Account>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
|
|
126
147
|
minVoucherDelta: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
148
|
+
operator: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
127
149
|
recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
150
|
+
sessionProtocol: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniEnum<{
|
|
151
|
+
v1: "v1";
|
|
152
|
+
v2: "v2";
|
|
153
|
+
}>>;
|
|
154
|
+
sessionSnapshot: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/Snapshot.js").SessionSnapshot, import("../session/Snapshot.js").SessionSnapshot>>;
|
|
128
155
|
suggestedDeposit: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
129
156
|
unitType: import("zod/mini").ZodMiniString<string>;
|
|
130
157
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
|
|
131
158
|
methodDetails: {
|
|
159
|
+
sessionSnapshot?: import("../session/Snapshot.js").SessionSnapshot | undefined;
|
|
160
|
+
sessionProtocol?: "v1" | "v2" | undefined;
|
|
161
|
+
operator?: string | undefined;
|
|
132
162
|
feePayer?: boolean | undefined;
|
|
133
163
|
chainId?: number | undefined;
|
|
134
164
|
minVoucherDelta?: string | undefined;
|
|
@@ -150,24 +180,53 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
|
|
|
150
180
|
escrowContract?: string | undefined;
|
|
151
181
|
feePayer?: boolean | undefined;
|
|
152
182
|
minVoucherDelta?: string | undefined;
|
|
183
|
+
operator?: string | undefined;
|
|
153
184
|
recipient?: string | undefined;
|
|
185
|
+
sessionProtocol?: "v1" | "v2" | undefined;
|
|
186
|
+
sessionSnapshot?: import("../session/Snapshot.js").SessionSnapshot | undefined;
|
|
154
187
|
suggestedDeposit?: string | undefined;
|
|
155
188
|
}>>;
|
|
156
189
|
};
|
|
157
|
-
},
|
|
190
|
+
}, session_.DeriveDefaults<{
|
|
191
|
+
channelStateTtl?: number | undefined;
|
|
192
|
+
feePayerPolicy?: session_.FeePayerPolicy | undefined;
|
|
193
|
+
minVoucherDelta?: string | undefined;
|
|
194
|
+
resolveChannelId?: import("../session/server/RequestState.js").ResolveSessionChannelId | undefined;
|
|
195
|
+
bootstrap?: boolean | undefined;
|
|
196
|
+
store?: import("../../Store.js").AtomicStore | undefined;
|
|
197
|
+
sse?: boolean | import("./internal/transport.js").sse.Options | undefined;
|
|
198
|
+
chainId?: number | undefined;
|
|
199
|
+
escrowContract?: import("viem").Address | undefined;
|
|
200
|
+
settlementSchedule?: import("../session/server/Settlement.js").SettlementSchedule | undefined;
|
|
201
|
+
feeToken?: import("viem").Address | undefined;
|
|
202
|
+
} & import("../internal/account.js").resolve.Parameters & import("../../viem/Client.js").getResolver.Parameters & session_.Defaults>, import("./internal/transport.js").Sse, {}, undefined>];
|
|
158
203
|
export declare namespace tempo {
|
|
159
204
|
type Parameters = charge_.Parameters & session_.Parameters;
|
|
160
205
|
/** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
|
|
161
206
|
const charge: typeof charge_;
|
|
162
|
-
/** Creates
|
|
163
|
-
const
|
|
207
|
+
/** Creates the common Tempo `charge` and `session` methods from shared parameters. */
|
|
208
|
+
const common: typeof tempo;
|
|
209
|
+
/** Creates a TIP-1034 Tempo `session` method for session-based TIP-20 token payments. */
|
|
210
|
+
const session: typeof session_ & {
|
|
211
|
+
charge: typeof sessionCharge_;
|
|
212
|
+
settle: typeof settle_;
|
|
213
|
+
settleBatch: typeof settleBatch_;
|
|
214
|
+
};
|
|
215
|
+
/** @deprecated Use `tempo.session()` for the TIP-1034 session server method. */
|
|
216
|
+
const sessionLegacy: typeof createSessionLegacyMethod & {
|
|
217
|
+
settle: typeof settleLegacy_;
|
|
218
|
+
Ws: typeof Ws_;
|
|
219
|
+
};
|
|
164
220
|
/** Creates a Tempo `subscription` method for recurring TIP-20 token payments. */
|
|
165
221
|
const subscription: typeof subscription_;
|
|
166
222
|
/** Renews an overdue Tempo subscription outside of the HTTP request path. */
|
|
167
223
|
const renewSubscription: typeof renewSubscription_;
|
|
168
224
|
/** One-shot settle: reads highest voucher from storage and submits on-chain. */
|
|
169
225
|
const settle: typeof settle_;
|
|
226
|
+
/** Batch-settle precompile-backed session channels. */
|
|
227
|
+
const settleBatch: typeof settleBatch_;
|
|
170
228
|
/** Experimental websocket helpers for Tempo sessions. */
|
|
171
229
|
const Ws: typeof Ws_;
|
|
172
230
|
}
|
|
231
|
+
export {};
|
|
173
232
|
//# sourceMappingURL=Methods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,MAAM,IAAI,cAAc,EACxB,OAAO,IAAI,QAAQ,EACnB,MAAM,IAAI,OAAO,EACjB,WAAW,IAAI,YAAY,EAC5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ9F,iBAAS,yBAAyB,CAChC,KAAK,CAAC,UAAU,SAAS,WAAW,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1E,UAAU,CAAC,EAAE,UAAU,SAExB;AAOD,sEAAsE;AACtE,eAAO,MAAM,aAAa;;;CAAsB,CAAA;AAEhD,8DAA8D;AAC9D,eAAO,MAAM,YAAY,sBAAgB,CAAA;AAkBzC;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6LAEvF;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAEjE,2EAA2E;IACpE,MAAM,MAAM,gBAAU,CAAA;IAC7B,sFAAsF;IAC/E,MAAM,MAAM,cAAQ,CAAA;IAC3B,yFAAyF;IAClF,MAAM,OAAO;;;;KAAgB,CAAA;IACpC,gFAAgF;IACzE,MAAM,aAAa;;;KAAsB,CAAA;IAChD,iFAAiF;IAC1E,MAAM,YAAY,sBAAgB,CAAA;IACzC,6EAA6E;IACtE,MAAM,iBAAiB,2BAAqB,CAAA;IACnD,gFAAgF;IACzE,MAAM,MAAM,gBAAU,CAAA;IAC7B,uDAAuD;IAChD,MAAM,WAAW,qBAAe,CAAA;IACvC,yDAAyD;IAClD,MAAM,EAAE,YAAM,CAAA;CACtB"}
|
|
@@ -1,36 +1,66 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { session as sessionLegacy_, settle as settleLegacy_ } from '../legacy/server/index.js';
|
|
2
|
+
import { charge as sessionCharge_, session as session_, settle as settle_, settleBatch as settleBatch_, } from '../session/server/Session.js';
|
|
3
|
+
import * as Ws_ from '../session/server/Ws.js';
|
|
2
4
|
import { charge as charge_ } from './Charge.js';
|
|
3
|
-
import { session as session_, settle as settle_ } from './Session.js';
|
|
4
5
|
import { renew as renewSubscription_, subscription as subscription_ } from './Subscription.js';
|
|
6
|
+
const sessionServer = Object.assign(session_, {
|
|
7
|
+
charge: sessionCharge_,
|
|
8
|
+
settle: settle_,
|
|
9
|
+
settleBatch: settleBatch_,
|
|
10
|
+
});
|
|
11
|
+
function createSessionLegacyMethod(parameters) {
|
|
12
|
+
return Object.assign(sessionLegacy_(parameters), { alias: 'sessionLegacy' });
|
|
13
|
+
}
|
|
14
|
+
const sessionLegacyServer = Object.assign(createSessionLegacyMethod, {
|
|
15
|
+
settle: settleLegacy_,
|
|
16
|
+
Ws: Ws_,
|
|
17
|
+
});
|
|
18
|
+
/** Creates a legacy contract-backed Tempo `session` server method. */
|
|
19
|
+
export const sessionLegacy = sessionLegacyServer;
|
|
20
|
+
/** Settles a legacy contract-backed Tempo session channel. */
|
|
21
|
+
export const settleLegacy = settleLegacy_;
|
|
22
|
+
function createChargeMethod(parameters) {
|
|
23
|
+
// `tempo()` accepts the intersection of charge/session parameters, then
|
|
24
|
+
// forwards only the fields each method understands. Keep the generic bridge
|
|
25
|
+
// out of the public control-flow body.
|
|
26
|
+
return tempo.charge(parameters);
|
|
27
|
+
}
|
|
28
|
+
function createSessionMethod(parameters) {
|
|
29
|
+
// See `createChargeMethod()`: session receives the same shared parameter bag.
|
|
30
|
+
return sessionServer(parameters);
|
|
31
|
+
}
|
|
5
32
|
/**
|
|
6
|
-
* Creates
|
|
33
|
+
* Creates the common Tempo `charge` and `session` methods from shared parameters.
|
|
7
34
|
*
|
|
8
35
|
* @example
|
|
9
36
|
* ```ts
|
|
10
37
|
* import { Mppx, tempo } from 'mppx/server'
|
|
11
38
|
*
|
|
12
39
|
* const mppx = Mppx.create({
|
|
13
|
-
* methods: [tempo({ currency: '0x...', recipient: '0x...' })],
|
|
40
|
+
* methods: [tempo.common({ currency: '0x...', recipient: '0x...' })],
|
|
14
41
|
* })
|
|
15
42
|
* ```
|
|
16
43
|
*/
|
|
17
44
|
export function tempo(parameters) {
|
|
18
|
-
return [
|
|
19
|
-
tempo.charge(parameters),
|
|
20
|
-
tempo.session(parameters),
|
|
21
|
-
];
|
|
45
|
+
return [createChargeMethod(parameters), createSessionMethod(parameters)];
|
|
22
46
|
}
|
|
23
47
|
(function (tempo) {
|
|
24
48
|
/** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
|
|
25
49
|
tempo.charge = charge_;
|
|
26
|
-
/** Creates
|
|
27
|
-
tempo.
|
|
50
|
+
/** Creates the common Tempo `charge` and `session` methods from shared parameters. */
|
|
51
|
+
tempo.common = tempo;
|
|
52
|
+
/** Creates a TIP-1034 Tempo `session` method for session-based TIP-20 token payments. */
|
|
53
|
+
tempo.session = sessionServer;
|
|
54
|
+
/** @deprecated Use `tempo.session()` for the TIP-1034 session server method. */
|
|
55
|
+
tempo.sessionLegacy = sessionLegacyServer;
|
|
28
56
|
/** Creates a Tempo `subscription` method for recurring TIP-20 token payments. */
|
|
29
57
|
tempo.subscription = subscription_;
|
|
30
58
|
/** Renews an overdue Tempo subscription outside of the HTTP request path. */
|
|
31
59
|
tempo.renewSubscription = renewSubscription_;
|
|
32
60
|
/** One-shot settle: reads highest voucher from storage and submits on-chain. */
|
|
33
61
|
tempo.settle = settle_;
|
|
62
|
+
/** Batch-settle precompile-backed session channels. */
|
|
63
|
+
tempo.settleBatch = settleBatch_;
|
|
34
64
|
/** Experimental websocket helpers for Tempo sessions. */
|
|
35
65
|
tempo.Ws = Ws_;
|
|
36
66
|
})(tempo || (tempo = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,MAAM,IAAI,cAAc,EACxB,OAAO,IAAI,QAAQ,EACnB,MAAM,IAAI,OAAO,EACjB,WAAW,IAAI,YAAY,GAC5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE9F,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,YAAY;CAC1B,CAAC,CAAA;AAEF,SAAS,yBAAyB,CAEhC,UAAuB;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,eAAwB,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE;IACnE,MAAM,EAAE,aAAa;IACrB,EAAE,EAAE,GAAG;CACR,CAAC,CAAA;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAEhD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAA;AAEzC,SAAS,kBAAkB,CACzB,UAAkC;IAElC,wEAAwE;IACxE,4EAA4E;IAC5E,uCAAuC;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAgC,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAkC;IAElC,8EAA8E;IAC9E,OAAO,aAAa,CAAC,UAAiC,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAA4C,UAAuB;IACtF,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAU,CAAA;AACnF,CAAC;AAED,WAAiB,KAAK;IAGpB,2EAA2E;IAC9D,YAAM,GAAG,OAAO,CAAA;IAC7B,sFAAsF;IACzE,YAAM,GAAG,KAAK,CAAA;IAC3B,yFAAyF;IAC5E,aAAO,GAAG,aAAa,CAAA;IACpC,gFAAgF;IACnE,mBAAa,GAAG,mBAAmB,CAAA;IAChD,iFAAiF;IACpE,kBAAY,GAAG,aAAa,CAAA;IACzC,6EAA6E;IAChE,uBAAiB,GAAG,kBAAkB,CAAA;IACnD,gFAAgF;IACnE,YAAM,GAAG,OAAO,CAAA;IAC7B,uDAAuD;IAC1C,iBAAW,GAAG,YAAY,CAAA;IACvC,yDAAyD;IAC5C,QAAE,GAAG,GAAG,CAAA;AACvB,CAAC,EArBgB,KAAK,KAAL,KAAK,QAqBrB"}
|
|
@@ -102,7 +102,7 @@ export declare function subscription<const parameters extends subscription.Param
|
|
|
102
102
|
} | undefined;
|
|
103
103
|
}>>;
|
|
104
104
|
};
|
|
105
|
-
}, subscription.DeriveDefaults<parameters>, undefined, subscription.Extensions>;
|
|
105
|
+
}, subscription.DeriveDefaults<parameters>, undefined, subscription.Extensions, undefined>;
|
|
106
106
|
/**
|
|
107
107
|
* Renews an overdue subscription outside of the HTTP request path.
|
|
108
108
|
* Intended for cron jobs or background workers that bill subscriptions on a schedule.
|
|
@@ -181,6 +181,11 @@ export declare namespace subscription {
|
|
|
181
181
|
* Keeps concurrent renewal safe while allowing recovery from abandoned attempts.
|
|
182
182
|
*/
|
|
183
183
|
renewalTimeoutMs?: number | undefined;
|
|
184
|
+
/**
|
|
185
|
+
* Requires a fresh subscription Credential even when a subscription is active.
|
|
186
|
+
* This binds access reuse to the stored payer instead of trusting request metadata alone.
|
|
187
|
+
*/
|
|
188
|
+
requireCredential?: boolean | undefined;
|
|
184
189
|
/**
|
|
185
190
|
* Override the fee-payer policy for sponsored subscription payments.
|
|
186
191
|
* Useful when the access key + key authorization tx requires more gas
|
|
@@ -223,6 +228,11 @@ export declare namespace subscription {
|
|
|
223
228
|
resolve: (parameters: {
|
|
224
229
|
input: Request;
|
|
225
230
|
request: SubscriptionRequest;
|
|
231
|
+
/** Verified payer identity recovered from a signed subscription credential. */
|
|
232
|
+
source?: {
|
|
233
|
+
address: Address;
|
|
234
|
+
chainId: number;
|
|
235
|
+
} | undefined;
|
|
226
236
|
}) => MaybePromise<ResolvedSubscription | null>;
|
|
227
237
|
renew?: (parameters: {
|
|
228
238
|
/** Stable idempotency/reconciliation reference persisted before the renewal hook runs. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Subscription.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Subscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Base64 } from 'ox';
|
|
2
2
|
import { KeyAuthorization } from 'ox/tempo';
|
|
3
|
-
import { encodeFunctionData, isAddressEqual } from 'viem';
|
|
3
|
+
import { encodeFunctionData, isAddressEqual, parseEventLogs, } from 'viem';
|
|
4
4
|
import { call as viem_call, prepareTransactionRequest, sendRawTransaction, sendRawTransactionSync, signTransaction, } from 'viem/actions';
|
|
5
5
|
import { Abis, Account as TempoAccount, Transaction } from 'viem/tempo';
|
|
6
6
|
import { tempo as tempo_chain } from 'viem/tempo/chains';
|
|
@@ -64,6 +64,8 @@ export function subscription(p) {
|
|
|
64
64
|
}),
|
|
65
65
|
},
|
|
66
66
|
async authorize({ input, request }) {
|
|
67
|
+
if (parameters.requireCredential)
|
|
68
|
+
return undefined;
|
|
67
69
|
const resolved = await parameters.resolve({ input, request });
|
|
68
70
|
if (!resolved)
|
|
69
71
|
return undefined;
|
|
@@ -132,15 +134,19 @@ export function subscription(p) {
|
|
|
132
134
|
const input = requestFromCaptured(capturedRequest);
|
|
133
135
|
const resolved = await parameters.resolve({ input, request: parsedRequest });
|
|
134
136
|
const existing = resolved ? await store.getByKey(resolved.key) : null;
|
|
135
|
-
const accessKey =
|
|
136
|
-
?
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
const accessKey = !credential
|
|
138
|
+
? resolved
|
|
139
|
+
? await resolveChallengeAccessKey({
|
|
140
|
+
existing,
|
|
141
|
+
input,
|
|
142
|
+
parameters,
|
|
143
|
+
request: parsedRequest,
|
|
144
|
+
resolved,
|
|
145
|
+
store,
|
|
146
|
+
})
|
|
147
|
+
: parameters.requireCredential && !parameters.activate
|
|
148
|
+
? await createUnboundChallengeAccessKey({ store })
|
|
149
|
+
: undefined
|
|
144
150
|
: (credentialRequest?.methodDetails?.accessKey ?? parsedRequest.methodDetails?.accessKey);
|
|
145
151
|
if (!accessKey) {
|
|
146
152
|
throw new VerificationFailedError({ reason: 'subscription accessKey is missing' });
|
|
@@ -164,14 +170,16 @@ export function subscription(p) {
|
|
|
164
170
|
challengeExpires: credential.challenge.expires,
|
|
165
171
|
request: parsedRequest,
|
|
166
172
|
});
|
|
167
|
-
const resolved = await parameters.resolve({ input, request: parsedRequest });
|
|
168
|
-
if (!resolved) {
|
|
169
|
-
throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
|
|
170
|
-
}
|
|
171
173
|
const challengeRequest = credential.challenge.request;
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
174
|
+
let resolved = null;
|
|
175
|
+
let accessKey = challengeRequest.methodDetails?.accessKey ?? parsedRequest.methodDetails?.accessKey;
|
|
176
|
+
if (!accessKey) {
|
|
177
|
+
resolved = await parameters.resolve({ input, request: parsedRequest });
|
|
178
|
+
if (!resolved) {
|
|
179
|
+
throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
|
|
180
|
+
}
|
|
181
|
+
accessKey = await resolveAccessKey({ input, parameters, request: parsedRequest, resolved });
|
|
182
|
+
}
|
|
175
183
|
if (!accessKey) {
|
|
176
184
|
throw new VerificationFailedError({ reason: 'subscription accessKey is missing' });
|
|
177
185
|
}
|
|
@@ -189,9 +197,17 @@ export function subscription(p) {
|
|
|
189
197
|
reason: 'credential source does not match signature',
|
|
190
198
|
});
|
|
191
199
|
}
|
|
200
|
+
resolved =
|
|
201
|
+
(await parameters.resolve({ input, request: parsedRequest, source: verified.source })) ??
|
|
202
|
+
resolved;
|
|
203
|
+
if (!resolved) {
|
|
204
|
+
throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
|
|
205
|
+
}
|
|
192
206
|
const activation = await store.activate({
|
|
193
207
|
challengeId: credential.challenge.id,
|
|
194
|
-
isReusable: (subscription) =>
|
|
208
|
+
isReusable: (subscription) => parameters.requireCredential
|
|
209
|
+
? isActiveSubscriptionForRequest(subscription, parsedRequest)
|
|
210
|
+
: isReusableSubscription(subscription, parsedRequest),
|
|
195
211
|
lookupKey: resolved.key,
|
|
196
212
|
async create() {
|
|
197
213
|
const activation = withSubscriptionAccessKey(await activateSubscription({
|
|
@@ -235,7 +251,46 @@ export function subscription(p) {
|
|
|
235
251
|
throw new VerificationFailedError({ reason: 'subscription activation claim mismatch' });
|
|
236
252
|
}
|
|
237
253
|
if (activation.status === 'existing') {
|
|
238
|
-
|
|
254
|
+
const subscription = activation.subscription;
|
|
255
|
+
assertSubscriptionPayer(subscription, verified.source, {
|
|
256
|
+
required: parameters.requireCredential,
|
|
257
|
+
});
|
|
258
|
+
const periodIndex = getPeriodIndex(subscription);
|
|
259
|
+
if (periodIndex > subscription.lastChargedPeriod) {
|
|
260
|
+
const renew = resolveRenewalHandler({
|
|
261
|
+
feePayer,
|
|
262
|
+
feePayerPolicy,
|
|
263
|
+
getClient,
|
|
264
|
+
parameters,
|
|
265
|
+
store,
|
|
266
|
+
subscription,
|
|
267
|
+
waitForConfirmation,
|
|
268
|
+
});
|
|
269
|
+
if (!renew) {
|
|
270
|
+
throw new VerificationFailedError({ reason: 'subscription renewal is required' });
|
|
271
|
+
}
|
|
272
|
+
const renewal = await settleRenewal({
|
|
273
|
+
expectedLookupKey: resolved.key,
|
|
274
|
+
periodIndex,
|
|
275
|
+
renew,
|
|
276
|
+
request: parsedRequest,
|
|
277
|
+
store,
|
|
278
|
+
subscription,
|
|
279
|
+
});
|
|
280
|
+
if (!renewal) {
|
|
281
|
+
throw new VerificationFailedError({ reason: 'subscription renewal failed' });
|
|
282
|
+
}
|
|
283
|
+
if (renewal.status === 'charged' || renewal.status === 'inFlight') {
|
|
284
|
+
return renewal.receipt;
|
|
285
|
+
}
|
|
286
|
+
await parameters.hooks?.renewed?.({
|
|
287
|
+
periodIndex,
|
|
288
|
+
receipt: renewal.result.receipt,
|
|
289
|
+
subscription: renewal.result.subscription,
|
|
290
|
+
});
|
|
291
|
+
return renewal.result.receipt;
|
|
292
|
+
}
|
|
293
|
+
return SubscriptionReceipt.fromRecord(subscription);
|
|
239
294
|
}
|
|
240
295
|
await parameters.hooks?.activated?.({
|
|
241
296
|
receipt: activation.result.receipt,
|
|
@@ -285,6 +340,13 @@ async function resolveChallengeAccessKey(parameters) {
|
|
|
285
340
|
return ((await resolveAccessKey({ input, parameters: subscriptionParameters, request, resolved })) ??
|
|
286
341
|
(existing && isActive(existing) ? existing.accessKey : undefined));
|
|
287
342
|
}
|
|
343
|
+
async function createUnboundChallengeAccessKey(parameters) {
|
|
344
|
+
const accessKey = await parameters.store.getOrCreateAccessKey(`challenge:${createSubscriptionId()}`);
|
|
345
|
+
return {
|
|
346
|
+
accessKeyAddress: accessKey.accessKeyAddress,
|
|
347
|
+
keyType: accessKey.keyType,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
288
350
|
async function activateSubscription(parameters) {
|
|
289
351
|
const { accessKey, auto, credential, input, parameters: subscriptionParameters, request, resolved, source, } = parameters;
|
|
290
352
|
if (subscriptionParameters.activate) {
|
|
@@ -414,16 +476,30 @@ function isActive(subscription) {
|
|
|
414
476
|
return false;
|
|
415
477
|
return new Date(subscription.subscriptionExpires).getTime() > Date.now();
|
|
416
478
|
}
|
|
479
|
+
function isActiveSubscriptionForRequest(subscription, request) {
|
|
480
|
+
return isActive(subscription) && subscriptionMatchesRequest(subscription, request);
|
|
481
|
+
}
|
|
417
482
|
function isReusableSubscription(subscription, request) {
|
|
418
|
-
return (
|
|
419
|
-
getPeriodIndex(subscription) <= subscription.lastChargedPeriod
|
|
420
|
-
subscriptionMatchesRequest(subscription, request));
|
|
483
|
+
return (isActiveSubscriptionForRequest(subscription, request) &&
|
|
484
|
+
getPeriodIndex(subscription) <= subscription.lastChargedPeriod);
|
|
421
485
|
}
|
|
422
486
|
function subscriptionMatchesRequest(subscription, request) {
|
|
423
487
|
const actual = comparableSubscriptionBinding(subscription);
|
|
424
488
|
const expected = comparableSubscriptionBinding(request);
|
|
425
489
|
return Object.keys(expected).every((key) => actual[key] === expected[key]);
|
|
426
490
|
}
|
|
491
|
+
function assertSubscriptionPayer(subscription, source, options) {
|
|
492
|
+
if (!subscription.payer) {
|
|
493
|
+
if (options?.required) {
|
|
494
|
+
throw new VerificationFailedError({ reason: 'subscription payer is missing' });
|
|
495
|
+
}
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
if (subscription.payer.chainId !== source.chainId ||
|
|
499
|
+
!isAddressEqual(subscription.payer.address, source.address)) {
|
|
500
|
+
throw new VerificationFailedError({ reason: 'subscription payer mismatch' });
|
|
501
|
+
}
|
|
502
|
+
}
|
|
427
503
|
function comparableSubscriptionBinding(value) {
|
|
428
504
|
const chainId = 'chainId' in value ? value.chainId : value.methodDetails?.chainId;
|
|
429
505
|
return {
|
|
@@ -558,7 +634,8 @@ function resolveRenewalHandler(parameters) {
|
|
|
558
634
|
}
|
|
559
635
|
async function submitSubscriptionPayment(parameters) {
|
|
560
636
|
const { accessKey, feePayer, feePayerPolicy, getClient, keyAuthorization, lookupKey, request, settlementReference, source, store, waitForConfirmation, } = parameters;
|
|
561
|
-
const stored = await store.getAccessKey(lookupKey)
|
|
637
|
+
const stored = (await store.getAccessKey(lookupKey)) ??
|
|
638
|
+
(await store.getAccessKeyByAddress(accessKey.accessKeyAddress));
|
|
562
639
|
if (!stored) {
|
|
563
640
|
throw new VerificationFailedError({ reason: 'subscription access key is missing' });
|
|
564
641
|
}
|
|
@@ -633,6 +710,8 @@ async function submitSubscriptionPayment(parameters) {
|
|
|
633
710
|
feePayerSignature: undefined,
|
|
634
711
|
});
|
|
635
712
|
if (!waitForConfirmation) {
|
|
713
|
+
// Optimistic mode has no receipt to inspect, so it cannot detect a T6
|
|
714
|
+
// (TIP-1028) held transfer. Use `waitForConfirmation: true` for T6-safe proof.
|
|
636
715
|
return sendRawTransaction(client, {
|
|
637
716
|
serializedTransaction: serializedTransaction,
|
|
638
717
|
});
|
|
@@ -645,8 +724,41 @@ async function submitSubscriptionPayment(parameters) {
|
|
|
645
724
|
reason: `subscription transaction reverted: ${receipt.transactionHash}`,
|
|
646
725
|
});
|
|
647
726
|
}
|
|
727
|
+
assertSubscriptionTransfer(receipt, {
|
|
728
|
+
amount: BigInt(request.amount),
|
|
729
|
+
currency: request.currency,
|
|
730
|
+
memo,
|
|
731
|
+
recipient: request.recipient,
|
|
732
|
+
});
|
|
648
733
|
return receipt.transactionHash;
|
|
649
734
|
}
|
|
735
|
+
/**
|
|
736
|
+
* Asserts a confirmed subscription payment credited the recipient.
|
|
737
|
+
*
|
|
738
|
+
* Transaction success alone is not proof: under Tempo T6 (TIP-1028) a recipient
|
|
739
|
+
* receive policy can hold the funds in `ReceivePolicyGuard` while the tx still
|
|
740
|
+
* succeeds. Settlement always emits one `transferWithMemo(recipient, amount,
|
|
741
|
+
* memo)`, so this requires a matching `TransferWithMemo` log on the expected
|
|
742
|
+
* token. A held transfer fails because its `to` is the guard, and the memo
|
|
743
|
+
* binding excludes unrelated transfer effects in the same receipt.
|
|
744
|
+
*/
|
|
745
|
+
function assertSubscriptionTransfer(receipt, parameters) {
|
|
746
|
+
const { amount, currency, memo, recipient } = parameters;
|
|
747
|
+
const credited = parseEventLogs({
|
|
748
|
+
abi: Abis.tip20,
|
|
749
|
+
eventName: 'TransferWithMemo',
|
|
750
|
+
logs: receipt.logs,
|
|
751
|
+
}).some((log) => isAddressEqual(log.address, currency) &&
|
|
752
|
+
isAddressEqual(log.args.to, recipient) &&
|
|
753
|
+
log.args.amount === amount &&
|
|
754
|
+
log.args.memo.toLowerCase() === memo.toLowerCase());
|
|
755
|
+
if (!credited) {
|
|
756
|
+
throw new VerificationFailedError({
|
|
757
|
+
reason: `subscription transfer was not credited to the recipient ` +
|
|
758
|
+
`(funds may have been held by a receive policy): ${receipt.transactionHash}`,
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
}
|
|
650
762
|
function createSubscriptionId() {
|
|
651
763
|
const bytes = new Uint8Array(18);
|
|
652
764
|
globalThis.crypto.getRandomValues(bytes);
|