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,996 +0,0 @@
1
- import type { Hex } from 'ox'
2
- import { parseUnits, type Address } from 'viem'
3
- import { tempo as tempo_chain } from 'viem/chains'
4
-
5
- import * as Challenge from '../../../Challenge.js'
6
- import * as Fetch from '../../../client/internal/Fetch.js'
7
- import * as MethodChallenge from '../../../client/internal/MethodChallenge.js'
8
- import * as MethodResponse from '../../../client/internal/MethodResponse.js'
9
- import * as Constants from '../../../Constants.js'
10
- import * as Account from '../../../viem/Account.js'
11
- import * as Client from '../../../viem/Client.js'
12
- import { charge as chargePlugin } from '../../client/Charge.js'
13
- import * as defaults from '../../internal/defaults.js'
14
- import type { ChannelEntry } from '../client/ChannelOps.js'
15
- import { createChannelStore, entryKey, type ChannelStore } from '../client/ChannelStore.js'
16
- import { hydrateSessionSnapshot, type SessionContext } from '../client/CredentialState.js'
17
- import { session as sessionPlugin } from '../client/Session.js'
18
- import * as Channel from '../precompile/Channel.js'
19
- import { deserializeSessionReceipt } from '../precompile/Protocol.js'
20
- import type { SessionReceipt } from '../precompile/Protocol.js'
21
- import {
22
- deserializeSnapshot as deserializeSessionSnapshot,
23
- serializeSnapshot as serializeSessionSnapshot,
24
- } from '../Snapshot.js'
25
- import { registerSessionManagerInternals } from './internal/SessionManager.js'
26
- import { createSessionReceiptCoordinator } from './ReceiptCoordinator.js'
27
- import { resolveCloseTarget, type CloseTarget } from './Runtime.js'
28
- import { assertVoucherWithinLocalLimit as assertVoucherWithinLocalAuthorization } from './Runtime.js'
29
- import type { SessionState } from './Runtime.js'
30
- import {
31
- applySessionReceiptToRuntime,
32
- captureRuntimeSnapshot as captureRuntimeStateSnapshot,
33
- computeFallbackCloseAmount,
34
- createSessionManagerRuntime,
35
- dispatchSessionEvent,
36
- restoreCumulativeAuthorization,
37
- restoreRuntimeSnapshot as restoreRuntimeStateSnapshot,
38
- resolveAutomaticTopUp,
39
- type RuntimeSnapshot,
40
- } from './Runtime.js'
41
- import { closeSocketSession } from './Runtime.js'
42
- import {
43
- closeHttpSession,
44
- getSessionSnapshot,
45
- isTempoSessionChallenge,
46
- postTopUp,
47
- retryHttpPaymentRequired,
48
- type TempoSessionChallenge,
49
- webSocketProbeUrl,
50
- } from './Transports.js'
51
- import {
52
- type SessionManagedWebSocket,
53
- type WebSocketConstructor,
54
- WebSocketReadyState,
55
- } from './Transports.js'
56
- import { consumeSseSessionResponse, openSseSession, type SseDriverOptions } from './Transports.js'
57
- import { applyTopUpResult, resolveManualTopUp, type TopUpRequirement } from './Transports.js'
58
- import {
59
- openWebSocketSession,
60
- prepareWebSocketSession,
61
- probeWebSocketSession,
62
- type WebSocketDriverOptions,
63
- } from './Transports.js'
64
-
65
- export { computeFallbackCloseAmount, type FallbackCloseAmountParameters } from './Runtime.js'
66
-
67
- /** Auto-driving client manager for HTTP, SSE, and WebSocket TIP-1034 sessions. */
68
- export type SessionManager = {
69
- /** Active channel ID, when a channel has been opened or recovered. */
70
- readonly channelId: Hex.Hex | undefined
71
- /** Local cumulative voucher authorization in raw token units. */
72
- readonly cumulative: bigint
73
- /** Whether the manager currently has an open local channel. */
74
- readonly opened: boolean
75
- /** Current pure session state-machine state. */
76
- readonly state: SessionState
77
-
78
- /** Runs the HTTP 402 probe, signs/open/top-ups as needed, retries, and returns receipt metadata. */
79
- fetch(input: RequestInfo | URL, init?: RequestInit): Promise<PaymentResponse>
80
- /** Opens a paid SSE stream and auto-posts vouchers/top-ups when the server requests more headroom. */
81
- sse(input: RequestInfo | URL, init?: SessionManagerSseOptions): Promise<AsyncIterable<string>>
82
- /** Opens a paid WebSocket session after an HTTP challenge probe and manages in-band voucher frames. */
83
- ws(input: string | URL, init?: SessionManagerWebSocketOptions): Promise<SessionManagedWebSocket>
84
- /** Tops up the active channel deposit. String amounts are parsed with the manager decimals; bigint amounts are raw units. */
85
- topUp(amount: string | bigint): Promise<SessionReceipt | undefined>
86
- /** Cooperatively closes the active channel using the latest locally authorized spend boundary. */
87
- close(): Promise<SessionReceipt | undefined>
88
- }
89
-
90
- /** Options for `SessionManager.sse()`. */
91
- export type SessionManagerSseOptions = SseDriverOptions
92
-
93
- /** Options for `SessionManager.ws()`. */
94
- export type SessionManagerWebSocketOptions = WebSocketDriverOptions
95
-
96
- /** HTTP response enriched with the latest session payment metadata. */
97
- export type PaymentResponse = Response & {
98
- /** Parsed payment receipt, when the response included one. */
99
- receipt: SessionReceipt | null
100
- /** Last session challenge observed by the manager. */
101
- challenge: TempoSessionChallenge | null
102
- /** Active channel ID, when available. */
103
- channelId: Hex.Hex | null
104
- /** Local cumulative voucher authorization in raw token units. */
105
- cumulative: bigint
106
- }
107
-
108
- /** Normalized runtime dependencies derived from `sessionManager()` parameters. */
109
- type SessionManagerConfig = {
110
- /** Decimal precision used when parsing human-readable manager amounts. */
111
- decimals: number
112
- /** Fetch implementation used for probes, retries, and management posts. */
113
- fetch: typeof globalThis.fetch
114
- /** Local maximum cumulative voucher authorization, or null when uncapped. */
115
- maxVoucherCumulative: bigint | null
116
- /** Preferred top-up, or null to use a bounded server suggestion and then the exact shortfall. */
117
- topUpAmount: bigint | null
118
- /** WebSocket constructor available in the current runtime, when configured. */
119
- WebSocket: WebSocketConstructor | undefined
120
- }
121
-
122
- function isTempoChargeChallenge(challenge: Challenge.Challenge) {
123
- return (
124
- challenge.method === Constants.Methods.tempo && challenge.intent === Constants.Intents.charge
125
- )
126
- }
127
-
128
- function isZeroAmountChargeChallenge(challenge: Challenge.Challenge) {
129
- if (!isTempoChargeChallenge(challenge)) return false
130
- if (typeof challenge.request.amount !== 'string') return false
131
- try {
132
- return BigInt(challenge.request.amount) === 0n
133
- } catch {
134
- return false
135
- }
136
- }
137
-
138
- function requestInitWithSessionHint(
139
- input: RequestInfo | URL,
140
- init: RequestInit | undefined,
141
- channelId: Hex.Hex | undefined,
142
- ): RequestInit | undefined {
143
- if (!channelId) return init
144
- const requestHeaders = input instanceof Request ? input.headers : undefined
145
- const headers = {
146
- ...Fetch.normalizeHeaders(requestHeaders),
147
- ...Fetch.normalizeHeaders(init?.headers),
148
- }
149
- if (
150
- Object.keys(headers).some(
151
- (key) => key.toLowerCase() === Constants.Headers.paymentSession.toLowerCase(),
152
- )
153
- )
154
- return init
155
- return {
156
- ...init,
157
- headers: {
158
- ...headers,
159
- [Constants.Headers.paymentSession]: channelId,
160
- },
161
- }
162
- }
163
-
164
- function resolveSessionManagerConfig(parameters: sessionManager.Parameters): SessionManagerConfig {
165
- const decimals = parameters.decimals ?? 6
166
- const WebSocket =
167
- parameters.webSocket ??
168
- (globalThis as typeof globalThis & { WebSocket?: WebSocketConstructor }).WebSocket
169
-
170
- return {
171
- decimals,
172
- fetch: parameters.fetch ?? globalThis.fetch.bind(globalThis),
173
- maxVoucherCumulative:
174
- parameters.maxDeposit !== undefined ? parseUnits(parameters.maxDeposit, decimals) : null,
175
- topUpAmount:
176
- parameters.topUpAmount !== undefined ? parseUnits(parameters.topUpAmount, decimals) : null,
177
- WebSocket,
178
- }
179
- }
180
-
181
- /**
182
- * Creates a session manager that handles the full client payment lifecycle:
183
- * channel open, incremental vouchers, SSE streaming, and channel close.
184
- *
185
- * Internally delegates to the `session()` method for all
186
- * channel state management and credential creation, and to `Fetch.from`
187
- * for the 402 challenge/retry flow.
188
- *
189
- * `channelStore` can persist reusable channels between manager instances.
190
- */
191
- export function sessionManager(parameters: sessionManager.Parameters): SessionManager {
192
- const config = resolveSessionManagerConfig(parameters)
193
- const getClient = Client.getResolver({
194
- chain: tempo_chain,
195
- getClient: parameters.client ? () => parameters.client! : parameters.getClient,
196
- rpcUrl: defaults.rpcUrl,
197
- })
198
- const getAccount = Account.getResolver({ account: parameters.account })
199
- const runtime = createSessionManagerRuntime()
200
- const receipts = createSessionReceiptCoordinator({
201
- getSocketSession: () => runtime.socketSession,
202
- })
203
-
204
- const backing = parameters.channelStore ?? createChannelStore()
205
- const ignoredChannelIds = new Set<Hex.Hex>()
206
-
207
- // Tracks one fetch's channel reuse so stale stored entries can be evicted once.
208
- type ChannelUse = {
209
- challengesReceived: number
210
- committed: RuntimeSnapshot | undefined
211
- created: Map<string, ChannelEntry>
212
- seenExisting: Set<string>
213
- previous: RuntimeSnapshot
214
- resumed: ChannelEntry | undefined
215
- trackCreates: boolean
216
- }
217
- let channelUse: ChannelUse | undefined
218
-
219
- /** Returns the backing entry for `key` only when it is open and not ignored. */
220
- async function getReusable(key: string): Promise<ChannelEntry | undefined> {
221
- const entry = await backing.get(key)
222
- if (entry?.opened && !ignoredChannelIds.has(entry.channelId)) return entry
223
- return undefined
224
- }
225
-
226
- const store: ChannelStore = {
227
- async get(key) {
228
- const entry = await getReusable(key)
229
- if (entry && channelUse) {
230
- channelUse.seenExisting.add(key)
231
- if (!channelUse.committed && !channelUse.created.has(key)) channelUse.resumed ??= entry
232
- }
233
- return entry
234
- },
235
- async set(entry) {
236
- const key = entryKey(entry)
237
- if (entry.opened) ignoredChannelIds.delete(entry.channelId)
238
- if (channelUse?.trackCreates && !channelUse.seenExisting.has(key))
239
- channelUse.created.set(key, entry)
240
- await backing.set(entry)
241
- },
242
- delete: (key) => backing.delete(key),
243
- }
244
-
245
- /** Removes a failed channel from candidacy for the rest of this manager's life. */
246
- async function ignoreChannel(entry: ChannelEntry) {
247
- const key = entryKey(entry)
248
- ignoredChannelIds.add(entry.channelId)
249
- channelUse?.seenExisting.delete(key)
250
- if (channelUse?.resumed === entry) channelUse.resumed = undefined
251
- await Promise.resolve(backing.delete(key)).catch(() => undefined)
252
- }
253
-
254
- async function rollbackCreatedChannels() {
255
- const use = channelUse
256
- if (!use?.created.size) return
257
- for (const [key, entry] of use.created) {
258
- ignoredChannelIds.add(entry.channelId)
259
- await Promise.resolve(backing.delete(key)).catch(() => undefined)
260
- }
261
- use.created.clear()
262
- await restoreRuntime(use.committed ?? use.previous)
263
- }
264
-
265
- /** Commits a newly created channel once an authoritative server snapshot references it. */
266
- function commitReferencedChannel(challenge: Challenge.Challenge): boolean {
267
- const snapshot = Constants.getMethodDetail<{ channelId?: unknown }>(
268
- challenge.request.methodDetails,
269
- Constants.MethodDetailKeys.sessionSnapshot,
270
- )
271
- if (typeof snapshot?.channelId !== 'string') return false
272
- const use = channelUse
273
- if (!use?.created.size || !runtime.channel) return false
274
- for (const [key, entry] of use.created) {
275
- if (
276
- entry.channelId.toLowerCase() !== snapshot.channelId.toLowerCase() ||
277
- runtime.channel.channelId.toLowerCase() !== snapshot.channelId.toLowerCase()
278
- )
279
- continue
280
- use.created.delete(key)
281
- use.committed = captureRuntimeStateSnapshot({
282
- channel: runtime.channel,
283
- spent: runtime.spent,
284
- state: runtime.state,
285
- })
286
- return true
287
- }
288
- return false
289
- }
290
-
291
- function dispatch(event: Parameters<typeof dispatchSessionEvent>[1]) {
292
- return dispatchSessionEvent(runtime, event)
293
- }
294
-
295
- function activeUnits() {
296
- const state =
297
- runtime.state.status === 'active'
298
- ? runtime.state
299
- : (channelUse?.committed?.state ?? channelUse?.previous.state)
300
- return state?.status === 'active' ? state.units : 0
301
- }
302
-
303
- function commitDurableTopUp(entry: ChannelEntry) {
304
- const use = channelUse
305
- const baseline = use?.committed?.channel?.entry ?? use?.resumed
306
- if (
307
- !use ||
308
- baseline?.channelId.toLowerCase() !== entry.channelId.toLowerCase() ||
309
- entry.deposit <= baseline.deposit
310
- )
311
- return
312
- use.resumed = undefined
313
- use.committed = captureRuntimeStateSnapshot({
314
- channel: runtime.channel,
315
- spent: runtime.spent,
316
- state: runtime.state,
317
- })
318
- }
319
-
320
- const method = sessionPlugin({
321
- account: parameters.account,
322
- autoSwap: parameters.autoSwap,
323
- getClient: parameters.client ? () => parameters.client! : parameters.getClient,
324
- resolveAccount: parameters.resolveAccount,
325
- escrow: parameters.escrow,
326
- decimals: config.decimals,
327
- maxDeposit: parameters.maxDeposit,
328
- topUpAmount: parameters.topUpAmount,
329
- channelStore: store,
330
- onChannelUpdate(entry) {
331
- if (entry.channelId !== runtime.channel?.channelId) runtime.spent = 0n
332
- runtime.channel = entry
333
- if (runtime.lastChallenge) {
334
- dispatch({
335
- type: 'activated',
336
- challengeId: runtime.lastChallenge.id,
337
- entry,
338
- spent: runtime.spent.toString(),
339
- units: activeUnits(),
340
- })
341
- }
342
- commitDurableTopUp(entry)
343
- },
344
- })
345
- MethodResponse.unregister(method)
346
- const chargeMethod = chargePlugin({
347
- account: parameters.account,
348
- getClient: parameters.client ? () => parameters.client! : parameters.getClient,
349
- })
350
-
351
- const wrappedFetch = Fetch.from({
352
- fetch: config.fetch,
353
- methods: [method],
354
- onChallenge: async (challenge, _helpers) => {
355
- if (!isTempoSessionChallenge(challenge)) return undefined
356
- const use = channelUse
357
- const isRepeatedRetryChallenge =
358
- use && use.challengesReceived > 0 && challenge.id === runtime.lastChallenge?.id
359
- const isSameRetryChallenge =
360
- isRepeatedRetryChallenge &&
361
- Challenge.serialize(challenge) === Challenge.serialize(runtime.lastChallenge!)
362
- if (use) use.challengesReceived++
363
- if (isSameRetryChallenge) return undefined
364
- if (!commitReferencedChannel(challenge)) {
365
- if (use?.created.size) await rollbackCreatedChannels()
366
- else if (isRepeatedRetryChallenge) await restoreRuntime(use.committed ?? use.previous)
367
- }
368
- runtime.lastChallenge = challenge
369
- dispatch({ type: 'challengeReceived', challengeId: challenge.id })
370
- return undefined
371
- },
372
- })
373
-
374
- function createSessionCredential(challenge: TempoSessionChallenge, context: SessionContext) {
375
- return method.createCredential({ challenge, context })
376
- }
377
-
378
- function updateSpentFromReceipt(receipt: SessionReceipt | null | undefined) {
379
- applySessionReceiptToRuntime({
380
- maxVoucherCumulative: config.maxVoucherCumulative,
381
- receipt,
382
- runtime,
383
- })
384
- }
385
-
386
- function activateCurrentChannel(
387
- units = runtime.state.status === 'active' ? runtime.state.units : 0,
388
- ) {
389
- if (!runtime.channel || !runtime.lastChallenge) return
390
- if (
391
- runtime.state.status === 'active' ||
392
- runtime.state.status === 'withdrawable' ||
393
- runtime.state.status === 'closeRequested'
394
- )
395
- return
396
- dispatch({
397
- type: 'activated',
398
- challengeId: runtime.lastChallenge.id,
399
- entry: runtime.channel,
400
- spent: runtime.spent.toString(),
401
- units,
402
- })
403
- }
404
-
405
- /** Persists a server snapshot into the channel store and returns the entry. */
406
- async function storeSnapshotHeader(response: Response): Promise<ChannelEntry | undefined> {
407
- const header = response.headers.get(Constants.Headers.paymentSessionSnapshot)
408
- if (!header) return undefined
409
- const snapshot = deserializeSessionSnapshot(header)
410
- const client = await getClient({ chainId: snapshot.chainId })
411
- const defaultAccount = getAccount(client)
412
- const account =
413
- (await parameters.resolveAccount?.({
414
- account: defaultAccount,
415
- chainId: snapshot.chainId,
416
- operation: {
417
- authority: Channel.resolveAuthorizedSigner(snapshot.descriptor),
418
- kind: 'authorizePaymentChannel',
419
- },
420
- })) ?? defaultAccount
421
- const { entry, spent } = await hydrateSessionSnapshot({ account, client, snapshot })
422
- assertVoucherWithinLocalLimit(entry.cumulativeAmount)
423
- await Promise.resolve(store.set(entry)).catch(() => undefined)
424
- runtime.channel = entry
425
- runtime.spent = spent
426
- return entry
427
- }
428
-
429
- async function bootstrapSession(
430
- input: RequestInfo | URL,
431
- init?: RequestInit | undefined,
432
- ): Promise<ChannelEntry | undefined> {
433
- if (!parameters.bootstrap) return undefined
434
- if (runtime.channel?.opened) return undefined
435
-
436
- const requestHeaders = input instanceof Request ? input.headers : undefined
437
- const { body: _body, method: _method, ...bootstrapInit } = init ?? {}
438
- const bootstrapInput = input instanceof Request ? input.url : input
439
- const headInit: RequestInit = {
440
- ...bootstrapInit,
441
- method: 'HEAD',
442
- headers: {
443
- ...Fetch.normalizeHeaders(requestHeaders),
444
- ...Fetch.normalizeHeaders(init?.headers),
445
- [Constants.Headers.acceptPayment]: `${Constants.Methods.tempo}/${Constants.Intents.charge}`,
446
- },
447
- }
448
-
449
- try {
450
- const challengeResponse = await config.fetch(bootstrapInput, headInit)
451
- if (challengeResponse.status !== 402) return await storeSnapshotHeader(challengeResponse)
452
- const challenge = Challenge.fromResponseList(challengeResponse).find(isTempoChargeChallenge)
453
- if (!challenge) return undefined
454
- if (!isZeroAmountChargeChallenge(challenge)) return undefined
455
- const credential = await chargeMethod.createCredential({
456
- challenge: challenge as never,
457
- context: {},
458
- })
459
- const response = await config.fetch(bootstrapInput, {
460
- ...headInit,
461
- headers: {
462
- ...Fetch.normalizeHeaders(headInit.headers),
463
- [Constants.Headers.authorization]: credential,
464
- },
465
- })
466
- if (response.ok) return await storeSnapshotHeader(response)
467
- return undefined
468
- } catch {
469
- return undefined
470
- }
471
- }
472
-
473
- function getFallbackCloseAmount(challenge: TempoSessionChallenge, channelId: Hex.Hex): bigint {
474
- const currentSocket = runtime.socketSession
475
- return computeFallbackCloseAmount({
476
- challengeId: challenge.id,
477
- channelId,
478
- closeReadyReceipt: currentSocket?.closeReadyReceipt,
479
- cumulativeAmount:
480
- runtime.channel?.channelId === channelId ? runtime.channel.cumulativeAmount : 0n,
481
- deliveredChunks: currentSocket?.deliveredChunks,
482
- socketChallengeId: currentSocket?.challenge.id,
483
- socketChannelId: currentSocket?.channelId,
484
- spent: runtime.spent,
485
- tickCost: currentSocket?.tickCost,
486
- })
487
- }
488
-
489
- function validateCloseSnapshot(channel: ChannelEntry, challenge: TempoSessionChallenge) {
490
- const snapshot = getSessionSnapshot(challenge)
491
- if (!snapshot) return undefined
492
-
493
- const computedSnapshotId = Channel.computeId({
494
- ...snapshot.descriptor,
495
- chainId: snapshot.chainId,
496
- escrow: snapshot.escrow,
497
- })
498
- if (computedSnapshotId.toLowerCase() !== snapshot.channelId.toLowerCase()) {
499
- throw new Error('close snapshot descriptor does not match its channel ID')
500
- }
501
- if (snapshot.channelId.toLowerCase() !== channel.channelId.toLowerCase()) {
502
- throw new Error('close snapshot channel ID does not match local session')
503
- }
504
- if (
505
- snapshot.chainId !== channel.chainId ||
506
- snapshot.escrow.toLowerCase() !== channel.escrow.toLowerCase()
507
- ) {
508
- throw new Error('close snapshot payment scope does not match local session')
509
- }
510
-
511
- const acceptedCumulative = BigInt(snapshot.acceptedCumulative)
512
- const snapshotSpent = BigInt(snapshot.spent)
513
- if (acceptedCumulative < 0n || snapshotSpent < 0n) {
514
- throw new Error('close snapshot amounts must not be negative')
515
- }
516
- if (snapshotSpent > acceptedCumulative) {
517
- throw new Error('close snapshot spent exceeds accepted cumulative amount')
518
- }
519
- if (acceptedCumulative > channel.cumulativeAmount) {
520
- throw new Error('close snapshot accepted cumulative exceeds local voucher state')
521
- }
522
- return { acceptedCumulative, spent: snapshotSpent }
523
- }
524
-
525
- function applyCloseSnapshot(target: CloseTarget, challenge: TempoSessionChallenge) {
526
- const snapshot = validateCloseSnapshot(target.channel, challenge)
527
- if (!snapshot) return
528
-
529
- const { acceptedCumulative, spent } = snapshot
530
- if (runtime.spent > acceptedCumulative) {
531
- throw new Error('close snapshot accepted cumulative is below locally confirmed spend')
532
- }
533
- if (spent > runtime.spent) runtime.spent = spent
534
- }
535
-
536
- function getValidatedFallbackCloseAmount(
537
- target: CloseTarget,
538
- challenge: TempoSessionChallenge = target.challenge,
539
- applySnapshot = false,
540
- ) {
541
- if (applySnapshot) applyCloseSnapshot(target, challenge)
542
- const closeAmount = getFallbackCloseAmount(challenge, target.channelId)
543
- if (closeAmount > target.channel.cumulativeAmount) {
544
- throw new Error('fallback close amount exceeds local voucher state')
545
- }
546
- assertVoucherWithinLocalLimit(closeAmount)
547
- return closeAmount.toString()
548
- }
549
-
550
- function assertVoucherWithinLocalLimit(cumulativeAmount: bigint) {
551
- assertVoucherWithinLocalAuthorization({
552
- cumulativeAmount,
553
- maxVoucherCumulative: config.maxVoucherCumulative,
554
- })
555
- }
556
-
557
- async function postTopUpAndApply(parameters: {
558
- additionalDeposit: bigint
559
- challenge: TempoSessionChallenge
560
- channelId: Hex.Hex
561
- input: RequestInfo | URL
562
- knownDeposit?: bigint | undefined
563
- }) {
564
- const { knownDeposit, ...topUp } = parameters
565
- const receipt = await postTopUp({
566
- ...topUp,
567
- channel: runtime.channel,
568
- createSessionCredential,
569
- fetch: config.fetch,
570
- })
571
- updateSpentFromReceipt(receipt)
572
- const applied = applyTopUpResult({
573
- additionalDeposit: parameters.additionalDeposit,
574
- channel: runtime.channel,
575
- channelId: parameters.channelId,
576
- challengeId: runtime.lastChallenge?.id,
577
- currentState: runtime.state,
578
- knownDeposit,
579
- receipt,
580
- spent: runtime.spent,
581
- })
582
- if (applied?.channel && runtime.lastChallenge) {
583
- await store.set(applied.channel)
584
- dispatch({
585
- type: 'activated',
586
- challengeId: runtime.lastChallenge.id,
587
- entry: applied.channel,
588
- spent: runtime.spent.toString(),
589
- units: activeUnits(),
590
- })
591
- commitDurableTopUp(applied.channel)
592
- }
593
- return receipt
594
- }
595
-
596
- async function topUpIfNeeded(parameters: TopUpRequirement) {
597
- const channelDeposit =
598
- runtime.channel?.channelId === parameters.channelId ? runtime.channel.deposit : 0n
599
- const deposit = channelDeposit > parameters.deposit ? channelDeposit : parameters.deposit
600
- const additionalDeposit = resolveAutomaticTopUp({
601
- deposit,
602
- maxDeposit: config.maxVoucherCumulative,
603
- requiredCumulative: parameters.requiredCumulative,
604
- suggestedDeposit:
605
- parameters.challenge.request.suggestedDeposit === undefined
606
- ? undefined
607
- : BigInt(parameters.challenge.request.suggestedDeposit),
608
- topUpAmount: config.topUpAmount,
609
- })
610
- if (additionalDeposit === 0n) return
611
- await postTopUpAndApply({
612
- challenge: parameters.challenge,
613
- input: parameters.input,
614
- channelId: parameters.channelId,
615
- additionalDeposit,
616
- knownDeposit: deposit,
617
- })
618
- }
619
-
620
- async function restoreCumulative(channelId: Hex.Hex, cumulativeAmount: bigint) {
621
- const restored = restoreCumulativeAuthorization({
622
- channel: runtime.channel,
623
- channelId,
624
- challengeId: runtime.lastChallenge?.id,
625
- cumulativeAmount,
626
- spent: runtime.spent,
627
- state: runtime.state,
628
- })
629
- if (restored && runtime.channel) {
630
- dispatch({
631
- type: 'activated',
632
- challengeId: restored.challengeId,
633
- entry: runtime.channel,
634
- spent: restored.spent,
635
- units: restored.units,
636
- })
637
- await backing.set(runtime.channel)
638
- }
639
- }
640
-
641
- async function restoreRuntime(snapshot: RuntimeSnapshot) {
642
- const restored = restoreRuntimeStateSnapshot(snapshot, runtime.channel)
643
- runtime.channel = restored.channel
644
- runtime.spent = restored.spent
645
- runtime.state = restored.state
646
- if (runtime.channel?.opened) await backing.set(runtime.channel)
647
- }
648
-
649
- function toPaymentResponse(response: Response): PaymentResponse {
650
- const receiptHeader = response.headers.get(Constants.Headers.paymentReceipt)
651
- const receipt = receiptHeader ? deserializeSessionReceipt(receiptHeader) : null
652
- updateSpentFromReceipt(receipt)
653
- return Object.assign(response, {
654
- receipt,
655
- challenge: runtime.lastChallenge,
656
- channelId: runtime.channel?.channelId ?? null,
657
- cumulative: runtime.channel?.cumulativeAmount ?? 0n,
658
- })
659
- }
660
-
661
- async function doFetch(input: RequestInfo | URL, init?: RequestInit): Promise<PaymentResponse> {
662
- // The manager drives one shared `runtime` state machine, so requests are
663
- // single-flight. Reject overlap loudly instead of letting concurrent calls
664
- // corrupt each other's runtime and channel tracking.
665
- if (channelUse)
666
- throw new Error(
667
- 'SessionManager: a request is already in flight; concurrent requests on one manager are not supported',
668
- )
669
- runtime.lastUrl = input
670
-
671
- const previous = captureRuntimeStateSnapshot({
672
- channel: runtime.channel,
673
- spent: runtime.spent,
674
- state: runtime.state,
675
- })
676
- const use: ChannelUse = {
677
- challengesReceived: 0,
678
- committed: undefined,
679
- created: new Map(),
680
- previous,
681
- seenExisting: new Set(),
682
- resumed: undefined,
683
- trackCreates: false,
684
- }
685
- channelUse = use
686
-
687
- // Cold starts resume from `channelStore` after the 402 reveals the scope.
688
- const liveHint = runtime.channel?.opened ? runtime.channel.channelId : undefined
689
-
690
- try {
691
- await bootstrapSession(input, init)
692
- use.trackCreates = true
693
-
694
- let effectiveInit = requestInitWithSessionHint(input, init, liveHint)
695
- // Stored channels may be stale, so retry once after evicting the resumed entry.
696
- let canRetryResumed = !previous.channel?.opened
697
-
698
- async function retryWithoutResumed(): Promise<boolean> {
699
- const resumed = use.resumed
700
- if (!canRetryResumed || !resumed) return false
701
- canRetryResumed = false
702
- await ignoreChannel(resumed)
703
- effectiveInit = requestInitWithSessionHint(input, init, undefined)
704
- return true
705
- }
706
-
707
- for (;;) {
708
- let response: Response
709
- try {
710
- response = await wrappedFetch(input, effectiveInit)
711
- } catch (error) {
712
- if (use.created.size) await rollbackCreatedChannels()
713
- else await restoreRuntime(use.committed ?? previous)
714
- if (await retryWithoutResumed()) continue
715
- throw error
716
- }
717
-
718
- let paymentResponse = toPaymentResponse(response)
719
- let attemptedHttpManagement = false
720
- if (paymentResponse.status === 402) {
721
- const retry = await retryHttpPaymentRequired({
722
- input,
723
- init: effectiveInit,
724
- response: paymentResponse,
725
- createSessionCredential,
726
- fetch: config.fetch,
727
- getChannel: () => runtime.channel,
728
- restoreCumulative,
729
- setChallenge(challenge) {
730
- runtime.lastChallenge = challenge
731
- },
732
- topUpIfNeeded,
733
- })
734
- if (retry) {
735
- attemptedHttpManagement = true
736
- paymentResponse = toPaymentResponse(retry)
737
- }
738
- }
739
- if (!attemptedHttpManagement && !paymentResponse.ok && !paymentResponse.receipt) {
740
- if (use.created.size) await rollbackCreatedChannels()
741
- else await restoreRuntime(use.committed ?? previous)
742
- if (await retryWithoutResumed()) continue
743
- return paymentResponse
744
- }
745
- return paymentResponse
746
- }
747
- } finally {
748
- channelUse = undefined
749
- }
750
- }
751
-
752
- async function closeHttpSessionAndApply(
753
- target: CloseTarget,
754
- ): Promise<SessionReceipt | undefined> {
755
- const receipt = await closeHttpSession({
756
- createSessionCredential,
757
- fetch: config.fetch,
758
- lastUrl: runtime.lastUrl,
759
- resolveSignedCloseAmount: (challenge) =>
760
- getValidatedFallbackCloseAmount(target, challenge, true),
761
- signedCloseAmount: getValidatedFallbackCloseAmount(target),
762
- setChallenge(challenge) {
763
- runtime.lastChallenge = challenge
764
- },
765
- target,
766
- })
767
- if (receipt) {
768
- activateCurrentChannel()
769
- dispatch({ type: 'closeStarted' })
770
- dispatch({ type: 'closed', receipt })
771
- }
772
-
773
- return receipt
774
- }
775
-
776
- const sseDriver = {
777
- createSessionCredential,
778
- doFetch,
779
- fetch: config.fetch,
780
- getChannel: () => runtime.channel,
781
- getChallenge: () => runtime.lastChallenge,
782
- assertVoucherWithinLocalLimit,
783
- acceptReceipt(receipt: SessionReceipt) {
784
- updateSpentFromReceipt(receipt)
785
- },
786
- topUpIfNeeded,
787
- }
788
-
789
- const self: SessionManager = {
790
- get channelId() {
791
- return runtime.channel?.channelId
792
- },
793
- get cumulative() {
794
- return runtime.channel?.cumulativeAmount ?? 0n
795
- },
796
- get opened() {
797
- return runtime.channel?.opened ?? false
798
- },
799
- get state() {
800
- return runtime.state
801
- },
802
-
803
- fetch: doFetch,
804
-
805
- async topUp(amount) {
806
- const target = resolveManualTopUp({
807
- amount,
808
- assertVoucherWithinLocalLimit,
809
- channel: runtime.channel,
810
- decimals: config.decimals,
811
- lastChallenge: runtime.lastChallenge,
812
- lastUrl: runtime.lastUrl,
813
- })
814
-
815
- return postTopUpAndApply({
816
- additionalDeposit: target.additionalDeposit,
817
- challenge: target.challenge,
818
- channelId: target.channelId,
819
- input: target.input,
820
- })
821
- },
822
-
823
- async sse(input, init) {
824
- return openSseSession(input, init, sseDriver)
825
- },
826
-
827
- async ws(input, init) {
828
- if (!config.WebSocket) {
829
- throw new Error(
830
- 'No WebSocket implementation available. Pass `webSocket` to sessionManager() in this runtime.',
831
- )
832
- }
833
- const probeUrl = webSocketProbeUrl(input)
834
- const signalInit = init?.signal ? { signal: init.signal } : undefined
835
- await bootstrapSession(probeUrl, signalInit)
836
- // Cold starts resume from `channelStore` after the probe's 402.
837
- const liveHint = runtime.channel?.opened ? runtime.channel.channelId : undefined
838
-
839
- const prepared = await prepareWebSocketSession({
840
- async createSessionCredential(challenge, context) {
841
- runtime.lastChallenge = challenge
842
- await MethodChallenge.handle(method, {
843
- challenge,
844
- context,
845
- fetch: config.fetch,
846
- input: probeUrl,
847
- })
848
- return createSessionCredential(challenge, context)
849
- },
850
- fetch: config.fetch,
851
- input,
852
- onProbeUrl(httpUrl) {
853
- runtime.lastUrl = httpUrl.toString()
854
- },
855
- probeInit: requestInitWithSessionHint(probeUrl, signalInit, liveHint),
856
- signal: init?.signal,
857
- })
858
- const { challenge, credential, httpUrl, wsUrl } = prepared
859
- runtime.lastChallenge = challenge
860
-
861
- return openWebSocketSession({
862
- challenge,
863
- credential,
864
- httpUrl,
865
- WebSocket: config.WebSocket,
866
- wsUrl,
867
- options: init,
868
- createSessionCredential,
869
- getChannel: () => runtime.channel,
870
- setSocketSession(session) {
871
- runtime.socketSession = session
872
- },
873
- async refreshChallenge() {
874
- const refreshed = await probeWebSocketSession({
875
- fetch: config.fetch,
876
- input: httpUrl,
877
- probeInit: requestInitWithSessionHint(
878
- httpUrl,
879
- signalInit,
880
- runtime.channel?.opened ? runtime.channel.channelId : undefined,
881
- ),
882
- signal: init?.signal,
883
- })
884
- runtime.lastChallenge = refreshed.challenge
885
- return refreshed.challenge
886
- },
887
- assertVoucherWithinLocalLimit,
888
- acceptReceipt: updateSpentFromReceipt,
889
- rejectCloseReady: receipts.rejectCloseReady,
890
- rejectReceipt: receipts.rejectReceipt,
891
- settleCloseReady: receipts.settleCloseReady,
892
- settleReceipt: receipts.settleReceipt,
893
- topUpIfNeeded,
894
- waitForReceipt: receipts.waitForReceipt,
895
- })
896
- },
897
-
898
- async close() {
899
- const currentSocket = runtime.socketSession
900
- const target = resolveCloseTarget({
901
- channel: runtime.channel,
902
- currentSocket,
903
- lastChallenge: runtime.lastChallenge,
904
- })
905
- if (!target) return undefined
906
-
907
- const activeSocket = currentSocket?.socket
908
- if (currentSocket && activeSocket?.readyState === WebSocketReadyState.OPEN) {
909
- const receipt = await closeSocketSession({
910
- activeSocket,
911
- createSessionCredential,
912
- currentSocket,
913
- spent: runtime.spent,
914
- target,
915
- waitForCloseReady: receipts.waitForCloseReady,
916
- waitForReceipt: receipts.waitForReceipt,
917
- })
918
- activateCurrentChannel()
919
- dispatch({ type: 'closeStarted' })
920
- dispatch({ type: 'closed', receipt })
921
- return receipt
922
- }
923
-
924
- return closeHttpSessionAndApply(target)
925
- },
926
- }
927
-
928
- registerSessionManagerInternals(self, {
929
- consumeSseResponse(input, response, options) {
930
- return consumeSseSessionResponse(input, response, options, sseDriver)
931
- },
932
- rehydrate({ channel, challenge, input, spent }) {
933
- if (!channel.opened) throw new Error('Cannot restore a closed session channel.')
934
- if (!isTempoSessionChallenge(challenge)) {
935
- throw new Error('Cannot restore session: challenge is not tempo/session.')
936
- }
937
- if (spent < 0n) throw new Error('Cannot restore session: spent must not be negative.')
938
- if (spent > channel.cumulativeAmount) {
939
- throw new Error('Cannot restore session: spent exceeds local voucher state.')
940
- }
941
- assertVoucherWithinLocalLimit(channel.cumulativeAmount)
942
- const snapshot = validateCloseSnapshot(channel, challenge)
943
- const restoredSpent = snapshot && snapshot.spent > spent ? snapshot.spent : spent
944
-
945
- runtime.lastUrl = input
946
- runtime.lastChallenge = challenge
947
- runtime.channel = channel
948
- runtime.spent = restoredSpent
949
- dispatch({ type: 'challengeReceived', challengeId: challenge.id })
950
- dispatch({
951
- type: 'activated',
952
- challengeId: challenge.id,
953
- entry: channel,
954
- spent: restoredSpent.toString(),
955
- units: 0,
956
- })
957
- },
958
- })
959
-
960
- return self
961
- }
962
-
963
- /** Type helpers for `sessionManager()`. */
964
- export namespace sessionManager {
965
- export const serializeSnapshot = serializeSessionSnapshot
966
- export const deserializeSnapshot = deserializeSessionSnapshot
967
-
968
- export type Parameters = Account.getResolver.Parameters &
969
- Client.getResolver.Parameters & {
970
- /** Automatically acquire the session currency from fallback stablecoins before open/top-up. */
971
- autoSwap?: sessionPlugin.Parameters['autoSwap']
972
- /** Enables same-route HEAD bootstrap from a server session snapshot before opening a new channel. */
973
- bootstrap?: boolean | undefined
974
- /** Viem client instance. Shorthand for `getClient: () => client`. */
975
- client?: import('viem').Client | undefined
976
- /** Token decimals used to convert `maxDeposit` to raw units. Defaults to `6`. */
977
- decimals?: number | undefined
978
- /** TIP20EscrowChannel precompile address override. */
979
- escrow?: Address | undefined
980
- /** Fetch implementation used for HTTP probes, management posts, and paid retries. */
981
- fetch?: typeof globalThis.fetch | undefined
982
- /** Maximum deposit in human-readable units (e.g. `'10'` for 10 tokens). Converted to raw units via `decimals`. */
983
- maxDeposit?: string | undefined
984
- /**
985
- * Preferred automatic top-up size in human-readable units. When omitted,
986
- * a bounded server `suggestedDeposit` is preferred, then the exact shortfall.
987
- */
988
- topUpAmount?: string | undefined
989
- /** Selects the account that signs session credentials. */
990
- resolveAccount?: sessionPlugin.ResolveAccount | undefined
991
- /** Store for reusable session channels. Defaults to in-memory. */
992
- channelStore?: ChannelStore | undefined
993
- /** Optional websocket constructor for runtimes without a global WebSocket. */
994
- webSocket?: WebSocketConstructor | undefined
995
- }
996
- }