mppx 0.8.15 → 0.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (966) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +61 -39
  4. package/dist/Constants.d.ts +17 -17
  5. package/dist/Errors.d.ts +3 -3
  6. package/dist/Method.d.ts +35 -5
  7. package/dist/Method.js +7 -22
  8. package/dist/Store.d.ts +19 -0
  9. package/dist/Store.js +43 -0
  10. package/dist/attestation/Client.d.ts +17 -0
  11. package/dist/attestation/Client.js +28 -0
  12. package/dist/attestation/Constants.d.ts +15 -0
  13. package/dist/attestation/Constants.js +15 -0
  14. package/dist/attestation/Server.d.ts +4 -0
  15. package/dist/attestation/Server.js +8 -0
  16. package/dist/attestation/Types.d.ts +76 -0
  17. package/dist/attestation/Types.js +2 -0
  18. package/dist/attestation/index.d.ts +6 -0
  19. package/dist/attestation/index.js +6 -0
  20. package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
  21. package/dist/attestation/internal/HttpMessageSignature.js +320 -0
  22. package/dist/attestation/internal/SigningContext.d.ts +4 -0
  23. package/dist/attestation/internal/SigningContext.js +11 -0
  24. package/dist/bin.js +3 -3
  25. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  26. package/dist/cli/account.d.ts +14 -14
  27. package/dist/cli/cli.d.ts +6 -6
  28. package/dist/cli/cli.js +253 -1504
  29. package/dist/cli/plugins/index.js +19 -5
  30. package/dist/cli/plugins/tempo.js +7 -3
  31. package/dist/cli/sessions/Manager.js +7 -4
  32. package/dist/cli/sessions/commands.d.ts +4 -4
  33. package/dist/cli/sessions/request.d.ts +2 -0
  34. package/dist/cli/sessions/request.js +18 -0
  35. package/dist/cli/sessions/store.js +28 -14
  36. package/dist/cli/utils.d.ts +1 -1
  37. package/dist/cli/validate/index.d.ts +3 -3
  38. package/dist/client/Mppx.d.ts +3 -0
  39. package/dist/client/Mppx.js +13 -5
  40. package/dist/client/Transport.d.ts +3 -5
  41. package/dist/client/Transport.js +1 -17
  42. package/dist/client/internal/Fetch.js +2 -6
  43. package/dist/discovery/Discovery.js +2 -1
  44. package/dist/discovery/OpenApi.d.ts +3 -5
  45. package/dist/discovery/OpenApi.js +13 -34
  46. package/dist/discovery/internal/Metadata.d.ts +20 -0
  47. package/dist/discovery/internal/Metadata.js +36 -0
  48. package/dist/evm/Methods.d.ts +11 -11
  49. package/dist/evm/Types.d.ts +17 -17
  50. package/dist/evm/client/Charge.d.ts +11 -11
  51. package/dist/evm/client/Charge.js +8 -0
  52. package/dist/evm/client/Methods.d.ts +11 -11
  53. package/dist/evm/server/Charge.d.ts +1 -1
  54. package/dist/evm/server/Charge.js +2 -0
  55. package/dist/evm/server/Methods.d.ts +11 -11
  56. package/dist/internal/HeaderCodec.d.ts +2 -2
  57. package/dist/internal/types.d.ts +6 -0
  58. package/dist/proxy/Proxy.d.ts +2 -0
  59. package/dist/proxy/Proxy.js +117 -9
  60. package/dist/proxy/Service.d.ts +36 -1
  61. package/dist/proxy/Service.js +9 -8
  62. package/dist/proxy/services/anthropic.js +1 -0
  63. package/dist/proxy/services/openai.js +1 -0
  64. package/dist/proxy/services/stripe.js +1 -0
  65. package/dist/server/Mppx.d.ts +75 -13
  66. package/dist/server/Mppx.js +201 -23
  67. package/dist/server/core.d.ts +9 -0
  68. package/dist/server/core.js +9 -0
  69. package/dist/server/internal/html/config.d.ts +9 -9
  70. package/dist/server/internal/html/constants.d.ts +17 -17
  71. package/dist/stripe/Methods.d.ts +10 -10
  72. package/dist/stripe/client/Charge.d.ts +10 -10
  73. package/dist/stripe/client/Methods.d.ts +10 -10
  74. package/dist/stripe/internal/constants.d.ts +1 -1
  75. package/dist/stripe/internal/constants.js +1 -1
  76. package/dist/stripe/internal/types.d.ts +1 -0
  77. package/dist/stripe/server/Charge.d.ts +11 -11
  78. package/dist/stripe/server/Charge.js +51 -5
  79. package/dist/stripe/server/Methods.d.ts +137 -48
  80. package/dist/stripe/server/Methods.js +265 -4
  81. package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
  82. package/dist/stripe/server/internal/deposit-address.js +28 -0
  83. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  84. package/dist/stripe/server/internal/html.gen.js +1 -1
  85. package/dist/stripe/server/internal/record-payment.d.ts +15 -0
  86. package/dist/stripe/server/internal/record-payment.js +42 -0
  87. package/dist/stripe/server/internal/request.d.ts +25 -0
  88. package/dist/stripe/server/internal/request.js +29 -0
  89. package/dist/stripe/server/spt.d.ts +8 -0
  90. package/dist/stripe/server/spt.js +8 -0
  91. package/dist/tap/Constants.d.ts +28 -0
  92. package/dist/tap/Constants.js +32 -0
  93. package/dist/tap/Types.d.ts +11 -0
  94. package/dist/tap/Types.js +2 -0
  95. package/dist/tap/client/index.d.ts +26 -0
  96. package/dist/tap/client/index.js +33 -0
  97. package/dist/tap/index.d.ts +5 -0
  98. package/dist/tap/index.js +5 -0
  99. package/dist/tap/server/index.d.ts +20 -0
  100. package/dist/tap/server/index.js +36 -0
  101. package/dist/tempo/Attribution.d.ts +1 -1
  102. package/dist/tempo/Methods.d.ts +73 -60
  103. package/dist/tempo/Methods.js +14 -3
  104. package/dist/tempo/Proof.d.ts +16 -16
  105. package/dist/tempo/client/Charge.d.ts +22 -19
  106. package/dist/tempo/client/Charge.js +32 -16
  107. package/dist/tempo/client/Methods.d.ts +51 -38
  108. package/dist/tempo/client/Subscription.d.ts +23 -23
  109. package/dist/tempo/internal/address.d.ts +2 -1
  110. package/dist/tempo/internal/address.js +3 -1
  111. package/dist/tempo/internal/auto-swap.js +4 -19
  112. package/dist/tempo/internal/defaults.d.ts +17 -6
  113. package/dist/tempo/internal/defaults.js +11 -0
  114. package/dist/tempo/internal/fee-payer.d.ts +12 -12
  115. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  116. package/dist/tempo/internal/machine-token-charge.js +113 -0
  117. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  118. package/dist/tempo/internal/machine-token-session.js +173 -0
  119. package/dist/tempo/internal/proof.d.ts +17 -17
  120. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  121. package/dist/tempo/internal/signature-envelope.js +28 -0
  122. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  123. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  124. package/dist/tempo/legacy/client/Session.d.ts +33 -21
  125. package/dist/tempo/legacy/client/Session.js +3 -3
  126. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  127. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  128. package/dist/tempo/legacy/index.d.ts +1 -3
  129. package/dist/tempo/legacy/index.js +1 -3
  130. package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
  131. package/dist/tempo/server/Charge.d.ts +28 -11
  132. package/dist/tempo/server/Charge.js +101 -55
  133. package/dist/tempo/server/Methods.d.ts +58 -56
  134. package/dist/tempo/server/Methods.js +8 -18
  135. package/dist/tempo/server/Relay.d.ts +1 -1
  136. package/dist/tempo/server/Relay.js +2 -2
  137. package/dist/tempo/server/Subscription.d.ts +25 -25
  138. package/dist/tempo/server/Subscription.js +2 -0
  139. package/dist/tempo/server/index.d.ts +1 -1
  140. package/dist/tempo/server/index.js +1 -1
  141. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  142. package/dist/tempo/server/internal/html.gen.js +1 -1
  143. package/dist/tempo/server/internal/transport.d.ts +2 -0
  144. package/dist/tempo/server/internal/transport.js +9 -2
  145. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  146. package/dist/tempo/session/client/ChannelOps.js +35 -6
  147. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  148. package/dist/tempo/session/client/ChannelStore.js +2 -2
  149. package/dist/tempo/session/client/CredentialState.d.ts +18 -3
  150. package/dist/tempo/session/client/CredentialState.js +77 -76
  151. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  152. package/dist/tempo/session/client/Runtime.js +21 -5
  153. package/dist/tempo/session/client/Session.d.ts +34 -22
  154. package/dist/tempo/session/client/Session.js +186 -63
  155. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  156. package/dist/tempo/session/client/SessionManager.js +35 -11
  157. package/dist/tempo/session/client/Transports.d.ts +2 -0
  158. package/dist/tempo/session/client/Transports.js +12 -2
  159. package/dist/tempo/session/precompile/Chain.d.ts +37 -2
  160. package/dist/tempo/session/precompile/Chain.js +116 -15
  161. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  162. package/dist/tempo/session/precompile/Protocol.js +7 -0
  163. package/dist/tempo/session/precompile/Voucher.d.ts +7 -5
  164. package/dist/tempo/session/precompile/Voucher.js +6 -12
  165. package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
  166. package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
  167. package/dist/tempo/session/server/ChannelStore.js +27 -12
  168. package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
  169. package/dist/tempo/session/server/CredentialVerification.js +359 -89
  170. package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
  171. package/dist/tempo/session/server/MeteredStream.js +8 -5
  172. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  173. package/dist/tempo/session/server/RequestState.js +61 -15
  174. package/dist/tempo/session/server/Session.d.ts +46 -23
  175. package/dist/tempo/session/server/Session.js +150 -56
  176. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  177. package/dist/tempo/session/server/Settlement.js +53 -21
  178. package/dist/tempo/session/server/Sse.d.ts +3 -1
  179. package/dist/tempo/session/server/Sse.js +2 -1
  180. package/dist/tempo/session/server/Transports.d.ts +1 -1
  181. package/dist/tempo/session/server/Transports.js +1 -0
  182. package/dist/tempo/session/server/Ws.d.ts +6 -1
  183. package/dist/tempo/session/server/Ws.js +1 -0
  184. package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
  185. package/dist/web-bot-auth/Constants.d.ts +20 -0
  186. package/dist/web-bot-auth/Constants.js +24 -0
  187. package/dist/web-bot-auth/Types.d.ts +10 -0
  188. package/dist/web-bot-auth/Types.js +2 -0
  189. package/dist/web-bot-auth/client/index.d.ts +29 -0
  190. package/dist/web-bot-auth/client/index.js +64 -0
  191. package/dist/web-bot-auth/index.d.ts +7 -0
  192. package/dist/web-bot-auth/index.js +7 -0
  193. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
  194. package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
  195. package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
  196. package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
  197. package/dist/web-bot-auth/server/index.d.ts +35 -0
  198. package/dist/web-bot-auth/server/index.js +88 -0
  199. package/dist/x402/Types.d.ts +6 -6
  200. package/dist/x402/client/Exact.d.ts +8 -0
  201. package/dist/x402/client/Exact.js +40 -10
  202. package/dist/x402/server/EvmCharge.d.ts +22 -0
  203. package/dist/x402/server/EvmCharge.js +54 -20
  204. package/package.json +28 -34
  205. package/dist/BodyDigest.d.ts.map +0 -1
  206. package/dist/BodyDigest.js.map +0 -1
  207. package/dist/Challenge.d.ts.map +0 -1
  208. package/dist/Challenge.js.map +0 -1
  209. package/dist/Constants.d.ts.map +0 -1
  210. package/dist/Constants.js.map +0 -1
  211. package/dist/Credential.d.ts.map +0 -1
  212. package/dist/Credential.js.map +0 -1
  213. package/dist/Errors.d.ts.map +0 -1
  214. package/dist/Errors.js.map +0 -1
  215. package/dist/Expires.d.ts.map +0 -1
  216. package/dist/Expires.js.map +0 -1
  217. package/dist/Html.d.ts.map +0 -1
  218. package/dist/Html.js.map +0 -1
  219. package/dist/Mcp.d.ts.map +0 -1
  220. package/dist/Mcp.js.map +0 -1
  221. package/dist/Method.d.ts.map +0 -1
  222. package/dist/Method.js.map +0 -1
  223. package/dist/PaymentRequest.d.ts.map +0 -1
  224. package/dist/PaymentRequest.js.map +0 -1
  225. package/dist/Receipt.d.ts.map +0 -1
  226. package/dist/Receipt.js.map +0 -1
  227. package/dist/Store.d.ts.map +0 -1
  228. package/dist/Store.js.map +0 -1
  229. package/dist/bin.d.ts.map +0 -1
  230. package/dist/bin.js.map +0 -1
  231. package/dist/cli/account.d.ts.map +0 -1
  232. package/dist/cli/account.js.map +0 -1
  233. package/dist/cli/cli.d.ts.map +0 -1
  234. package/dist/cli/cli.js.map +0 -1
  235. package/dist/cli/config.d.ts.map +0 -1
  236. package/dist/cli/config.js.map +0 -1
  237. package/dist/cli/internal.d.ts.map +0 -1
  238. package/dist/cli/internal.js.map +0 -1
  239. package/dist/cli/plugins/evm.d.ts.map +0 -1
  240. package/dist/cli/plugins/evm.js.map +0 -1
  241. package/dist/cli/plugins/index.d.ts.map +0 -1
  242. package/dist/cli/plugins/index.js.map +0 -1
  243. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  244. package/dist/cli/plugins/plugin.js.map +0 -1
  245. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  246. package/dist/cli/plugins/stripe.js.map +0 -1
  247. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  248. package/dist/cli/plugins/tempo.js.map +0 -1
  249. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  250. package/dist/cli/sessions/Manager.js.map +0 -1
  251. package/dist/cli/sessions/commands.d.ts.map +0 -1
  252. package/dist/cli/sessions/commands.js.map +0 -1
  253. package/dist/cli/sessions/request.d.ts.map +0 -1
  254. package/dist/cli/sessions/request.js.map +0 -1
  255. package/dist/cli/sessions/store.d.ts.map +0 -1
  256. package/dist/cli/sessions/store.js.map +0 -1
  257. package/dist/cli/utils.d.ts.map +0 -1
  258. package/dist/cli/utils.js.map +0 -1
  259. package/dist/cli/validate/challenge.d.ts.map +0 -1
  260. package/dist/cli/validate/challenge.js.map +0 -1
  261. package/dist/cli/validate/discovery.d.ts.map +0 -1
  262. package/dist/cli/validate/discovery.js.map +0 -1
  263. package/dist/cli/validate/helpers.d.ts.map +0 -1
  264. package/dist/cli/validate/helpers.js.map +0 -1
  265. package/dist/cli/validate/index.d.ts.map +0 -1
  266. package/dist/cli/validate/index.js.map +0 -1
  267. package/dist/cli/validate/messages.d.ts.map +0 -1
  268. package/dist/cli/validate/messages.js.map +0 -1
  269. package/dist/cli/validate/payment.d.ts.map +0 -1
  270. package/dist/cli/validate/payment.js.map +0 -1
  271. package/dist/client/Methods.d.ts.map +0 -1
  272. package/dist/client/Methods.js.map +0 -1
  273. package/dist/client/Mppx.d.ts.map +0 -1
  274. package/dist/client/Mppx.js.map +0 -1
  275. package/dist/client/Transport.d.ts.map +0 -1
  276. package/dist/client/Transport.js.map +0 -1
  277. package/dist/client/index.d.ts.map +0 -1
  278. package/dist/client/index.js.map +0 -1
  279. package/dist/client/internal/Fetch.d.ts.map +0 -1
  280. package/dist/client/internal/Fetch.js.map +0 -1
  281. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  282. package/dist/client/internal/MethodChallenge.js.map +0 -1
  283. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  284. package/dist/client/internal/MethodResponse.js.map +0 -1
  285. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  286. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  287. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  288. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  289. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  290. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  291. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  292. package/dist/client/internal/protocols/Shared.js.map +0 -1
  293. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  294. package/dist/client/internal/protocols/X402.js.map +0 -1
  295. package/dist/client/node.d.ts.map +0 -1
  296. package/dist/client/node.js.map +0 -1
  297. package/dist/discovery/Discovery.d.ts.map +0 -1
  298. package/dist/discovery/Discovery.js.map +0 -1
  299. package/dist/discovery/OpenApi.d.ts.map +0 -1
  300. package/dist/discovery/OpenApi.js.map +0 -1
  301. package/dist/discovery/Validate.d.ts.map +0 -1
  302. package/dist/discovery/Validate.js.map +0 -1
  303. package/dist/discovery/index.d.ts.map +0 -1
  304. package/dist/discovery/index.js.map +0 -1
  305. package/dist/evm/Assets.d.ts.map +0 -1
  306. package/dist/evm/Assets.js.map +0 -1
  307. package/dist/evm/Chains.d.ts.map +0 -1
  308. package/dist/evm/Chains.js.map +0 -1
  309. package/dist/evm/Methods.d.ts.map +0 -1
  310. package/dist/evm/Methods.js.map +0 -1
  311. package/dist/evm/Types.d.ts.map +0 -1
  312. package/dist/evm/Types.js.map +0 -1
  313. package/dist/evm/client/Charge.d.ts.map +0 -1
  314. package/dist/evm/client/Charge.js.map +0 -1
  315. package/dist/evm/client/Methods.d.ts.map +0 -1
  316. package/dist/evm/client/Methods.js.map +0 -1
  317. package/dist/evm/client/index.d.ts.map +0 -1
  318. package/dist/evm/client/index.js.map +0 -1
  319. package/dist/evm/index.d.ts.map +0 -1
  320. package/dist/evm/index.js.map +0 -1
  321. package/dist/evm/server/Charge.d.ts.map +0 -1
  322. package/dist/evm/server/Charge.js.map +0 -1
  323. package/dist/evm/server/Methods.d.ts.map +0 -1
  324. package/dist/evm/server/Methods.js.map +0 -1
  325. package/dist/evm/server/index.d.ts.map +0 -1
  326. package/dist/evm/server/index.js.map +0 -1
  327. package/dist/index.d.ts.map +0 -1
  328. package/dist/index.js.map +0 -1
  329. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  330. package/dist/internal/AcceptPayment.js.map +0 -1
  331. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  332. package/dist/internal/HeaderCodec.js.map +0 -1
  333. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  334. package/dist/internal/constantTimeEqual.js.map +0 -1
  335. package/dist/internal/env.d.ts.map +0 -1
  336. package/dist/internal/env.js.map +0 -1
  337. package/dist/internal/types.d.ts.map +0 -1
  338. package/dist/internal/types.js.map +0 -1
  339. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  340. package/dist/mcp/client/McpClient.js.map +0 -1
  341. package/dist/mcp/client/index.d.ts.map +0 -1
  342. package/dist/mcp/client/index.js.map +0 -1
  343. package/dist/mcp/server/Transport.d.ts.map +0 -1
  344. package/dist/mcp/server/Transport.js.map +0 -1
  345. package/dist/mcp/server/index.d.ts.map +0 -1
  346. package/dist/mcp/server/index.js.map +0 -1
  347. package/dist/middlewares/elysia.d.ts.map +0 -1
  348. package/dist/middlewares/elysia.js.map +0 -1
  349. package/dist/middlewares/express.d.ts.map +0 -1
  350. package/dist/middlewares/express.js.map +0 -1
  351. package/dist/middlewares/hono.d.ts.map +0 -1
  352. package/dist/middlewares/hono.js.map +0 -1
  353. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  354. package/dist/middlewares/internal/mppx.js.map +0 -1
  355. package/dist/middlewares/nextjs.d.ts.map +0 -1
  356. package/dist/middlewares/nextjs.js.map +0 -1
  357. package/dist/proxy/Proxy.d.ts.map +0 -1
  358. package/dist/proxy/Proxy.js.map +0 -1
  359. package/dist/proxy/Service.d.ts.map +0 -1
  360. package/dist/proxy/Service.js.map +0 -1
  361. package/dist/proxy/index.d.ts.map +0 -1
  362. package/dist/proxy/index.js.map +0 -1
  363. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  364. package/dist/proxy/internal/Headers.js.map +0 -1
  365. package/dist/proxy/internal/Route.d.ts.map +0 -1
  366. package/dist/proxy/internal/Route.js.map +0 -1
  367. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  368. package/dist/proxy/services/anthropic.js.map +0 -1
  369. package/dist/proxy/services/openai.d.ts.map +0 -1
  370. package/dist/proxy/services/openai.js.map +0 -1
  371. package/dist/proxy/services/stripe.d.ts.map +0 -1
  372. package/dist/proxy/services/stripe.js.map +0 -1
  373. package/dist/server/Methods.d.ts.map +0 -1
  374. package/dist/server/Methods.js.map +0 -1
  375. package/dist/server/Mppx.d.ts.map +0 -1
  376. package/dist/server/Mppx.js.map +0 -1
  377. package/dist/server/NodeListener.d.ts.map +0 -1
  378. package/dist/server/NodeListener.js.map +0 -1
  379. package/dist/server/Request.d.ts.map +0 -1
  380. package/dist/server/Request.js.map +0 -1
  381. package/dist/server/Response.d.ts.map +0 -1
  382. package/dist/server/Response.js.map +0 -1
  383. package/dist/server/Transport.d.ts.map +0 -1
  384. package/dist/server/Transport.js.map +0 -1
  385. package/dist/server/index.d.ts.map +0 -1
  386. package/dist/server/index.js.map +0 -1
  387. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  388. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  389. package/dist/server/internal/html/config.d.ts.map +0 -1
  390. package/dist/server/internal/html/config.js.map +0 -1
  391. package/dist/server/internal/html/constants.d.ts.map +0 -1
  392. package/dist/server/internal/html/constants.js.map +0 -1
  393. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  394. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  395. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  396. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  397. package/dist/server/internal/scope.d.ts.map +0 -1
  398. package/dist/server/internal/scope.js.map +0 -1
  399. package/dist/stripe/Methods.d.ts.map +0 -1
  400. package/dist/stripe/Methods.js.map +0 -1
  401. package/dist/stripe/client/Charge.d.ts.map +0 -1
  402. package/dist/stripe/client/Charge.js.map +0 -1
  403. package/dist/stripe/client/Methods.d.ts.map +0 -1
  404. package/dist/stripe/client/Methods.js.map +0 -1
  405. package/dist/stripe/client/index.d.ts.map +0 -1
  406. package/dist/stripe/client/index.js.map +0 -1
  407. package/dist/stripe/index.d.ts.map +0 -1
  408. package/dist/stripe/index.js.map +0 -1
  409. package/dist/stripe/internal/constants.d.ts.map +0 -1
  410. package/dist/stripe/internal/constants.js.map +0 -1
  411. package/dist/stripe/internal/types.d.ts.map +0 -1
  412. package/dist/stripe/internal/types.js.map +0 -1
  413. package/dist/stripe/server/Charge.d.ts.map +0 -1
  414. package/dist/stripe/server/Charge.js.map +0 -1
  415. package/dist/stripe/server/Methods.d.ts.map +0 -1
  416. package/dist/stripe/server/Methods.js.map +0 -1
  417. package/dist/stripe/server/index.d.ts.map +0 -1
  418. package/dist/stripe/server/index.js.map +0 -1
  419. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  420. package/dist/stripe/server/internal/html/types.js.map +0 -1
  421. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  422. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  423. package/dist/tempo/Attribution.d.ts.map +0 -1
  424. package/dist/tempo/Attribution.js.map +0 -1
  425. package/dist/tempo/Methods.d.ts.map +0 -1
  426. package/dist/tempo/Methods.js.map +0 -1
  427. package/dist/tempo/Proof.d.ts.map +0 -1
  428. package/dist/tempo/Proof.js.map +0 -1
  429. package/dist/tempo/client/Charge.d.ts.map +0 -1
  430. package/dist/tempo/client/Charge.js.map +0 -1
  431. package/dist/tempo/client/Methods.d.ts.map +0 -1
  432. package/dist/tempo/client/Methods.js.map +0 -1
  433. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  434. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  435. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  436. package/dist/tempo/client/Subscription.js.map +0 -1
  437. package/dist/tempo/client/index.d.ts.map +0 -1
  438. package/dist/tempo/client/index.js.map +0 -1
  439. package/dist/tempo/index.d.ts.map +0 -1
  440. package/dist/tempo/index.js.map +0 -1
  441. package/dist/tempo/internal/account.d.ts.map +0 -1
  442. package/dist/tempo/internal/account.js.map +0 -1
  443. package/dist/tempo/internal/address.d.ts.map +0 -1
  444. package/dist/tempo/internal/address.js.map +0 -1
  445. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  446. package/dist/tempo/internal/auto-swap.js.map +0 -1
  447. package/dist/tempo/internal/charge.d.ts.map +0 -1
  448. package/dist/tempo/internal/charge.js.map +0 -1
  449. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  450. package/dist/tempo/internal/defaults.js.map +0 -1
  451. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  452. package/dist/tempo/internal/fee-payer.js.map +0 -1
  453. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  454. package/dist/tempo/internal/fee-token.js.map +0 -1
  455. package/dist/tempo/internal/proof.d.ts.map +0 -1
  456. package/dist/tempo/internal/proof.js.map +0 -1
  457. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  458. package/dist/tempo/internal/selectors.js.map +0 -1
  459. package/dist/tempo/internal/types.d.ts.map +0 -1
  460. package/dist/tempo/internal/types.js.map +0 -1
  461. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  462. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  463. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  464. package/dist/tempo/legacy/client/Session.js.map +0 -1
  465. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  466. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  467. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  468. package/dist/tempo/legacy/client/index.js.map +0 -1
  469. package/dist/tempo/legacy/index.d.ts.map +0 -1
  470. package/dist/tempo/legacy/index.js.map +0 -1
  471. package/dist/tempo/legacy/server/Session.d.ts +0 -208
  472. package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
  473. package/dist/tempo/legacy/server/Session.js +0 -698
  474. package/dist/tempo/legacy/server/Session.js.map +0 -1
  475. package/dist/tempo/legacy/server/index.d.ts +0 -5
  476. package/dist/tempo/legacy/server/index.d.ts.map +0 -1
  477. package/dist/tempo/legacy/server/index.js +0 -5
  478. package/dist/tempo/legacy/server/index.js.map +0 -1
  479. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  480. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  481. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  482. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  483. package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
  484. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
  485. package/dist/tempo/legacy/session/ChannelStore.js +0 -6
  486. package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
  487. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  488. package/dist/tempo/legacy/session/Types.js.map +0 -1
  489. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  490. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  491. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  492. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  493. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  494. package/dist/tempo/legacy/session/index.js.map +0 -1
  495. package/dist/tempo/server/Charge.d.ts.map +0 -1
  496. package/dist/tempo/server/Charge.js.map +0 -1
  497. package/dist/tempo/server/Methods.d.ts.map +0 -1
  498. package/dist/tempo/server/Methods.js.map +0 -1
  499. package/dist/tempo/server/Relay.d.ts.map +0 -1
  500. package/dist/tempo/server/Relay.js.map +0 -1
  501. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  502. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  503. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  504. package/dist/tempo/server/Subscription.js.map +0 -1
  505. package/dist/tempo/server/index.d.ts.map +0 -1
  506. package/dist/tempo/server/index.js.map +0 -1
  507. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  508. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  509. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  510. package/dist/tempo/server/internal/request-body.js.map +0 -1
  511. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  512. package/dist/tempo/server/internal/transport.js.map +0 -1
  513. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  514. package/dist/tempo/session/Snapshot.js.map +0 -1
  515. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  516. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  517. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  518. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  519. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  520. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  521. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  522. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  523. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  524. package/dist/tempo/session/client/Runtime.js.map +0 -1
  525. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  526. package/dist/tempo/session/client/Session.js.map +0 -1
  527. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  528. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  529. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  530. package/dist/tempo/session/client/Transports.js.map +0 -1
  531. package/dist/tempo/session/client/index.d.ts.map +0 -1
  532. package/dist/tempo/session/client/index.js.map +0 -1
  533. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  534. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  535. package/dist/tempo/session/index.d.ts.map +0 -1
  536. package/dist/tempo/session/index.js.map +0 -1
  537. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  538. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  539. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  540. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  541. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  542. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  543. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  544. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  545. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  546. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  547. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  548. package/dist/tempo/session/precompile/index.js.map +0 -1
  549. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  550. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  551. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  552. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  553. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  554. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  555. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  556. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  557. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  558. package/dist/tempo/session/server/RequestState.js.map +0 -1
  559. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  560. package/dist/tempo/session/server/Session.js.map +0 -1
  561. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  562. package/dist/tempo/session/server/Settlement.js.map +0 -1
  563. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  564. package/dist/tempo/session/server/Sse.js.map +0 -1
  565. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  566. package/dist/tempo/session/server/Transports.js.map +0 -1
  567. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  568. package/dist/tempo/session/server/Ws.js.map +0 -1
  569. package/dist/tempo/session/server/index.d.ts.map +0 -1
  570. package/dist/tempo/session/server/index.js.map +0 -1
  571. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  572. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  573. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  574. package/dist/tempo/subscription/Receipt.js.map +0 -1
  575. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  576. package/dist/tempo/subscription/Store.js.map +0 -1
  577. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  578. package/dist/tempo/subscription/Types.js.map +0 -1
  579. package/dist/tempo/subscription/index.d.ts.map +0 -1
  580. package/dist/tempo/subscription/index.js.map +0 -1
  581. package/dist/validation/core.d.ts.map +0 -1
  582. package/dist/validation/core.js.map +0 -1
  583. package/dist/validation/index.d.ts.map +0 -1
  584. package/dist/validation/index.js.map +0 -1
  585. package/dist/viem/Account.d.ts.map +0 -1
  586. package/dist/viem/Account.js.map +0 -1
  587. package/dist/viem/Client.d.ts.map +0 -1
  588. package/dist/viem/Client.js.map +0 -1
  589. package/dist/x402/Assets.d.ts.map +0 -1
  590. package/dist/x402/Assets.js.map +0 -1
  591. package/dist/x402/Header.d.ts.map +0 -1
  592. package/dist/x402/Header.js.map +0 -1
  593. package/dist/x402/Types.d.ts.map +0 -1
  594. package/dist/x402/Types.js.map +0 -1
  595. package/dist/x402/client/Exact.d.ts.map +0 -1
  596. package/dist/x402/client/Exact.js.map +0 -1
  597. package/dist/x402/index.d.ts.map +0 -1
  598. package/dist/x402/index.js.map +0 -1
  599. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  600. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  601. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  602. package/dist/x402/internal/RouteBinding.js.map +0 -1
  603. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  604. package/dist/x402/server/EvmCharge.js.map +0 -1
  605. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  606. package/dist/x402/server/Facilitator.js.map +0 -1
  607. package/dist/zod.d.ts.map +0 -1
  608. package/dist/zod.js.map +0 -1
  609. package/src/BodyDigest.test.ts +0 -43
  610. package/src/BodyDigest.ts +0 -55
  611. package/src/Challenge.fuzz.test.ts +0 -121
  612. package/src/Challenge.test-d.ts +0 -82
  613. package/src/Challenge.test.ts +0 -995
  614. package/src/Challenge.ts +0 -683
  615. package/src/Constants.ts +0 -58
  616. package/src/Credential.fuzz.test.ts +0 -62
  617. package/src/Credential.test.ts +0 -378
  618. package/src/Credential.ts +0 -217
  619. package/src/Errors.test.ts +0 -520
  620. package/src/Errors.ts +0 -448
  621. package/src/Expires.test.ts +0 -112
  622. package/src/Expires.ts +0 -59
  623. package/src/Html.ts +0 -67
  624. package/src/Mcp.ts +0 -85
  625. package/src/Method.test.ts +0 -177
  626. package/src/Method.ts +0 -617
  627. package/src/PaymentRequest.test.ts +0 -147
  628. package/src/PaymentRequest.ts +0 -108
  629. package/src/Receipt.test.ts +0 -151
  630. package/src/Receipt.ts +0 -146
  631. package/src/Store.test-d.ts +0 -195
  632. package/src/Store.test.ts +0 -357
  633. package/src/Store.ts +0 -329
  634. package/src/bin.ts +0 -4
  635. package/src/cli/account.ts +0 -269
  636. package/src/cli/cli.test.ts +0 -2221
  637. package/src/cli/cli.ts +0 -1649
  638. package/src/cli/config.test.ts +0 -89
  639. package/src/cli/config.ts +0 -50
  640. package/src/cli/internal.ts +0 -114
  641. package/src/cli/mcp.test.ts +0 -262
  642. package/src/cli/plugins/evm.ts +0 -55
  643. package/src/cli/plugins/index.ts +0 -4
  644. package/src/cli/plugins/plugin.ts +0 -84
  645. package/src/cli/plugins/stripe.ts +0 -174
  646. package/src/cli/plugins/tempo.ts +0 -1102
  647. package/src/cli/sessions/Manager.test.ts +0 -249
  648. package/src/cli/sessions/Manager.ts +0 -93
  649. package/src/cli/sessions/commands.ts +0 -444
  650. package/src/cli/sessions/request.test.ts +0 -51
  651. package/src/cli/sessions/request.ts +0 -353
  652. package/src/cli/sessions/store.test.ts +0 -581
  653. package/src/cli/sessions/store.ts +0 -940
  654. package/src/cli/utils.test.ts +0 -156
  655. package/src/cli/utils.ts +0 -394
  656. package/src/cli/validate/challenge.ts +0 -565
  657. package/src/cli/validate/discovery.test.ts +0 -435
  658. package/src/cli/validate/discovery.ts +0 -221
  659. package/src/cli/validate/helpers.ts +0 -166
  660. package/src/cli/validate/index.ts +0 -229
  661. package/src/cli/validate/messages.ts +0 -7
  662. package/src/cli/validate/payment.ts +0 -774
  663. package/src/cli/validate.test.ts +0 -843
  664. package/src/client/Methods.ts +0 -8
  665. package/src/client/Mppx.test-d.ts +0 -270
  666. package/src/client/Mppx.test.ts +0 -1065
  667. package/src/client/Mppx.ts +0 -466
  668. package/src/client/Transport.test.ts +0 -619
  669. package/src/client/Transport.ts +0 -191
  670. package/src/client/index.ts +0 -29
  671. package/src/client/internal/Fetch.browser.test.ts +0 -197
  672. package/src/client/internal/Fetch.test-d.ts +0 -109
  673. package/src/client/internal/Fetch.test.ts +0 -2336
  674. package/src/client/internal/Fetch.ts +0 -1079
  675. package/src/client/internal/MethodChallenge.ts +0 -35
  676. package/src/client/internal/MethodResponse.ts +0 -67
  677. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  678. package/src/client/internal/protocols/Mcp.ts +0 -186
  679. package/src/client/internal/protocols/Mpp.ts +0 -21
  680. package/src/client/internal/protocols/Protocol.ts +0 -10
  681. package/src/client/internal/protocols/Shared.ts +0 -25
  682. package/src/client/internal/protocols/X402.ts +0 -46
  683. package/src/client/node.test.ts +0 -115
  684. package/src/client/node.ts +0 -247
  685. package/src/discovery/Discovery.test.ts +0 -214
  686. package/src/discovery/Discovery.ts +0 -105
  687. package/src/discovery/OpenApi.test.ts +0 -453
  688. package/src/discovery/OpenApi.ts +0 -224
  689. package/src/discovery/Validate.test.ts +0 -305
  690. package/src/discovery/Validate.ts +0 -77
  691. package/src/discovery/index.ts +0 -3
  692. package/src/env.d.ts +0 -12
  693. package/src/evm/Assets.ts +0 -1
  694. package/src/evm/Chains.ts +0 -11
  695. package/src/evm/Methods.ts +0 -44
  696. package/src/evm/PublicInterface.test-d.ts +0 -134
  697. package/src/evm/Types.ts +0 -140
  698. package/src/evm/client/Charge.test.ts +0 -347
  699. package/src/evm/client/Charge.ts +0 -187
  700. package/src/evm/client/Methods.ts +0 -19
  701. package/src/evm/client/index.ts +0 -6
  702. package/src/evm/index.ts +0 -16
  703. package/src/evm/server/Charge.test.ts +0 -339
  704. package/src/evm/server/Charge.ts +0 -290
  705. package/src/evm/server/Methods.ts +0 -22
  706. package/src/evm/server/index.ts +0 -6
  707. package/src/index.ts +0 -14
  708. package/src/internal/AcceptPayment.test.ts +0 -343
  709. package/src/internal/AcceptPayment.ts +0 -366
  710. package/src/internal/HeaderCodec.ts +0 -36
  711. package/src/internal/changeset.test.ts +0 -106
  712. package/src/internal/constantTimeEqual.test.ts +0 -47
  713. package/src/internal/constantTimeEqual.ts +0 -10
  714. package/src/internal/env.test.ts +0 -42
  715. package/src/internal/env.ts +0 -49
  716. package/src/internal/types.test-d.ts +0 -21
  717. package/src/internal/types.ts +0 -470
  718. package/src/mcp/client/McpClient.integration.test.ts +0 -652
  719. package/src/mcp/client/McpClient.test-d.ts +0 -144
  720. package/src/mcp/client/McpClient.test.ts +0 -463
  721. package/src/mcp/client/McpClient.ts +0 -307
  722. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  723. package/src/mcp/client/index.ts +0 -2
  724. package/src/mcp/server/Transport.test.ts +0 -191
  725. package/src/mcp/server/Transport.ts +0 -111
  726. package/src/mcp/server/index.ts +0 -1
  727. package/src/middlewares/elysia.test.ts +0 -295
  728. package/src/middlewares/elysia.ts +0 -116
  729. package/src/middlewares/express.test.ts +0 -371
  730. package/src/middlewares/express.ts +0 -140
  731. package/src/middlewares/hono.test.ts +0 -476
  732. package/src/middlewares/hono.ts +0 -153
  733. package/src/middlewares/internal/mppx.test.ts +0 -177
  734. package/src/middlewares/internal/mppx.ts +0 -67
  735. package/src/middlewares/nextjs.test.ts +0 -369
  736. package/src/middlewares/nextjs.ts +0 -107
  737. package/src/proxy/Proxy.test.ts +0 -1031
  738. package/src/proxy/Proxy.ts +0 -345
  739. package/src/proxy/Service.test.ts +0 -182
  740. package/src/proxy/Service.ts +0 -253
  741. package/src/proxy/index.ts +0 -6
  742. package/src/proxy/internal/Headers.test.ts +0 -139
  743. package/src/proxy/internal/Headers.ts +0 -66
  744. package/src/proxy/internal/Route.test.ts +0 -217
  745. package/src/proxy/internal/Route.ts +0 -64
  746. package/src/proxy/services/anthropic.test.ts +0 -132
  747. package/src/proxy/services/anthropic.ts +0 -52
  748. package/src/proxy/services/openai.test.ts +0 -157
  749. package/src/proxy/services/openai.ts +0 -59
  750. package/src/proxy/services/stripe.test.ts +0 -175
  751. package/src/proxy/services/stripe.ts +0 -58
  752. package/src/server/Methods.ts +0 -3
  753. package/src/server/Mppx.authorize.test.ts +0 -210
  754. package/src/server/Mppx.test-d.ts +0 -360
  755. package/src/server/Mppx.test.ts +0 -5813
  756. package/src/server/Mppx.ts +0 -2623
  757. package/src/server/NodeListener.test.ts +0 -293
  758. package/src/server/NodeListener.ts +0 -45
  759. package/src/server/Request.test.ts +0 -255
  760. package/src/server/Request.ts +0 -155
  761. package/src/server/Response.test.ts +0 -32
  762. package/src/server/Response.ts +0 -45
  763. package/src/server/Transport.test.ts +0 -598
  764. package/src/server/Transport.ts +0 -320
  765. package/src/server/index.ts +0 -9
  766. package/src/server/internal/html/compose.main.gen.ts +0 -2
  767. package/src/server/internal/html/compose.main.ts +0 -88
  768. package/src/server/internal/html/config.ts +0 -672
  769. package/src/server/internal/html/constants.ts +0 -28
  770. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  771. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  772. package/src/server/internal/html/serviceWorker.ts +0 -27
  773. package/src/server/internal/html/tsconfig.compose.json +0 -8
  774. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  775. package/src/server/internal/html/tsconfig.worker.json +0 -8
  776. package/src/server/internal/scope.ts +0 -43
  777. package/src/stripe/Charge.integration.test.ts +0 -329
  778. package/src/stripe/Methods.test.ts +0 -62
  779. package/src/stripe/Methods.ts +0 -44
  780. package/src/stripe/client/Charge.test.ts +0 -205
  781. package/src/stripe/client/Charge.ts +0 -132
  782. package/src/stripe/client/Methods.ts +0 -37
  783. package/src/stripe/client/index.ts +0 -2
  784. package/src/stripe/index.ts +0 -1
  785. package/src/stripe/internal/constants.ts +0 -7
  786. package/src/stripe/internal/types.ts +0 -46
  787. package/src/stripe/server/Charge.test-d.ts +0 -66
  788. package/src/stripe/server/Charge.test.ts +0 -621
  789. package/src/stripe/server/Charge.ts +0 -434
  790. package/src/stripe/server/Methods.ts +0 -24
  791. package/src/stripe/server/index.ts +0 -2
  792. package/src/stripe/server/internal/html/main.ts +0 -165
  793. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  794. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  795. package/src/stripe/server/internal/html/package.json +0 -9
  796. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  797. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  798. package/src/stripe/server/internal/html/types.ts +0 -5
  799. package/src/stripe/server/internal/html.gen.ts +0 -2
  800. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  801. package/src/tempo/Attribution.test.ts +0 -294
  802. package/src/tempo/Attribution.ts +0 -185
  803. package/src/tempo/Methods.test.ts +0 -425
  804. package/src/tempo/Methods.ts +0 -367
  805. package/src/tempo/Proof.conformance.test.ts +0 -146
  806. package/src/tempo/Proof.test-d.ts +0 -32
  807. package/src/tempo/Proof.test.ts +0 -40
  808. package/src/tempo/Proof.ts +0 -69
  809. package/src/tempo/PublicExports.test-d.ts +0 -130
  810. package/src/tempo/Subscription.integration.test.ts +0 -591
  811. package/src/tempo/client/Charge.test.ts +0 -501
  812. package/src/tempo/client/Charge.ts +0 -289
  813. package/src/tempo/client/Methods.ts +0 -45
  814. package/src/tempo/client/ResolveAccount.ts +0 -46
  815. package/src/tempo/client/Subscription.test.ts +0 -180
  816. package/src/tempo/client/Subscription.ts +0 -156
  817. package/src/tempo/client/index.ts +0 -17
  818. package/src/tempo/index.ts +0 -5
  819. package/src/tempo/internal/account.ts +0 -56
  820. package/src/tempo/internal/address.ts +0 -6
  821. package/src/tempo/internal/auto-swap.test.ts +0 -198
  822. package/src/tempo/internal/auto-swap.ts +0 -188
  823. package/src/tempo/internal/charge.test.ts +0 -66
  824. package/src/tempo/internal/charge.ts +0 -43
  825. package/src/tempo/internal/defaults.test.ts +0 -95
  826. package/src/tempo/internal/defaults.ts +0 -53
  827. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  828. package/src/tempo/internal/fee-payer.ts +0 -808
  829. package/src/tempo/internal/fee-token.test.ts +0 -165
  830. package/src/tempo/internal/fee-token.ts +0 -72
  831. package/src/tempo/internal/proof.test.ts +0 -97
  832. package/src/tempo/internal/proof.ts +0 -87
  833. package/src/tempo/internal/selectors.ts +0 -10
  834. package/src/tempo/internal/types.ts +0 -19
  835. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  836. package/src/tempo/legacy/README.md +0 -9
  837. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  838. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  839. package/src/tempo/legacy/client/Session.test.ts +0 -800
  840. package/src/tempo/legacy/client/Session.ts +0 -397
  841. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  842. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  843. package/src/tempo/legacy/client/index.ts +0 -6
  844. package/src/tempo/legacy/index.ts +0 -6
  845. package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
  846. package/src/tempo/legacy/server/Session.test.ts +0 -6370
  847. package/src/tempo/legacy/server/Session.ts +0 -1024
  848. package/src/tempo/legacy/server/index.ts +0 -4
  849. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  850. package/src/tempo/legacy/session/Chain.ts +0 -830
  851. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  852. package/src/tempo/legacy/session/Channel.ts +0 -51
  853. package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
  854. package/src/tempo/legacy/session/ChannelStore.ts +0 -39
  855. package/src/tempo/legacy/session/Types.ts +0 -91
  856. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  857. package/src/tempo/legacy/session/Voucher.ts +0 -183
  858. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  859. package/src/tempo/legacy/session/index.ts +0 -8
  860. package/src/tempo/server/AtomicStore.test-d.ts +0 -50
  861. package/src/tempo/server/Charge.test.ts +0 -6121
  862. package/src/tempo/server/Charge.ts +0 -1351
  863. package/src/tempo/server/Methods.ts +0 -106
  864. package/src/tempo/server/Relay.test.ts +0 -677
  865. package/src/tempo/server/Relay.ts +0 -297
  866. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  867. package/src/tempo/server/SponsorBudget.ts +0 -219
  868. package/src/tempo/server/Sse.test.ts +0 -321
  869. package/src/tempo/server/Subscription.test.ts +0 -1944
  870. package/src/tempo/server/Subscription.ts +0 -1333
  871. package/src/tempo/server/index.ts +0 -12
  872. package/src/tempo/server/internal/html/main.ts +0 -115
  873. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  874. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  875. package/src/tempo/server/internal/html/package.json +0 -10
  876. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  877. package/src/tempo/server/internal/html.gen.ts +0 -2
  878. package/src/tempo/server/internal/request-body.test.ts +0 -210
  879. package/src/tempo/server/internal/request-body.ts +0 -61
  880. package/src/tempo/server/internal/transport.test.ts +0 -903
  881. package/src/tempo/server/internal/transport.ts +0 -310
  882. package/src/tempo/session/README.md +0 -208
  883. package/src/tempo/session/Snapshot.test.ts +0 -41
  884. package/src/tempo/session/Snapshot.ts +0 -95
  885. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  886. package/src/tempo/session/client/ChannelOps.ts +0 -348
  887. package/src/tempo/session/client/ChannelStore.ts +0 -111
  888. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  889. package/src/tempo/session/client/CredentialState.ts +0 -942
  890. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  891. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  892. package/src/tempo/session/client/Runtime.ts +0 -1008
  893. package/src/tempo/session/client/Session.test.ts +0 -1355
  894. package/src/tempo/session/client/Session.ts +0 -420
  895. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  896. package/src/tempo/session/client/SessionManager.ts +0 -996
  897. package/src/tempo/session/client/Transports.test.ts +0 -1141
  898. package/src/tempo/session/client/Transports.ts +0 -1534
  899. package/src/tempo/session/client/index.ts +0 -40
  900. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  901. package/src/tempo/session/index.ts +0 -7
  902. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  903. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  904. package/src/tempo/session/precompile/Chain.ts +0 -1149
  905. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  906. package/src/tempo/session/precompile/Channel.ts +0 -108
  907. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  908. package/src/tempo/session/precompile/Protocol.ts +0 -520
  909. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  910. package/src/tempo/session/precompile/Voucher.ts +0 -162
  911. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  912. package/src/tempo/session/precompile/index.ts +0 -33
  913. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  914. package/src/tempo/session/server/ChannelOps.ts +0 -157
  915. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  916. package/src/tempo/session/server/ChannelStore.ts +0 -835
  917. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  918. package/src/tempo/session/server/CredentialVerification.ts +0 -775
  919. package/src/tempo/session/server/MeteredStream.ts +0 -95
  920. package/src/tempo/session/server/RequestState.test.ts +0 -574
  921. package/src/tempo/session/server/RequestState.ts +0 -507
  922. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  923. package/src/tempo/session/server/Session.test.ts +0 -3862
  924. package/src/tempo/session/server/Session.ts +0 -570
  925. package/src/tempo/session/server/Settlement.test.ts +0 -345
  926. package/src/tempo/session/server/Settlement.ts +0 -527
  927. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  928. package/src/tempo/session/server/Sse.test.ts +0 -557
  929. package/src/tempo/session/server/Sse.ts +0 -254
  930. package/src/tempo/session/server/Transports.test.ts +0 -346
  931. package/src/tempo/session/server/Transports.ts +0 -255
  932. package/src/tempo/session/server/Ws.test.ts +0 -594
  933. package/src/tempo/session/server/Ws.ts +0 -385
  934. package/src/tempo/session/server/index.ts +0 -12
  935. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  936. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  937. package/src/tempo/subscription/Receipt.ts +0 -28
  938. package/src/tempo/subscription/Store.test.ts +0 -609
  939. package/src/tempo/subscription/Store.ts +0 -449
  940. package/src/tempo/subscription/Types.ts +0 -68
  941. package/src/tempo/subscription/index.ts +0 -23
  942. package/src/tsconfig.json +0 -10
  943. package/src/validation/core.ts +0 -386
  944. package/src/validation/index.ts +0 -11
  945. package/src/viem/Account.test.ts +0 -72
  946. package/src/viem/Account.ts +0 -30
  947. package/src/viem/Client.test.ts +0 -366
  948. package/src/viem/Client.ts +0 -93
  949. package/src/x402/Assets.test.ts +0 -253
  950. package/src/x402/Assets.ts +0 -221
  951. package/src/x402/Exact.e2e.test.ts +0 -448
  952. package/src/x402/Exact.localnet.test.ts +0 -475
  953. package/src/x402/Header.test.ts +0 -73
  954. package/src/x402/Header.ts +0 -79
  955. package/src/x402/PublicInterface.test-d.ts +0 -39
  956. package/src/x402/Types.ts +0 -248
  957. package/src/x402/client/Exact.test.ts +0 -309
  958. package/src/x402/client/Exact.ts +0 -186
  959. package/src/x402/index.ts +0 -6
  960. package/src/x402/internal/ChallengeBrand.ts +0 -14
  961. package/src/x402/internal/RouteBinding.ts +0 -18
  962. package/src/x402/server/EvmCharge.ts +0 -394
  963. package/src/x402/server/Facilitator.test.ts +0 -111
  964. package/src/x402/server/Facilitator.ts +0 -56
  965. package/src/zod.test.ts +0 -169
  966. package/src/zod.ts +0 -71
@@ -1,903 +0,0 @@
1
- import { Challenge, Credential } from 'mppx'
2
- import type { Address, Hex } from 'viem'
3
- import { describe, expect, test } from 'vp/test'
4
-
5
- import * as Store from '../../../Store.js'
6
- import { chainId, escrowContract as escrowContractDefaults } from '../../internal/defaults.js'
7
- import { deserializeSessionReceipt } from '../../session/precompile/Protocol.js'
8
- import type { SessionReceipt } from '../../session/precompile/Protocol.js'
9
- import * as ChannelStore from '../../session/server/ChannelStore.js'
10
- import { parseEvent } from '../../session/server/Sse.js'
11
- import { markPrepaidSessionTick, sse } from './transport.js'
12
-
13
- const channelId = '0x0000000000000000000000000000000000000000000000000000000000000001' as Hex
14
- const challengeId = 'challenge-1'
15
-
16
- function memoryStore() {
17
- return ChannelStore.fromStore(Store.memory())
18
- }
19
-
20
- function seedChannel(
21
- storage: ChannelStore.ChannelStore,
22
- balance: bigint,
23
- ): Promise<ChannelStore.State | null> {
24
- return storage.updateChannel(channelId, () => ({
25
- channelId,
26
- payer: '0x0000000000000000000000000000000000000001' as Address,
27
- payee: '0x0000000000000000000000000000000000000002' as Address,
28
- token: '0x0000000000000000000000000000000000000003' as Address,
29
- authorizedSigner: '0x0000000000000000000000000000000000000004' as Address,
30
- chainId: 42431,
31
- escrowContract: escrowContractDefaults[chainId.testnet] as Address,
32
- deposit: balance,
33
- settledOnChain: 0n,
34
- highestVoucherAmount: balance,
35
- highestVoucher: null,
36
- spent: 0n,
37
- units: 0,
38
- closeRequestedAt: 0n,
39
- finalized: false,
40
- createdAt: new Date().toISOString(),
41
- }))
42
- }
43
-
44
- function makeChallenge(
45
- request: Partial<{
46
- amount: string
47
- currency: string
48
- recipient: string
49
- unitType: string
50
- }> = {},
51
- ) {
52
- return Challenge.from({
53
- id: challengeId,
54
- realm: 'test.example.com',
55
- method: 'tempo',
56
- intent: 'session',
57
- request: {
58
- amount: '1000000',
59
- currency: '0x20c0000000000000000000000000000000000001',
60
- recipient: '0x0000000000000000000000000000000000000002',
61
- ...request,
62
- },
63
- })
64
- }
65
-
66
- function makeCredential(
67
- request: Partial<{
68
- amount: string
69
- currency: string
70
- recipient: string
71
- unitType: string
72
- }> = {},
73
- ) {
74
- const challenge = makeChallenge(request)
75
- return Credential.from({
76
- challenge,
77
- payload: {
78
- action: 'voucher',
79
- channelId,
80
- cumulativeAmount: '1000000',
81
- signature: '0xdeadbeef',
82
- },
83
- })
84
- }
85
-
86
- function makeAuthorizedRequest(
87
- request: Partial<{
88
- amount: string
89
- currency: string
90
- recipient: string
91
- unitType: string
92
- }> = {},
93
- ): Request {
94
- const credential = makeCredential(request)
95
- const header = Credential.serialize(credential)
96
- return new Request('https://test.example.com/session', {
97
- headers: { Authorization: header },
98
- })
99
- }
100
-
101
- function makeManagementRequest(action: 'close' | 'topUp' = 'close'): Request {
102
- const credential = Credential.from({
103
- challenge: makeChallenge(),
104
- payload:
105
- action === 'close'
106
- ? {
107
- action: 'close' as const,
108
- channelId,
109
- cumulativeAmount: '10000000',
110
- signature: '0xdeadbeef',
111
- }
112
- : {
113
- action: 'topUp' as const,
114
- channelId,
115
- type: 'transaction' as const,
116
- transaction: '0xdeadbeef',
117
- additionalDeposit: '1000000',
118
- },
119
- })
120
- const header = Credential.serialize(credential)
121
- return new Request('https://test.example.com/session', {
122
- method: 'POST',
123
- headers: { Authorization: header },
124
- })
125
- }
126
-
127
- type ReceiptOverrides = Partial<{
128
- acceptedCumulative: string
129
- spent: string
130
- units: number
131
- }>
132
-
133
- function makeReceipt(overrides: ReceiptOverrides = {}): SessionReceipt {
134
- return {
135
- method: 'tempo',
136
- intent: 'session' as const,
137
- status: 'success' as const,
138
- timestamp: new Date().toISOString(),
139
- reference: channelId,
140
- challengeId,
141
- channelId,
142
- acceptedCumulative: '10000000',
143
- spent: '0',
144
- units: 0,
145
- ...overrides,
146
- }
147
- }
148
-
149
- async function readResponseText(response: Response): Promise<string> {
150
- if (!response.body) return ''
151
- const reader = response.body.getReader()
152
- const decoder = new TextDecoder()
153
- let result = ''
154
- while (true) {
155
- const { done, value } = await reader.read()
156
- if (done) break
157
- result += decoder.decode(value, { stream: true })
158
- }
159
- return result
160
- }
161
-
162
- function readTerminalReceipt(output: string) {
163
- const receiptRaw = output.split('event: payment-receipt\ndata: ')[1]?.split('\n\n')[0]
164
- if (!receiptRaw) throw new Error('expected terminal receipt')
165
- return JSON.parse(receiptRaw) as {
166
- challengeId: string
167
- channelId: string
168
- spent: string
169
- units?: number
170
- }
171
- }
172
-
173
- describe('sse transport', () => {
174
- test('getCredential returns null when no Authorization header', () => {
175
- const store = memoryStore()
176
- const transport = sse({ store })
177
- const request = new Request('https://test.example.com/session')
178
- expect(transport.getCredential(request)).toBeNull()
179
- })
180
-
181
- test('getCredential returns credential from Authorization header', () => {
182
- const store = memoryStore()
183
- const transport = sse({ store })
184
- const request = makeAuthorizedRequest()
185
- const credential = transport.getCredential(request)
186
- expect(credential).not.toBeNull()
187
- expect(credential!.challenge.id).toBe(challengeId)
188
- expect((credential!.payload as any).channelId).toBe(channelId)
189
- })
190
-
191
- test('respondReceipt derives SSE context from the verified credential', async () => {
192
- const store = memoryStore()
193
- await seedChannel(store, 10000000n)
194
- const transport = sse({ store })
195
-
196
- const credential = makeCredential()
197
-
198
- async function* gen() {
199
- yield 'test'
200
- }
201
-
202
- const response = transport.respondReceipt({
203
- credential,
204
- input: new Request('https://test.example.com/session'),
205
- receipt: makeReceipt(),
206
- response: gen(),
207
- challengeId,
208
- })
209
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
210
- })
211
-
212
- test('respondChallenge delegates to base http transport', async () => {
213
- const store = memoryStore()
214
- const transport = sse({ store })
215
- const challenge = makeChallenge()
216
-
217
- const response = await transport.respondChallenge({
218
- challenge,
219
- input: new Request('https://test.example.com/session'),
220
- })
221
- expect(response).toBeInstanceOf(Response)
222
- expect(response.status).toBe(402)
223
- expect(response.headers.get('WWW-Authenticate')).toContain('Payment')
224
- })
225
-
226
- test('respondReceipt with AsyncIterable produces SSE response', async () => {
227
- const store = memoryStore()
228
- await seedChannel(store, 10000000n)
229
- const transport = sse({ store })
230
- const request = makeAuthorizedRequest()
231
-
232
- async function* gen() {
233
- yield 'hello'
234
- yield 'world'
235
- }
236
-
237
- const response = transport.respondReceipt({
238
- credential: makeCredential(),
239
- input: request,
240
- receipt: makeReceipt(),
241
- response: gen(),
242
- challengeId,
243
- })
244
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
245
-
246
- const body = await readResponseText(response)
247
- const terminalReceipt = readTerminalReceipt(body)
248
-
249
- expect(response.headers.get('Payment-Receipt')).toBeNull()
250
- expect(body).toContain('event: message\ndata: hello\n\n')
251
- expect(body).toContain('event: message\ndata: world\n\n')
252
- expect(body).toContain('event: payment-receipt\n')
253
- expect(terminalReceipt.challengeId).toBe(challengeId)
254
- expect(terminalReceipt.channelId).toBe(channelId)
255
- expect(terminalReceipt.units).toBe(2)
256
- expect(terminalReceipt.spent).toBe('2000000')
257
- })
258
-
259
- test('respondReceipt with AsyncIterable and unitType=request charges once', async () => {
260
- const store = memoryStore()
261
- await seedChannel(store, 10000000n)
262
- const transport = sse({ store })
263
- const request = makeAuthorizedRequest({ unitType: 'request' })
264
-
265
- async function* gen() {
266
- yield 'hello'
267
- yield 'world'
268
- yield 'again'
269
- }
270
-
271
- const response = transport.respondReceipt({
272
- credential: makeCredential({ unitType: 'request' }),
273
- input: request,
274
- receipt: makeReceipt(),
275
- response: gen(),
276
- challengeId,
277
- })
278
-
279
- const body = await readResponseText(response)
280
- const terminalReceipt = readTerminalReceipt(body)
281
- const channel = await store.getChannel(channelId)
282
-
283
- expect(channel!.spent).toBe(1000000n)
284
- expect(channel!.units).toBe(1)
285
- expect(terminalReceipt.spent).toBe('1000000')
286
- expect(terminalReceipt.units).toBe(1)
287
- })
288
-
289
- test('respondReceipt uses the verified route unitType instead of the echoed credential unitType', async () => {
290
- const store = memoryStore()
291
- await seedChannel(store, 10000000n)
292
- const transport = sse({ store })
293
- const request = makeAuthorizedRequest({ unitType: 'token' })
294
- const credential = makeCredential({ unitType: 'request' })
295
-
296
- async function* gen() {
297
- yield 'hello'
298
- yield 'world'
299
- yield 'again'
300
- }
301
-
302
- const response = transport.respondReceipt({
303
- credential,
304
- envelope: {
305
- capturedRequest: {
306
- headers: new Headers(request.headers),
307
- hasBody: request.body !== null,
308
- method: request.method,
309
- url: new URL(request.url),
310
- },
311
- challenge: makeChallenge({ unitType: 'token' }),
312
- credential,
313
- request: makeChallenge({ unitType: 'token' }).request,
314
- },
315
- input: request,
316
- receipt: makeReceipt(),
317
- response: gen(),
318
- challengeId,
319
- })
320
-
321
- const body = await readResponseText(response)
322
- const terminalReceipt = readTerminalReceipt(body)
323
- const channel = await store.getChannel(channelId)
324
-
325
- expect(channel!.spent).toBe(3000000n)
326
- expect(channel!.units).toBe(3)
327
- expect(terminalReceipt.spent).toBe('3000000')
328
- expect(terminalReceipt.units).toBe(3)
329
- })
330
-
331
- test('respondReceipt uses the canonical challenge amount instead of the raw verified route amount', async () => {
332
- const store = memoryStore()
333
- await seedChannel(store, 10000000n)
334
- const transport = sse({ store })
335
- const request = makeAuthorizedRequest({ unitType: 'token' })
336
- const credential = makeCredential({ unitType: 'token' })
337
-
338
- const response = transport.respondReceipt({
339
- credential,
340
- envelope: {
341
- capturedRequest: {
342
- headers: new Headers(request.headers),
343
- hasBody: request.body !== null,
344
- method: request.method,
345
- url: new URL(request.url),
346
- },
347
- challenge: credential.challenge,
348
- credential,
349
- request: {
350
- ...credential.challenge.request,
351
- amount: '1',
352
- },
353
- },
354
- input: request,
355
- receipt: makeReceipt(),
356
- response: new Response('ok', {
357
- headers: { 'Content-Type': 'text/plain' },
358
- }),
359
- challengeId,
360
- })
361
-
362
- expect(await response.text()).toBe('ok')
363
-
364
- const receipt = deserializeSessionReceipt(response.headers.get('Payment-Receipt')!)
365
- const channel = await store.getChannel(channelId)
366
-
367
- expect(channel!.spent).toBe(1000000n)
368
- expect(channel!.units).toBe(1)
369
- expect(receipt.spent).toBe('1000000')
370
- expect(receipt.units).toBe(1)
371
- })
372
-
373
- test('respondReceipt with AsyncIterable and non-request unitType still charges per chunk', async () => {
374
- const store = memoryStore()
375
- await seedChannel(store, 10000000n)
376
- const transport = sse({ store })
377
- const request = makeAuthorizedRequest({ unitType: 'token' })
378
-
379
- async function* gen() {
380
- yield 'hello'
381
- yield 'world'
382
- yield 'again'
383
- }
384
-
385
- const response = transport.respondReceipt({
386
- credential: makeCredential({ unitType: 'token' }),
387
- input: request,
388
- receipt: makeReceipt(),
389
- response: gen(),
390
- challengeId,
391
- })
392
-
393
- const body = await readResponseText(response)
394
- const terminalReceipt = readTerminalReceipt(body)
395
- const channel = await store.getChannel(channelId)
396
-
397
- expect(channel!.spent).toBe(3000000n)
398
- expect(channel!.units).toBe(3)
399
- expect(terminalReceipt.spent).toBe('3000000')
400
- expect(terminalReceipt.units).toBe(3)
401
- })
402
-
403
- test('respondReceipt with unitType=request does not charge an empty AsyncIterable', async () => {
404
- const store = memoryStore()
405
- await seedChannel(store, 10000000n)
406
- const transport = sse({ store })
407
- const request = makeAuthorizedRequest({ unitType: 'request' })
408
-
409
- async function* gen() {}
410
-
411
- const response = transport.respondReceipt({
412
- credential: makeCredential({ unitType: 'request' }),
413
- input: request,
414
- receipt: makeReceipt(),
415
- response: gen(),
416
- challengeId,
417
- })
418
-
419
- const body = await readResponseText(response)
420
- const terminalReceipt = readTerminalReceipt(body)
421
- const channel = await store.getChannel(channelId)
422
-
423
- expect(channel!.spent).toBe(0n)
424
- expect(channel!.units).toBe(0)
425
- expect(terminalReceipt.spent).toBe('0')
426
- expect(terminalReceipt.units).toBe(0)
427
- })
428
-
429
- test('respondReceipt with AsyncGeneratorFunction passes stream controller', async () => {
430
- const store = memoryStore()
431
- await seedChannel(store, 10000000n)
432
- const transport = sse({ store })
433
- const request = makeAuthorizedRequest()
434
-
435
- const response = transport.respondReceipt({
436
- credential: makeCredential(),
437
- input: request,
438
- receipt: makeReceipt(),
439
- response: async function* (stream) {
440
- await stream.charge()
441
- yield 'hello'
442
- },
443
- challengeId,
444
- })
445
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
446
- })
447
-
448
- test('respondReceipt with AsyncGeneratorFunction and unitType=request preserves manual charge calls', async () => {
449
- const store = memoryStore()
450
- await seedChannel(store, 10000000n)
451
- const transport = sse({ store })
452
- const request = makeAuthorizedRequest({ unitType: 'request' })
453
-
454
- const response = transport.respondReceipt({
455
- credential: makeCredential({ unitType: 'request' }),
456
- input: request,
457
- receipt: makeReceipt(),
458
- response: async function* (stream) {
459
- await stream.charge()
460
- yield 'hello'
461
- await stream.charge()
462
- yield 'world'
463
- },
464
- challengeId,
465
- })
466
-
467
- const body = await readResponseText(response)
468
- const terminalReceipt = readTerminalReceipt(body)
469
- const channel = await store.getChannel(channelId)
470
-
471
- expect(channel!.spent).toBe(2000000n)
472
- expect(channel!.units).toBe(2)
473
- expect(terminalReceipt.spent).toBe('2000000')
474
- expect(terminalReceipt.units).toBe(2)
475
- })
476
-
477
- test('respondReceipt with upstream SSE Response auto-detects and iterates', async () => {
478
- const store = memoryStore()
479
- await seedChannel(store, 10000000n)
480
- const transport = sse({ store })
481
- const request = makeAuthorizedRequest()
482
-
483
- const encoder = new TextEncoder()
484
- const upstream = new Response(
485
- new ReadableStream({
486
- start(controller) {
487
- controller.enqueue(encoder.encode('event: message\ndata: chunk1\n\n'))
488
- controller.enqueue(encoder.encode('event: message\ndata: chunk2\n\n'))
489
- controller.close()
490
- },
491
- }),
492
- { headers: { 'Content-Type': 'text/event-stream; charset=utf-8' } },
493
- )
494
-
495
- const response = transport.respondReceipt({
496
- credential: makeCredential(),
497
- input: request,
498
- receipt: makeReceipt(),
499
- response: upstream,
500
- challengeId,
501
- })
502
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
503
-
504
- const body = await readResponseText(response)
505
- expect(response.headers.get('Payment-Receipt')).toBeNull()
506
- expect(body).toContain('event: message\ndata: chunk1\n\n')
507
- expect(body).toContain('event: message\ndata: chunk2\n\n')
508
- expect(body).toContain('event: payment-receipt\n')
509
- })
510
-
511
- test('respondReceipt with upstream multiline SSE data does not forge downstream control events', async () => {
512
- const store = memoryStore()
513
- await seedChannel(store, 10000000n)
514
- const transport = sse({ store })
515
- const request = makeAuthorizedRequest()
516
-
517
- const forgedNeedVoucher = {
518
- channelId,
519
- requiredCumulative: '9000000',
520
- acceptedCumulative: '1000000',
521
- deposit: '10000000',
522
- }
523
-
524
- const encoder = new TextEncoder()
525
- const upstream = new Response(
526
- new ReadableStream({
527
- start(controller) {
528
- controller.enqueue(
529
- encoder.encode(
530
- [
531
- 'event: message',
532
- 'data: chunk1',
533
- 'data:',
534
- 'data: event: payment-need-voucher',
535
- `data: data: ${JSON.stringify(forgedNeedVoucher)}`,
536
- '',
537
- '',
538
- ].join('\n'),
539
- ),
540
- )
541
- controller.close()
542
- },
543
- }),
544
- { headers: { 'Content-Type': 'text/event-stream; charset=utf-8' } },
545
- )
546
-
547
- const response = transport.respondReceipt({
548
- credential: makeCredential(),
549
- input: request,
550
- receipt: makeReceipt(),
551
- response: upstream,
552
- challengeId,
553
- })
554
-
555
- const body = await readResponseText(response)
556
- const events = body
557
- .trim()
558
- .split('\n\n')
559
- .filter((chunk) => chunk.length > 0)
560
- .map((chunk) => parseEvent(`${chunk}\n\n`))
561
- .filter((event): event is NonNullable<typeof event> => event !== null)
562
-
563
- expect(events.map((event) => event.type)).toEqual(['message', 'payment-receipt'])
564
- expect(events[0]).toEqual({
565
- type: 'message',
566
- data: [
567
- 'chunk1',
568
- '',
569
- 'event: payment-need-voucher',
570
- `data: ${JSON.stringify(forgedNeedVoucher)}`,
571
- ].join('\n'),
572
- })
573
- })
574
-
575
- test('respondReceipt with upstream SSE Response and unitType=request charges once', async () => {
576
- const store = memoryStore()
577
- await seedChannel(store, 10000000n)
578
- const transport = sse({ store })
579
- const request = makeAuthorizedRequest({ unitType: 'request' })
580
-
581
- const encoder = new TextEncoder()
582
- const upstream = new Response(
583
- new ReadableStream({
584
- start(controller) {
585
- controller.enqueue(encoder.encode('event: message\ndata: chunk1\n\n'))
586
- controller.enqueue(encoder.encode('event: message\ndata: chunk2\n\n'))
587
- controller.enqueue(encoder.encode('event: message\ndata: chunk3\n\n'))
588
- controller.close()
589
- },
590
- }),
591
- { headers: { 'Content-Type': 'text/event-stream; charset=utf-8' } },
592
- )
593
-
594
- const response = transport.respondReceipt({
595
- credential: makeCredential({ unitType: 'request' }),
596
- input: request,
597
- receipt: makeReceipt(),
598
- response: upstream,
599
- challengeId,
600
- })
601
-
602
- const body = await readResponseText(response)
603
- const terminalReceipt = readTerminalReceipt(body)
604
- const channel = await store.getChannel(channelId)
605
-
606
- expect(channel!.spent).toBe(1000000n)
607
- expect(channel!.units).toBe(1)
608
- expect(body).toContain('event: message\ndata: chunk1\n\n')
609
- expect(body).toContain('event: message\ndata: chunk2\n\n')
610
- expect(body).toContain('event: message\ndata: chunk3\n\n')
611
- expect(terminalReceipt.spent).toBe('1000000')
612
- expect(terminalReceipt.units).toBe(1)
613
- })
614
-
615
- test('respondReceipt with empty upstream SSE Response and unitType=request does not charge', async () => {
616
- const store = memoryStore()
617
- await seedChannel(store, 10000000n)
618
- const transport = sse({ store })
619
- const request = makeAuthorizedRequest({ unitType: 'request' })
620
-
621
- const encoder = new TextEncoder()
622
- const upstream = new Response(
623
- new ReadableStream({
624
- start(controller) {
625
- controller.enqueue(encoder.encode('event: message\ndata: [DONE]\n\n'))
626
- controller.close()
627
- },
628
- }),
629
- { headers: { 'Content-Type': 'text/event-stream; charset=utf-8' } },
630
- )
631
-
632
- const response = transport.respondReceipt({
633
- credential: makeCredential({ unitType: 'request' }),
634
- input: request,
635
- receipt: makeReceipt(),
636
- response: upstream,
637
- challengeId,
638
- })
639
-
640
- const body = await readResponseText(response)
641
- const terminalReceipt = readTerminalReceipt(body)
642
- const channel = await store.getChannel(channelId)
643
-
644
- expect(channel!.spent).toBe(0n)
645
- expect(channel!.units).toBe(0)
646
- expect(terminalReceipt.spent).toBe('0')
647
- expect(terminalReceipt.units).toBe(0)
648
- })
649
-
650
- test('respondReceipt with plain Response delegates to base http transport', () => {
651
- const store = memoryStore()
652
- const transport = sse({ store })
653
- const receipt = makeReceipt()
654
-
655
- const plainResponse = new Response('ok', {
656
- headers: { 'Content-Type': 'application/json' },
657
- })
658
-
659
- const response = transport.respondReceipt({
660
- credential: makeCredential(),
661
- input: new Request('https://test.example.com/session'),
662
- receipt,
663
- response: plainResponse,
664
- challengeId,
665
- })
666
- expect(response).toBeInstanceOf(Response)
667
- expect(response.headers.get('Payment-Receipt')).toBeTruthy()
668
- })
669
-
670
- test('respondReceipt with prepaid plain Response does not deduct again', async () => {
671
- const store = memoryStore()
672
- await seedChannel(store, 10000000n)
673
- const transport = sse({ store })
674
-
675
- const response = transport.respondReceipt({
676
- credential: makeCredential(),
677
- input: makeAuthorizedRequest(),
678
- receipt: markPrepaidSessionTick(makeReceipt({ spent: '1000000', units: 1 })),
679
- response: new Response('ok', {
680
- headers: { 'Content-Type': 'application/json' },
681
- }),
682
- challengeId,
683
- })
684
-
685
- expect(await response.text()).toBe('ok')
686
- const receipt = deserializeSessionReceipt(response.headers.get('Payment-Receipt')!)
687
- const channel = await store.getChannel(channelId)
688
-
689
- expect(channel!.spent).toBe(0n)
690
- expect(channel!.units).toBe(0)
691
- expect(receipt.spent).toBe('1000000')
692
- expect(receipt.units).toBe(1)
693
- })
694
-
695
- test('respondReceipt no longer depends on prior getCredential side effects', async () => {
696
- const store = memoryStore()
697
- await seedChannel(store, 10000000n)
698
- const transport = sse({ store })
699
- const request = makeAuthorizedRequest()
700
-
701
- async function* gen() {
702
- yield 'first'
703
- }
704
-
705
- const response = transport.respondReceipt({
706
- credential: makeCredential(),
707
- input: request,
708
- receipt: makeReceipt(),
709
- response: gen(),
710
- challengeId,
711
- })
712
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
713
- })
714
-
715
- test('respondReceipt throws when no SSE context available', () => {
716
- const store = memoryStore()
717
- const transport = sse({ store })
718
-
719
- async function* gen() {
720
- yield 'hello'
721
- }
722
-
723
- const credential = Credential.from({
724
- challenge: makeChallenge(),
725
- payload: { signature: '0xabc123', type: 'transaction' },
726
- })
727
-
728
- expect(() =>
729
- transport.respondReceipt({
730
- credential,
731
- input: new Request('https://test.example.com/session'),
732
- receipt: makeReceipt(),
733
- response: gen(),
734
- challengeId,
735
- }),
736
- ).toThrow('No SSE context available')
737
- })
738
-
739
- test('respondReceipt with non-SSE upstream Response still deducts from channel', async () => {
740
- const store = memoryStore()
741
- await seedChannel(store, 10000000n)
742
- const transport = sse({ store })
743
- const request = new Request('https://test.example.com/session', {
744
- body: JSON.stringify({ prompt: 'hello' }),
745
- headers: makeAuthorizedRequest().headers,
746
- method: 'POST',
747
- })
748
-
749
- expect(request.headers.get('content-length')).toBeNull()
750
-
751
- const plainResponse = new Response(JSON.stringify({ content: 'hello' }), {
752
- headers: { 'Content-Type': 'application/json' },
753
- })
754
-
755
- const response = transport.respondReceipt({
756
- credential: makeCredential(),
757
- input: request,
758
- receipt: makeReceipt(),
759
- response: plainResponse,
760
- challengeId,
761
- })
762
-
763
- const body = await response.text()
764
- const receipt = deserializeSessionReceipt(response.headers.get('Payment-Receipt')!)
765
-
766
- const channel = await store.getChannel(channelId)
767
- expect(channel!.spent).toBe(1000000n)
768
- expect(channel!.units).toBe(1)
769
- expect(receipt.spent).toBe('1000000')
770
- expect(receipt.units).toBe(1)
771
-
772
- expect(JSON.parse(body)).toEqual({ content: 'hello' })
773
- expect(response.headers.get('Content-Type')).toBe('application/json')
774
- expect(response.headers.get('Payment-Receipt')).toBeTruthy()
775
- })
776
-
777
- test('respondReceipt with bodyless POST management request does not deduct from channel', async () => {
778
- const store = memoryStore()
779
- await seedChannel(store, 10000000n)
780
- const transport = sse({ store })
781
-
782
- const response = transport.respondReceipt({
783
- credential: Credential.from({
784
- challenge: makeChallenge(),
785
- payload: {
786
- action: 'voucher',
787
- channelId,
788
- cumulativeAmount: '1000000',
789
- signature: '0xdeadbeef',
790
- },
791
- }),
792
- input: new Request('https://test.example.com/session', { method: 'POST' }),
793
- receipt: makeReceipt(),
794
- response: new Response(JSON.stringify({ ok: true }), {
795
- headers: { 'Content-Type': 'application/json' },
796
- }),
797
- challengeId,
798
- })
799
-
800
- expect(await response.text()).toBe('{"ok":true}')
801
-
802
- const channel = await store.getChannel(channelId)
803
- expect(channel!.spent).toBe(0n)
804
- expect(channel!.units).toBe(0)
805
- })
806
-
807
- test('respondReceipt with 204 content response still deducts from channel', async () => {
808
- const store = memoryStore()
809
- await seedChannel(store, 10000000n)
810
- const transport = sse({ store })
811
- const request = new Request('https://test.example.com/session', {
812
- body: JSON.stringify({ prompt: 'hello' }),
813
- headers: makeAuthorizedRequest().headers,
814
- method: 'POST',
815
- })
816
-
817
- const contentResponse = new Response(null, { status: 204 })
818
- const response = transport.respondReceipt({
819
- credential: makeCredential(),
820
- input: request,
821
- receipt: makeReceipt(),
822
- response: contentResponse,
823
- challengeId,
824
- })
825
-
826
- expect(response.status).toBe(204)
827
- expect(await response.text()).toBe('')
828
- const receipt = deserializeSessionReceipt(response.headers.get('Payment-Receipt')!)
829
-
830
- await Promise.resolve()
831
-
832
- const channel = await store.getChannel(channelId)
833
- expect(channel!.spent).toBe(1000000n)
834
- expect(channel!.units).toBe(1)
835
- expect(receipt.spent).toBe('1000000')
836
- expect(receipt.units).toBe(1)
837
- })
838
-
839
- test('respondReceipt with management response keeps null body and does not deduct', async () => {
840
- const store = memoryStore()
841
- await seedChannel(store, 10000000n)
842
- const transport = sse({ store })
843
- const request = makeManagementRequest()
844
-
845
- const managementResponse = new Response(null, { status: 204 })
846
- const response = transport.respondReceipt({
847
- credential: Credential.fromRequest(makeManagementRequest())!,
848
- input: request,
849
- receipt: makeReceipt(),
850
- response: managementResponse,
851
- challengeId,
852
- })
853
-
854
- expect(response.status).toBe(204)
855
- expect(await response.text()).toBe('')
856
- expect(response.headers.get('Payment-Receipt')).toBeTruthy()
857
-
858
- const channel = await store.getChannel(channelId)
859
- expect(channel!.spent).toBe(0n)
860
- expect(channel!.units).toBe(0)
861
- })
862
-
863
- test('respondReceipt rejects replayed plain responses with no remaining balance', async () => {
864
- const store = memoryStore()
865
- await seedChannel(store, 10000000n)
866
- const transport = sse({ store })
867
- const request = makeAuthorizedRequest()
868
-
869
- const response = transport.respondReceipt({
870
- credential: makeCredential(),
871
- input: request,
872
- receipt: makeReceipt({ acceptedCumulative: '1000000', spent: '1000000', units: 1 }),
873
- response: new Response('ok'),
874
- challengeId,
875
- })
876
-
877
- expect(response.status).toBe(402)
878
- expect(response.headers.get('Payment-Receipt')).toBeNull()
879
- })
880
-
881
- test('poll: true strips waitForUpdate from store', async () => {
882
- const store = memoryStore()
883
- ;(store as any).waitForUpdate = async () => {}
884
- await seedChannel(store, 10000000n)
885
-
886
- const transport = sse({ store, poll: true })
887
- const request = makeAuthorizedRequest()
888
-
889
- async function* gen() {
890
- yield 'test'
891
- }
892
-
893
- const response = transport.respondReceipt({
894
- credential: makeCredential(),
895
- input: request,
896
- receipt: makeReceipt(),
897
- response: gen(),
898
- challengeId,
899
- })
900
- expect(response.headers.get('Content-Type')).toContain('text/event-stream')
901
- expect(transport.name).toBe('sse')
902
- })
903
- })