mppx 0.6.30 → 0.7.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 +25 -0
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +9 -7
- 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/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/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/Transport.d.ts.map +1 -1
- package/dist/client/Transport.js +4 -5
- package/dist/client/Transport.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -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 +14 -6
- package/dist/client/internal/Fetch.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/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-sdk/client/McpClient.d.ts +12 -5
- package/dist/mcp-sdk/client/McpClient.d.ts.map +1 -1
- package/dist/mcp-sdk/client/McpClient.js +55 -42
- package/dist/mcp-sdk/client/McpClient.js.map +1 -1
- package/dist/server/Mppx.d.ts +11 -3
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +76 -27
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Request.js +24 -10
- package/dist/server/Request.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.map +1 -1
- package/dist/server/Transport.js +4 -3
- 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/client/Charge.d.ts +6 -0
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +9 -2
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +36 -7
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/client/Methods.js +12 -5
- package/dist/tempo/client/Methods.js.map +1 -1
- 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 +21 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +109 -4
- package/dist/tempo/internal/fee-payer.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 +20 -16
- 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 +28 -23
- 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 +13 -16
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +63 -6
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +36 -8
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +1 -1
- package/dist/tempo/server/Subscription.d.ts.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 +82 -0
- package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelOps.js +204 -0
- package/dist/tempo/session/client/ChannelOps.js.map +1 -0
- package/dist/tempo/session/client/CredentialState.d.ts +262 -0
- package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
- package/dist/tempo/session/client/CredentialState.js +417 -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 +132 -0
- package/dist/tempo/session/client/Session.d.ts.map +1 -0
- package/dist/tempo/session/client/Session.js +55 -0
- package/dist/tempo/session/client/Session.js.map +1 -0
- package/dist/tempo/session/client/SessionManager.d.ts +120 -0
- package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/session/client/SessionManager.js +627 -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 +12 -0
- package/dist/tempo/session/client/index.d.ts.map +1 -0
- package/dist/tempo/session/client/index.js +5 -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 +126 -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 +250 -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/package.json +8 -3
- package/src/Challenge.ts +9 -7
- package/src/Constants.ts +58 -0
- package/src/Credential.ts +5 -4
- package/src/Method.ts +46 -5
- package/src/Receipt.ts +3 -2
- package/src/cli/cli.test.ts +23 -28
- 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 +10 -0
- package/src/client/Mppx.test.ts +75 -0
- package/src/client/Transport.ts +4 -5
- package/src/client/index.ts +11 -1
- package/src/client/internal/Fetch.test.ts +29 -4
- package/src/client/internal/Fetch.ts +17 -5
- package/src/env.d.ts +1 -1
- 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/client/McpClient.integration.test.ts +8 -7
- package/src/mcp-sdk/client/McpClient.test-d.ts +7 -0
- package/src/mcp-sdk/client/McpClient.ts +99 -67
- package/src/mcp-sdk/client/McpClient.unit.test.ts +131 -0
- package/src/middlewares/elysia.test.ts +8 -4
- package/src/middlewares/express.test.ts +8 -4
- package/src/middlewares/hono.test.ts +4 -4
- package/src/middlewares/nextjs.test.ts +8 -4
- package/src/proxy/Proxy.test.ts +8 -8
- package/src/server/Mppx.test-d.ts +54 -0
- package/src/server/Mppx.test.ts +274 -7
- package/src/server/Mppx.ts +487 -406
- package/src/server/Request.test.ts +81 -0
- package/src/server/Request.ts +23 -9
- package/src/server/Response.ts +2 -1
- package/src/server/Transport.ts +4 -3
- package/src/server/index.ts +1 -0
- package/src/stripe/client/Charge.test.ts +20 -5
- package/src/stripe/client/Charge.ts +6 -2
- package/src/stripe/server/Charge.test.ts +114 -1
- 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/PublicExports.test-d.ts +105 -0
- package/src/tempo/client/Charge.test.ts +85 -0
- package/src/tempo/client/Charge.ts +19 -2
- package/src/tempo/client/Methods.ts +18 -6
- package/src/tempo/client/index.ts +15 -4
- package/src/tempo/index.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +241 -17
- package/src/tempo/internal/fee-payer.ts +150 -4
- package/src/tempo/internal/fee-token.test.ts +14 -9
- 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 +41 -20
- 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 +162 -63
- package/src/tempo/{server → legacy/server}/Session.ts +49 -37
- 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 +92 -14
- package/src/tempo/server/Charge.ts +18 -16
- package/src/tempo/server/Methods.ts +54 -8
- package/src/tempo/server/Sse.test.ts +2 -2
- package/src/tempo/server/index.ts +6 -5
- package/src/tempo/server/internal/html/package.json +1 -1
- 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 +344 -0
- package/src/tempo/session/client/CredentialState.test.ts +645 -0
- package/src/tempo/session/client/CredentialState.ts +814 -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 +734 -0
- package/src/tempo/session/client/Session.ts +97 -0
- package/src/tempo/session/client/SessionManager.test.ts +1308 -0
- package/src/tempo/session/client/SessionManager.ts +845 -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 +37 -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 +316 -0
- package/src/tempo/session/precompile/Voucher.ts +160 -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 +242 -0
- package/src/tempo/session/server/Settlement.ts +470 -0
- package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
- package/src/tempo/session/server/Sse.ts +256 -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 +384 -0
- package/src/tempo/session/server/index.ts +8 -0
- 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/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/tempo/{session → legacy/session}/Channel.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Types.js +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
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import type { Address, Hex } from 'viem';
|
|
2
|
+
import type * as Challenge from '../../../Challenge.js';
|
|
3
|
+
/** Amount encoded by TIP20EscrowChannel as a `uint96` on-chain value. */
|
|
4
|
+
export type Uint96 = bigint;
|
|
5
|
+
/** Decimal string containing raw token units, before applying token decimals. */
|
|
6
|
+
export type RawAmountString = string;
|
|
7
|
+
/** Returns whether a bigint can be encoded as a TIP20EscrowChannel `uint96` amount. */
|
|
8
|
+
export declare function isUint96(value: bigint): value is Uint96;
|
|
9
|
+
/** Converts a bigint into a TIP20EscrowChannel `uint96` amount after validating bounds. */
|
|
10
|
+
export declare function uint96(value: bigint): Uint96;
|
|
11
|
+
/** Asserts that a bigint can be encoded as a TIP20EscrowChannel `uint96` amount. */
|
|
12
|
+
export declare function assertUint96(value: bigint): void;
|
|
13
|
+
/** Full TIP-1034 channel descriptor used to derive and verify a channel ID. */
|
|
14
|
+
export type ChannelDescriptor = {
|
|
15
|
+
/** Wallet that funds the channel and authorizes voucher spend. */
|
|
16
|
+
payer: Address;
|
|
17
|
+
/** Wallet that receives settlement from the channel. */
|
|
18
|
+
payee: Address;
|
|
19
|
+
/** Optional payee-side operator authorized for channel operations; zero address means unset. */
|
|
20
|
+
operator: Address;
|
|
21
|
+
/** TIP-20 token escrowed by the channel. */
|
|
22
|
+
token: Address;
|
|
23
|
+
/** Payer-selected entropy that makes otherwise identical descriptors unique. */
|
|
24
|
+
salt: Hex;
|
|
25
|
+
/** Address authorized to sign vouchers; zero address delegates to `payer`. */
|
|
26
|
+
authorizedSigner: Address;
|
|
27
|
+
/** Hash of the signed expiring-nonce open transaction required by TIP-1034. */
|
|
28
|
+
expiringNonceHash: Hex;
|
|
29
|
+
};
|
|
30
|
+
/** Public descriptor for a TIP-1034 session channel. */
|
|
31
|
+
export type SessionDescriptor = ChannelDescriptor;
|
|
32
|
+
/**
|
|
33
|
+
* Voucher for cumulative payment.
|
|
34
|
+
* Cumulative monotonicity prevents replay attacks.
|
|
35
|
+
*/
|
|
36
|
+
export type Voucher = {
|
|
37
|
+
channelId: Hex;
|
|
38
|
+
cumulativeAmount: bigint;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Signed voucher with EIP-712 signature.
|
|
42
|
+
*/
|
|
43
|
+
export type SignedVoucher = Voucher & {
|
|
44
|
+
signature: Hex;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Credential payload that opens a TIP-1034 precompile channel and authorizes initial spend.
|
|
48
|
+
*/
|
|
49
|
+
export type OpenCredentialPayload = {
|
|
50
|
+
action: 'open';
|
|
51
|
+
type: 'transaction';
|
|
52
|
+
/** TIP-1034 channel ID derived from descriptor, escrow, and chain ID. */
|
|
53
|
+
channelId: Hex;
|
|
54
|
+
/** Signed Tempo transaction containing the precompile `open` call. */
|
|
55
|
+
transaction: Hex;
|
|
56
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
57
|
+
signature: Hex;
|
|
58
|
+
/** Descriptor needed to recover and verify the channel. */
|
|
59
|
+
descriptor: ChannelDescriptor;
|
|
60
|
+
/** Initial cumulative spend authorized by the opening voucher, as raw units. */
|
|
61
|
+
cumulativeAmount: RawAmountString;
|
|
62
|
+
/** Voucher signer selected for the opened channel. */
|
|
63
|
+
authorizedSigner?: Address | undefined;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Credential payload that adds deposit to an existing TIP-1034 precompile channel.
|
|
67
|
+
*/
|
|
68
|
+
export type TopUpCredentialPayload = {
|
|
69
|
+
action: 'topUp';
|
|
70
|
+
type: 'transaction';
|
|
71
|
+
/** TIP-1034 channel ID being topped up. */
|
|
72
|
+
channelId: Hex;
|
|
73
|
+
/** Signed Tempo transaction containing the precompile `topUp` call. */
|
|
74
|
+
transaction: Hex;
|
|
75
|
+
/** Descriptor for the channel being topped up. */
|
|
76
|
+
descriptor: ChannelDescriptor;
|
|
77
|
+
/** Additional deposit to add, as raw units. */
|
|
78
|
+
additionalDeposit: RawAmountString;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Credential payload that increases cumulative spend authorization.
|
|
82
|
+
*/
|
|
83
|
+
export type VoucherCredentialPayload = {
|
|
84
|
+
action: 'voucher';
|
|
85
|
+
/** TIP-1034 channel ID the voucher applies to. */
|
|
86
|
+
channelId: Hex;
|
|
87
|
+
/** Descriptor for the voucher's channel. */
|
|
88
|
+
descriptor: ChannelDescriptor;
|
|
89
|
+
/** Highest cumulative spend authorized by this voucher, as raw units. */
|
|
90
|
+
cumulativeAmount: RawAmountString;
|
|
91
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
92
|
+
signature: Hex;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Credential payload that cooperatively closes a channel at final cumulative spend.
|
|
96
|
+
*/
|
|
97
|
+
export type CloseCredentialPayload = {
|
|
98
|
+
action: 'close';
|
|
99
|
+
/** TIP-1034 channel ID being closed. */
|
|
100
|
+
channelId: Hex;
|
|
101
|
+
/** Descriptor for the channel being closed. */
|
|
102
|
+
descriptor: ChannelDescriptor;
|
|
103
|
+
/** Final cumulative spend authorized at close, as raw units. */
|
|
104
|
+
cumulativeAmount: RawAmountString;
|
|
105
|
+
/** Voucher signature for `cumulativeAmount`. */
|
|
106
|
+
signature: Hex;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* TIP20EscrowChannel precompile session credential payload (discriminated union).
|
|
110
|
+
*/
|
|
111
|
+
export type SessionCredentialPayload = OpenCredentialPayload | TopUpCredentialPayload | VoucherCredentialPayload | CloseCredentialPayload;
|
|
112
|
+
/**
|
|
113
|
+
* Backend-neutral voucher for cumulative payment.
|
|
114
|
+
* Cumulative monotonicity prevents replay attacks.
|
|
115
|
+
*/
|
|
116
|
+
export interface SessionVoucher {
|
|
117
|
+
channelId: Hex;
|
|
118
|
+
cumulativeAmount: bigint;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Backend-neutral signed voucher with EIP-712 signature.
|
|
122
|
+
*/
|
|
123
|
+
export interface SessionSignedVoucher extends SessionVoucher {
|
|
124
|
+
signature: Hex;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Management action names shared by session credential payloads.
|
|
128
|
+
*/
|
|
129
|
+
export type SessionCredentialAction = 'open' | 'topUp' | 'voucher' | 'close';
|
|
130
|
+
/**
|
|
131
|
+
* Minimal credential shape shared by transport helpers that only need routing context.
|
|
132
|
+
*/
|
|
133
|
+
export type SessionCredentialContext = {
|
|
134
|
+
/** Session channel ID referenced by the authorization payload. */
|
|
135
|
+
channelId: Hex;
|
|
136
|
+
/** Session management action when the payload is a management credential. */
|
|
137
|
+
action?: SessionCredentialAction | undefined;
|
|
138
|
+
};
|
|
139
|
+
/** Returns whether a value is a supported session credential action. */
|
|
140
|
+
export declare function isSessionCredentialAction(value: unknown): value is SessionCredentialAction;
|
|
141
|
+
/** Returns whether a value has the session credential fields needed by transports. */
|
|
142
|
+
export declare function isSessionCredentialContext(value: unknown): value is SessionCredentialContext;
|
|
143
|
+
/** Reads the shared session credential context or throws the provided error message. */
|
|
144
|
+
export declare function requireSessionCredentialContext(value: unknown, errorMessage?: string): SessionCredentialContext;
|
|
145
|
+
/** Reads the raw per-unit session amount from a payment challenge. */
|
|
146
|
+
export declare function readSessionChallengeAmount(challenge: Challenge.Challenge): bigint;
|
|
147
|
+
/**
|
|
148
|
+
* SSE event emitted when session balance is exhausted mid-stream.
|
|
149
|
+
* The client responds by sending a new voucher credential.
|
|
150
|
+
*
|
|
151
|
+
* Per spec §11.6, the event data contains:
|
|
152
|
+
* - `channelId` — channel identifier
|
|
153
|
+
* - `requiredCumulative` — minimum cumulative amount the next voucher must authorize
|
|
154
|
+
* - `acceptedCumulative` — current highest accepted voucher amount
|
|
155
|
+
* - `deposit` — current on-chain deposit ceiling; when `requiredCumulative > deposit`
|
|
156
|
+
* the client must top up the channel before sending a new voucher
|
|
157
|
+
*/
|
|
158
|
+
export interface NeedVoucherEvent {
|
|
159
|
+
channelId: Hex;
|
|
160
|
+
/** Minimum cumulative voucher amount required to continue, as raw token units. */
|
|
161
|
+
requiredCumulative: RawAmountString;
|
|
162
|
+
/** Highest cumulative voucher amount currently accepted by the server, as raw token units. */
|
|
163
|
+
acceptedCumulative: RawAmountString;
|
|
164
|
+
/** Current channel deposit ceiling, as raw token units. */
|
|
165
|
+
deposit: RawAmountString;
|
|
166
|
+
}
|
|
167
|
+
/** Returns whether a value is a typed need-voucher event payload. */
|
|
168
|
+
export declare function isNeedVoucherEvent(value: unknown): value is NeedVoucherEvent;
|
|
169
|
+
/**
|
|
170
|
+
* Session receipt returned in Payment-Receipt header.
|
|
171
|
+
*/
|
|
172
|
+
export interface SessionReceipt {
|
|
173
|
+
/** Payment method that produced the receipt. */
|
|
174
|
+
method: 'tempo';
|
|
175
|
+
/** Payment intent that produced the receipt. */
|
|
176
|
+
intent: 'session';
|
|
177
|
+
/** Receipt status. */
|
|
178
|
+
status: 'success';
|
|
179
|
+
/** ISO timestamp when the receipt was created. */
|
|
180
|
+
timestamp: string;
|
|
181
|
+
/** Payment reference (channelId). Satisfies Receipt.Receipt contract. */
|
|
182
|
+
reference: string;
|
|
183
|
+
/** Challenge ID that this receipt settles or acknowledges. */
|
|
184
|
+
challengeId: string;
|
|
185
|
+
/** TIP-1034 channel ID. */
|
|
186
|
+
channelId: Hex;
|
|
187
|
+
/** Highest cumulative voucher amount accepted by the server, as raw token units. */
|
|
188
|
+
acceptedCumulative: RawAmountString;
|
|
189
|
+
/** Amount actually consumed by delivered work/content, as raw token units. */
|
|
190
|
+
spent: RawAmountString;
|
|
191
|
+
/** Paid units delivered by the server, when the transport reports them. */
|
|
192
|
+
units?: number | undefined;
|
|
193
|
+
/** On-chain transaction hash when this receipt came from settlement or close. */
|
|
194
|
+
txHash?: Hex | undefined;
|
|
195
|
+
}
|
|
196
|
+
/** Returns whether a value is a typed session payment receipt. */
|
|
197
|
+
export declare function isSessionReceipt(value: unknown): value is SessionReceipt;
|
|
198
|
+
/**
|
|
199
|
+
* Create a session receipt.
|
|
200
|
+
*/
|
|
201
|
+
export declare function createSessionReceipt(params: {
|
|
202
|
+
challengeId: string;
|
|
203
|
+
channelId: Hex;
|
|
204
|
+
acceptedCumulative: bigint;
|
|
205
|
+
spent: bigint;
|
|
206
|
+
units?: number | undefined;
|
|
207
|
+
txHash?: Hex | undefined;
|
|
208
|
+
}): SessionReceipt;
|
|
209
|
+
/**
|
|
210
|
+
* Serialize a session receipt to the Payment-Receipt header format.
|
|
211
|
+
*/
|
|
212
|
+
export declare function serializeSessionReceipt(receipt: SessionReceipt): string;
|
|
213
|
+
/**
|
|
214
|
+
* Deserialize a Payment-Receipt header value to a session receipt.
|
|
215
|
+
*/
|
|
216
|
+
export declare function deserializeSessionReceipt(encoded: string): SessionReceipt;
|
|
217
|
+
/**
|
|
218
|
+
* Parsed SSE event (discriminated union by `type`).
|
|
219
|
+
*/
|
|
220
|
+
export type SseEvent = {
|
|
221
|
+
type: 'message';
|
|
222
|
+
data: string;
|
|
223
|
+
} | {
|
|
224
|
+
type: 'payment-need-voucher';
|
|
225
|
+
data: NeedVoucherEvent;
|
|
226
|
+
} | {
|
|
227
|
+
type: 'payment-receipt';
|
|
228
|
+
data: SessionReceipt;
|
|
229
|
+
};
|
|
230
|
+
/** Returns whether a response carries an SSE event stream. */
|
|
231
|
+
export declare function isEventStream(response: Response): boolean;
|
|
232
|
+
/**
|
|
233
|
+
* Format a session receipt as a Server-Sent Event.
|
|
234
|
+
*
|
|
235
|
+
* Produces a valid SSE event string with `event: payment-receipt`
|
|
236
|
+
* and the receipt JSON as the `data` field.
|
|
237
|
+
*/
|
|
238
|
+
export declare function formatReceiptEvent(receipt: SessionReceipt): string;
|
|
239
|
+
/**
|
|
240
|
+
* Format a need-voucher event as a Server-Sent Event.
|
|
241
|
+
*
|
|
242
|
+
* Emitted when the channel balance is exhausted mid-stream.
|
|
243
|
+
*/
|
|
244
|
+
export declare function formatNeedVoucherEvent(params: NeedVoucherEvent): string;
|
|
245
|
+
/**
|
|
246
|
+
* Format an application message as SSE, preserving embedded newlines.
|
|
247
|
+
*
|
|
248
|
+
* SSE requires multi-line payloads to be emitted as separate `data:` fields.
|
|
249
|
+
*/
|
|
250
|
+
export declare function formatMessageEvent(value: string): string;
|
|
251
|
+
/**
|
|
252
|
+
* Parse a raw SSE event string into a typed event.
|
|
253
|
+
*
|
|
254
|
+
* Unknown event names fall back to `message`, which preserves compatibility
|
|
255
|
+
* with generic SSE producers.
|
|
256
|
+
*/
|
|
257
|
+
export declare function parseEvent(raw: string): SseEvent | null;
|
|
258
|
+
/** Extracts the `data:` field value from a single SSE event block. */
|
|
259
|
+
export declare function extractData(event: string): string | null;
|
|
260
|
+
/** In-band WebSocket payment protocol frame. */
|
|
261
|
+
export type Message = {
|
|
262
|
+
mpp: 'authorization';
|
|
263
|
+
authorization: string;
|
|
264
|
+
} | {
|
|
265
|
+
mpp: 'message';
|
|
266
|
+
data: string;
|
|
267
|
+
} | {
|
|
268
|
+
mpp: 'payment-close-request';
|
|
269
|
+
} | {
|
|
270
|
+
mpp: 'payment-close-ready';
|
|
271
|
+
data: SessionReceipt;
|
|
272
|
+
} | {
|
|
273
|
+
mpp: 'payment-error';
|
|
274
|
+
status: number;
|
|
275
|
+
message: string;
|
|
276
|
+
} | {
|
|
277
|
+
mpp: 'payment-need-voucher';
|
|
278
|
+
data: NeedVoucherEvent;
|
|
279
|
+
} | {
|
|
280
|
+
mpp: 'payment-receipt';
|
|
281
|
+
data: SessionReceipt;
|
|
282
|
+
};
|
|
283
|
+
/** Input for formatting a WebSocket payment protocol error frame. */
|
|
284
|
+
export type ErrorMessageParameters = {
|
|
285
|
+
/** Human-readable error message. */
|
|
286
|
+
message: string;
|
|
287
|
+
/** HTTP-style payment error status. */
|
|
288
|
+
status: number;
|
|
289
|
+
};
|
|
290
|
+
/** Formats the initial or follow-up payment authorization frame. */
|
|
291
|
+
export declare function formatAuthorizationMessage(authorization: string): string;
|
|
292
|
+
/** Formats an application payload frame. */
|
|
293
|
+
export declare function formatApplicationMessage(data: string): string;
|
|
294
|
+
/** Formats the client request for a final close-ready receipt. */
|
|
295
|
+
export declare function formatCloseRequestMessage(): string;
|
|
296
|
+
/** Formats the server close-ready receipt frame. */
|
|
297
|
+
export declare function formatCloseReadyMessage(receipt: SessionReceipt): string;
|
|
298
|
+
/** Formats a server request for a larger voucher. */
|
|
299
|
+
export declare function formatNeedVoucherMessage(params: NeedVoucherEvent): string;
|
|
300
|
+
/** Formats an intermediate or final payment receipt frame. */
|
|
301
|
+
export declare function formatReceiptMessage(receipt: SessionReceipt): string;
|
|
302
|
+
/** Formats a payment protocol error frame. */
|
|
303
|
+
export declare function formatErrorMessage(parameters: ErrorMessageParameters): string;
|
|
304
|
+
/** Parses a WebSocket payment protocol frame, returning null for application data. */
|
|
305
|
+
export declare function parseMessage(raw: string): Message | null;
|
|
306
|
+
/** Canonical TIP-1034 TIP-20 Channel Escrow precompile address. */
|
|
307
|
+
export declare const tip20ChannelEscrow = "0x4d50500000000000000000000000000000000000";
|
|
308
|
+
//# sourceMappingURL=Protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Protocol.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/precompile/Protocol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAIvD,yEAAyE;AACzE,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAE3B,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAEpC,uFAAuF;AACvF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,2FAA2F;AAC3F,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kEAAkE;IAClE,KAAK,EAAE,OAAO,CAAA;IACd,wDAAwD;IACxD,KAAK,EAAE,OAAO,CAAA;IACd,gGAAgG;IAChG,QAAQ,EAAE,OAAO,CAAA;IACjB,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAA;IACd,gFAAgF;IAChF,IAAI,EAAE,GAAG,CAAA;IACT,8EAA8E;IAC9E,gBAAgB,EAAE,OAAO,CAAA;IACzB,+EAA+E;IAC/E,iBAAiB,EAAE,GAAG,CAAA;CACvB,CAAA;AAED,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAA;AAEjD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,GAAG,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IAAE,SAAS,EAAE,GAAG,CAAA;CAAE,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,yEAAyE;IACzE,SAAS,EAAE,GAAG,CAAA;IACd,sEAAsE;IACtE,WAAW,EAAE,GAAG,CAAA;IAChB,gDAAgD;IAChD,SAAS,EAAE,GAAG,CAAA;IACd,2DAA2D;IAC3D,UAAU,EAAE,iBAAiB,CAAA;IAC7B,gFAAgF;IAChF,gBAAgB,EAAE,eAAe,CAAA;IACjC,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACvC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,2CAA2C;IAC3C,SAAS,EAAE,GAAG,CAAA;IACd,uEAAuE;IACvE,WAAW,EAAE,GAAG,CAAA;IAChB,kDAAkD;IAClD,UAAU,EAAE,iBAAiB,CAAA;IAC7B,+CAA+C;IAC/C,iBAAiB,EAAE,eAAe,CAAA;CACnC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,SAAS,CAAA;IACjB,kDAAkD;IAClD,SAAS,EAAE,GAAG,CAAA;IACd,4CAA4C;IAC5C,UAAU,EAAE,iBAAiB,CAAA;IAC7B,yEAAyE;IACzE,gBAAgB,EAAE,eAAe,CAAA;IACjC,gDAAgD;IAChD,SAAS,EAAE,GAAG,CAAA;CACf,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,wCAAwC;IACxC,SAAS,EAAE,GAAG,CAAA;IACd,+CAA+C;IAC/C,UAAU,EAAE,iBAAiB,CAAA;IAC7B,gEAAgE;IAChE,gBAAgB,EAAE,eAAe,CAAA;IACjC,gDAAgD;IAChD,SAAS,EAAE,GAAG,CAAA;CACf,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAChC,qBAAqB,GACrB,sBAAsB,GACtB,wBAAwB,GACxB,sBAAsB,CAAA;AAQ1B;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,GAAG,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,SAAS,EAAE,GAAG,CAAA;CACf;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAE5E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,kEAAkE;IAClE,SAAS,EAAE,GAAG,CAAA;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAA;CAC7C,CAAA;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAE1F;AAED,sFAAsF;AACtF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAM5F;AAED,wFAAwF;AACxF,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,YAAY,SAA6C,GACxD,wBAAwB,CAG1B;AAED,sEAAsE;AACtE,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,CAIjF;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,GAAG,CAAA;IACd,kFAAkF;IAClF,kBAAkB,EAAE,eAAe,CAAA;IACnC,8FAA8F;IAC9F,kBAAkB,EAAE,eAAe,CAAA;IACnC,2DAA2D;IAC3D,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAQ5E;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAA;IACf,gDAAgD;IAChD,MAAM,EAAE,SAAS,CAAA;IACjB,sBAAsB;IACtB,MAAM,EAAE,SAAS,CAAA;IACjB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,SAAS,EAAE,GAAG,CAAA;IACd,oFAAoF;IACpF,kBAAkB,EAAE,eAAe,CAAA;IACnC,8EAA8E;IAC9E,KAAK,EAAE,eAAe,CAAA;IACtB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,iFAAiF;IACjF,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;CACzB;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAexE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,GAAG,CAAA;IACd,kBAAkB,EAAE,MAAM,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAA;CACzB,GAAG,cAAc,CAcjB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAGvE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAKzE;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAA;AAErD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CA+BvD;AAUD,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxD;AAED,gDAAgD;AAChD,MAAM,MAAM,OAAO,GACf;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,GAAG,EAAE,uBAAuB,CAAA;CAAE,GAChC;IAAE,GAAG,EAAE,qBAAqB,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACpD;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,GAAG,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACvD;IAAE,GAAG,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAA;AAEpD,qEAAqE;AACrE,MAAM,MAAM,sBAAsB,GAAG;IACnC,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,oEAAoE;AACpE,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,4CAA4C;AAC5C,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,kEAAkE;AAClE,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,oDAAoD;AACpD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAEvE;AAED,qDAAqD;AACrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAEzE;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAEpE;AAED,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAqBxD;AAYD,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,+CAA+C,CAAA"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Base64 } from 'ox';
|
|
2
|
+
const maxUint96 = (1n << 96n) - 1n;
|
|
3
|
+
/** Returns whether a bigint can be encoded as a TIP20EscrowChannel `uint96` amount. */
|
|
4
|
+
export function isUint96(value) {
|
|
5
|
+
return value >= 0n && value <= maxUint96;
|
|
6
|
+
}
|
|
7
|
+
/** Converts a bigint into a TIP20EscrowChannel `uint96` amount after validating bounds. */
|
|
8
|
+
export function uint96(value) {
|
|
9
|
+
assertUint96(value);
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
/** Asserts that a bigint can be encoded as a TIP20EscrowChannel `uint96` amount. */
|
|
13
|
+
export function assertUint96(value) {
|
|
14
|
+
if (!isUint96(value))
|
|
15
|
+
throw new Error(`Value ${value} is outside uint96 bounds.`);
|
|
16
|
+
}
|
|
17
|
+
const sessionCredentialActions = new Set(['open', 'topUp', 'voucher', 'close']);
|
|
18
|
+
function isObject(value) {
|
|
19
|
+
return value !== null && typeof value === 'object';
|
|
20
|
+
}
|
|
21
|
+
/** Returns whether a value is a supported session credential action. */
|
|
22
|
+
export function isSessionCredentialAction(value) {
|
|
23
|
+
return typeof value === 'string' && sessionCredentialActions.has(value);
|
|
24
|
+
}
|
|
25
|
+
/** Returns whether a value has the session credential fields needed by transports. */
|
|
26
|
+
export function isSessionCredentialContext(value) {
|
|
27
|
+
if (value === null || typeof value !== 'object')
|
|
28
|
+
return false;
|
|
29
|
+
const candidate = value;
|
|
30
|
+
if (typeof candidate.channelId !== 'string')
|
|
31
|
+
return false;
|
|
32
|
+
if (candidate.action !== undefined && !isSessionCredentialAction(candidate.action))
|
|
33
|
+
return false;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
/** Reads the shared session credential context or throws the provided error message. */
|
|
37
|
+
export function requireSessionCredentialContext(value, errorMessage = 'No session credential context available.') {
|
|
38
|
+
if (!isSessionCredentialContext(value))
|
|
39
|
+
throw new Error(errorMessage);
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
/** Reads the raw per-unit session amount from a payment challenge. */
|
|
43
|
+
export function readSessionChallengeAmount(challenge) {
|
|
44
|
+
const amount = challenge.request.amount;
|
|
45
|
+
if (typeof amount !== 'string')
|
|
46
|
+
throw new Error('Session challenge is missing amount.');
|
|
47
|
+
return BigInt(amount);
|
|
48
|
+
}
|
|
49
|
+
/** Returns whether a value is a typed need-voucher event payload. */
|
|
50
|
+
export function isNeedVoucherEvent(value) {
|
|
51
|
+
if (!isObject(value))
|
|
52
|
+
return false;
|
|
53
|
+
return (typeof value.channelId === 'string' &&
|
|
54
|
+
typeof value.requiredCumulative === 'string' &&
|
|
55
|
+
typeof value.acceptedCumulative === 'string' &&
|
|
56
|
+
typeof value.deposit === 'string');
|
|
57
|
+
}
|
|
58
|
+
/** Returns whether a value is a typed session payment receipt. */
|
|
59
|
+
export function isSessionReceipt(value) {
|
|
60
|
+
if (!isObject(value))
|
|
61
|
+
return false;
|
|
62
|
+
return (value.method === 'tempo' &&
|
|
63
|
+
value.intent === 'session' &&
|
|
64
|
+
value.status === 'success' &&
|
|
65
|
+
typeof value.timestamp === 'string' &&
|
|
66
|
+
typeof value.reference === 'string' &&
|
|
67
|
+
typeof value.challengeId === 'string' &&
|
|
68
|
+
typeof value.channelId === 'string' &&
|
|
69
|
+
typeof value.acceptedCumulative === 'string' &&
|
|
70
|
+
typeof value.spent === 'string' &&
|
|
71
|
+
(value.units === undefined || typeof value.units === 'number') &&
|
|
72
|
+
(value.txHash === undefined || typeof value.txHash === 'string'));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a session receipt.
|
|
76
|
+
*/
|
|
77
|
+
export function createSessionReceipt(params) {
|
|
78
|
+
return {
|
|
79
|
+
method: 'tempo',
|
|
80
|
+
intent: 'session',
|
|
81
|
+
status: 'success',
|
|
82
|
+
timestamp: new Date().toISOString(),
|
|
83
|
+
reference: params.channelId,
|
|
84
|
+
challengeId: params.challengeId,
|
|
85
|
+
channelId: params.channelId,
|
|
86
|
+
acceptedCumulative: params.acceptedCumulative.toString(),
|
|
87
|
+
spent: params.spent.toString(),
|
|
88
|
+
...(params.units !== undefined && { units: params.units }),
|
|
89
|
+
...(params.txHash !== undefined && { txHash: params.txHash }),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Serialize a session receipt to the Payment-Receipt header format.
|
|
94
|
+
*/
|
|
95
|
+
export function serializeSessionReceipt(receipt) {
|
|
96
|
+
const json = JSON.stringify(receipt);
|
|
97
|
+
return Base64.fromString(json, { pad: false, url: true });
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Deserialize a Payment-Receipt header value to a session receipt.
|
|
101
|
+
*/
|
|
102
|
+
export function deserializeSessionReceipt(encoded) {
|
|
103
|
+
const json = Base64.toString(encoded);
|
|
104
|
+
const value = JSON.parse(json);
|
|
105
|
+
if (!isSessionReceipt(value))
|
|
106
|
+
throw new Error('Invalid session receipt.');
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
/** Returns whether a response carries an SSE event stream. */
|
|
110
|
+
export function isEventStream(response) {
|
|
111
|
+
const ct = response.headers.get('content-type');
|
|
112
|
+
return ct?.toLowerCase().startsWith('text/event-stream') ?? false;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Format a session receipt as a Server-Sent Event.
|
|
116
|
+
*
|
|
117
|
+
* Produces a valid SSE event string with `event: payment-receipt`
|
|
118
|
+
* and the receipt JSON as the `data` field.
|
|
119
|
+
*/
|
|
120
|
+
export function formatReceiptEvent(receipt) {
|
|
121
|
+
return `event: payment-receipt\ndata: ${JSON.stringify(receipt)}\n\n`;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Format a need-voucher event as a Server-Sent Event.
|
|
125
|
+
*
|
|
126
|
+
* Emitted when the channel balance is exhausted mid-stream.
|
|
127
|
+
*/
|
|
128
|
+
export function formatNeedVoucherEvent(params) {
|
|
129
|
+
return `event: payment-need-voucher\ndata: ${JSON.stringify(params)}\n\n`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Format an application message as SSE, preserving embedded newlines.
|
|
133
|
+
*
|
|
134
|
+
* SSE requires multi-line payloads to be emitted as separate `data:` fields.
|
|
135
|
+
*/
|
|
136
|
+
export function formatMessageEvent(value) {
|
|
137
|
+
const data = String(value)
|
|
138
|
+
.split('\n')
|
|
139
|
+
.map((line) => `data: ${line}`)
|
|
140
|
+
.join('\n');
|
|
141
|
+
return `event: message\n${data}\n\n`;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Parse a raw SSE event string into a typed event.
|
|
145
|
+
*
|
|
146
|
+
* Unknown event names fall back to `message`, which preserves compatibility
|
|
147
|
+
* with generic SSE producers.
|
|
148
|
+
*/
|
|
149
|
+
export function parseEvent(raw) {
|
|
150
|
+
let eventType = 'message';
|
|
151
|
+
const dataLines = [];
|
|
152
|
+
for (const line of raw.split('\n')) {
|
|
153
|
+
if (line.startsWith('event: ')) {
|
|
154
|
+
eventType = line.slice(7).trim();
|
|
155
|
+
}
|
|
156
|
+
else if (line.startsWith('data: ')) {
|
|
157
|
+
dataLines.push(line.slice(6));
|
|
158
|
+
}
|
|
159
|
+
else if (line === 'data:') {
|
|
160
|
+
dataLines.push('');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (dataLines.length === 0)
|
|
164
|
+
return null;
|
|
165
|
+
const data = dataLines.join('\n');
|
|
166
|
+
switch (eventType) {
|
|
167
|
+
case 'message':
|
|
168
|
+
return { type: 'message', data };
|
|
169
|
+
case 'payment-need-voucher': {
|
|
170
|
+
const parsed = parseJson(data);
|
|
171
|
+
return isNeedVoucherEvent(parsed) ? { type: 'payment-need-voucher', data: parsed } : null;
|
|
172
|
+
}
|
|
173
|
+
case 'payment-receipt': {
|
|
174
|
+
const parsed = parseJson(data);
|
|
175
|
+
return isSessionReceipt(parsed) ? { type: 'payment-receipt', data: parsed } : null;
|
|
176
|
+
}
|
|
177
|
+
default:
|
|
178
|
+
return { type: 'message', data };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function parseJson(raw) {
|
|
182
|
+
try {
|
|
183
|
+
return JSON.parse(raw);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/** Extracts the `data:` field value from a single SSE event block. */
|
|
190
|
+
export function extractData(event) {
|
|
191
|
+
const dataLines = [];
|
|
192
|
+
for (const line of event.split('\n')) {
|
|
193
|
+
if (line.startsWith('data: '))
|
|
194
|
+
dataLines.push(line.slice(6));
|
|
195
|
+
else if (line === 'data:')
|
|
196
|
+
dataLines.push('');
|
|
197
|
+
}
|
|
198
|
+
return dataLines.length > 0 ? dataLines.join('\n') : null;
|
|
199
|
+
}
|
|
200
|
+
/** Formats the initial or follow-up payment authorization frame. */
|
|
201
|
+
export function formatAuthorizationMessage(authorization) {
|
|
202
|
+
return JSON.stringify({ mpp: 'authorization', authorization });
|
|
203
|
+
}
|
|
204
|
+
/** Formats an application payload frame. */
|
|
205
|
+
export function formatApplicationMessage(data) {
|
|
206
|
+
return JSON.stringify({ mpp: 'message', data });
|
|
207
|
+
}
|
|
208
|
+
/** Formats the client request for a final close-ready receipt. */
|
|
209
|
+
export function formatCloseRequestMessage() {
|
|
210
|
+
return JSON.stringify({ mpp: 'payment-close-request' });
|
|
211
|
+
}
|
|
212
|
+
/** Formats the server close-ready receipt frame. */
|
|
213
|
+
export function formatCloseReadyMessage(receipt) {
|
|
214
|
+
return JSON.stringify({ mpp: 'payment-close-ready', data: receipt });
|
|
215
|
+
}
|
|
216
|
+
/** Formats a server request for a larger voucher. */
|
|
217
|
+
export function formatNeedVoucherMessage(params) {
|
|
218
|
+
return JSON.stringify({ mpp: 'payment-need-voucher', data: params });
|
|
219
|
+
}
|
|
220
|
+
/** Formats an intermediate or final payment receipt frame. */
|
|
221
|
+
export function formatReceiptMessage(receipt) {
|
|
222
|
+
return JSON.stringify({ mpp: 'payment-receipt', data: receipt });
|
|
223
|
+
}
|
|
224
|
+
/** Formats a payment protocol error frame. */
|
|
225
|
+
export function formatErrorMessage(parameters) {
|
|
226
|
+
return JSON.stringify({ mpp: 'payment-error', ...parameters });
|
|
227
|
+
}
|
|
228
|
+
/** Parses a WebSocket payment protocol frame, returning null for application data. */
|
|
229
|
+
export function parseMessage(raw) {
|
|
230
|
+
const parsed = parseJsonObject(raw);
|
|
231
|
+
if (!parsed)
|
|
232
|
+
return null;
|
|
233
|
+
if (parsed.mpp === 'authorization' && typeof parsed.authorization === 'string')
|
|
234
|
+
return { mpp: 'authorization', authorization: parsed.authorization };
|
|
235
|
+
if (parsed.mpp === 'message' && typeof parsed.data === 'string')
|
|
236
|
+
return { mpp: 'message', data: parsed.data };
|
|
237
|
+
if (parsed.mpp === 'payment-close-request')
|
|
238
|
+
return { mpp: 'payment-close-request' };
|
|
239
|
+
if (parsed.mpp === 'payment-close-ready' && isSessionReceipt(parsed.data))
|
|
240
|
+
return { mpp: 'payment-close-ready', data: parsed.data };
|
|
241
|
+
if (parsed.mpp === 'payment-error' &&
|
|
242
|
+
typeof parsed.status === 'number' &&
|
|
243
|
+
typeof parsed.message === 'string')
|
|
244
|
+
return { mpp: 'payment-error', status: parsed.status, message: parsed.message };
|
|
245
|
+
if (parsed.mpp === 'payment-need-voucher' && isNeedVoucherEvent(parsed.data))
|
|
246
|
+
return { mpp: 'payment-need-voucher', data: parsed.data };
|
|
247
|
+
if (parsed.mpp === 'payment-receipt' && isSessionReceipt(parsed.data))
|
|
248
|
+
return { mpp: 'payment-receipt', data: parsed.data };
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
function parseJsonObject(raw) {
|
|
252
|
+
try {
|
|
253
|
+
const value = JSON.parse(raw);
|
|
254
|
+
if (value === null || typeof value !== 'object')
|
|
255
|
+
return null;
|
|
256
|
+
return value;
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/** Canonical TIP-1034 TIP-20 Channel Escrow precompile address. */
|
|
263
|
+
export const tip20ChannelEscrow = '0x4d50500000000000000000000000000000000000';
|
|
264
|
+
//# sourceMappingURL=Protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Protocol.js","sourceRoot":"","sources":["../../../../src/tempo/session/precompile/Protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Account, Address, Client, Hex } from 'viem';
|
|
2
|
+
import type { Voucher, SignedVoucher } from './Protocol.js';
|
|
3
|
+
/**
|
|
4
|
+
* EIP-712 domain for voucher signing.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getVoucherDomain(escrowContract: Address, chainId: number): {
|
|
7
|
+
readonly name: "TIP20 Channel Reserve";
|
|
8
|
+
readonly version: "1";
|
|
9
|
+
readonly chainId: number;
|
|
10
|
+
readonly verifyingContract: `0x${string}`;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* EIP-712 types for voucher signing.
|
|
14
|
+
* Matches @tempo/stream-channels/voucher and on-chain VOUCHER_TYPEHASH.
|
|
15
|
+
*/
|
|
16
|
+
export declare const voucherTypes: {
|
|
17
|
+
readonly Voucher: readonly [{
|
|
18
|
+
readonly name: "channelId";
|
|
19
|
+
readonly type: "bytes32";
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "cumulativeAmount";
|
|
22
|
+
readonly type: "uint96";
|
|
23
|
+
}];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Sign a voucher with an account.
|
|
27
|
+
*/
|
|
28
|
+
export declare function signVoucher(client: Client, account: Account, voucher: Voucher, verifyingContract: Address, chainId: number, _authorizedSigner?: Address | undefined): Promise<Hex>;
|
|
29
|
+
/**
|
|
30
|
+
* Verify a voucher signature matches the expected signer.
|
|
31
|
+
*
|
|
32
|
+
* Only accepts raw secp256k1 signatures — the escrow contract verifies
|
|
33
|
+
* via ecrecover. Keychain, p256, and webAuthn signatures are rejected.
|
|
34
|
+
*/
|
|
35
|
+
export declare function verifyVoucher(escrowContract: Address, chainId: number, voucher: SignedVoucher, expectedSigner: Address): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Parse a voucher from credential payload.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseVoucherFromPayload(channelId: Hex, cumulativeAmount: string, signature: Hex): SignedVoucher;
|
|
40
|
+
//# sourceMappingURL=Voucher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Voucher.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/precompile/Voucher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAMzD,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAQ3D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;;;;;EAOxE;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAKf,CAAA;AA4BV;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,GACtC,OAAO,CAAC,GAAG,CAAC,CA2Bd;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,OAAO,GACtB,OAAO,CA6BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,GAAG,EACd,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,GAAG,GACb,aAAa,CAMf"}
|