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,909 +0,0 @@
1
- import type { Hex } from 'ox'
2
- import { parseUnits, type Account as viem_Account, type Address } from 'viem'
3
-
4
- import * as Challenge from '../../../Challenge.js'
5
- import * as Fetch from '../../../client/internal/Fetch.js'
6
- import * as Constants from '../../../Constants.js'
7
- import * as PaymentCredential from '../../../Credential.js'
8
- import * as AcceptPayment from '../../../internal/AcceptPayment.js'
9
- import type * as Account from '../../../viem/Account.js'
10
- import type * as Client from '../../../viem/Client.js'
11
- import { deserializeSessionReceipt } from '../../session/precompile/Protocol.js'
12
- import type { SessionReceipt } from '../../session/precompile/Protocol.js'
13
- import { parseEvent } from '../../session/precompile/Protocol.js'
14
- import * as Ws from '../../session/precompile/Protocol.js'
15
- import type { LegacySessionCredentialPayload } from '../session/Types.js'
16
- import type { ChannelEntry } from './ChannelOps.js'
17
- import { session as sessionPlugin } from './Session.js'
18
-
19
- type WebSocketConstructor = {
20
- new (url: string | URL, protocols?: string | string[]): WebSocket
21
- }
22
-
23
- type ReceiptWaiter = {
24
- predicate: (receipt: SessionReceipt) => boolean
25
- reject(error: Error): void
26
- resolve(receipt: SessionReceipt): void
27
- }
28
-
29
- type CloseReadyWaiter = {
30
- reject(error: Error): void
31
- resolve(receipt: SessionReceipt): void
32
- }
33
-
34
- type SessionMethod = ReturnType<typeof sessionPlugin>
35
- type SessionOrderChallenges = AcceptPayment.OrderChallenges<readonly [SessionMethod]>
36
- type SessionRequestInit = RequestInit & {
37
- orderChallenges?: SessionOrderChallenges | undefined
38
- }
39
-
40
- const WebSocketReadyState = {
41
- CONNECTING: 0,
42
- OPEN: 1,
43
- CLOSING: 2,
44
- CLOSED: 3,
45
- } as const
46
-
47
- // Browser-style WebSocket clients may only initiate close with 1000 or 3000-4999.
48
- // Keep protocol/policy close codes on the server side and use an app-defined code here.
49
- const ClientWebSocketProtocolErrorCloseCode = 3008
50
-
51
- /** Auto-driving legacy client manager for HTTP, SSE, and WebSocket sessions. */
52
- export type SessionManager = {
53
- /** Active legacy channel ID, when opened or recovered. */
54
- readonly channelId: Hex.Hex | undefined
55
- /** Local cumulative voucher authorization in raw token units. */
56
- readonly cumulative: bigint
57
- /** Whether the manager currently has an open local channel. */
58
- readonly opened: boolean
59
-
60
- /** Opens a legacy contract-backed channel before the first paid request. */
61
- open(options?: { deposit?: bigint }): Promise<void>
62
- /** Performs the HTTP 402 challenge/retry flow and returns receipt metadata. */
63
- fetch(input: RequestInfo | URL, init?: SessionRequestInit): Promise<PaymentResponse>
64
- /** Opens a paid SSE stream and responds to voucher requests. */
65
- sse(
66
- input: RequestInfo | URL,
67
- init?: SessionRequestInit & {
68
- onReceipt?: ((receipt: SessionReceipt) => void) | undefined
69
- signal?: AbortSignal | undefined
70
- },
71
- ): Promise<AsyncIterable<string>>
72
- /** Opens a paid WebSocket session and manages in-band payment frames. */
73
- ws(
74
- input: string | URL,
75
- init?: {
76
- onReceipt?: ((receipt: SessionReceipt) => void) | undefined
77
- orderChallenges?: SessionOrderChallenges | undefined
78
- protocols?: string | string[] | undefined
79
- signal?: AbortSignal | undefined
80
- },
81
- ): Promise<WebSocket>
82
- /** Cooperatively closes the active legacy channel. */
83
- close(): Promise<SessionReceipt | undefined>
84
- }
85
-
86
- /** HTTP response enriched with latest legacy session metadata. */
87
- export type PaymentResponse = Response & {
88
- /** Parsed payment receipt, when the response included one. */
89
- receipt: SessionReceipt | null
90
- /** Last session challenge observed by the manager. */
91
- challenge: Challenge.Challenge | null
92
- /** Active channel ID, when available. */
93
- channelId: Hex.Hex | null
94
- /** Local cumulative voucher authorization in raw token units. */
95
- cumulative: bigint
96
- }
97
-
98
- /**
99
- * Creates a session manager that handles the full client payment lifecycle:
100
- * channel open, incremental vouchers, SSE streaming, and channel close.
101
- *
102
- * Internally delegates to the `session()` method for all
103
- * channel state management and credential creation, and to `Fetch.from`
104
- * for the 402 challenge/retry flow.
105
- *
106
- * ## Session resumption
107
- *
108
- * All channel state is held **in memory**. If the client process restarts,
109
- * the session is lost and a new on-chain channel will be opened on the next
110
- * request — the previous channel's deposit is orphaned until manually closed.
111
- *
112
- * When the server includes a `channelId` in the 402 challenge `methodDetails`,
113
- * the client will attempt to recover the channel by reading its on-chain state
114
- * via `getOnChainChannel()`. If the channel has a positive deposit and is not
115
- * finalized, it resumes from the on-chain settled amount.
116
- */
117
- export function sessionManager(parameters: sessionManager.Parameters): SessionManager {
118
- const fetchFn = parameters.fetch ?? globalThis.fetch
119
- const WebSocketImpl =
120
- parameters.webSocket ??
121
- (globalThis as typeof globalThis & { WebSocket?: WebSocketConstructor }).WebSocket
122
- const maxVoucherCumulative =
123
- parameters.maxDeposit !== undefined
124
- ? parseUnits(parameters.maxDeposit, parameters.decimals ?? 6)
125
- : null
126
-
127
- let channel: ChannelEntry | null = null
128
- let lastChallenge: Challenge.Challenge | null = null
129
- let lastUrl: RequestInfo | URL | null = null
130
- let acceptedCumulative = 0n
131
- let spent = 0n
132
- let activeSocketChallenge: Challenge.Challenge | null = null
133
- let activeSocketChannelId: Hex.Hex | null = null
134
- let activeSocket: WebSocket | null = null
135
- let closeReadyReceipt: SessionReceipt | null = null
136
- let closeReadyWaiter: CloseReadyWaiter | null = null
137
- let expectedSocketCloseAmount: string | null = null
138
- let receiptWaiter: ReceiptWaiter | null = null
139
- let wsDeliveredChunks = 0n
140
- let wsTickCost = 0n
141
-
142
- const method = sessionPlugin({
143
- account: parameters.account,
144
- voucherSigner: parameters.voucherSigner,
145
- getClient: parameters.client ? () => parameters.client! : parameters.getClient,
146
- escrowContract: parameters.escrowContract,
147
- decimals: parameters.decimals,
148
- maxDeposit: parameters.maxDeposit,
149
- onChannelUpdate(entry) {
150
- if (entry.channelId !== channel?.channelId) {
151
- acceptedCumulative = 0n
152
- spent = 0n
153
- }
154
- channel = entry
155
- },
156
- })
157
-
158
- const wrappedFetch = Fetch.from({
159
- fetch: fetchFn,
160
- methods: [method],
161
- onChallenge: async (challenge, _helpers) => {
162
- lastChallenge = challenge
163
- return undefined
164
- },
165
- orderChallenges: parameters.orderChallenges,
166
- })
167
-
168
- function updateSpentFromReceipt(receipt: SessionReceipt | null | undefined) {
169
- if (!receipt || receipt.channelId !== channel?.channelId) return
170
- assertReceiptWithinLocalState(receipt)
171
- const nextAcceptedCumulative = BigInt(receipt.acceptedCumulative)
172
- const next = BigInt(receipt.spent)
173
- acceptedCumulative =
174
- acceptedCumulative > nextAcceptedCumulative ? acceptedCumulative : nextAcceptedCumulative
175
- spent = spent > next ? spent : next
176
- }
177
-
178
- function assertReceiptWithinLocalState(receipt: SessionReceipt) {
179
- if (!channel || receipt.channelId !== channel.channelId) return
180
- const acceptedCumulative = BigInt(receipt.acceptedCumulative)
181
- const receiptSpent = BigInt(receipt.spent)
182
- if (receiptSpent > acceptedCumulative) {
183
- throw new Error('receipt spent exceeds accepted cumulative voucher amount')
184
- }
185
- if (acceptedCumulative > channel.cumulativeAmount) {
186
- throw new Error('receipt accepted cumulative exceeds local voucher state')
187
- }
188
- if (receiptSpent > channel.cumulativeAmount) {
189
- throw new Error('receipt spent exceeds local voucher state')
190
- }
191
- assertVoucherWithinLocalLimit(acceptedCumulative)
192
- assertVoucherWithinLocalLimit(receiptSpent)
193
- }
194
-
195
- function waitForReceipt(predicate: (receipt: SessionReceipt) => boolean = () => true) {
196
- if (receiptWaiter) throw new Error('receipt wait already in progress')
197
- return new Promise<SessionReceipt>((resolve, reject) => {
198
- receiptWaiter = { predicate, resolve, reject }
199
- })
200
- }
201
-
202
- function waitForCloseReady() {
203
- if (closeReadyReceipt) return Promise.resolve(closeReadyReceipt)
204
- if (closeReadyWaiter) throw new Error('close-ready wait already in progress')
205
- return new Promise<SessionReceipt>((resolve, reject) => {
206
- closeReadyWaiter = { resolve, reject }
207
- })
208
- }
209
-
210
- function settleReceipt(receipt: SessionReceipt) {
211
- if (!receiptWaiter) return
212
- if (!receiptWaiter.predicate(receipt)) return
213
- const waiter = receiptWaiter
214
- receiptWaiter = null
215
- waiter.resolve(receipt)
216
- }
217
-
218
- function settleCloseReady(receipt: SessionReceipt) {
219
- closeReadyReceipt = receipt
220
- if (!closeReadyWaiter) return
221
- const waiter = closeReadyWaiter
222
- closeReadyWaiter = null
223
- waiter.resolve(receipt)
224
- }
225
-
226
- function rejectReceipt(error: Error) {
227
- if (!receiptWaiter) return
228
- const waiter = receiptWaiter
229
- receiptWaiter = null
230
- waiter.reject(error)
231
- }
232
-
233
- function rejectCloseReady(error: Error) {
234
- if (!closeReadyWaiter) return
235
- const waiter = closeReadyWaiter
236
- closeReadyWaiter = null
237
- waiter.reject(error)
238
- }
239
-
240
- function getFallbackCloseAmount(challenge: Challenge.Challenge, channelId: Hex.Hex): string {
241
- if (
242
- closeReadyReceipt &&
243
- closeReadyReceipt.challengeId === challenge.id &&
244
- closeReadyReceipt.channelId === channelId
245
- ) {
246
- return closeReadyReceipt.spent
247
- }
248
-
249
- const cumulative = channel?.channelId === channelId ? channel.cumulativeAmount : 0n
250
-
251
- // For WS sessions, use delivered chunk count × tick cost as a tight spend
252
- // estimate. Without this, a socket death before close-ready would cause
253
- // the client to sign for the full cumulative voucher authorization —
254
- // potentially orders of magnitude more than what was actually consumed.
255
- // The estimate may undercount by at most 1 chunk (if the server committed
256
- // a charge but the socket died before delivering the message).
257
- if (wsTickCost > 0n) {
258
- const deliveryEstimate = wsDeliveredChunks * wsTickCost
259
- const bestSpent = spent > deliveryEstimate ? spent : deliveryEstimate
260
- return (bestSpent > cumulative ? cumulative : bestSpent).toString()
261
- }
262
-
263
- // Some legacy servers report receipt.spent as a per-request delta while
264
- // still requiring close at the highest accepted cumulative voucher.
265
- return (spent > acceptedCumulative ? spent : acceptedCumulative).toString()
266
- }
267
-
268
- function assertVoucherWithinLocalLimit(cumulativeAmount: bigint) {
269
- if (maxVoucherCumulative === null) return
270
- if (cumulativeAmount <= maxVoucherCumulative) return
271
- throw new Error(
272
- `requested voucher amount ${cumulativeAmount} exceeds local maxDeposit ${maxVoucherCumulative}`,
273
- )
274
- }
275
-
276
- function toPaymentResponse(response: Response): PaymentResponse {
277
- const receiptHeader = response.headers.get(Constants.Headers.paymentReceipt)
278
- const receipt = receiptHeader ? deserializeSessionReceipt(receiptHeader) : null
279
- updateSpentFromReceipt(receipt)
280
- return Object.assign(response, {
281
- receipt,
282
- challenge: lastChallenge,
283
- channelId: channel?.channelId ?? null,
284
- cumulative: channel?.cumulativeAmount ?? 0n,
285
- })
286
- }
287
-
288
- async function doFetch(
289
- input: RequestInfo | URL,
290
- init?: SessionRequestInit,
291
- ): Promise<PaymentResponse> {
292
- lastUrl = input
293
- const response = await wrappedFetch(input, init)
294
- return toPaymentResponse(response)
295
- }
296
-
297
- function createManagedSocket(socket: WebSocket) {
298
- type EventType = 'close' | 'error' | 'message' | 'open'
299
- type MessageEvent = { data: string; type: 'message' }
300
- type Listener = {
301
- once: boolean
302
- value: ((event: any) => void) | { handleEvent(event: any): void }
303
- }
304
- const listeners = new Map<EventType, Set<Listener>>()
305
- let emittedClose = false
306
- let messageBuffer: MessageEvent[] | null = []
307
- let readyState = socket.readyState
308
-
309
- const add = (
310
- type: EventType,
311
- listener: ((event: any) => void) | { handleEvent(event: any): void },
312
- options?: boolean | AddEventListenerOptions,
313
- ) => {
314
- let set = listeners.get(type)
315
- if (!set) {
316
- set = new Set()
317
- listeners.set(type, set)
318
- }
319
- set.add({
320
- once: typeof options === 'object' ? options.once === true : false,
321
- value: listener,
322
- })
323
- if (type === 'message' && messageBuffer) {
324
- const buffered = messageBuffer
325
- messageBuffer = null
326
- for (const event of buffered) emit('message', event)
327
- }
328
- }
329
-
330
- const remove = (
331
- type: EventType,
332
- listener: ((event: any) => void) | { handleEvent(event: any): void },
333
- ) => {
334
- const set = listeners.get(type)
335
- if (!set) return
336
- for (const entry of set) {
337
- if (entry.value === listener) set.delete(entry)
338
- }
339
- }
340
-
341
- const emit = (type: EventType, event: any) => {
342
- if (type === 'close') {
343
- if (emittedClose) return
344
- emittedClose = true
345
- readyState = WebSocketReadyState.CLOSED
346
- messageBuffer = null
347
- }
348
- if (type === 'open') readyState = WebSocketReadyState.OPEN
349
-
350
- if (type === 'message' && messageBuffer) {
351
- messageBuffer.push(event)
352
- return
353
- }
354
-
355
- const property = `on${type}` as const
356
- const handler = (managed as Record<string, unknown>)[property]
357
- if (typeof handler === 'function') handler(event)
358
-
359
- const set = listeners.get(type)
360
- if (!set) return
361
- for (const entry of Array.from(set)) {
362
- if (typeof entry.value === 'function') entry.value(event)
363
- else entry.value.handleEvent(event)
364
- if (entry.once) set.delete(entry)
365
- }
366
- }
367
-
368
- const managed = {
369
- addEventListener: add,
370
- close(code?: number, reason?: string) {
371
- socket.close(code, reason)
372
- },
373
- get bufferedAmount() {
374
- return socket.bufferedAmount
375
- },
376
- get extensions() {
377
- return socket.extensions
378
- },
379
- on(type: EventType, listener: (...args: any[]) => void) {
380
- add(type, listener)
381
- },
382
- onclose: null as ((event: any) => void) | null,
383
- onerror: null as ((event: any) => void) | null,
384
- _onmessage: null as ((event: any) => void) | null,
385
- get onmessage() {
386
- return managed._onmessage
387
- },
388
- set onmessage(fn: ((event: any) => void) | null) {
389
- managed._onmessage = fn
390
- if (fn && messageBuffer) {
391
- const buffered = messageBuffer
392
- messageBuffer = null
393
- for (const event of buffered) emit('message', event)
394
- }
395
- },
396
- onopen: null as ((event: any) => void) | null,
397
- off(type: EventType, listener: (...args: any[]) => void) {
398
- remove(type, listener)
399
- },
400
- get protocol() {
401
- return socket.protocol
402
- },
403
- get readyState() {
404
- return readyState
405
- },
406
- removeEventListener: remove,
407
- send(data: string) {
408
- socket.send(data)
409
- },
410
- get url() {
411
- return socket.url
412
- },
413
- }
414
-
415
- return {
416
- emit,
417
- socket: managed as unknown as WebSocket,
418
- }
419
- }
420
-
421
- const self: SessionManager = {
422
- get channelId() {
423
- return channel?.channelId
424
- },
425
- get cumulative() {
426
- return channel?.cumulativeAmount ?? 0n
427
- },
428
- get opened() {
429
- return channel?.opened ?? false
430
- },
431
-
432
- async open(options) {
433
- if (channel?.opened) return
434
-
435
- if (!lastChallenge) {
436
- throw new Error(
437
- 'No challenge available. Make a request first to receive a 402 challenge, or pass a challenge via .fetch()/.sse().',
438
- )
439
- }
440
-
441
- const deposit = options?.deposit
442
- const credential = await method.createCredential({
443
- challenge: lastChallenge as never,
444
- context: {
445
- ...(deposit !== undefined && { depositRaw: deposit.toString() }),
446
- },
447
- })
448
-
449
- if (!lastUrl) throw new Error('No URL available — call fetch() or sse() before open().')
450
- const response = await fetchFn(lastUrl, {
451
- method: 'POST',
452
- headers: { [Constants.Headers.authorization]: credential },
453
- })
454
- if (!response.ok) {
455
- const body = await response.text().catch(() => '')
456
- const wwwAuth = response.headers.get(Constants.Headers.wwwAuthenticate) ?? ''
457
- throw new Error(
458
- `Open request failed with status ${response.status}${body ? `: ${body}` : ''}${wwwAuth ? ` [${Constants.Headers.wwwAuthenticate}: ${wwwAuth}]` : ''}`,
459
- )
460
- }
461
- },
462
-
463
- fetch: doFetch,
464
-
465
- async sse(input, init) {
466
- const { onReceipt, signal, ...fetchInit } = init ?? {}
467
-
468
- const sseInit = {
469
- ...fetchInit,
470
- headers: {
471
- ...Fetch.normalizeHeaders(fetchInit.headers),
472
- Accept: 'text/event-stream',
473
- },
474
- ...(signal ? { signal } : {}),
475
- }
476
-
477
- const response = await doFetch(input, sseInit)
478
-
479
- // Snapshot the challenge at SSE open time so concurrent
480
- // calls don't overwrite it.
481
- const sseChallenge = lastChallenge
482
-
483
- if (!response.body) throw new Error('Response has no body.')
484
-
485
- const reader = response.body.getReader()
486
- const decoder = new TextDecoder()
487
-
488
- async function* iterate(): AsyncGenerator<string> {
489
- let buffer = ''
490
-
491
- try {
492
- while (true) {
493
- if (signal?.aborted) break
494
-
495
- const { done, value } = await reader.read()
496
- if (done) break
497
-
498
- buffer += decoder.decode(value, { stream: true })
499
-
500
- const parts = buffer.split('\n\n')
501
- buffer = parts.pop()!
502
-
503
- for (const part of parts) {
504
- if (!part.trim()) continue
505
-
506
- const event = parseEvent(part)
507
- if (!event) continue
508
-
509
- switch (event.type) {
510
- case 'message':
511
- yield event.data
512
- break
513
-
514
- case 'payment-need-voucher': {
515
- if (!channel || !sseChallenge) break
516
- const required = BigInt(event.data.requiredCumulative)
517
- assertVoucherWithinLocalLimit(required)
518
- channel.cumulativeAmount =
519
- channel.cumulativeAmount > required ? channel.cumulativeAmount : required
520
-
521
- const credential = await method.createCredential({
522
- challenge: sseChallenge as never,
523
- context: {
524
- action: 'voucher',
525
- channelId: channel.channelId,
526
- cumulativeAmountRaw: channel.cumulativeAmount.toString(),
527
- },
528
- })
529
- const voucherResponse = await fetchFn(input, {
530
- method: 'POST',
531
- headers: {
532
- Accept: 'text/event-stream',
533
- [Constants.Headers.authorization]: credential,
534
- },
535
- })
536
- if (!voucherResponse.ok) {
537
- throw new Error(`Voucher POST failed with status ${voucherResponse.status}`)
538
- }
539
- break
540
- }
541
-
542
- case 'payment-receipt':
543
- updateSpentFromReceipt(event.data)
544
- onReceipt?.(event.data)
545
- break
546
- }
547
- }
548
- }
549
- } finally {
550
- reader.releaseLock()
551
- }
552
- }
553
-
554
- return iterate()
555
- },
556
-
557
- async ws(input, init) {
558
- if (!WebSocketImpl) {
559
- throw new Error(
560
- 'No WebSocket implementation available. Pass `webSocket` to sessionManager() in this runtime.',
561
- )
562
- }
563
-
564
- const { onReceipt, protocols, signal } = init ?? {}
565
- const wsUrl = new URL(input.toString())
566
- const httpUrl = new URL(wsUrl.toString())
567
- if (httpUrl.protocol === 'ws:') httpUrl.protocol = 'http:'
568
- if (httpUrl.protocol === 'wss:') httpUrl.protocol = 'https:'
569
-
570
- lastUrl = httpUrl.toString()
571
- const probe = await fetchFn(httpUrl, signal ? { signal } : undefined)
572
- if (probe.status !== 402) {
573
- throw new Error(
574
- `Expected a 402 payment challenge from ${httpUrl}, received ${probe.status} instead.`,
575
- )
576
- }
577
-
578
- const candidates = AcceptPayment.selectChallengeCandidates(
579
- Challenge.fromResponseList(probe),
580
- [method] as const,
581
- AcceptPayment.resolve([method] as const).entries,
582
- )
583
- const challenge = (
584
- await resolveSessionChallengeOrder(
585
- candidates,
586
- init?.orderChallenges ?? parameters.orderChallenges,
587
- )
588
- )[0]?.challenge
589
- if (!challenge) {
590
- throw new Error(
591
- 'No payment challenge received from HTTP endpoint for this WebSocket URL. The server may not require payment or did not advertise a challenge.',
592
- )
593
- }
594
- lastChallenge = challenge
595
-
596
- const credential = await method.createCredential({
597
- challenge: challenge as never,
598
- context: {},
599
- })
600
-
601
- closeReadyReceipt = null
602
- activeSocketChallenge = challenge
603
- wsDeliveredChunks = 0n
604
- wsTickCost = BigInt(challenge.request.amount as string)
605
- const openCredential =
606
- PaymentCredential.deserialize<LegacySessionCredentialPayload>(credential)
607
- activeSocketChannelId = openCredential.payload.channelId
608
- const rawSocket = new WebSocketImpl(wsUrl, protocols)
609
- activeSocket = rawSocket
610
- const managedSocket = createManagedSocket(rawSocket)
611
-
612
- const failSocketFlow = (message: string) => {
613
- rejectReceipt(new Error(message))
614
- rejectCloseReady(new Error(message))
615
- if (
616
- rawSocket.readyState === WebSocketReadyState.CONNECTING ||
617
- rawSocket.readyState === WebSocketReadyState.OPEN
618
- ) {
619
- rawSocket.close(ClientWebSocketProtocolErrorCloseCode, message)
620
- }
621
- }
622
-
623
- const isExpectedReceipt = (receipt: SessionReceipt) =>
624
- receipt.challengeId === challenge.id && receipt.channelId === activeSocketChannelId
625
-
626
- const socketOpened = new Promise<void>((resolve, reject) => {
627
- const onOpen = () => {
628
- rawSocket.removeEventListener('error', onError)
629
- managedSocket.emit('open', { type: 'open' })
630
- resolve()
631
- }
632
- const onError = () => {
633
- rawSocket.removeEventListener('open', onOpen)
634
- reject(new Error(`WebSocket connection to ${wsUrl} failed to open.`))
635
- }
636
- rawSocket.addEventListener('open', onOpen, { once: true })
637
- rawSocket.addEventListener('error', onError, { once: true })
638
- })
639
-
640
- rawSocket.addEventListener('close', (event) => {
641
- if (activeSocket === rawSocket) activeSocket = null
642
- if (activeSocketChallenge === challenge) activeSocketChallenge = null
643
- if (activeSocketChannelId === openCredential.payload.channelId) activeSocketChannelId = null
644
- expectedSocketCloseAmount = null
645
- rejectReceipt(new Error('WebSocket closed before the payment flow completed.'))
646
- rejectCloseReady(new Error('WebSocket closed before the payment flow completed.'))
647
- managedSocket.emit('close', {
648
- code: (event as CloseEvent).code ?? 1000,
649
- reason: (event as CloseEvent).reason ?? '',
650
- type: 'close',
651
- wasClean: true,
652
- })
653
- })
654
-
655
- rawSocket.addEventListener('error', () => {
656
- managedSocket.emit('error', { type: 'error' })
657
- })
658
-
659
- rawSocket.addEventListener('message', async (event) => {
660
- const raw = typeof event.data === 'string' ? event.data : undefined
661
- if (!raw) return
662
-
663
- const message = Ws.parseMessage(raw)
664
- if (!message) {
665
- managedSocket.emit('message', { data: raw, type: 'message' })
666
- return
667
- }
668
-
669
- switch (message.mpp) {
670
- case 'authorization':
671
- break
672
- case 'message':
673
- wsDeliveredChunks += 1n
674
- managedSocket.emit('message', { data: message.data, type: 'message' })
675
- break
676
- case 'payment-close-ready':
677
- if (!isExpectedReceipt(message.data)) {
678
- failSocketFlow('received mismatched payment-close-ready frame')
679
- break
680
- }
681
- if (BigInt(message.data.spent) > (channel?.cumulativeAmount ?? 0n)) {
682
- failSocketFlow('received payment-close-ready beyond local voucher state')
683
- break
684
- }
685
- updateSpentFromReceipt(message.data)
686
- onReceipt?.(message.data)
687
- settleCloseReady(message.data)
688
- managedSocket.emit('close', { code: 1000, reason: 'stream complete', type: 'close' })
689
- break
690
- case 'payment-error':
691
- rejectReceipt(new Error(message.message))
692
- rejectCloseReady(new Error(message.message))
693
- break
694
- case 'payment-need-voucher': {
695
- if (message.data.channelId !== activeSocketChannelId) {
696
- failSocketFlow('received mismatched payment-need-voucher frame')
697
- break
698
- }
699
- const required = BigInt(message.data.requiredCumulative)
700
- try {
701
- assertVoucherWithinLocalLimit(required)
702
- } catch (error) {
703
- failSocketFlow(
704
- error instanceof Error
705
- ? error.message
706
- : 'requested voucher amount exceeds local maxDeposit',
707
- )
708
- break
709
- }
710
- const nextCumulative =
711
- (channel?.cumulativeAmount ?? 0n) > required
712
- ? (channel?.cumulativeAmount ?? 0n)
713
- : required
714
- if (channel?.channelId === activeSocketChannelId)
715
- channel.cumulativeAmount = nextCumulative
716
-
717
- const voucher = await method.createCredential({
718
- challenge: challenge as never,
719
- context: {
720
- action: 'voucher',
721
- channelId: activeSocketChannelId,
722
- cumulativeAmountRaw: nextCumulative.toString(),
723
- },
724
- })
725
- rawSocket.send(Ws.formatAuthorizationMessage(voucher))
726
- break
727
- }
728
- case 'payment-receipt':
729
- if (!isExpectedReceipt(message.data)) {
730
- failSocketFlow('received mismatched payment-receipt frame')
731
- break
732
- }
733
- if (
734
- expectedSocketCloseAmount !== null &&
735
- Boolean(message.data.txHash) &&
736
- (message.data.acceptedCumulative !== expectedSocketCloseAmount ||
737
- message.data.spent !== expectedSocketCloseAmount)
738
- ) {
739
- failSocketFlow('received mismatched payment-close receipt frame')
740
- break
741
- }
742
- updateSpentFromReceipt(message.data)
743
- onReceipt?.(message.data)
744
- settleReceipt(message.data)
745
- break
746
- }
747
- })
748
-
749
- if (signal) {
750
- signal.addEventListener(
751
- 'abort',
752
- () => {
753
- rejectReceipt(new Error('WebSocket payment flow aborted.'))
754
- rejectCloseReady(new Error('WebSocket payment flow aborted.'))
755
- rawSocket.close()
756
- },
757
- { once: true },
758
- )
759
- }
760
-
761
- await socketOpened
762
- rawSocket.send(Ws.formatAuthorizationMessage(credential))
763
- await waitForReceipt()
764
- return managedSocket.socket
765
- },
766
-
767
- async close() {
768
- const closeChallenge = activeSocketChallenge ?? lastChallenge
769
- const closeChannelId = activeSocketChannelId ?? channel?.channelId
770
-
771
- if (!channel?.opened) return undefined
772
-
773
- if (!closeChallenge) {
774
- throw new Error(
775
- 'Cannot close session: no challenge available. This usually means close() was called on a SessionManager instance that was recreated after the session was opened. Use the same SessionManager instance that opened the session, or make a request first to receive a fresh 402 challenge.',
776
- )
777
- }
778
- if (!closeChannelId) {
779
- throw new Error(
780
- 'Cannot close session: no channel ID available. The session may not have been fully opened.',
781
- )
782
- }
783
-
784
- if (activeSocket?.readyState === WebSocketReadyState.OPEN) {
785
- const ready =
786
- closeReadyReceipt ??
787
- (await (async () => {
788
- activeSocket.send(Ws.formatCloseRequestMessage())
789
- return waitForCloseReady()
790
- })())
791
- const readySpent = BigInt(ready.spent)
792
- if (readySpent > (channel.cumulativeAmount > spent ? channel.cumulativeAmount : spent)) {
793
- throw new Error('close-ready spent exceeds local voucher state')
794
- }
795
-
796
- const credential = await method.createCredential({
797
- challenge: closeChallenge as never,
798
- context: {
799
- action: 'close',
800
- channelId: closeChannelId,
801
- cumulativeAmountRaw: readySpent.toString(),
802
- },
803
- })
804
-
805
- const expectedCloseAmount = readySpent.toString()
806
- expectedSocketCloseAmount = expectedCloseAmount
807
- try {
808
- const pendingReceipt = waitForReceipt(
809
- (receipt) =>
810
- Boolean(receipt.txHash) &&
811
- receipt.challengeId === closeChallenge.id &&
812
- receipt.channelId === closeChannelId &&
813
- receipt.acceptedCumulative === expectedCloseAmount &&
814
- receipt.spent === expectedCloseAmount,
815
- )
816
- activeSocket.send(Ws.formatAuthorizationMessage(credential))
817
- const receipt = await pendingReceipt
818
- activeSocket.close()
819
- closeReadyReceipt = null
820
- return receipt
821
- } finally {
822
- expectedSocketCloseAmount = null
823
- }
824
- }
825
-
826
- const credential = await method.createCredential({
827
- challenge: closeChallenge as never,
828
- context: {
829
- action: 'close',
830
- channelId: closeChannelId,
831
- cumulativeAmountRaw: (() => {
832
- const closeAmount = BigInt(getFallbackCloseAmount(closeChallenge, closeChannelId))
833
- if (closeAmount > channel.cumulativeAmount) {
834
- throw new Error('fallback close amount exceeds local voucher state')
835
- }
836
- assertVoucherWithinLocalLimit(closeAmount)
837
- return closeAmount.toString()
838
- })(),
839
- },
840
- })
841
-
842
- if (!lastUrl) {
843
- throw new Error(
844
- 'Cannot close session: no URL available. This usually means close() was called on a SessionManager instance that was recreated after the session was opened. Use the same SessionManager instance that opened the session, or call fetch()/sse() before close().',
845
- )
846
- }
847
-
848
- const response = await fetchFn(lastUrl, {
849
- method: 'POST',
850
- headers: { [Constants.Headers.authorization]: credential },
851
- })
852
- if (!response.ok) {
853
- const body = await response.text().catch(() => '')
854
- const detail = (() => {
855
- if (!body) return ''
856
- if (!response.headers.get('Content-Type')?.includes('application/problem+json')) {
857
- return body
858
- }
859
- try {
860
- const problem = JSON.parse(body) as { detail?: string }
861
- return problem.detail ?? body
862
- } catch {
863
- return body
864
- }
865
- })()
866
- const wwwAuth = response.headers.get(Constants.Headers.wwwAuthenticate) ?? ''
867
- throw new Error(
868
- `Close request failed with status ${response.status}${detail ? `: ${detail}` : ''}${wwwAuth ? ` [${Constants.Headers.wwwAuthenticate}: ${wwwAuth}]` : ''}`,
869
- )
870
- }
871
- const receiptHeader = response.headers.get(Constants.Headers.paymentReceipt)
872
- const receipt = receiptHeader ? deserializeSessionReceipt(receiptHeader) : undefined
873
-
874
- return receipt
875
- },
876
- }
877
-
878
- return self
879
- }
880
-
881
- /** Type helpers for the legacy auto-driving session manager. */
882
- export declare namespace sessionManager {
883
- type Parameters = Account.getResolver.Parameters &
884
- Client.getResolver.Parameters & {
885
- /** Account that signs voucher digests. Defaults to `account`; access-key accounts sign raw vouchers as their access-key address. */
886
- voucherSigner?: viem_Account | undefined
887
- /** Viem client instance. Shorthand for `getClient: () => client`. */
888
- client?: import('viem').Client | undefined
889
- /** Token decimals used to convert `maxDeposit` to raw units. Defaults to `6`. */
890
- decimals?: number | undefined
891
- /** Escrow contract address. */
892
- escrowContract?: Address | undefined
893
- fetch?: typeof globalThis.fetch | undefined
894
- /** Maximum deposit in human-readable units (e.g. `'10'` for 10 tokens). Converted to raw units via `decimals`. */
895
- maxDeposit?: string | undefined
896
- /** Filters and sorts supported session challenges before credential creation. */
897
- orderChallenges?: SessionOrderChallenges | undefined
898
- /** Optional websocket constructor for runtimes without a global WebSocket. */
899
- webSocket?: WebSocketConstructor | undefined
900
- }
901
- }
902
-
903
- async function resolveSessionChallengeOrder(
904
- candidates: readonly AcceptPayment.ChallengeCandidate<SessionMethod>[],
905
- override: SessionOrderChallenges | undefined,
906
- ): Promise<readonly AcceptPayment.ChallengeCandidate<SessionMethod>[]> {
907
- const orderChallenges = override
908
- return orderChallenges ? orderChallenges(candidates) : candidates
909
- }