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
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
} from 'viem'
|
|
21
21
|
import { tempo as tempo_chain } from 'viem/tempo/chains'
|
|
22
22
|
|
|
23
|
+
import * as Constants from '../../../Constants.js'
|
|
23
24
|
import {
|
|
24
25
|
AmountExceedsDepositError,
|
|
25
26
|
BadRequestError,
|
|
@@ -29,18 +30,25 @@ import {
|
|
|
29
30
|
InsufficientBalanceError,
|
|
30
31
|
InvalidSignatureError,
|
|
31
32
|
VerificationFailedError,
|
|
32
|
-
} from '
|
|
33
|
-
import type { Challenge, Credential } from '
|
|
34
|
-
import type { LooseOmit, NoExtraKeys } from '
|
|
35
|
-
import * as Method from '
|
|
36
|
-
import * as Store from '
|
|
37
|
-
import * as Client from '
|
|
38
|
-
import type * as z from '
|
|
39
|
-
import * as Account from '
|
|
40
|
-
import * as defaults from '
|
|
41
|
-
import * as FeePayer from '
|
|
42
|
-
import type * as types from '
|
|
43
|
-
import * as Methods from '
|
|
33
|
+
} from '../../../Errors.js'
|
|
34
|
+
import type { Challenge, Credential } from '../../../index.js'
|
|
35
|
+
import type { LooseOmit, NoExtraKeys } from '../../../internal/types.js'
|
|
36
|
+
import * as Method from '../../../Method.js'
|
|
37
|
+
import * as Store from '../../../Store.js'
|
|
38
|
+
import * as Client from '../../../viem/Client.js'
|
|
39
|
+
import type * as z from '../../../zod.js'
|
|
40
|
+
import * as Account from '../../internal/account.js'
|
|
41
|
+
import * as defaults from '../../internal/defaults.js'
|
|
42
|
+
import * as FeePayer from '../../internal/fee-payer.js'
|
|
43
|
+
import type * as types from '../../internal/types.js'
|
|
44
|
+
import * as Methods from '../../Methods.js'
|
|
45
|
+
import {
|
|
46
|
+
captureRequestBodyProbe,
|
|
47
|
+
isSessionContentRequest,
|
|
48
|
+
} from '../../server/internal/request-body.js'
|
|
49
|
+
import * as Transport from '../../server/internal/transport.js'
|
|
50
|
+
import { createSessionReceipt } from '../../session/precompile/Protocol.js'
|
|
51
|
+
import type { SessionReceipt } from '../../session/precompile/Protocol.js'
|
|
44
52
|
import {
|
|
45
53
|
broadcastOpenTransaction,
|
|
46
54
|
broadcastTopUpTransaction,
|
|
@@ -50,11 +58,8 @@ import {
|
|
|
50
58
|
settleOnChain,
|
|
51
59
|
} from '../session/Chain.js'
|
|
52
60
|
import * as ChannelStore from '../session/ChannelStore.js'
|
|
53
|
-
import {
|
|
54
|
-
import type { SessionCredentialPayload, SessionReceipt, SignedVoucher } from '../session/Types.js'
|
|
61
|
+
import type { LegacySessionCredentialPayload, LegacySignedVoucher } from '../session/Types.js'
|
|
55
62
|
import { parseVoucherFromPayload, verifyVoucher } from '../session/Voucher.js'
|
|
56
|
-
import { captureRequestBodyProbe, isSessionContentRequest } from './internal/request-body.js'
|
|
57
|
-
import * as Transport from './internal/transport.js'
|
|
58
63
|
|
|
59
64
|
/** Challenge methodDetails shape for session methods. */
|
|
60
65
|
type SessionMethodDetails = {
|
|
@@ -63,6 +68,7 @@ type SessionMethodDetails = {
|
|
|
63
68
|
channelId?: Hex | undefined
|
|
64
69
|
minVoucherDelta?: string | undefined
|
|
65
70
|
feePayer?: boolean | undefined
|
|
71
|
+
sessionProtocol?: Constants.SessionProtocol | undefined
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
/**
|
|
@@ -183,11 +189,13 @@ export function session<const parameters extends session.Parameters>(
|
|
|
183
189
|
chainId,
|
|
184
190
|
escrowContract: resolvedEscrow,
|
|
185
191
|
feePayer: resolvedFeePayer,
|
|
192
|
+
sessionProtocol: Constants.SessionProtocols.v1,
|
|
186
193
|
}
|
|
187
194
|
},
|
|
188
195
|
|
|
189
196
|
async verify({ credential, envelope, request }) {
|
|
190
|
-
const { challenge, payload } =
|
|
197
|
+
const { challenge, payload } =
|
|
198
|
+
credential as Credential.Credential<LegacySessionCredentialPayload>
|
|
191
199
|
|
|
192
200
|
const resolvedRequest = (() => {
|
|
193
201
|
const parsed = Methods.session.schema.request.safeParse(request)
|
|
@@ -315,7 +323,7 @@ export function session<const parameters extends session.Parameters>(
|
|
|
315
323
|
// during verification. Non-billable requests are treated as management
|
|
316
324
|
// updates; billable requests fall through to the application handler.
|
|
317
325
|
respond({ credential, envelope, input }) {
|
|
318
|
-
const { payload } = credential as Credential.Credential<
|
|
326
|
+
const { payload } = credential as Credential.Credential<LegacySessionCredentialPayload>
|
|
319
327
|
const request = envelope?.capturedRequest ?? captureRequestBodyProbe(input)
|
|
320
328
|
|
|
321
329
|
if (payload.action === 'close') return new Response(null, { status: 204 })
|
|
@@ -333,6 +341,7 @@ function isSseNegotiationRequest(input: Pick<Method.CapturedRequest, 'headers'>)
|
|
|
333
341
|
return input.headers.get('Accept')?.includes('text/event-stream') ?? false
|
|
334
342
|
}
|
|
335
343
|
|
|
344
|
+
/** Type helpers for the legacy contract-backed session server method. */
|
|
336
345
|
export declare namespace session {
|
|
337
346
|
type Defaults = LooseOmit<
|
|
338
347
|
Method.RequestDefaults<typeof Methods.session>,
|
|
@@ -537,7 +546,7 @@ async function verifyAndAcceptVoucher(parameters: {
|
|
|
537
546
|
challenge: Challenge.Challenge
|
|
538
547
|
channel: ChannelStore.State
|
|
539
548
|
channelId: Hex
|
|
540
|
-
voucher:
|
|
549
|
+
voucher: LegacySignedVoucher
|
|
541
550
|
onChain: OnChainChannel
|
|
542
551
|
}): Promise<SessionReceipt> {
|
|
543
552
|
const { store, minVoucherDelta, challenge, channel, channelId, voucher, onChain } = parameters
|
|
@@ -635,7 +644,7 @@ async function handleOpen(
|
|
|
635
644
|
store: ChannelStore.ChannelStore,
|
|
636
645
|
client: viem_Client,
|
|
637
646
|
challenge: Challenge.Challenge,
|
|
638
|
-
payload:
|
|
647
|
+
payload: LegacySessionCredentialPayload & { action: 'open' },
|
|
639
648
|
methodDetails: SessionMethodDetails,
|
|
640
649
|
feePayer: viem_Account | undefined,
|
|
641
650
|
isSponsored: boolean,
|
|
@@ -774,7 +783,7 @@ async function handleTopUp(
|
|
|
774
783
|
store: ChannelStore.ChannelStore,
|
|
775
784
|
client: viem_Client,
|
|
776
785
|
challenge: Challenge.Challenge,
|
|
777
|
-
payload:
|
|
786
|
+
payload: LegacySessionCredentialPayload & { action: 'topUp' },
|
|
778
787
|
methodDetails: SessionMethodDetails,
|
|
779
788
|
feePayer: viem_Account | undefined,
|
|
780
789
|
isSponsored: boolean,
|
|
@@ -824,7 +833,7 @@ async function handleVoucher(
|
|
|
824
833
|
client: viem_Client,
|
|
825
834
|
minVoucherDelta: bigint,
|
|
826
835
|
challenge: Challenge.Challenge,
|
|
827
|
-
payload:
|
|
836
|
+
payload: LegacySessionCredentialPayload & { action: 'voucher' },
|
|
828
837
|
methodDetails: SessionMethodDetails,
|
|
829
838
|
channelStateTtl: number,
|
|
830
839
|
lastOnChainVerified: Map<Hex, number>,
|
|
@@ -896,7 +905,7 @@ async function handleClose(
|
|
|
896
905
|
store: ChannelStore.ChannelStore,
|
|
897
906
|
client: viem_Client,
|
|
898
907
|
challenge: Challenge.Challenge,
|
|
899
|
-
payload:
|
|
908
|
+
payload: LegacySessionCredentialPayload & { action: 'close' },
|
|
900
909
|
methodDetails: SessionMethodDetails,
|
|
901
910
|
account?: viem_Account,
|
|
902
911
|
feePayer?: viem_Account,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import { prepareTransactionRequest, signTransaction, waitForTransactionReceipt } from 'viem/actions'
|
|
11
11
|
import { Addresses, Transaction } from 'viem/tempo'
|
|
12
12
|
import { beforeAll, describe, expect, test } from 'vp/test'
|
|
13
|
-
import {
|
|
13
|
+
import { tempoNetwork } from '~test/config.js'
|
|
14
14
|
import {
|
|
15
15
|
closeChannelOnChain,
|
|
16
16
|
deployEscrow,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
signOpenChannel,
|
|
19
19
|
signTopUpChannel,
|
|
20
20
|
topUpChannel,
|
|
21
|
-
} from '~test/tempo/session.js'
|
|
21
|
+
} from '~test/tempo/legacy/session.js'
|
|
22
22
|
import { accounts, asset, chain, client, fundAccount } from '~test/tempo/viem.js'
|
|
23
23
|
|
|
24
24
|
import {
|
|
@@ -33,9 +33,8 @@ import {
|
|
|
33
33
|
import * as Channel from './Channel.js'
|
|
34
34
|
import { signVoucher } from './Voucher.js'
|
|
35
35
|
|
|
36
|
-
const isLocalnet = nodeEnv === 'localnet'
|
|
37
|
-
|
|
38
36
|
const UINT128_MAX = 2n ** 128n - 1n
|
|
37
|
+
const isLocalnet = tempoNetwork === 'localnet'
|
|
39
38
|
|
|
40
39
|
describe('assertUint128 (via settleOnChain / closeOnChain)', () => {
|
|
41
40
|
const mockClient = { chain: { id: 42431 } } as any
|
|
@@ -20,23 +20,28 @@ import {
|
|
|
20
20
|
} from 'viem/actions'
|
|
21
21
|
import { Transaction } from 'viem/tempo'
|
|
22
22
|
|
|
23
|
-
import { BadRequestError, ChannelClosedError, VerificationFailedError } from '
|
|
24
|
-
import * as TempoAddress from '
|
|
25
|
-
import * as defaults from '
|
|
26
|
-
import * as FeePayer from '
|
|
27
|
-
import { resolveFeeToken } from '
|
|
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
28
|
import * as Channel from './Channel.js'
|
|
29
29
|
import { escrowAbi } from './escrow.abi.js'
|
|
30
|
-
import type {
|
|
30
|
+
import type { LegacySignedVoucher } from './Types.js'
|
|
31
31
|
|
|
32
32
|
export { escrowAbi }
|
|
33
33
|
|
|
34
|
+
type SenderSignedTransaction = {
|
|
35
|
+
from?: Address | undefined
|
|
36
|
+
signature?: unknown
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
/**
|
|
35
40
|
* Asserts that a deserialized transaction has an existing sender signature —
|
|
36
41
|
* required before fee payer co-signing to prevent the fee payer from becoming
|
|
37
42
|
* the sender.
|
|
38
43
|
*/
|
|
39
|
-
function assertSenderSigned(transaction:
|
|
44
|
+
function assertSenderSigned(transaction: SenderSignedTransaction): void {
|
|
40
45
|
if (!transaction.signature || !transaction.from)
|
|
41
46
|
throw new BadRequestError({
|
|
42
47
|
reason: 'Transaction must be signed by the sender before fee payer co-signing',
|
|
@@ -109,7 +114,7 @@ export type SettleOptions =
|
|
|
109
114
|
export async function settleOnChain(
|
|
110
115
|
client: Client,
|
|
111
116
|
escrowContract: Address,
|
|
112
|
-
voucher:
|
|
117
|
+
voucher: LegacySignedVoucher,
|
|
113
118
|
options?: SettleOptions,
|
|
114
119
|
): Promise<Hex> {
|
|
115
120
|
assertUint128(voucher.cumulativeAmount)
|
|
@@ -160,7 +165,7 @@ export type CloseOptions =
|
|
|
160
165
|
export async function closeOnChain(
|
|
161
166
|
client: Client,
|
|
162
167
|
escrowContract: Address,
|
|
163
|
-
voucher:
|
|
168
|
+
voucher: LegacySignedVoucher,
|
|
164
169
|
options?: CloseOptions,
|
|
165
170
|
): Promise<Hex> {
|
|
166
171
|
assertUint128(voucher.cumulativeAmount)
|
|
@@ -298,11 +303,75 @@ const erc20ApproveSelector = /*#__PURE__*/ toFunctionSelector(
|
|
|
298
303
|
'function approve(address spender, uint256 amount)',
|
|
299
304
|
)
|
|
300
305
|
|
|
306
|
+
/** Result returned after a legacy open transaction is broadcast or recovered from on-chain state. */
|
|
301
307
|
export type BroadcastResult = {
|
|
302
308
|
txHash: Hex | undefined
|
|
303
309
|
onChain: OnChainChannel
|
|
304
310
|
}
|
|
305
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
|
+
|
|
306
375
|
type TempoCall = NonNullable<ReturnType<(typeof Transaction)['deserialize']>['calls']>[number]
|
|
307
376
|
|
|
308
377
|
function assertCallHasTargetAndData(call: TempoCall): { to: Address; data: Hex } {
|
|
@@ -314,13 +383,7 @@ function assertCallHasTargetAndData(call: TempoCall): { to: Address; data: Hex }
|
|
|
314
383
|
return { to: call.to, data: call.data }
|
|
315
384
|
}
|
|
316
385
|
|
|
317
|
-
function validateSponsoredApproveCall(parameters: {
|
|
318
|
-
action: 'open' | 'topUp'
|
|
319
|
-
call: TempoCall
|
|
320
|
-
currency: Address
|
|
321
|
-
escrowContract: Address
|
|
322
|
-
expectedAmount: bigint
|
|
323
|
-
}) {
|
|
386
|
+
function validateSponsoredApproveCall(parameters: SponsoredApproveCallParameters) {
|
|
324
387
|
const { action, call, currency, escrowContract, expectedAmount } = parameters
|
|
325
388
|
const { to, data } = assertCallHasTargetAndData(call)
|
|
326
389
|
|
|
@@ -346,12 +409,7 @@ function validateSponsoredApproveCall(parameters: {
|
|
|
346
409
|
}
|
|
347
410
|
}
|
|
348
411
|
|
|
349
|
-
function validateSponsoredOpenCalls(parameters: {
|
|
350
|
-
calls: readonly TempoCall[]
|
|
351
|
-
currency: Address
|
|
352
|
-
escrowContract: Address
|
|
353
|
-
deposit: bigint
|
|
354
|
-
}) {
|
|
412
|
+
function validateSponsoredOpenCalls(parameters: SponsoredOpenCallsParameters) {
|
|
355
413
|
const { calls, currency, escrowContract, deposit } = parameters
|
|
356
414
|
|
|
357
415
|
let openCall: TempoCall | undefined
|
|
@@ -401,12 +459,7 @@ function validateSponsoredOpenCalls(parameters: {
|
|
|
401
459
|
return openCall
|
|
402
460
|
}
|
|
403
461
|
|
|
404
|
-
function validateSponsoredTopUpCalls(parameters: {
|
|
405
|
-
calls: readonly TempoCall[]
|
|
406
|
-
currency: Address
|
|
407
|
-
escrowContract: Address
|
|
408
|
-
topUpAmount: bigint
|
|
409
|
-
}) {
|
|
462
|
+
function validateSponsoredTopUpCalls(parameters: SponsoredTopUpCallsParameters) {
|
|
410
463
|
const { calls, currency, escrowContract, topUpAmount } = parameters
|
|
411
464
|
|
|
412
465
|
let topUpCall: TempoCall | undefined
|
|
@@ -456,21 +509,9 @@ function validateSponsoredTopUpCalls(parameters: {
|
|
|
456
509
|
return topUpCall
|
|
457
510
|
}
|
|
458
511
|
|
|
459
|
-
export async function broadcastOpenTransaction(
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
escrowContract: Address
|
|
463
|
-
channelId: Hex
|
|
464
|
-
recipient: Address
|
|
465
|
-
currency: Address
|
|
466
|
-
challengeExpires?: string | undefined
|
|
467
|
-
feePayerPolicy?: Partial<FeePayer.Policy> | undefined
|
|
468
|
-
feePayer?: Account | undefined
|
|
469
|
-
isSponsored?: boolean | undefined
|
|
470
|
-
beforeBroadcast?: ((onChain: OnChainChannel) => Promise<void> | void) | undefined
|
|
471
|
-
/** When false, simulates instead of waiting for confirmation and returns derived on-chain state. @default true */
|
|
472
|
-
waitForConfirmation?: boolean | undefined
|
|
473
|
-
}): Promise<BroadcastResult> {
|
|
512
|
+
export async function broadcastOpenTransaction(
|
|
513
|
+
parameters: BroadcastOpenTransactionParameters,
|
|
514
|
+
): Promise<BroadcastResult> {
|
|
474
515
|
const {
|
|
475
516
|
client,
|
|
476
517
|
serializedTransaction,
|
|
@@ -569,8 +610,8 @@ export async function broadcastOpenTransaction(parameters: {
|
|
|
569
610
|
reason: 'open transaction does not match claimed channelId',
|
|
570
611
|
})
|
|
571
612
|
|
|
572
|
-
const
|
|
573
|
-
|
|
613
|
+
const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
|
|
614
|
+
const resolvedFeeToken = transaction.feeToken ?? defaultFeeToken
|
|
574
615
|
|
|
575
616
|
const pendingOnChain = {
|
|
576
617
|
finalized: false,
|
|
@@ -594,10 +635,10 @@ export async function broadcastOpenTransaction(parameters: {
|
|
|
594
635
|
|
|
595
636
|
const sponsored = FeePayer.prepareSponsoredTransaction({
|
|
596
637
|
account: feePayer,
|
|
638
|
+
allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
|
|
597
639
|
challengeExpires,
|
|
598
640
|
chainId: client.chain!.id,
|
|
599
641
|
details: { channelId, currency, recipient },
|
|
600
|
-
expectedFeeToken: defaults.currency[client.chain?.id as keyof typeof defaults.currency],
|
|
601
642
|
policy: feePayerPolicy,
|
|
602
643
|
transaction: {
|
|
603
644
|
...transaction,
|
|
@@ -660,19 +701,9 @@ export async function broadcastOpenTransaction(parameters: {
|
|
|
660
701
|
return { txHash, onChain }
|
|
661
702
|
}
|
|
662
703
|
|
|
663
|
-
export async function broadcastTopUpTransaction(
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
escrowContract: Address
|
|
667
|
-
channelId: Hex
|
|
668
|
-
currency: Address
|
|
669
|
-
declaredDeposit: bigint
|
|
670
|
-
previousDeposit: bigint
|
|
671
|
-
challengeExpires?: string | undefined
|
|
672
|
-
feePayerPolicy?: Partial<FeePayer.Policy> | undefined
|
|
673
|
-
feePayer?: Account | undefined
|
|
674
|
-
isSponsored?: boolean | undefined
|
|
675
|
-
}): Promise<{ txHash: Hex; newDeposit: bigint }> {
|
|
704
|
+
export async function broadcastTopUpTransaction(
|
|
705
|
+
parameters: BroadcastTopUpTransactionParameters,
|
|
706
|
+
): Promise<BroadcastTopUpTransactionResult> {
|
|
676
707
|
const {
|
|
677
708
|
client,
|
|
678
709
|
serializedTransaction,
|
|
@@ -743,9 +774,10 @@ export async function broadcastTopUpTransaction(parameters: {
|
|
|
743
774
|
reason: 'transaction does not contain a valid escrow topUp call',
|
|
744
775
|
})
|
|
745
776
|
|
|
746
|
-
const
|
|
777
|
+
const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
|
|
747
778
|
const sponsored = FeePayer.prepareSponsoredTransaction({
|
|
748
779
|
account: feePayer,
|
|
780
|
+
allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
|
|
749
781
|
challengeExpires,
|
|
750
782
|
chainId: client.chain!.id,
|
|
751
783
|
details: {
|
|
@@ -753,12 +785,11 @@ export async function broadcastTopUpTransaction(parameters: {
|
|
|
753
785
|
channelId,
|
|
754
786
|
currency,
|
|
755
787
|
},
|
|
756
|
-
expectedFeeToken,
|
|
757
788
|
policy: feePayerPolicy,
|
|
758
789
|
transaction: {
|
|
759
790
|
...transaction,
|
|
760
|
-
...((transaction.feeToken ??
|
|
761
|
-
? { feeToken: transaction.feeToken ??
|
|
791
|
+
...((transaction.feeToken ?? defaultFeeToken)
|
|
792
|
+
? { feeToken: transaction.feeToken ?? defaultFeeToken }
|
|
762
793
|
: {}),
|
|
763
794
|
},
|
|
764
795
|
})
|
|
@@ -30,6 +30,7 @@ export function computeId(parameters: computeId.Parameters): Hex.Hex {
|
|
|
30
30
|
return Hash.keccak256(encoded)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/** Type helpers for {@link computeId}. */
|
|
33
34
|
export declare namespace computeId {
|
|
34
35
|
type Parameters = {
|
|
35
36
|
/** Address authorized to sign vouchers on behalf of the payer. */
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem'
|
|
2
|
+
import { describe, expect, test } from 'vp/test'
|
|
3
|
+
|
|
4
|
+
import * as Store from '../../../Store.js'
|
|
5
|
+
import { chainId, escrowContract as escrowContractDefaults } from '../../internal/defaults.js'
|
|
6
|
+
import * as ChannelStore from './ChannelStore.js'
|
|
7
|
+
|
|
8
|
+
const channelId = '0x0000000000000000000000000000000000000000000000000000000000000001' as Hex
|
|
9
|
+
|
|
10
|
+
function legacyChannel(
|
|
11
|
+
overrides: Partial<ChannelStore.LegacyState> = {},
|
|
12
|
+
): ChannelStore.LegacyState {
|
|
13
|
+
return {
|
|
14
|
+
channelId,
|
|
15
|
+
payer: '0x0000000000000000000000000000000000000001' as Address,
|
|
16
|
+
payee: '0x0000000000000000000000000000000000000002' as Address,
|
|
17
|
+
token: '0x0000000000000000000000000000000000000003' as Address,
|
|
18
|
+
authorizedSigner: '0x0000000000000000000000000000000000000004' as Address,
|
|
19
|
+
chainId: 42431,
|
|
20
|
+
escrowContract: escrowContractDefaults[chainId.testnet] as Address,
|
|
21
|
+
deposit: 10_000_000n,
|
|
22
|
+
settledOnChain: 0n,
|
|
23
|
+
highestVoucherAmount: 10_000_000n,
|
|
24
|
+
highestVoucher: null,
|
|
25
|
+
spent: 0n,
|
|
26
|
+
units: 0,
|
|
27
|
+
closeRequestedAt: 0n,
|
|
28
|
+
finalized: false,
|
|
29
|
+
createdAt: '2025-01-01T00:00:00.000Z',
|
|
30
|
+
...overrides,
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
describe('legacy ChannelStore', () => {
|
|
35
|
+
test('keeps existing contract-backed channels compatible when backend fields are absent', async () => {
|
|
36
|
+
const store = ChannelStore.fromStore(Store.memory())
|
|
37
|
+
await store.updateChannel(channelId, () => legacyChannel())
|
|
38
|
+
|
|
39
|
+
const loaded = await store.getChannel(channelId)
|
|
40
|
+
expect(loaded).not.toBeNull()
|
|
41
|
+
expect(ChannelStore.isContractState(loaded!)).toBe(true)
|
|
42
|
+
expect(loaded!.backend).toBeUndefined()
|
|
43
|
+
expect('operator' in loaded!).toBe(false)
|
|
44
|
+
expect('salt' in loaded!).toBe(false)
|
|
45
|
+
expect('expiringNonceHash' in loaded!).toBe(false)
|
|
46
|
+
expect('descriptor' in loaded!).toBe(false)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
test('supports explicit contract-backed channel state', async () => {
|
|
50
|
+
const store = ChannelStore.fromStore(Store.memory())
|
|
51
|
+
await store.updateChannel(channelId, () => legacyChannel({ backend: 'contract' }))
|
|
52
|
+
|
|
53
|
+
const loaded = await store.getChannel(channelId)
|
|
54
|
+
expect(loaded).not.toBeNull()
|
|
55
|
+
expect(ChannelStore.isContractState(loaded!)).toBe(true)
|
|
56
|
+
expect(loaded!.backend).toBe('contract')
|
|
57
|
+
})
|
|
58
|
+
})
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy contract-backed session channel-store facade.
|
|
3
|
+
*
|
|
4
|
+
* Legacy code imports channel-store types and helpers from this module so the
|
|
5
|
+
* contract-backed backend stays rooted under `tempo/legacy`. The underlying
|
|
6
|
+
* store adapter is shared with the TIP-1034 implementation because both
|
|
7
|
+
* backends persist the same accounting counters.
|
|
8
|
+
*/
|
|
9
|
+
import type * as SharedChannelStore from '../../session/server/ChannelStore.js'
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
deductFromChannel,
|
|
13
|
+
fromStore,
|
|
14
|
+
normalizeChannelId,
|
|
15
|
+
type BackendState,
|
|
16
|
+
type BaseState,
|
|
17
|
+
type ChannelStore,
|
|
18
|
+
type DeductResult,
|
|
19
|
+
type State,
|
|
20
|
+
} from '../../session/server/ChannelStore.js'
|
|
21
|
+
|
|
22
|
+
/** State for a legacy smart-contract-backed payment channel. */
|
|
23
|
+
export interface LegacyContractBackendState {
|
|
24
|
+
/** Channel backend. Omitted for existing legacy records. */
|
|
25
|
+
backend?: 'contract' | undefined
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** @deprecated Use {@link LegacyContractBackendState}. */
|
|
29
|
+
export type ContractBackendState = LegacyContractBackendState
|
|
30
|
+
|
|
31
|
+
/** Legacy contract-backed channel state persisted by `tempo.sessionLegacy`. */
|
|
32
|
+
export type LegacyState = SharedChannelStore.BaseState & LegacyContractBackendState
|
|
33
|
+
|
|
34
|
+
/** Returns whether a channel is backed by the legacy smart contract escrow. */
|
|
35
|
+
export function isContractState(
|
|
36
|
+
state: SharedChannelStore.State,
|
|
37
|
+
): state is SharedChannelStore.BaseState & LegacyContractBackendState {
|
|
38
|
+
return state.backend === undefined || state.backend === 'contract'
|
|
39
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem'
|
|
2
|
+
|
|
3
|
+
import type { SessionSignedVoucher, SessionVoucher } from '../../session/precompile/Protocol.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Legacy credential payload that opens a smart-contract-backed channel and authorizes initial spend.
|
|
7
|
+
*/
|
|
8
|
+
export type LegacyOpenCredentialPayload = {
|
|
9
|
+
action: 'open'
|
|
10
|
+
type: 'transaction'
|
|
11
|
+
/** Session channel ID. */
|
|
12
|
+
channelId: Hex
|
|
13
|
+
/** Signed transaction containing the channel-open call. */
|
|
14
|
+
transaction: Hex
|
|
15
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
16
|
+
signature: Hex
|
|
17
|
+
/** Voucher signer selected for the opened channel. */
|
|
18
|
+
authorizedSigner?: Address | undefined
|
|
19
|
+
/** Initial cumulative spend authorized by the opening voucher, as raw units. */
|
|
20
|
+
cumulativeAmount: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Legacy credential payload that adds deposit to an existing smart-contract-backed channel. */
|
|
24
|
+
export type LegacyTopUpCredentialPayload = {
|
|
25
|
+
action: 'topUp'
|
|
26
|
+
type: 'transaction'
|
|
27
|
+
/** Session channel ID being topped up. */
|
|
28
|
+
channelId: Hex
|
|
29
|
+
/** Signed transaction containing the channel top-up call. */
|
|
30
|
+
transaction: Hex
|
|
31
|
+
/** Additional deposit to add, as raw units. */
|
|
32
|
+
additionalDeposit: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Legacy credential payload that increases cumulative spend authorization. */
|
|
36
|
+
export type LegacyVoucherCredentialPayload = {
|
|
37
|
+
action: 'voucher'
|
|
38
|
+
/** Session channel ID the voucher applies to. */
|
|
39
|
+
channelId: Hex
|
|
40
|
+
/** Highest cumulative spend authorized by this voucher, as raw units. */
|
|
41
|
+
cumulativeAmount: string
|
|
42
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
43
|
+
signature: Hex
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Legacy credential payload that cooperatively closes a channel at final cumulative spend. */
|
|
47
|
+
export type LegacyCloseCredentialPayload = {
|
|
48
|
+
action: 'close'
|
|
49
|
+
/** Session channel ID being closed. */
|
|
50
|
+
channelId: Hex
|
|
51
|
+
/** Final cumulative spend authorized at close, as raw units. */
|
|
52
|
+
cumulativeAmount: string
|
|
53
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
54
|
+
signature: Hex
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Legacy smart-contract-backed session credential payload.
|
|
59
|
+
*/
|
|
60
|
+
export type LegacySessionCredentialPayload =
|
|
61
|
+
| LegacyOpenCredentialPayload
|
|
62
|
+
| LegacyTopUpCredentialPayload
|
|
63
|
+
| LegacyVoucherCredentialPayload
|
|
64
|
+
| LegacyCloseCredentialPayload
|
|
65
|
+
|
|
66
|
+
/** Legacy smart-contract-backed voucher for cumulative payment. */
|
|
67
|
+
export type LegacyVoucher = SessionVoucher
|
|
68
|
+
|
|
69
|
+
/** Legacy smart-contract-backed voucher with EIP-712 signature. */
|
|
70
|
+
export type LegacySignedVoucher = SessionSignedVoucher
|
|
71
|
+
|
|
72
|
+
/** @deprecated Use {@link LegacyVoucher}. */
|
|
73
|
+
export type Voucher = LegacyVoucher
|
|
74
|
+
|
|
75
|
+
/** @deprecated Use {@link LegacySignedVoucher}. */
|
|
76
|
+
export type SignedVoucher = LegacySignedVoucher
|
|
77
|
+
|
|
78
|
+
/** @deprecated Use {@link LegacyOpenCredentialPayload}. */
|
|
79
|
+
export type OpenCredentialPayload = LegacyOpenCredentialPayload
|
|
80
|
+
|
|
81
|
+
/** @deprecated Use {@link LegacyTopUpCredentialPayload}. */
|
|
82
|
+
export type TopUpCredentialPayload = LegacyTopUpCredentialPayload
|
|
83
|
+
|
|
84
|
+
/** @deprecated Use {@link LegacyVoucherCredentialPayload}. */
|
|
85
|
+
export type VoucherCredentialPayload = LegacyVoucherCredentialPayload
|
|
86
|
+
|
|
87
|
+
/** @deprecated Use {@link LegacyCloseCredentialPayload}. */
|
|
88
|
+
export type CloseCredentialPayload = LegacyCloseCredentialPayload
|
|
89
|
+
|
|
90
|
+
/** @deprecated Use {@link LegacySessionCredentialPayload}. */
|
|
91
|
+
export type SessionCredentialPayload = LegacySessionCredentialPayload
|