mppx 0.6.31 → 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 +17 -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/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 +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 +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 +6 -1
- 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 +200 -7
- package/src/server/Mppx.ts +487 -406
- 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.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 +45 -45
- 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 +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.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.gen.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/html.gen.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"html.gen.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/html.gen.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,ux8lBAAux8lB,CAAA"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type * as Method from '../../../Method.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SessionCredentialContext } from '../../session/precompile/Protocol.js';
|
|
3
|
+
/** Minimal immutable request shape used to decide whether a session request serves billable content. */
|
|
3
4
|
export type RequestBodyProbe = Pick<Method.CapturedRequest, 'headers' | 'hasBody' | 'method'> & Partial<Pick<Method.CapturedRequest, 'url'>>;
|
|
5
|
+
/** Captures the request fields needed by the session content/management classifier. */
|
|
4
6
|
export declare function captureRequestBodyProbe(input: Request): RequestBodyProbe;
|
|
7
|
+
/** Returns whether request metadata indicates a meaningful body is present. */
|
|
5
8
|
export declare function hasCapturedRequestBody(input: Pick<RequestBodyProbe, 'headers' | 'hasBody'>): boolean;
|
|
9
|
+
/** Returns whether a verified session credential should let the application handler serve content. */
|
|
6
10
|
export declare function isSessionContentRequest(input: RequestBodyProbe): boolean;
|
|
7
|
-
|
|
11
|
+
/** Returns whether a plain non-streaming response should be charged after verification. */
|
|
12
|
+
export declare function shouldChargePlainResponse(input: RequestBodyProbe, payload: Partial<SessionCredentialContext>): boolean;
|
|
8
13
|
//# sourceMappingURL=request-body.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../../../../src/tempo/server/internal/request-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../../../../src/tempo/server/internal/request-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAEpF,wGAAwG;AACxG,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,GAC3F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAA;AAE9C,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAOxE;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,SAAS,CAAC,GACnD,OAAO,CAIT;AAWD,sGAAsG;AACtG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAKxE;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACzC,OAAO,CAWT"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Captures the request fields needed by the session content/management classifier. */
|
|
1
2
|
export function captureRequestBodyProbe(input) {
|
|
2
3
|
return {
|
|
3
4
|
headers: input.headers,
|
|
@@ -6,13 +7,22 @@ export function captureRequestBodyProbe(input) {
|
|
|
6
7
|
url: new URL(input.url),
|
|
7
8
|
};
|
|
8
9
|
}
|
|
10
|
+
/** Returns whether request metadata indicates a meaningful body is present. */
|
|
9
11
|
export function hasCapturedRequestBody(input) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
if (hasBodyFramingHeaders(input))
|
|
13
|
+
return true;
|
|
12
14
|
if (input.hasBody === true)
|
|
13
15
|
return true;
|
|
14
|
-
return
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
function hasBodyFramingHeaders(input) {
|
|
19
|
+
const contentLength = input.headers.get('content-length');
|
|
20
|
+
return (contentLength !== null && contentLength !== '0') || input.headers.has('transfer-encoding');
|
|
21
|
+
}
|
|
22
|
+
function hasBodyIntentHeaders(input) {
|
|
23
|
+
return hasBodyFramingHeaders(input) || input.headers.has('content-type');
|
|
15
24
|
}
|
|
25
|
+
/** Returns whether a verified session credential should let the application handler serve content. */
|
|
16
26
|
export function isSessionContentRequest(input) {
|
|
17
27
|
if (input.method === 'HEAD')
|
|
18
28
|
return false;
|
|
@@ -22,9 +32,16 @@ export function isSessionContentRequest(input) {
|
|
|
22
32
|
return true;
|
|
23
33
|
return hasCapturedRequestBody(input);
|
|
24
34
|
}
|
|
35
|
+
/** Returns whether a plain non-streaming response should be charged after verification. */
|
|
25
36
|
export function shouldChargePlainResponse(input, payload) {
|
|
26
37
|
if (payload.action === 'close' || payload.action === 'topUp')
|
|
27
38
|
return false;
|
|
39
|
+
if ((payload.action === 'open' || payload.action === 'voucher') &&
|
|
40
|
+
input.method === 'POST' &&
|
|
41
|
+
!input.url?.search &&
|
|
42
|
+
input.hasBody !== true &&
|
|
43
|
+
!hasBodyIntentHeaders(input))
|
|
44
|
+
return false;
|
|
28
45
|
return isSessionContentRequest(input);
|
|
29
46
|
}
|
|
30
47
|
//# sourceMappingURL=request-body.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-body.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/request-body.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request-body.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/request-body.ts"],"names":[],"mappings":"AAOA,uFAAuF;AACvF,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,IAAI;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;KACxB,CAAA;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CACpC,KAAoD;IAEpD,IAAI,qBAAqB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7C,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAwC;IACrE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACzD,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AACpG,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwC;IACpE,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAC1E,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,uBAAuB,CAAC,KAAuB;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,yBAAyB,CACvC,KAAuB,EACvB,OAA0C;IAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1E,IACE,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;QAC3D,KAAK,CAAC,MAAM,KAAK,MAAM;QACvB,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM;QAClB,KAAK,CAAC,OAAO,KAAK,IAAI;QACtB,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAE5B,OAAO,KAAK,CAAA;IACd,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as Transport from '../../../server/Transport.js';
|
|
2
|
-
import
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
2
|
+
import type { SessionReceipt } from '../../session/precompile/Protocol.js';
|
|
3
|
+
import * as ChannelStore from '../../session/server/ChannelStore.js';
|
|
4
|
+
import * as Sse_core from '../../session/server/Sse.js';
|
|
5
5
|
declare const prepaidSessionTick: unique symbol;
|
|
6
6
|
/** SSE transport with Tempo session controller. */
|
|
7
7
|
export type Sse = Transport.Sse<Sse_core.SessionController>;
|
|
8
|
+
/** Receipt marker used to avoid double-charging a request already charged during verification. */
|
|
8
9
|
export type PrepaidSessionReceipt = SessionReceipt & {
|
|
9
10
|
[prepaidSessionTick]?: true | undefined;
|
|
10
11
|
};
|
|
12
|
+
/** Marks a session receipt as already charged for the current request. */
|
|
11
13
|
export declare function markPrepaidSessionTick(receipt: SessionReceipt): SessionReceipt;
|
|
12
14
|
/**
|
|
13
15
|
* Creates a Tempo-metered SSE transport.
|
|
@@ -21,6 +23,7 @@ export declare function markPrepaidSessionTick(receipt: SessionReceipt): Session
|
|
|
21
23
|
export declare function sse(options: sse.Options & {
|
|
22
24
|
store: ChannelStore.ChannelStore;
|
|
23
25
|
}): Sse;
|
|
26
|
+
/** Type helpers for the Tempo SSE transport adapter. */
|
|
24
27
|
export declare namespace sse {
|
|
25
28
|
type Options = {
|
|
26
29
|
/**
|
|
@@ -38,9 +41,10 @@ export declare namespace sse {
|
|
|
38
41
|
pollingInterval?: number | undefined;
|
|
39
42
|
};
|
|
40
43
|
}
|
|
44
|
+
type DefaultServeGenerate = AsyncIterable<string> | (() => AsyncIterable<string>);
|
|
41
45
|
/** Default SSE serve: iterates values and emits `event: message` per value. */
|
|
42
46
|
export declare function defaultServe(options: {
|
|
43
|
-
generate:
|
|
47
|
+
generate: DefaultServeGenerate;
|
|
44
48
|
challengeId: string;
|
|
45
49
|
}): Response;
|
|
46
50
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/tempo/server/internal/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/tempo/server/internal/transport.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAE1E,OAAO,KAAK,YAAY,MAAM,sCAAsC,CAAA;AACpE,OAAO,KAAK,QAAQ,MAAM,6BAA6B,CAAA;AAGvD,QAAA,MAAM,kBAAkB,eAAoC,CAAA;AAE5D,mDAAmD;AACnD,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAE3D,kGAAkG;AAClG,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG;IACnD,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxC,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAO9E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC,YAAY,CAAA;CAAE,GAAG,GAAG,CA8KpF;AAED,wDAAwD;AACxD,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC3B,KAAK,OAAO,GAAG;QACb;;;;;;;;;WASG;QACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC1B,sDAAsD;QACtD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACrC,CAAA;CACF;AAED,KAAK,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAEjF,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,QAAQ,CAuBX"}
|
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
import * as Challenge from '../../../Challenge.js';
|
|
9
|
+
import * as Constants from '../../../Constants.js';
|
|
9
10
|
import * as Errors from '../../../Errors.js';
|
|
10
11
|
import * as Transport from '../../../server/Transport.js';
|
|
11
|
-
import
|
|
12
|
-
import * as
|
|
12
|
+
import { requireSessionCredentialContext } from '../../session/precompile/Protocol.js';
|
|
13
|
+
import * as ChannelStore from '../../session/server/ChannelStore.js';
|
|
14
|
+
import * as Sse_core from '../../session/server/Sse.js';
|
|
13
15
|
import { captureRequestBodyProbe, shouldChargePlainResponse } from './request-body.js';
|
|
14
16
|
const prepaidSessionTick = Symbol('mppx.prepaidSessionTick');
|
|
17
|
+
/** Marks a session receipt as already charged for the current request. */
|
|
15
18
|
export function markPrepaidSessionTick(receipt) {
|
|
16
19
|
Object.defineProperty(receipt, prepaidSessionTick, {
|
|
17
20
|
configurable: false,
|
|
@@ -64,9 +67,7 @@ export function sse(options) {
|
|
|
64
67
|
const verifiedCredential = envelope?.credential ?? credential;
|
|
65
68
|
const verifiedChallengeId = envelope?.challenge.id ?? challengeId;
|
|
66
69
|
const verifiedRequest = envelope?.request ?? verifiedCredential.challenge.request;
|
|
67
|
-
const payload = verifiedCredential.payload;
|
|
68
|
-
if (!payload.channelId)
|
|
69
|
-
throw new Error('No SSE context available');
|
|
70
|
+
const payload = requireSessionCredentialContext(verifiedCredential.payload, 'No SSE context available');
|
|
70
71
|
const channelId = payload.channelId;
|
|
71
72
|
const tickCost = BigInt(verifiedCredential.challenge.request.amount);
|
|
72
73
|
const unitType = typeof verifiedRequest.unitType === 'string' ? verifiedRequest.unitType : undefined;
|
|
@@ -118,7 +119,7 @@ export function sse(options) {
|
|
|
118
119
|
return new Response(JSON.stringify(error.toProblemDetails(verifiedCredential.challenge.id)), {
|
|
119
120
|
status: error.status,
|
|
120
121
|
headers: {
|
|
121
|
-
|
|
122
|
+
[Constants.Headers.wwwAuthenticate]: Challenge.serialize(verifiedCredential.challenge),
|
|
122
123
|
'Cache-Control': 'no-store',
|
|
123
124
|
'Content-Type': 'application/problem+json',
|
|
124
125
|
},
|
|
@@ -184,7 +185,7 @@ export function sse(options) {
|
|
|
184
185
|
}
|
|
185
186
|
/** Default SSE serve: iterates values and emits `event: message` per value. */
|
|
186
187
|
export function defaultServe(options) {
|
|
187
|
-
const iterable = typeof options.generate === 'function' ? options.generate(
|
|
188
|
+
const iterable = typeof options.generate === 'function' ? options.generate() : options.generate;
|
|
188
189
|
const encoder = new TextEncoder();
|
|
189
190
|
const stream = new ReadableStream({
|
|
190
191
|
async start(controller) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/tempo/server/internal/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Address, type Hex } from 'viem';
|
|
2
|
+
import type { ChannelDescriptor, RawAmountString } from './precompile/Protocol.js';
|
|
3
|
+
/** Server-provided reusable channel state used to bootstrap a client session. */
|
|
4
|
+
export type SessionSnapshot = {
|
|
5
|
+
/** Highest cumulative voucher amount the server has accepted for this channel. */
|
|
6
|
+
acceptedCumulative: RawAmountString;
|
|
7
|
+
/** Tempo chain ID used to derive the channel ID and voucher domain. */
|
|
8
|
+
chainId: number;
|
|
9
|
+
/** TIP-1034 channel ID derived from descriptor, escrow address, and chain ID. */
|
|
10
|
+
channelId: Hex;
|
|
11
|
+
/** Timestamp when unilateral close was requested, when the channel is closing. */
|
|
12
|
+
closeRequestedAt?: RawAmountString | undefined;
|
|
13
|
+
/** Current on-chain deposit ceiling for cumulative voucher authorization. */
|
|
14
|
+
deposit: RawAmountString;
|
|
15
|
+
/** Full descriptor needed to recover the channel without client-side persistence. */
|
|
16
|
+
descriptor: ChannelDescriptor;
|
|
17
|
+
/** Escrow precompile address used to derive the channel ID. */
|
|
18
|
+
escrow: Address;
|
|
19
|
+
/** Minimum cumulative authorization needed for the challenged request or stream continuation. */
|
|
20
|
+
requiredCumulative: RawAmountString;
|
|
21
|
+
/** Amount already settled on-chain. */
|
|
22
|
+
settled: RawAmountString;
|
|
23
|
+
/** Amount consumed by delivered content according to server accounting. */
|
|
24
|
+
spent: RawAmountString;
|
|
25
|
+
/** Paid units delivered by the server, when the transport reports them. */
|
|
26
|
+
units?: number | undefined;
|
|
27
|
+
};
|
|
28
|
+
/** Serializes a session snapshot for the `Payment-Session-Snapshot` header. */
|
|
29
|
+
export declare function serializeSnapshot(snapshot: SessionSnapshot): string;
|
|
30
|
+
/** Deserializes a session snapshot from the `Payment-Session-Snapshot` header. */
|
|
31
|
+
export declare function deserializeSnapshot(value: string): SessionSnapshot;
|
|
32
|
+
//# sourceMappingURL=Snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Snapshot.d.ts","sourceRoot":"","sources":["../../../src/tempo/session/Snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AAIxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAElF,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAC5B,kFAAkF;IAClF,kBAAkB,EAAE,eAAe,CAAA;IACnC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,iFAAiF;IACjF,SAAS,EAAE,GAAG,CAAA;IACd,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAC9C,6EAA6E;IAC7E,OAAO,EAAE,eAAe,CAAA;IACxB,qFAAqF;IACrF,UAAU,EAAE,iBAAiB,CAAA;IAC7B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAA;IACf,iGAAiG;IACjG,kBAAkB,EAAE,eAAe,CAAA;IACnC,uCAAuC;IACvC,OAAO,EAAE,eAAe,CAAA;IACxB,2EAA2E;IAC3E,KAAK,EAAE,eAAe,CAAA;IACtB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B,CAAA;AAmCD,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEnE;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAElE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isAddress } from 'viem';
|
|
2
|
+
import * as HeaderCodec from '../../internal/HeaderCodec.js';
|
|
3
|
+
import * as z from '../../zod.js';
|
|
4
|
+
const addressSchema = z.custom((value) => typeof value === 'string' && isAddress(value, { strict: false }));
|
|
5
|
+
const hashSchema = z.custom((value) => typeof value === 'string' && /^0x[0-9a-fA-F]{64}$/.test(value));
|
|
6
|
+
const channelDescriptorSchema = z.object({
|
|
7
|
+
authorizedSigner: addressSchema,
|
|
8
|
+
expiringNonceHash: hashSchema,
|
|
9
|
+
operator: addressSchema,
|
|
10
|
+
payee: addressSchema,
|
|
11
|
+
payer: addressSchema,
|
|
12
|
+
salt: hashSchema,
|
|
13
|
+
token: addressSchema,
|
|
14
|
+
});
|
|
15
|
+
const sessionSnapshotSchema = z.object({
|
|
16
|
+
acceptedCumulative: z.string(),
|
|
17
|
+
chainId: z.number(),
|
|
18
|
+
channelId: hashSchema,
|
|
19
|
+
closeRequestedAt: z.optional(z.string()),
|
|
20
|
+
deposit: z.string(),
|
|
21
|
+
descriptor: channelDescriptorSchema,
|
|
22
|
+
escrow: addressSchema,
|
|
23
|
+
requiredCumulative: z.string(),
|
|
24
|
+
settled: z.string(),
|
|
25
|
+
spent: z.string(),
|
|
26
|
+
units: z.optional(z.number()),
|
|
27
|
+
});
|
|
28
|
+
const sessionSnapshotHeader = HeaderCodec.createJson(sessionSnapshotSchema);
|
|
29
|
+
/** Serializes a session snapshot for the `Payment-Session-Snapshot` header. */
|
|
30
|
+
export function serializeSnapshot(snapshot) {
|
|
31
|
+
return sessionSnapshotHeader.encode(snapshot);
|
|
32
|
+
}
|
|
33
|
+
/** Deserializes a session snapshot from the `Payment-Session-Snapshot` header. */
|
|
34
|
+
export function deserializeSnapshot(value) {
|
|
35
|
+
return sessionSnapshotHeader.decode(value);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=Snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Snapshot.js","sourceRoot":"","sources":["../../../src/tempo/session/Snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,MAAM,CAAA;AAExD,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AA6BjC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAC5B,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAC5E,CAAA;AACD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAC1E,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,gBAAgB,EAAE,aAAa;IAC/B,iBAAiB,EAAE,UAAU;IAC7B,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,aAAa;CACrB,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,UAAU;IACrB,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,uBAAuB;IACnC,MAAM,EAAE,aAAa;IACrB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;AAE3E,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,QAAyB;IACzD,OAAO,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAoB,CAAA;AAC/D,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared client-side TIP-1034 channel operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides the low-level helpers that both `tempo.session()` and
|
|
5
|
+
* `tempo.session.manager()` rely on: channel ID computation,
|
|
6
|
+
* transaction-bound descriptor construction, on-chain open/top-up payload
|
|
7
|
+
* construction, voucher/close payload serialization, and transaction signing.
|
|
8
|
+
*
|
|
9
|
+
* @see https://tips.sh/1034-1
|
|
10
|
+
*/
|
|
11
|
+
import { Hex } from 'ox';
|
|
12
|
+
import { type Account, type Address, type Client } from 'viem';
|
|
13
|
+
import type { Challenge } from '../../../Challenge.js';
|
|
14
|
+
import * as Channel from '../precompile/Channel.js';
|
|
15
|
+
import type { CloseCredentialPayload, OpenCredentialPayload, SessionCredentialPayload, TopUpCredentialPayload, VoucherCredentialPayload } from '../precompile/Protocol.js';
|
|
16
|
+
/** Client-side cached channel metadata used for automatic voucher management. */
|
|
17
|
+
export type ChannelEntry = {
|
|
18
|
+
/** TIP-1034 channel ID derived from descriptor, escrow, and chain ID. */
|
|
19
|
+
channelId: Hex.Hex;
|
|
20
|
+
/** Highest cumulative amount this client has locally authorized. */
|
|
21
|
+
cumulativeAmount: bigint;
|
|
22
|
+
/** Latest channel deposit known by the client. */
|
|
23
|
+
deposit: bigint;
|
|
24
|
+
/** TIP-1034 descriptor required for vouchers, top-ups, and close credentials. */
|
|
25
|
+
descriptor: Channel.ChannelDescriptor;
|
|
26
|
+
/** Escrow contract address used to derive `channelId`. */
|
|
27
|
+
escrow: Address;
|
|
28
|
+
/** EVM chain ID used for channel ID and voucher domain separation. */
|
|
29
|
+
chainId: number;
|
|
30
|
+
/** Whether the client considers the channel reusable for new vouchers. */
|
|
31
|
+
opened: boolean;
|
|
32
|
+
};
|
|
33
|
+
/** Resolves the voucher signer address for a client account and optional override. */
|
|
34
|
+
export declare function resolveAuthorizedSigner(account: Account, override?: Address | undefined): Address;
|
|
35
|
+
/** Resolves the escrow precompile from local override, challenge hints, or canonical default. */
|
|
36
|
+
export declare function resolveEscrow(challenge: {
|
|
37
|
+
request: {
|
|
38
|
+
methodDetails?: unknown;
|
|
39
|
+
};
|
|
40
|
+
}, escrowOverride?: Address | undefined): Address;
|
|
41
|
+
/** Serializes a session credential with a DID source bound to the payer account. */
|
|
42
|
+
export declare function serializeCredential(challenge: Challenge, payload: SessionCredentialPayload, chainId: number, account: Account): string;
|
|
43
|
+
/** Case-insensitive EVM address equality. */
|
|
44
|
+
export declare function isSameAddress(a: Address, b: Address): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Signs and creates a TIP-1034 voucher credential payload for an existing channel.
|
|
47
|
+
*
|
|
48
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
49
|
+
*/
|
|
50
|
+
export declare function createVoucherPayload(client: Client, account: Account, descriptor: Channel.ChannelDescriptor, cumulativeAmount: bigint, chainId: number, escrow?: Address): Promise<VoucherCredentialPayload>;
|
|
51
|
+
/**
|
|
52
|
+
* Signs and creates a TIP-1034 close credential payload for an existing channel.
|
|
53
|
+
*
|
|
54
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
55
|
+
*/
|
|
56
|
+
export declare function createClosePayload(client: Client, account: Account, descriptor: Channel.ChannelDescriptor, cumulativeAmount: bigint, chainId: number, escrow?: Address): Promise<CloseCredentialPayload>;
|
|
57
|
+
/**
|
|
58
|
+
* Prepares, signs, and creates a TIP-1034 open credential payload.
|
|
59
|
+
*
|
|
60
|
+
* The channel descriptor uses the signed transaction's expiring nonce hash
|
|
61
|
+
* because TIP-1034 binds each opened channel to that transaction context.
|
|
62
|
+
*
|
|
63
|
+
* @see https://tips.sh/1034-1#channel-identity-and-packed-state
|
|
64
|
+
*/
|
|
65
|
+
export declare function createOpenPayload(client: Client, account: Account, parameters: {
|
|
66
|
+
authorizedSigner?: Address | undefined;
|
|
67
|
+
chainId: number;
|
|
68
|
+
deposit: bigint;
|
|
69
|
+
escrow?: Address | undefined;
|
|
70
|
+
feePayer?: boolean | undefined;
|
|
71
|
+
initialAmount: bigint;
|
|
72
|
+
operator?: Address | undefined;
|
|
73
|
+
payee: Address;
|
|
74
|
+
token: Address;
|
|
75
|
+
}): Promise<OpenCredentialPayload>;
|
|
76
|
+
/**
|
|
77
|
+
* Prepares, signs, and creates a TIP-1034 top-up credential payload.
|
|
78
|
+
*
|
|
79
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
80
|
+
*/
|
|
81
|
+
export declare function createTopUpPayload(client: Client, account: Account, descriptor: Channel.ChannelDescriptor, additionalDeposit: bigint, chainId: number, feePayer?: boolean | undefined, escrow?: Address): Promise<TopUpCredentialPayload>;
|
|
82
|
+
//# sourceMappingURL=ChannelOps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelOps.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/client/ChannelOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared client-side TIP-1034 channel operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides the low-level helpers that both `tempo.session()` and
|
|
5
|
+
* `tempo.session.manager()` rely on: channel ID computation,
|
|
6
|
+
* transaction-bound descriptor construction, on-chain open/top-up payload
|
|
7
|
+
* construction, voucher/close payload serialization, and transaction signing.
|
|
8
|
+
*
|
|
9
|
+
* @see https://tips.sh/1034-1
|
|
10
|
+
*/
|
|
11
|
+
import { Hex } from 'ox';
|
|
12
|
+
import { encodeFunctionData, isAddress, zeroAddress, } from 'viem';
|
|
13
|
+
import { prepareTransactionRequest, signTransaction } from 'viem/actions';
|
|
14
|
+
import { Transaction } from 'viem/tempo';
|
|
15
|
+
import * as Credential from '../../../Credential.js';
|
|
16
|
+
import * as Channel from '../precompile/Channel.js';
|
|
17
|
+
import { escrowAbi } from '../precompile/escrow.abi.js';
|
|
18
|
+
import { tip20ChannelEscrow } from '../precompile/Protocol.js';
|
|
19
|
+
import { uint96 } from '../precompile/Protocol.js';
|
|
20
|
+
import * as Voucher from '../precompile/Voucher.js';
|
|
21
|
+
function voucherAuthorizedSigner(address) {
|
|
22
|
+
return address.toLowerCase() === zeroAddress ? undefined : address;
|
|
23
|
+
}
|
|
24
|
+
function isObject(value) {
|
|
25
|
+
return typeof value === 'object' && value !== null;
|
|
26
|
+
}
|
|
27
|
+
function readOptionalAddress(value) {
|
|
28
|
+
return typeof value === 'string' && isAddress(value, { strict: false }) ? value : undefined;
|
|
29
|
+
}
|
|
30
|
+
function readAccessKeyAddress(account) {
|
|
31
|
+
return readOptionalAddress(account.accessKeyAddress);
|
|
32
|
+
}
|
|
33
|
+
/** Resolves the voucher signer address for a client account and optional override. */
|
|
34
|
+
export function resolveAuthorizedSigner(account, override) {
|
|
35
|
+
return override ?? readAccessKeyAddress(account) ?? account.address;
|
|
36
|
+
}
|
|
37
|
+
async function prepareTempoChannelTransaction(client, parameters) {
|
|
38
|
+
const { account, calls, feePayer, feeToken } = parameters;
|
|
39
|
+
// viem's stable transaction request type does not yet expose Tempo's
|
|
40
|
+
// `calls`, `feePayer`, and `feeToken` fields together. Keep the cast at
|
|
41
|
+
// this boundary so session credential builders stay typed.
|
|
42
|
+
return prepareTransactionRequest(client, {
|
|
43
|
+
account,
|
|
44
|
+
calls,
|
|
45
|
+
...(feePayer ? { feePayer: true } : {}),
|
|
46
|
+
feeToken,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function signPreparedTempoTransaction(client, prepared) {
|
|
50
|
+
return (await signTransaction(client, prepared));
|
|
51
|
+
}
|
|
52
|
+
/** Resolves the escrow precompile from local override, challenge hints, or canonical default. */
|
|
53
|
+
export function resolveEscrow(challenge, escrowOverride) {
|
|
54
|
+
const methodDetails = challenge.request.methodDetails;
|
|
55
|
+
const challengeEscrow = isObject(methodDetails)
|
|
56
|
+
? (readOptionalAddress(methodDetails.escrowContract) ??
|
|
57
|
+
readOptionalAddress(methodDetails.escrow))
|
|
58
|
+
: undefined;
|
|
59
|
+
return escrowOverride ?? challengeEscrow ?? tip20ChannelEscrow;
|
|
60
|
+
}
|
|
61
|
+
/** Serializes a session credential with a DID source bound to the payer account. */
|
|
62
|
+
export function serializeCredential(challenge, payload, chainId, account) {
|
|
63
|
+
return Credential.serialize({
|
|
64
|
+
challenge,
|
|
65
|
+
payload,
|
|
66
|
+
source: `did:pkh:eip155:${chainId}:${account.address}`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Case-insensitive EVM address equality. */
|
|
70
|
+
export function isSameAddress(a, b) {
|
|
71
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Signs and creates a TIP-1034 voucher credential payload for an existing channel.
|
|
75
|
+
*
|
|
76
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
77
|
+
*/
|
|
78
|
+
export async function createVoucherPayload(client, account, descriptor, cumulativeAmount, chainId, escrow = tip20ChannelEscrow) {
|
|
79
|
+
const channelId = Channel.computeId({
|
|
80
|
+
...descriptor,
|
|
81
|
+
chainId,
|
|
82
|
+
escrow,
|
|
83
|
+
});
|
|
84
|
+
const amount = uint96(cumulativeAmount);
|
|
85
|
+
const signature = await Voucher.signVoucher(client, account, { channelId, cumulativeAmount: amount }, escrow, chainId, voucherAuthorizedSigner(descriptor.authorizedSigner));
|
|
86
|
+
return {
|
|
87
|
+
action: 'voucher',
|
|
88
|
+
channelId,
|
|
89
|
+
descriptor,
|
|
90
|
+
cumulativeAmount: amount.toString(),
|
|
91
|
+
signature,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Signs and creates a TIP-1034 close credential payload for an existing channel.
|
|
96
|
+
*
|
|
97
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
98
|
+
*/
|
|
99
|
+
export async function createClosePayload(client, account, descriptor, cumulativeAmount, chainId, escrow = tip20ChannelEscrow) {
|
|
100
|
+
const voucher = await createVoucherPayload(client, account, descriptor, cumulativeAmount, chainId, escrow);
|
|
101
|
+
return {
|
|
102
|
+
action: 'close',
|
|
103
|
+
channelId: voucher.channelId,
|
|
104
|
+
descriptor,
|
|
105
|
+
cumulativeAmount: voucher.cumulativeAmount,
|
|
106
|
+
signature: voucher.signature,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Prepares, signs, and creates a TIP-1034 open credential payload.
|
|
111
|
+
*
|
|
112
|
+
* The channel descriptor uses the signed transaction's expiring nonce hash
|
|
113
|
+
* because TIP-1034 binds each opened channel to that transaction context.
|
|
114
|
+
*
|
|
115
|
+
* @see https://tips.sh/1034-1#channel-identity-and-packed-state
|
|
116
|
+
*/
|
|
117
|
+
export async function createOpenPayload(client, account, parameters) {
|
|
118
|
+
const authorizedSigner = resolveAuthorizedSigner(account, parameters.authorizedSigner);
|
|
119
|
+
const escrow = parameters.escrow ?? tip20ChannelEscrow;
|
|
120
|
+
const operator = parameters.operator ?? '0x0000000000000000000000000000000000000000';
|
|
121
|
+
const salt = Hex.random(32);
|
|
122
|
+
const deposit = uint96(parameters.deposit);
|
|
123
|
+
const initialAmount = uint96(parameters.initialAmount);
|
|
124
|
+
const openData = encodeFunctionData({
|
|
125
|
+
abi: escrowAbi,
|
|
126
|
+
functionName: 'open',
|
|
127
|
+
args: [parameters.payee, operator, parameters.token, deposit, salt, authorizedSigner],
|
|
128
|
+
});
|
|
129
|
+
const prepared = await prepareTempoChannelTransaction(client, {
|
|
130
|
+
account,
|
|
131
|
+
calls: [{ to: escrow, data: openData }],
|
|
132
|
+
feePayer: parameters.feePayer,
|
|
133
|
+
feeToken: parameters.token,
|
|
134
|
+
});
|
|
135
|
+
const transaction = await signPreparedTempoTransaction(client, prepared);
|
|
136
|
+
const signed = Transaction.deserialize(transaction);
|
|
137
|
+
const expiringNonceHash = Channel.computeExpiringNonceHash(Channel.transactionForExpiringNonceHash({
|
|
138
|
+
...(parameters.feePayer ? { feePayer: true } : {}),
|
|
139
|
+
transaction: signed,
|
|
140
|
+
}), { sender: account.address });
|
|
141
|
+
const descriptor = {
|
|
142
|
+
authorizedSigner,
|
|
143
|
+
expiringNonceHash,
|
|
144
|
+
operator,
|
|
145
|
+
payee: parameters.payee,
|
|
146
|
+
payer: account.address,
|
|
147
|
+
salt,
|
|
148
|
+
token: parameters.token,
|
|
149
|
+
};
|
|
150
|
+
const channelId = Channel.computeId({
|
|
151
|
+
...descriptor,
|
|
152
|
+
chainId: parameters.chainId,
|
|
153
|
+
escrow,
|
|
154
|
+
});
|
|
155
|
+
const signature = await Voucher.signVoucher(client, account, { channelId, cumulativeAmount: initialAmount }, escrow, parameters.chainId, voucherAuthorizedSigner(authorizedSigner));
|
|
156
|
+
return {
|
|
157
|
+
action: 'open',
|
|
158
|
+
type: 'transaction',
|
|
159
|
+
channelId,
|
|
160
|
+
transaction,
|
|
161
|
+
signature,
|
|
162
|
+
descriptor,
|
|
163
|
+
cumulativeAmount: initialAmount.toString(),
|
|
164
|
+
authorizedSigner: descriptor.authorizedSigner,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Prepares, signs, and creates a TIP-1034 top-up credential payload.
|
|
169
|
+
*
|
|
170
|
+
* @see https://tips.sh/1034-1#execution-semantics
|
|
171
|
+
*/
|
|
172
|
+
export async function createTopUpPayload(client, account, descriptor, additionalDeposit, chainId, feePayer, escrow = tip20ChannelEscrow) {
|
|
173
|
+
const channelId = Channel.computeId({
|
|
174
|
+
...descriptor,
|
|
175
|
+
chainId,
|
|
176
|
+
escrow,
|
|
177
|
+
});
|
|
178
|
+
const deposit = uint96(additionalDeposit);
|
|
179
|
+
const prepared = await prepareTempoChannelTransaction(client, {
|
|
180
|
+
account,
|
|
181
|
+
calls: [
|
|
182
|
+
{
|
|
183
|
+
to: escrow,
|
|
184
|
+
data: encodeFunctionData({
|
|
185
|
+
abi: escrowAbi,
|
|
186
|
+
functionName: 'topUp',
|
|
187
|
+
args: [descriptor, deposit],
|
|
188
|
+
}),
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
feePayer,
|
|
192
|
+
feeToken: descriptor.token,
|
|
193
|
+
});
|
|
194
|
+
const transaction = await signPreparedTempoTransaction(client, prepared);
|
|
195
|
+
return {
|
|
196
|
+
action: 'topUp',
|
|
197
|
+
type: 'transaction',
|
|
198
|
+
channelId,
|
|
199
|
+
transaction,
|
|
200
|
+
descriptor,
|
|
201
|
+
additionalDeposit: deposit.toString(),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=ChannelOps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelOps.js","sourceRoot":"","sources":["../../../../src/tempo/session/client/ChannelOps.ts"],"names":[],"mappings":"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"}
|