mppx 0.8.17 → 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 (914) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +21 -4
  4. package/dist/bin.js +3 -3
  5. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  6. package/dist/cli/cli.js +253 -1505
  7. package/dist/cli/plugins/index.js +19 -5
  8. package/dist/cli/plugins/tempo.js +7 -3
  9. package/dist/cli/sessions/Manager.js +7 -4
  10. package/dist/cli/sessions/request.d.ts +2 -0
  11. package/dist/cli/sessions/request.js +18 -0
  12. package/dist/cli/sessions/store.js +28 -14
  13. package/dist/discovery/Discovery.js +2 -1
  14. package/dist/evm/client/Charge.js +8 -0
  15. package/dist/server/core.d.ts +9 -0
  16. package/dist/server/core.js +9 -0
  17. package/dist/stripe/server/Charge.js +2 -4
  18. package/dist/stripe/server/Methods.d.ts +2 -2
  19. package/dist/stripe/server/Methods.js +17 -11
  20. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  21. package/dist/stripe/server/internal/html.gen.js +1 -1
  22. package/dist/stripe/server/spt.d.ts +8 -0
  23. package/dist/stripe/server/spt.js +8 -0
  24. package/dist/tempo/Methods.d.ts +13 -0
  25. package/dist/tempo/Methods.js +14 -3
  26. package/dist/tempo/client/Charge.d.ts +3 -0
  27. package/dist/tempo/client/Charge.js +31 -9
  28. package/dist/tempo/client/Methods.d.ts +13 -0
  29. package/dist/tempo/internal/defaults.d.ts +11 -0
  30. package/dist/tempo/internal/defaults.js +11 -0
  31. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  32. package/dist/tempo/internal/machine-token-charge.js +113 -0
  33. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  34. package/dist/tempo/internal/machine-token-session.js +173 -0
  35. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  36. package/dist/tempo/internal/signature-envelope.js +28 -0
  37. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  38. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  39. package/dist/tempo/legacy/client/Session.d.ts +13 -1
  40. package/dist/tempo/legacy/client/Session.js +3 -3
  41. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  42. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  43. package/dist/tempo/server/Charge.d.ts +3 -0
  44. package/dist/tempo/server/Charge.js +58 -17
  45. package/dist/tempo/server/Methods.d.ts +21 -4
  46. package/dist/tempo/server/Methods.js +8 -4
  47. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  48. package/dist/tempo/server/internal/html.gen.js +1 -1
  49. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  50. package/dist/tempo/session/client/ChannelOps.js +35 -6
  51. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  52. package/dist/tempo/session/client/ChannelStore.js +2 -2
  53. package/dist/tempo/session/client/CredentialState.d.ts +17 -2
  54. package/dist/tempo/session/client/CredentialState.js +77 -76
  55. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  56. package/dist/tempo/session/client/Runtime.js +21 -5
  57. package/dist/tempo/session/client/Session.d.ts +15 -3
  58. package/dist/tempo/session/client/Session.js +186 -63
  59. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  60. package/dist/tempo/session/client/SessionManager.js +35 -11
  61. package/dist/tempo/session/client/Transports.d.ts +2 -0
  62. package/dist/tempo/session/client/Transports.js +12 -2
  63. package/dist/tempo/session/precompile/Chain.d.ts +10 -2
  64. package/dist/tempo/session/precompile/Chain.js +50 -10
  65. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  66. package/dist/tempo/session/precompile/Protocol.js +7 -0
  67. package/dist/tempo/session/precompile/Voucher.d.ts +3 -1
  68. package/dist/tempo/session/precompile/Voucher.js +6 -12
  69. package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
  70. package/dist/tempo/session/server/ChannelStore.js +11 -4
  71. package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
  72. package/dist/tempo/session/server/CredentialVerification.js +185 -109
  73. package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
  74. package/dist/tempo/session/server/MeteredStream.js +5 -4
  75. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  76. package/dist/tempo/session/server/RequestState.js +61 -15
  77. package/dist/tempo/session/server/Session.d.ts +14 -2
  78. package/dist/tempo/session/server/Session.js +37 -6
  79. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  80. package/dist/tempo/session/server/Settlement.js +53 -21
  81. package/dist/x402/client/Exact.d.ts +8 -0
  82. package/dist/x402/client/Exact.js +40 -10
  83. package/dist/x402/server/EvmCharge.d.ts +22 -0
  84. package/dist/x402/server/EvmCharge.js +23 -1
  85. package/package.json +15 -37
  86. package/dist/BodyDigest.d.ts.map +0 -1
  87. package/dist/BodyDigest.js.map +0 -1
  88. package/dist/Challenge.d.ts.map +0 -1
  89. package/dist/Challenge.js.map +0 -1
  90. package/dist/Constants.d.ts.map +0 -1
  91. package/dist/Constants.js.map +0 -1
  92. package/dist/Credential.d.ts.map +0 -1
  93. package/dist/Credential.js.map +0 -1
  94. package/dist/Errors.d.ts.map +0 -1
  95. package/dist/Errors.js.map +0 -1
  96. package/dist/Expires.d.ts.map +0 -1
  97. package/dist/Expires.js.map +0 -1
  98. package/dist/Html.d.ts.map +0 -1
  99. package/dist/Html.js.map +0 -1
  100. package/dist/Mcp.d.ts.map +0 -1
  101. package/dist/Mcp.js.map +0 -1
  102. package/dist/Method.d.ts.map +0 -1
  103. package/dist/Method.js.map +0 -1
  104. package/dist/PaymentRequest.d.ts.map +0 -1
  105. package/dist/PaymentRequest.js.map +0 -1
  106. package/dist/Receipt.d.ts.map +0 -1
  107. package/dist/Receipt.js.map +0 -1
  108. package/dist/Store.d.ts.map +0 -1
  109. package/dist/Store.js.map +0 -1
  110. package/dist/attestation/Client.d.ts.map +0 -1
  111. package/dist/attestation/Client.js.map +0 -1
  112. package/dist/attestation/Constants.d.ts.map +0 -1
  113. package/dist/attestation/Constants.js.map +0 -1
  114. package/dist/attestation/Server.d.ts.map +0 -1
  115. package/dist/attestation/Server.js.map +0 -1
  116. package/dist/attestation/Types.d.ts.map +0 -1
  117. package/dist/attestation/Types.js.map +0 -1
  118. package/dist/attestation/index.d.ts.map +0 -1
  119. package/dist/attestation/index.js.map +0 -1
  120. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
  121. package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
  122. package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
  123. package/dist/attestation/internal/SigningContext.js.map +0 -1
  124. package/dist/bin.d.ts.map +0 -1
  125. package/dist/bin.js.map +0 -1
  126. package/dist/cli/account.d.ts.map +0 -1
  127. package/dist/cli/account.js.map +0 -1
  128. package/dist/cli/cli.d.ts.map +0 -1
  129. package/dist/cli/cli.js.map +0 -1
  130. package/dist/cli/config.d.ts.map +0 -1
  131. package/dist/cli/config.js.map +0 -1
  132. package/dist/cli/internal.d.ts.map +0 -1
  133. package/dist/cli/internal.js.map +0 -1
  134. package/dist/cli/plugins/evm.d.ts.map +0 -1
  135. package/dist/cli/plugins/evm.js.map +0 -1
  136. package/dist/cli/plugins/index.d.ts.map +0 -1
  137. package/dist/cli/plugins/index.js.map +0 -1
  138. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  139. package/dist/cli/plugins/plugin.js.map +0 -1
  140. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  141. package/dist/cli/plugins/stripe.js.map +0 -1
  142. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  143. package/dist/cli/plugins/tempo.js.map +0 -1
  144. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  145. package/dist/cli/sessions/Manager.js.map +0 -1
  146. package/dist/cli/sessions/commands.d.ts.map +0 -1
  147. package/dist/cli/sessions/commands.js.map +0 -1
  148. package/dist/cli/sessions/request.d.ts.map +0 -1
  149. package/dist/cli/sessions/request.js.map +0 -1
  150. package/dist/cli/sessions/store.d.ts.map +0 -1
  151. package/dist/cli/sessions/store.js.map +0 -1
  152. package/dist/cli/utils.d.ts.map +0 -1
  153. package/dist/cli/utils.js.map +0 -1
  154. package/dist/cli/validate/challenge.d.ts.map +0 -1
  155. package/dist/cli/validate/challenge.js.map +0 -1
  156. package/dist/cli/validate/discovery.d.ts.map +0 -1
  157. package/dist/cli/validate/discovery.js.map +0 -1
  158. package/dist/cli/validate/helpers.d.ts.map +0 -1
  159. package/dist/cli/validate/helpers.js.map +0 -1
  160. package/dist/cli/validate/index.d.ts.map +0 -1
  161. package/dist/cli/validate/index.js.map +0 -1
  162. package/dist/cli/validate/messages.d.ts.map +0 -1
  163. package/dist/cli/validate/messages.js.map +0 -1
  164. package/dist/cli/validate/payment.d.ts.map +0 -1
  165. package/dist/cli/validate/payment.js.map +0 -1
  166. package/dist/client/Methods.d.ts.map +0 -1
  167. package/dist/client/Methods.js.map +0 -1
  168. package/dist/client/Mppx.d.ts.map +0 -1
  169. package/dist/client/Mppx.js.map +0 -1
  170. package/dist/client/Transport.d.ts.map +0 -1
  171. package/dist/client/Transport.js.map +0 -1
  172. package/dist/client/index.d.ts.map +0 -1
  173. package/dist/client/index.js.map +0 -1
  174. package/dist/client/internal/Fetch.d.ts.map +0 -1
  175. package/dist/client/internal/Fetch.js.map +0 -1
  176. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  177. package/dist/client/internal/MethodChallenge.js.map +0 -1
  178. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  179. package/dist/client/internal/MethodResponse.js.map +0 -1
  180. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  181. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  182. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  183. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  184. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  185. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  186. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  187. package/dist/client/internal/protocols/Shared.js.map +0 -1
  188. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  189. package/dist/client/internal/protocols/X402.js.map +0 -1
  190. package/dist/client/node.d.ts.map +0 -1
  191. package/dist/client/node.js.map +0 -1
  192. package/dist/discovery/Discovery.d.ts.map +0 -1
  193. package/dist/discovery/Discovery.js.map +0 -1
  194. package/dist/discovery/OpenApi.d.ts.map +0 -1
  195. package/dist/discovery/OpenApi.js.map +0 -1
  196. package/dist/discovery/Validate.d.ts.map +0 -1
  197. package/dist/discovery/Validate.js.map +0 -1
  198. package/dist/discovery/index.d.ts.map +0 -1
  199. package/dist/discovery/index.js.map +0 -1
  200. package/dist/discovery/internal/Metadata.d.ts.map +0 -1
  201. package/dist/discovery/internal/Metadata.js.map +0 -1
  202. package/dist/evm/Assets.d.ts.map +0 -1
  203. package/dist/evm/Assets.js.map +0 -1
  204. package/dist/evm/Chains.d.ts.map +0 -1
  205. package/dist/evm/Chains.js.map +0 -1
  206. package/dist/evm/Methods.d.ts.map +0 -1
  207. package/dist/evm/Methods.js.map +0 -1
  208. package/dist/evm/Types.d.ts.map +0 -1
  209. package/dist/evm/Types.js.map +0 -1
  210. package/dist/evm/client/Charge.d.ts.map +0 -1
  211. package/dist/evm/client/Charge.js.map +0 -1
  212. package/dist/evm/client/Methods.d.ts.map +0 -1
  213. package/dist/evm/client/Methods.js.map +0 -1
  214. package/dist/evm/client/index.d.ts.map +0 -1
  215. package/dist/evm/client/index.js.map +0 -1
  216. package/dist/evm/index.d.ts.map +0 -1
  217. package/dist/evm/index.js.map +0 -1
  218. package/dist/evm/server/Charge.d.ts.map +0 -1
  219. package/dist/evm/server/Charge.js.map +0 -1
  220. package/dist/evm/server/Methods.d.ts.map +0 -1
  221. package/dist/evm/server/Methods.js.map +0 -1
  222. package/dist/evm/server/index.d.ts.map +0 -1
  223. package/dist/evm/server/index.js.map +0 -1
  224. package/dist/index.d.ts.map +0 -1
  225. package/dist/index.js.map +0 -1
  226. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  227. package/dist/internal/AcceptPayment.js.map +0 -1
  228. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  229. package/dist/internal/HeaderCodec.js.map +0 -1
  230. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  231. package/dist/internal/constantTimeEqual.js.map +0 -1
  232. package/dist/internal/env.d.ts.map +0 -1
  233. package/dist/internal/env.js.map +0 -1
  234. package/dist/internal/types.d.ts.map +0 -1
  235. package/dist/internal/types.js.map +0 -1
  236. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  237. package/dist/mcp/client/McpClient.js.map +0 -1
  238. package/dist/mcp/client/index.d.ts.map +0 -1
  239. package/dist/mcp/client/index.js.map +0 -1
  240. package/dist/mcp/server/Transport.d.ts.map +0 -1
  241. package/dist/mcp/server/Transport.js.map +0 -1
  242. package/dist/mcp/server/index.d.ts.map +0 -1
  243. package/dist/mcp/server/index.js.map +0 -1
  244. package/dist/middlewares/elysia.d.ts.map +0 -1
  245. package/dist/middlewares/elysia.js.map +0 -1
  246. package/dist/middlewares/express.d.ts.map +0 -1
  247. package/dist/middlewares/express.js.map +0 -1
  248. package/dist/middlewares/hono.d.ts.map +0 -1
  249. package/dist/middlewares/hono.js.map +0 -1
  250. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  251. package/dist/middlewares/internal/mppx.js.map +0 -1
  252. package/dist/middlewares/nextjs.d.ts.map +0 -1
  253. package/dist/middlewares/nextjs.js.map +0 -1
  254. package/dist/proxy/Proxy.d.ts.map +0 -1
  255. package/dist/proxy/Proxy.js.map +0 -1
  256. package/dist/proxy/Service.d.ts.map +0 -1
  257. package/dist/proxy/Service.js.map +0 -1
  258. package/dist/proxy/index.d.ts.map +0 -1
  259. package/dist/proxy/index.js.map +0 -1
  260. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  261. package/dist/proxy/internal/Headers.js.map +0 -1
  262. package/dist/proxy/internal/Route.d.ts.map +0 -1
  263. package/dist/proxy/internal/Route.js.map +0 -1
  264. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  265. package/dist/proxy/services/anthropic.js.map +0 -1
  266. package/dist/proxy/services/openai.d.ts.map +0 -1
  267. package/dist/proxy/services/openai.js.map +0 -1
  268. package/dist/proxy/services/stripe.d.ts.map +0 -1
  269. package/dist/proxy/services/stripe.js.map +0 -1
  270. package/dist/server/Methods.d.ts.map +0 -1
  271. package/dist/server/Methods.js.map +0 -1
  272. package/dist/server/Mppx.d.ts.map +0 -1
  273. package/dist/server/Mppx.js.map +0 -1
  274. package/dist/server/NodeListener.d.ts.map +0 -1
  275. package/dist/server/NodeListener.js.map +0 -1
  276. package/dist/server/Request.d.ts.map +0 -1
  277. package/dist/server/Request.js.map +0 -1
  278. package/dist/server/Response.d.ts.map +0 -1
  279. package/dist/server/Response.js.map +0 -1
  280. package/dist/server/Transport.d.ts.map +0 -1
  281. package/dist/server/Transport.js.map +0 -1
  282. package/dist/server/index.d.ts.map +0 -1
  283. package/dist/server/index.js.map +0 -1
  284. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  285. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  286. package/dist/server/internal/html/config.d.ts.map +0 -1
  287. package/dist/server/internal/html/config.js.map +0 -1
  288. package/dist/server/internal/html/constants.d.ts.map +0 -1
  289. package/dist/server/internal/html/constants.js.map +0 -1
  290. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  291. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  292. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  293. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  294. package/dist/server/internal/scope.d.ts.map +0 -1
  295. package/dist/server/internal/scope.js.map +0 -1
  296. package/dist/stripe/Methods.d.ts.map +0 -1
  297. package/dist/stripe/Methods.js.map +0 -1
  298. package/dist/stripe/client/Charge.d.ts.map +0 -1
  299. package/dist/stripe/client/Charge.js.map +0 -1
  300. package/dist/stripe/client/Methods.d.ts.map +0 -1
  301. package/dist/stripe/client/Methods.js.map +0 -1
  302. package/dist/stripe/client/index.d.ts.map +0 -1
  303. package/dist/stripe/client/index.js.map +0 -1
  304. package/dist/stripe/index.d.ts.map +0 -1
  305. package/dist/stripe/index.js.map +0 -1
  306. package/dist/stripe/internal/constants.d.ts.map +0 -1
  307. package/dist/stripe/internal/constants.js.map +0 -1
  308. package/dist/stripe/internal/types.d.ts.map +0 -1
  309. package/dist/stripe/internal/types.js.map +0 -1
  310. package/dist/stripe/server/Charge.d.ts.map +0 -1
  311. package/dist/stripe/server/Charge.js.map +0 -1
  312. package/dist/stripe/server/Methods.d.ts.map +0 -1
  313. package/dist/stripe/server/Methods.js.map +0 -1
  314. package/dist/stripe/server/index.d.ts.map +0 -1
  315. package/dist/stripe/server/index.js.map +0 -1
  316. package/dist/stripe/server/internal/deposit-address.d.ts.map +0 -1
  317. package/dist/stripe/server/internal/deposit-address.js.map +0 -1
  318. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  319. package/dist/stripe/server/internal/html/types.js.map +0 -1
  320. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  321. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  322. package/dist/stripe/server/internal/record-payment.d.ts.map +0 -1
  323. package/dist/stripe/server/internal/record-payment.js.map +0 -1
  324. package/dist/stripe/server/internal/request.d.ts.map +0 -1
  325. package/dist/stripe/server/internal/request.js.map +0 -1
  326. package/dist/tap/Constants.d.ts.map +0 -1
  327. package/dist/tap/Constants.js.map +0 -1
  328. package/dist/tap/Types.d.ts.map +0 -1
  329. package/dist/tap/Types.js.map +0 -1
  330. package/dist/tap/client/index.d.ts.map +0 -1
  331. package/dist/tap/client/index.js.map +0 -1
  332. package/dist/tap/index.d.ts.map +0 -1
  333. package/dist/tap/index.js.map +0 -1
  334. package/dist/tap/server/index.d.ts.map +0 -1
  335. package/dist/tap/server/index.js.map +0 -1
  336. package/dist/tempo/Attribution.d.ts.map +0 -1
  337. package/dist/tempo/Attribution.js.map +0 -1
  338. package/dist/tempo/Methods.d.ts.map +0 -1
  339. package/dist/tempo/Methods.js.map +0 -1
  340. package/dist/tempo/Proof.d.ts.map +0 -1
  341. package/dist/tempo/Proof.js.map +0 -1
  342. package/dist/tempo/client/Charge.d.ts.map +0 -1
  343. package/dist/tempo/client/Charge.js.map +0 -1
  344. package/dist/tempo/client/Methods.d.ts.map +0 -1
  345. package/dist/tempo/client/Methods.js.map +0 -1
  346. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  347. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  348. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  349. package/dist/tempo/client/Subscription.js.map +0 -1
  350. package/dist/tempo/client/index.d.ts.map +0 -1
  351. package/dist/tempo/client/index.js.map +0 -1
  352. package/dist/tempo/index.d.ts.map +0 -1
  353. package/dist/tempo/index.js.map +0 -1
  354. package/dist/tempo/internal/account.d.ts.map +0 -1
  355. package/dist/tempo/internal/account.js.map +0 -1
  356. package/dist/tempo/internal/address.d.ts.map +0 -1
  357. package/dist/tempo/internal/address.js.map +0 -1
  358. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  359. package/dist/tempo/internal/auto-swap.js.map +0 -1
  360. package/dist/tempo/internal/charge.d.ts.map +0 -1
  361. package/dist/tempo/internal/charge.js.map +0 -1
  362. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  363. package/dist/tempo/internal/defaults.js.map +0 -1
  364. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  365. package/dist/tempo/internal/fee-payer.js.map +0 -1
  366. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  367. package/dist/tempo/internal/fee-token.js.map +0 -1
  368. package/dist/tempo/internal/proof.d.ts.map +0 -1
  369. package/dist/tempo/internal/proof.js.map +0 -1
  370. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  371. package/dist/tempo/internal/selectors.js.map +0 -1
  372. package/dist/tempo/internal/types.d.ts.map +0 -1
  373. package/dist/tempo/internal/types.js.map +0 -1
  374. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  375. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  376. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  377. package/dist/tempo/legacy/client/Session.js.map +0 -1
  378. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  379. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  380. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  381. package/dist/tempo/legacy/client/index.js.map +0 -1
  382. package/dist/tempo/legacy/index.d.ts.map +0 -1
  383. package/dist/tempo/legacy/index.js.map +0 -1
  384. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  385. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  386. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  387. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  388. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  389. package/dist/tempo/legacy/session/Types.js.map +0 -1
  390. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  391. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  392. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  393. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  394. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  395. package/dist/tempo/legacy/session/index.js.map +0 -1
  396. package/dist/tempo/server/Charge.d.ts.map +0 -1
  397. package/dist/tempo/server/Charge.js.map +0 -1
  398. package/dist/tempo/server/Methods.d.ts.map +0 -1
  399. package/dist/tempo/server/Methods.js.map +0 -1
  400. package/dist/tempo/server/Relay.d.ts.map +0 -1
  401. package/dist/tempo/server/Relay.js.map +0 -1
  402. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  403. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  404. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  405. package/dist/tempo/server/Subscription.js.map +0 -1
  406. package/dist/tempo/server/index.d.ts.map +0 -1
  407. package/dist/tempo/server/index.js.map +0 -1
  408. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  409. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  410. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  411. package/dist/tempo/server/internal/request-body.js.map +0 -1
  412. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  413. package/dist/tempo/server/internal/transport.js.map +0 -1
  414. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  415. package/dist/tempo/session/Snapshot.js.map +0 -1
  416. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  417. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  418. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  419. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  420. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  421. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  422. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  423. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  424. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  425. package/dist/tempo/session/client/Runtime.js.map +0 -1
  426. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  427. package/dist/tempo/session/client/Session.js.map +0 -1
  428. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  429. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  430. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  431. package/dist/tempo/session/client/Transports.js.map +0 -1
  432. package/dist/tempo/session/client/index.d.ts.map +0 -1
  433. package/dist/tempo/session/client/index.js.map +0 -1
  434. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  435. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  436. package/dist/tempo/session/index.d.ts.map +0 -1
  437. package/dist/tempo/session/index.js.map +0 -1
  438. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  439. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  440. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  441. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  442. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  443. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  444. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  445. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  446. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  447. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  448. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  449. package/dist/tempo/session/precompile/index.js.map +0 -1
  450. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  451. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  452. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  453. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  454. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  455. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  456. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  457. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  458. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  459. package/dist/tempo/session/server/RequestState.js.map +0 -1
  460. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  461. package/dist/tempo/session/server/Session.js.map +0 -1
  462. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  463. package/dist/tempo/session/server/Settlement.js.map +0 -1
  464. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  465. package/dist/tempo/session/server/Sse.js.map +0 -1
  466. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  467. package/dist/tempo/session/server/Transports.js.map +0 -1
  468. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  469. package/dist/tempo/session/server/Ws.js.map +0 -1
  470. package/dist/tempo/session/server/index.d.ts.map +0 -1
  471. package/dist/tempo/session/server/index.js.map +0 -1
  472. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  473. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  474. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  475. package/dist/tempo/subscription/Receipt.js.map +0 -1
  476. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  477. package/dist/tempo/subscription/Store.js.map +0 -1
  478. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  479. package/dist/tempo/subscription/Types.js.map +0 -1
  480. package/dist/tempo/subscription/index.d.ts.map +0 -1
  481. package/dist/tempo/subscription/index.js.map +0 -1
  482. package/dist/validation/core.d.ts.map +0 -1
  483. package/dist/validation/core.js.map +0 -1
  484. package/dist/validation/index.d.ts.map +0 -1
  485. package/dist/validation/index.js.map +0 -1
  486. package/dist/viem/Account.d.ts.map +0 -1
  487. package/dist/viem/Account.js.map +0 -1
  488. package/dist/viem/Client.d.ts.map +0 -1
  489. package/dist/viem/Client.js.map +0 -1
  490. package/dist/web-bot-auth/Constants.d.ts.map +0 -1
  491. package/dist/web-bot-auth/Constants.js.map +0 -1
  492. package/dist/web-bot-auth/Types.d.ts.map +0 -1
  493. package/dist/web-bot-auth/Types.js.map +0 -1
  494. package/dist/web-bot-auth/client/index.d.ts.map +0 -1
  495. package/dist/web-bot-auth/client/index.js.map +0 -1
  496. package/dist/web-bot-auth/index.d.ts.map +0 -1
  497. package/dist/web-bot-auth/index.js.map +0 -1
  498. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
  499. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
  500. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
  501. package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
  502. package/dist/web-bot-auth/server/index.d.ts.map +0 -1
  503. package/dist/web-bot-auth/server/index.js.map +0 -1
  504. package/dist/x402/Assets.d.ts.map +0 -1
  505. package/dist/x402/Assets.js.map +0 -1
  506. package/dist/x402/Header.d.ts.map +0 -1
  507. package/dist/x402/Header.js.map +0 -1
  508. package/dist/x402/Types.d.ts.map +0 -1
  509. package/dist/x402/Types.js.map +0 -1
  510. package/dist/x402/client/Exact.d.ts.map +0 -1
  511. package/dist/x402/client/Exact.js.map +0 -1
  512. package/dist/x402/index.d.ts.map +0 -1
  513. package/dist/x402/index.js.map +0 -1
  514. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  515. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  516. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  517. package/dist/x402/internal/RouteBinding.js.map +0 -1
  518. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  519. package/dist/x402/server/EvmCharge.js.map +0 -1
  520. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  521. package/dist/x402/server/Facilitator.js.map +0 -1
  522. package/dist/zod.d.ts.map +0 -1
  523. package/dist/zod.js.map +0 -1
  524. package/src/BodyDigest.test.ts +0 -43
  525. package/src/BodyDigest.ts +0 -55
  526. package/src/Challenge.fuzz.test.ts +0 -154
  527. package/src/Challenge.test-d.ts +0 -82
  528. package/src/Challenge.test.ts +0 -1060
  529. package/src/Challenge.ts +0 -687
  530. package/src/Constants.ts +0 -58
  531. package/src/Credential.fuzz.test.ts +0 -62
  532. package/src/Credential.test.ts +0 -378
  533. package/src/Credential.ts +0 -217
  534. package/src/Errors.test.ts +0 -520
  535. package/src/Errors.ts +0 -448
  536. package/src/Expires.test.ts +0 -112
  537. package/src/Expires.ts +0 -59
  538. package/src/Html.ts +0 -67
  539. package/src/Mcp.ts +0 -85
  540. package/src/Method.test.ts +0 -177
  541. package/src/Method.ts +0 -631
  542. package/src/PaymentRequest.test.ts +0 -147
  543. package/src/PaymentRequest.ts +0 -108
  544. package/src/Receipt.test.ts +0 -151
  545. package/src/Receipt.ts +0 -146
  546. package/src/Store.test-d.ts +0 -211
  547. package/src/Store.test.ts +0 -407
  548. package/src/Store.ts +0 -397
  549. package/src/attestation/Attestation.integration.test.ts +0 -208
  550. package/src/attestation/Client.test.ts +0 -83
  551. package/src/attestation/Client.ts +0 -34
  552. package/src/attestation/Constants.ts +0 -15
  553. package/src/attestation/Server.test.ts +0 -60
  554. package/src/attestation/Server.ts +0 -12
  555. package/src/attestation/Types.test-d.ts +0 -54
  556. package/src/attestation/Types.ts +0 -77
  557. package/src/attestation/index.ts +0 -5
  558. package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
  559. package/src/attestation/internal/HttpMessageSignature.ts +0 -429
  560. package/src/attestation/internal/SigningContext.ts +0 -13
  561. package/src/bin.js +0 -2
  562. package/src/bin.ts +0 -4
  563. package/src/cli/account.ts +0 -269
  564. package/src/cli/cli.test.ts +0 -2221
  565. package/src/cli/cli.ts +0 -1650
  566. package/src/cli/config.test.ts +0 -89
  567. package/src/cli/config.ts +0 -50
  568. package/src/cli/internal.ts +0 -114
  569. package/src/cli/mcp.test.ts +0 -262
  570. package/src/cli/plugins/evm.ts +0 -55
  571. package/src/cli/plugins/index.ts +0 -4
  572. package/src/cli/plugins/plugin.ts +0 -84
  573. package/src/cli/plugins/stripe.ts +0 -174
  574. package/src/cli/plugins/tempo.ts +0 -1102
  575. package/src/cli/sessions/Manager.test.ts +0 -249
  576. package/src/cli/sessions/Manager.ts +0 -93
  577. package/src/cli/sessions/commands.ts +0 -444
  578. package/src/cli/sessions/request.test.ts +0 -51
  579. package/src/cli/sessions/request.ts +0 -353
  580. package/src/cli/sessions/store.test.ts +0 -581
  581. package/src/cli/sessions/store.ts +0 -940
  582. package/src/cli/utils.test.ts +0 -156
  583. package/src/cli/utils.ts +0 -394
  584. package/src/cli/validate/challenge.ts +0 -565
  585. package/src/cli/validate/discovery.test.ts +0 -435
  586. package/src/cli/validate/discovery.ts +0 -221
  587. package/src/cli/validate/helpers.ts +0 -166
  588. package/src/cli/validate/index.ts +0 -229
  589. package/src/cli/validate/messages.ts +0 -7
  590. package/src/cli/validate/payment.ts +0 -774
  591. package/src/cli/validate.test.ts +0 -843
  592. package/src/client/Methods.ts +0 -8
  593. package/src/client/Mppx.test-d.ts +0 -287
  594. package/src/client/Mppx.test.ts +0 -1065
  595. package/src/client/Mppx.ts +0 -487
  596. package/src/client/Transport.test.ts +0 -586
  597. package/src/client/Transport.ts +0 -170
  598. package/src/client/index.ts +0 -29
  599. package/src/client/internal/Fetch.browser.test.ts +0 -197
  600. package/src/client/internal/Fetch.test-d.ts +0 -109
  601. package/src/client/internal/Fetch.test.ts +0 -2336
  602. package/src/client/internal/Fetch.ts +0 -1075
  603. package/src/client/internal/MethodChallenge.ts +0 -35
  604. package/src/client/internal/MethodResponse.ts +0 -67
  605. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  606. package/src/client/internal/protocols/Mcp.ts +0 -186
  607. package/src/client/internal/protocols/Mpp.ts +0 -21
  608. package/src/client/internal/protocols/Protocol.ts +0 -10
  609. package/src/client/internal/protocols/Shared.ts +0 -25
  610. package/src/client/internal/protocols/X402.ts +0 -46
  611. package/src/client/node.test.ts +0 -115
  612. package/src/client/node.ts +0 -247
  613. package/src/discovery/Discovery.test.ts +0 -214
  614. package/src/discovery/Discovery.ts +0 -105
  615. package/src/discovery/OpenApi.test.ts +0 -623
  616. package/src/discovery/OpenApi.ts +0 -192
  617. package/src/discovery/Validate.test.ts +0 -305
  618. package/src/discovery/Validate.ts +0 -77
  619. package/src/discovery/index.ts +0 -3
  620. package/src/discovery/internal/Metadata.ts +0 -51
  621. package/src/env.d.ts +0 -12
  622. package/src/evm/Assets.ts +0 -1
  623. package/src/evm/Chains.ts +0 -11
  624. package/src/evm/Methods.ts +0 -44
  625. package/src/evm/PublicInterface.test-d.ts +0 -134
  626. package/src/evm/Types.ts +0 -140
  627. package/src/evm/client/Charge.test.ts +0 -347
  628. package/src/evm/client/Charge.ts +0 -187
  629. package/src/evm/client/Methods.ts +0 -19
  630. package/src/evm/client/index.ts +0 -6
  631. package/src/evm/index.ts +0 -16
  632. package/src/evm/server/Charge.test.ts +0 -339
  633. package/src/evm/server/Charge.ts +0 -295
  634. package/src/evm/server/Methods.ts +0 -22
  635. package/src/evm/server/index.ts +0 -6
  636. package/src/index.ts +0 -14
  637. package/src/internal/AcceptPayment.test.ts +0 -347
  638. package/src/internal/AcceptPayment.ts +0 -366
  639. package/src/internal/HeaderCodec.ts +0 -36
  640. package/src/internal/changeset.test.ts +0 -106
  641. package/src/internal/constantTimeEqual.test.ts +0 -47
  642. package/src/internal/constantTimeEqual.ts +0 -10
  643. package/src/internal/env.test.ts +0 -42
  644. package/src/internal/env.ts +0 -49
  645. package/src/internal/types.test-d.ts +0 -21
  646. package/src/internal/types.ts +0 -479
  647. package/src/mcp/client/McpClient.integration.test.ts +0 -639
  648. package/src/mcp/client/McpClient.test-d.ts +0 -144
  649. package/src/mcp/client/McpClient.test.ts +0 -463
  650. package/src/mcp/client/McpClient.ts +0 -307
  651. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  652. package/src/mcp/client/index.ts +0 -2
  653. package/src/mcp/server/Transport.test.ts +0 -191
  654. package/src/mcp/server/Transport.ts +0 -111
  655. package/src/mcp/server/index.ts +0 -1
  656. package/src/middlewares/elysia.test.ts +0 -285
  657. package/src/middlewares/elysia.ts +0 -116
  658. package/src/middlewares/express.test.ts +0 -361
  659. package/src/middlewares/express.ts +0 -140
  660. package/src/middlewares/hono.test.ts +0 -473
  661. package/src/middlewares/hono.ts +0 -153
  662. package/src/middlewares/internal/mppx.test.ts +0 -177
  663. package/src/middlewares/internal/mppx.ts +0 -67
  664. package/src/middlewares/nextjs.test.ts +0 -359
  665. package/src/middlewares/nextjs.ts +0 -107
  666. package/src/proxy/Proxy.test.ts +0 -1038
  667. package/src/proxy/Proxy.ts +0 -483
  668. package/src/proxy/Proxy.upstreamError.test.ts +0 -364
  669. package/src/proxy/Service.test.ts +0 -252
  670. package/src/proxy/Service.ts +0 -280
  671. package/src/proxy/index.ts +0 -6
  672. package/src/proxy/internal/Headers.test.ts +0 -139
  673. package/src/proxy/internal/Headers.ts +0 -66
  674. package/src/proxy/internal/Route.test.ts +0 -217
  675. package/src/proxy/internal/Route.ts +0 -64
  676. package/src/proxy/services/anthropic.test.ts +0 -132
  677. package/src/proxy/services/anthropic.ts +0 -53
  678. package/src/proxy/services/hooks.test-d.ts +0 -14
  679. package/src/proxy/services/hooks.test.ts +0 -44
  680. package/src/proxy/services/openai.test.ts +0 -157
  681. package/src/proxy/services/openai.ts +0 -60
  682. package/src/proxy/services/stripe.test.ts +0 -175
  683. package/src/proxy/services/stripe.ts +0 -59
  684. package/src/server/Methods.test-d.ts +0 -88
  685. package/src/server/Methods.test.ts +0 -69
  686. package/src/server/Methods.ts +0 -3
  687. package/src/server/Mppx.authorize.test.ts +0 -210
  688. package/src/server/Mppx.test-d.ts +0 -494
  689. package/src/server/Mppx.test.ts +0 -6711
  690. package/src/server/Mppx.ts +0 -2919
  691. package/src/server/NodeListener.test.ts +0 -293
  692. package/src/server/NodeListener.ts +0 -45
  693. package/src/server/Request.test.ts +0 -255
  694. package/src/server/Request.ts +0 -155
  695. package/src/server/Response.test.ts +0 -32
  696. package/src/server/Response.ts +0 -45
  697. package/src/server/Transport.test.ts +0 -598
  698. package/src/server/Transport.ts +0 -320
  699. package/src/server/index.ts +0 -9
  700. package/src/server/internal/html/compose.main.gen.ts +0 -2
  701. package/src/server/internal/html/compose.main.ts +0 -88
  702. package/src/server/internal/html/config.ts +0 -672
  703. package/src/server/internal/html/constants.ts +0 -28
  704. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  705. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  706. package/src/server/internal/html/serviceWorker.ts +0 -27
  707. package/src/server/internal/html/tsconfig.compose.json +0 -8
  708. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  709. package/src/server/internal/html/tsconfig.worker.json +0 -8
  710. package/src/server/internal/scope.ts +0 -43
  711. package/src/stripe/Charge.integration.test.ts +0 -329
  712. package/src/stripe/Methods.test.ts +0 -62
  713. package/src/stripe/Methods.ts +0 -44
  714. package/src/stripe/client/Charge.test.ts +0 -205
  715. package/src/stripe/client/Charge.ts +0 -132
  716. package/src/stripe/client/Methods.ts +0 -37
  717. package/src/stripe/client/index.ts +0 -2
  718. package/src/stripe/index.ts +0 -1
  719. package/src/stripe/internal/constants.ts +0 -7
  720. package/src/stripe/internal/types.ts +0 -47
  721. package/src/stripe/server/Charge.test-d.ts +0 -81
  722. package/src/stripe/server/Charge.test.ts +0 -700
  723. package/src/stripe/server/Charge.ts +0 -487
  724. package/src/stripe/server/Methods.test-d.ts +0 -157
  725. package/src/stripe/server/Methods.test.ts +0 -403
  726. package/src/stripe/server/Methods.ts +0 -441
  727. package/src/stripe/server/index.ts +0 -2
  728. package/src/stripe/server/internal/deposit-address.ts +0 -57
  729. package/src/stripe/server/internal/html/main.ts +0 -165
  730. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  731. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  732. package/src/stripe/server/internal/html/package.json +0 -9
  733. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  734. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  735. package/src/stripe/server/internal/html/types.ts +0 -5
  736. package/src/stripe/server/internal/html.gen.ts +0 -2
  737. package/src/stripe/server/internal/record-payment.ts +0 -66
  738. package/src/stripe/server/internal/request.ts +0 -49
  739. package/src/tap/Constants.ts +0 -32
  740. package/src/tap/Tap.test.ts +0 -125
  741. package/src/tap/Types.ts +0 -11
  742. package/src/tap/client/index.ts +0 -54
  743. package/src/tap/index.ts +0 -4
  744. package/src/tap/server/index.ts +0 -48
  745. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  746. package/src/tempo/Attribution.test.ts +0 -294
  747. package/src/tempo/Attribution.ts +0 -185
  748. package/src/tempo/Methods.test.ts +0 -425
  749. package/src/tempo/Methods.ts +0 -367
  750. package/src/tempo/Proof.conformance.test.ts +0 -146
  751. package/src/tempo/Proof.test-d.ts +0 -32
  752. package/src/tempo/Proof.test.ts +0 -40
  753. package/src/tempo/Proof.ts +0 -69
  754. package/src/tempo/PublicExports.test-d.ts +0 -130
  755. package/src/tempo/Subscription.integration.test.ts +0 -591
  756. package/src/tempo/client/Charge.test.ts +0 -501
  757. package/src/tempo/client/Charge.ts +0 -271
  758. package/src/tempo/client/Methods.ts +0 -45
  759. package/src/tempo/client/ResolveAccount.ts +0 -46
  760. package/src/tempo/client/Subscription.test.ts +0 -180
  761. package/src/tempo/client/Subscription.ts +0 -156
  762. package/src/tempo/client/index.ts +0 -17
  763. package/src/tempo/index.ts +0 -5
  764. package/src/tempo/internal/account.ts +0 -56
  765. package/src/tempo/internal/address.test.ts +0 -42
  766. package/src/tempo/internal/address.ts +0 -6
  767. package/src/tempo/internal/auto-swap.test.ts +0 -198
  768. package/src/tempo/internal/auto-swap.ts +0 -145
  769. package/src/tempo/internal/charge.test.ts +0 -66
  770. package/src/tempo/internal/charge.ts +0 -43
  771. package/src/tempo/internal/defaults.test.ts +0 -95
  772. package/src/tempo/internal/defaults.ts +0 -53
  773. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  774. package/src/tempo/internal/fee-payer.ts +0 -808
  775. package/src/tempo/internal/fee-token.test.ts +0 -165
  776. package/src/tempo/internal/fee-token.ts +0 -72
  777. package/src/tempo/internal/proof.test.ts +0 -97
  778. package/src/tempo/internal/proof.ts +0 -87
  779. package/src/tempo/internal/selectors.ts +0 -10
  780. package/src/tempo/internal/types.ts +0 -19
  781. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  782. package/src/tempo/legacy/README.md +0 -9
  783. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  784. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  785. package/src/tempo/legacy/client/Session.test.ts +0 -800
  786. package/src/tempo/legacy/client/Session.ts +0 -397
  787. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  788. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  789. package/src/tempo/legacy/client/index.ts +0 -6
  790. package/src/tempo/legacy/index.ts +0 -4
  791. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  792. package/src/tempo/legacy/session/Chain.ts +0 -830
  793. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  794. package/src/tempo/legacy/session/Channel.ts +0 -51
  795. package/src/tempo/legacy/session/Types.ts +0 -91
  796. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  797. package/src/tempo/legacy/session/Voucher.ts +0 -183
  798. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  799. package/src/tempo/legacy/session/index.ts +0 -8
  800. package/src/tempo/server/AtomicStore.test-d.ts +0 -63
  801. package/src/tempo/server/Charge.test.ts +0 -6056
  802. package/src/tempo/server/Charge.ts +0 -1379
  803. package/src/tempo/server/Methods.ts +0 -86
  804. package/src/tempo/server/Relay.test.ts +0 -677
  805. package/src/tempo/server/Relay.ts +0 -297
  806. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  807. package/src/tempo/server/SponsorBudget.ts +0 -219
  808. package/src/tempo/server/Sse.test.ts +0 -321
  809. package/src/tempo/server/Subscription.test.ts +0 -1944
  810. package/src/tempo/server/Subscription.ts +0 -1336
  811. package/src/tempo/server/index.ts +0 -12
  812. package/src/tempo/server/internal/html/main.ts +0 -115
  813. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  814. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  815. package/src/tempo/server/internal/html/package.json +0 -10
  816. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  817. package/src/tempo/server/internal/html.gen.ts +0 -2
  818. package/src/tempo/server/internal/request-body.test.ts +0 -210
  819. package/src/tempo/server/internal/request-body.ts +0 -61
  820. package/src/tempo/server/internal/transport.test.ts +0 -922
  821. package/src/tempo/server/internal/transport.ts +0 -322
  822. package/src/tempo/session/README.md +0 -320
  823. package/src/tempo/session/Snapshot.test.ts +0 -41
  824. package/src/tempo/session/Snapshot.ts +0 -95
  825. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  826. package/src/tempo/session/client/ChannelOps.ts +0 -348
  827. package/src/tempo/session/client/ChannelStore.ts +0 -111
  828. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  829. package/src/tempo/session/client/CredentialState.ts +0 -942
  830. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  831. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  832. package/src/tempo/session/client/Runtime.ts +0 -1008
  833. package/src/tempo/session/client/Session.test.ts +0 -1355
  834. package/src/tempo/session/client/Session.ts +0 -420
  835. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  836. package/src/tempo/session/client/SessionManager.ts +0 -996
  837. package/src/tempo/session/client/Transports.test.ts +0 -1141
  838. package/src/tempo/session/client/Transports.ts +0 -1534
  839. package/src/tempo/session/client/index.ts +0 -40
  840. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  841. package/src/tempo/session/index.ts +0 -7
  842. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  843. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  844. package/src/tempo/session/precompile/Chain.ts +0 -1269
  845. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  846. package/src/tempo/session/precompile/Channel.ts +0 -108
  847. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  848. package/src/tempo/session/precompile/Protocol.ts +0 -520
  849. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  850. package/src/tempo/session/precompile/Voucher.ts +0 -162
  851. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  852. package/src/tempo/session/precompile/index.ts +0 -33
  853. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  854. package/src/tempo/session/server/ChannelOps.ts +0 -157
  855. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  856. package/src/tempo/session/server/ChannelStore.ts +0 -856
  857. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  858. package/src/tempo/session/server/CredentialVerification.ts +0 -1087
  859. package/src/tempo/session/server/MeteredStream.ts +0 -99
  860. package/src/tempo/session/server/RequestState.test.ts +0 -574
  861. package/src/tempo/session/server/RequestState.ts +0 -507
  862. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  863. package/src/tempo/session/server/Session.test.ts +0 -4247
  864. package/src/tempo/session/server/Session.ts +0 -669
  865. package/src/tempo/session/server/Settlement.test.ts +0 -345
  866. package/src/tempo/session/server/Settlement.ts +0 -527
  867. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  868. package/src/tempo/session/server/Sse.test.ts +0 -634
  869. package/src/tempo/session/server/Sse.ts +0 -261
  870. package/src/tempo/session/server/Transports.test.ts +0 -346
  871. package/src/tempo/session/server/Transports.ts +0 -256
  872. package/src/tempo/session/server/Ws.test.ts +0 -765
  873. package/src/tempo/session/server/Ws.ts +0 -391
  874. package/src/tempo/session/server/index.ts +0 -12
  875. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  876. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  877. package/src/tempo/subscription/Receipt.ts +0 -28
  878. package/src/tempo/subscription/Store.test.ts +0 -609
  879. package/src/tempo/subscription/Store.ts +0 -449
  880. package/src/tempo/subscription/Types.ts +0 -68
  881. package/src/tempo/subscription/index.ts +0 -23
  882. package/src/tsconfig.json +0 -10
  883. package/src/validation/core.ts +0 -386
  884. package/src/validation/index.ts +0 -11
  885. package/src/viem/Account.test.ts +0 -72
  886. package/src/viem/Account.ts +0 -30
  887. package/src/viem/Client.test.ts +0 -366
  888. package/src/viem/Client.ts +0 -93
  889. package/src/web-bot-auth/Constants.ts +0 -24
  890. package/src/web-bot-auth/Types.ts +0 -9
  891. package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
  892. package/src/web-bot-auth/client/index.ts +0 -84
  893. package/src/web-bot-auth/index.ts +0 -6
  894. package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
  895. package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
  896. package/src/web-bot-auth/server/index.ts +0 -113
  897. package/src/x402/Assets.test.ts +0 -253
  898. package/src/x402/Assets.ts +0 -221
  899. package/src/x402/Exact.e2e.test.ts +0 -488
  900. package/src/x402/Exact.localnet.test.ts +0 -475
  901. package/src/x402/Header.test.ts +0 -73
  902. package/src/x402/Header.ts +0 -79
  903. package/src/x402/PublicInterface.test-d.ts +0 -39
  904. package/src/x402/Types.ts +0 -248
  905. package/src/x402/client/Exact.test.ts +0 -309
  906. package/src/x402/client/Exact.ts +0 -186
  907. package/src/x402/index.ts +0 -6
  908. package/src/x402/internal/ChallengeBrand.ts +0 -14
  909. package/src/x402/internal/RouteBinding.ts +0 -18
  910. package/src/x402/server/EvmCharge.ts +0 -410
  911. package/src/x402/server/Facilitator.test.ts +0 -111
  912. package/src/x402/server/Facilitator.ts +0 -56
  913. package/src/zod.test.ts +0 -169
  914. package/src/zod.ts +0 -71
@@ -1,1008 +0,0 @@
1
- import { parseUnits, type Hex } from 'viem'
2
-
3
- import type {
4
- ChannelDescriptor,
5
- NeedVoucherEvent,
6
- RawAmountString,
7
- SessionCredentialPayload,
8
- SessionReceipt,
9
- } from '../precompile/Protocol.js'
10
- import * as Ws from '../precompile/Protocol.js'
11
- import type { SessionSnapshot } from '../Snapshot.js'
12
- import type { ChannelEntry } from './ChannelOps.js'
13
- import type { SessionContext } from './CredentialState.js'
14
- import type { TempoSessionChallenge } from './Transports.js'
15
- import type { ActiveSocketSession } from './Transports.js'
16
-
17
- export { deserializeSnapshot, serializeSnapshot } from '../Snapshot.js'
18
- export type { SessionSnapshot } from '../Snapshot.js'
19
-
20
- /** Initial manager state before a session challenge is observed. */
21
- export type IdleSessionState = { status: 'idle' }
22
-
23
- /** State after a tempo/session challenge has been selected but before a credential is created. */
24
- export type ChallengedSessionState = { status: 'challenged'; challengeId: string }
25
-
26
- /** State while a server snapshot is being used to hydrate a reusable channel. */
27
- export type HydratingSessionState = {
28
- status: 'hydrating'
29
- challengeId: string
30
- snapshot: SessionSnapshot
31
- }
32
-
33
- /** State while the client is creating or submitting an opening channel credential. */
34
- export type OpeningSessionState = { status: 'opening'; challengeId: string }
35
-
36
- /** Active state variant used after a channel is opened, hydrated, or receives a receipt. */
37
- export type ActiveSessionState = {
38
- status: 'active'
39
- challengeId: string
40
- channelId: Hex
41
- descriptor: ChannelDescriptor
42
- /** Highest cumulative voucher amount accepted by the server. */
43
- acceptedCumulative: RawAmountString
44
- /** Current channel deposit ceiling, tracked independently from accepted cumulative spend. */
45
- deposit: RawAmountString
46
- /** Amount actually consumed by delivered work/content. */
47
- spent: RawAmountString
48
- /** Paid units delivered by the server. */
49
- units: number
50
- }
51
-
52
- /** State when the server needs a larger cumulative voucher but no top-up is needed. */
53
- export type VoucherNeededSessionState = {
54
- status: 'voucherNeeded'
55
- challengeId: string
56
- channelId: Hex
57
- descriptor: ChannelDescriptor
58
- requiredCumulative: RawAmountString
59
- deposit: RawAmountString
60
- }
61
-
62
- /** State when the server-required cumulative amount exceeds current channel deposit. */
63
- export type ToppingUpSessionState = {
64
- status: 'toppingUp'
65
- challengeId: string
66
- channelId: Hex
67
- descriptor: ChannelDescriptor
68
- deposit: RawAmountString
69
- }
70
-
71
- /** State while the server is settling accepted voucher spend on-chain. */
72
- export type SettlingSessionState = {
73
- status: 'settling'
74
- channelId: Hex
75
- descriptor: ChannelDescriptor
76
- deposit: RawAmountString
77
- }
78
-
79
- /** State after unilateral close has been requested and withdrawal is not yet available. */
80
- export type CloseRequestedSessionState = {
81
- status: 'closeRequested'
82
- channelId: Hex
83
- descriptor: ChannelDescriptor
84
- }
85
-
86
- /** State after the unilateral close delay has elapsed and funds can be withdrawn. */
87
- export type WithdrawableSessionState = {
88
- status: 'withdrawable'
89
- channelId: Hex
90
- descriptor: ChannelDescriptor
91
- }
92
-
93
- /** State while a cooperative close credential or close transaction is in flight. */
94
- export type ClosingSessionState = {
95
- status: 'closing'
96
- channelId: Hex
97
- descriptor: ChannelDescriptor
98
- }
99
-
100
- /** Terminal state after channel close finalization. */
101
- export type ClosedSessionState = {
102
- status: 'closed'
103
- channelId: Hex
104
- descriptor: ChannelDescriptor
105
- }
106
-
107
- /** Pure state-machine state for a TIP-1034 session. */
108
- export type SessionState =
109
- | IdleSessionState
110
- | ChallengedSessionState
111
- | HydratingSessionState
112
- | OpeningSessionState
113
- | ActiveSessionState
114
- | VoucherNeededSessionState
115
- | ToppingUpSessionState
116
- | SettlingSessionState
117
- | CloseRequestedSessionState
118
- | WithdrawableSessionState
119
- | ClosingSessionState
120
- | ClosedSessionState
121
-
122
- /** Data required to construct active session state. */
123
- export type CreateActiveStateParameters = Omit<ActiveSessionState, 'status'>
124
-
125
- /** State variants that can follow a need-voucher event. */
126
- export type NeedVoucherSessionState = VoucherNeededSessionState | ToppingUpSessionState
127
-
128
- /** Events accepted by the pure session reducer. */
129
- export type SessionEvent =
130
- | { type: 'challengeReceived'; challengeId: string }
131
- | { type: 'challenge'; challengeId: string; snapshot?: SessionSnapshot | undefined }
132
- | {
133
- type: 'activated'
134
- challengeId: string
135
- entry: ChannelEntry
136
- spent: RawAmountString
137
- units?: number | undefined
138
- }
139
- | {
140
- type: 'opened'
141
- receipt: SessionReceipt
142
- descriptor: ChannelDescriptor
143
- deposit: RawAmountString
144
- }
145
- | { type: 'hydrated'; snapshot: SessionSnapshot }
146
- | { type: 'receiptAccepted'; receipt: SessionReceipt; entry: ChannelEntry }
147
- | { type: 'needVoucher'; event: NeedVoucherEvent; descriptor: ChannelDescriptor }
148
- | { type: 'topUpStarted' }
149
- | { type: 'voucherAccepted'; receipt: SessionReceipt; deposit?: string | undefined }
150
- | { type: 'settleStarted' }
151
- | { type: 'settled'; receipt: SessionReceipt; deposit?: string | undefined }
152
- | { type: 'closeRequested' }
153
- | { type: 'withdrawable' }
154
- | { type: 'closeStarted' }
155
- | { type: 'closed'; receipt?: SessionReceipt | undefined }
156
-
157
- /** IO work requested by the pure reducer. */
158
- export type SessionEffect =
159
- | { type: 'hydrate'; snapshot: SessionSnapshot }
160
- | { type: 'open' }
161
- | { type: 'topUp'; channelId: Hex; amount: string }
162
- | { type: 'voucher'; payload?: SessionCredentialPayload | undefined }
163
- | { type: 'settle'; channelId: Hex }
164
- | { type: 'requestClose'; channelId: Hex }
165
- | { type: 'withdraw'; channelId: Hex }
166
- | { type: 'close'; channelId: Hex }
167
-
168
- /** Effects emitted by need-voucher transition planning. */
169
- export type NeedVoucherSessionEffect =
170
- | Extract<SessionEffect, { type: 'topUp' }>
171
- | Extract<SessionEffect, { type: 'voucher' }>
172
-
173
- /** Inputs for deciding whether a need-voucher event needs a voucher or deposit top-up first. */
174
- export type ResolveNeedVoucherTransitionParameters = {
175
- /** Current challenge ID retained by the active session state. */
176
- challengeId: string
177
- /** Descriptor for the channel requiring more authorization. */
178
- descriptor: ChannelDescriptor
179
- /** Server event describing required cumulative authorization and current deposit. */
180
- event: NeedVoucherEvent
181
- }
182
-
183
- /** Result of the need-voucher transition decision. */
184
- export type NeedVoucherTransition = {
185
- /** Next machine state. */
186
- state: NeedVoucherSessionState
187
- /** Driver effects required to satisfy the server request. */
188
- effects: NeedVoucherSessionEffect[]
189
- }
190
-
191
- /** Return value for every pure state-machine transition. */
192
- export type SessionTransition = {
193
- /** State after applying the event. */
194
- state: SessionState
195
- /** Declarative IO requested from the transport/precompile driver. */
196
- effects: SessionEffect[]
197
- }
198
-
199
- /** Initial state for a TIP-1034 session state machine. */
200
- export const initialState = { status: 'idle' } satisfies SessionState
201
-
202
- /** Constructs the canonical active state shape for the reducer and transport drivers. */
203
- export function createActiveState(parameters: CreateActiveStateParameters): ActiveSessionState {
204
- return { status: 'active', ...parameters }
205
- }
206
-
207
- /** Applies a state-machine event and returns the next state plus requested effects. */
208
- export function reduce(state: SessionState, event: SessionEvent): SessionTransition {
209
- switch (event.type) {
210
- case 'challengeReceived':
211
- if (state.status === 'closing' || state.status === 'closed') return invalid(state, event)
212
- return {
213
- state: { status: 'challenged', challengeId: event.challengeId },
214
- effects: [],
215
- }
216
- case 'challenge': {
217
- if (state.status !== 'idle' && state.status !== 'active') return invalid(state, event)
218
- if (event.snapshot) {
219
- return {
220
- state: { status: 'hydrating', challengeId: event.challengeId, snapshot: event.snapshot },
221
- effects: [{ type: 'hydrate', snapshot: event.snapshot }],
222
- }
223
- }
224
- return {
225
- state: { status: 'opening', challengeId: event.challengeId },
226
- effects: [{ type: 'open' }],
227
- }
228
- }
229
- case 'hydrated':
230
- if (state.status !== 'hydrating') return invalid(state, event)
231
- return {
232
- state: activeFromSnapshot(state.challengeId, event.snapshot),
233
- effects: [],
234
- }
235
- case 'activated':
236
- if (state.status === 'closing' || state.status === 'closed') return invalid(state, event)
237
- return {
238
- state: activeStateFromChannel({
239
- challengeId: event.challengeId,
240
- entry: event.entry,
241
- spent: event.spent,
242
- units: event.units ?? 0,
243
- }),
244
- effects: [],
245
- }
246
- case 'opened':
247
- if (state.status !== 'opening') return invalid(state, event)
248
- return {
249
- state: activeFromReceipt(state.challengeId, event.receipt, event.descriptor, event.deposit),
250
- effects: [],
251
- }
252
- case 'receiptAccepted':
253
- if (state.status === 'closing' || state.status === 'closed') return invalid(state, event)
254
- return {
255
- state: activeStateFromReceipt(event.receipt, event.entry),
256
- effects: [],
257
- }
258
- case 'needVoucher': {
259
- if (state.status !== 'active') return invalid(state, event)
260
- return resolveNeedVoucherTransition({
261
- challengeId: state.challengeId,
262
- descriptor: event.descriptor,
263
- event: event.event,
264
- })
265
- }
266
- case 'topUpStarted':
267
- if (state.status !== 'voucherNeeded') return invalid(state, event)
268
- return {
269
- state: {
270
- status: 'toppingUp',
271
- challengeId: state.challengeId,
272
- channelId: state.channelId,
273
- descriptor: state.descriptor,
274
- deposit: state.deposit,
275
- },
276
- effects: [],
277
- }
278
- case 'voucherAccepted':
279
- if (state.status !== 'voucherNeeded' && state.status !== 'toppingUp')
280
- return invalid(state, event)
281
- return {
282
- state: activeFromReceipt(
283
- state.challengeId,
284
- event.receipt,
285
- state.descriptor,
286
- event.deposit ?? state.deposit,
287
- ),
288
- effects: [],
289
- }
290
- case 'settleStarted':
291
- if (state.status !== 'active') return invalid(state, event)
292
- return {
293
- state: {
294
- status: 'settling',
295
- channelId: state.channelId,
296
- descriptor: state.descriptor,
297
- deposit: state.deposit,
298
- },
299
- effects: [{ type: 'settle', channelId: state.channelId }],
300
- }
301
- case 'settled':
302
- if (state.status !== 'settling') return invalid(state, event)
303
- return {
304
- state: activeFromReceipt(
305
- event.receipt.challengeId,
306
- event.receipt,
307
- state.descriptor,
308
- event.deposit ?? state.deposit,
309
- ),
310
- effects: [],
311
- }
312
- case 'closeRequested':
313
- if (state.status !== 'active') return invalid(state, event)
314
- return {
315
- state: {
316
- status: 'closeRequested',
317
- channelId: state.channelId,
318
- descriptor: state.descriptor,
319
- },
320
- effects: [{ type: 'requestClose', channelId: state.channelId }],
321
- }
322
- case 'withdrawable':
323
- if (state.status !== 'closeRequested') return invalid(state, event)
324
- return {
325
- state: { status: 'withdrawable', channelId: state.channelId, descriptor: state.descriptor },
326
- effects: [{ type: 'withdraw', channelId: state.channelId }],
327
- }
328
- case 'closeStarted':
329
- if (
330
- state.status !== 'active' &&
331
- state.status !== 'withdrawable' &&
332
- state.status !== 'closeRequested'
333
- )
334
- return invalid(state, event)
335
- return {
336
- state: { status: 'closing', channelId: state.channelId, descriptor: state.descriptor },
337
- effects: [{ type: 'close', channelId: state.channelId }],
338
- }
339
- case 'closed':
340
- if (state.status !== 'closing' && state.status !== 'withdrawable')
341
- return invalid(state, event)
342
- return {
343
- state: { status: 'closed', channelId: state.channelId, descriptor: state.descriptor },
344
- effects: [],
345
- }
346
- }
347
- }
348
-
349
- /** Applies a reducer event to mutable manager runtime state. */
350
- export function dispatchSessionEvent(
351
- runtime: Pick<SessionManagerRuntime, 'state'>,
352
- event: SessionEvent,
353
- ): SessionTransition {
354
- const transition = reduce(runtime.state, event)
355
- runtime.state = transition.state
356
- return transition
357
- }
358
-
359
- /** Decides whether a need-voucher event can be answered by voucher or requires top-up first. */
360
- export function resolveNeedVoucherTransition(
361
- parameters: ResolveNeedVoucherTransitionParameters,
362
- ): NeedVoucherTransition {
363
- const { challengeId, descriptor, event } = parameters
364
- const required = BigInt(event.requiredCumulative)
365
- const deposit = BigInt(event.deposit)
366
-
367
- if (required > deposit) {
368
- return {
369
- state: {
370
- status: 'toppingUp',
371
- challengeId,
372
- channelId: event.channelId,
373
- descriptor,
374
- deposit: event.deposit,
375
- },
376
- effects: [
377
- { type: 'topUp', channelId: event.channelId, amount: (required - deposit).toString() },
378
- ],
379
- }
380
- }
381
-
382
- return {
383
- state: {
384
- status: 'voucherNeeded',
385
- challengeId,
386
- channelId: event.channelId,
387
- descriptor,
388
- requiredCumulative: event.requiredCumulative,
389
- deposit: event.deposit,
390
- },
391
- effects: [{ type: 'voucher' }],
392
- }
393
- }
394
-
395
- function activeFromSnapshot(challengeId: string, snapshot: SessionSnapshot): SessionState {
396
- return createActiveState({
397
- challengeId,
398
- channelId: snapshot.channelId,
399
- descriptor: snapshot.descriptor,
400
- acceptedCumulative: snapshot.acceptedCumulative,
401
- deposit: snapshot.deposit,
402
- spent: snapshot.spent,
403
- units: snapshot.units ?? 0,
404
- })
405
- }
406
-
407
- function activeFromReceipt(
408
- challengeId: string,
409
- receipt: SessionReceipt,
410
- descriptor: ChannelDescriptor,
411
- deposit: RawAmountString,
412
- ): SessionState {
413
- return createActiveState({
414
- challengeId,
415
- channelId: receipt.channelId,
416
- descriptor,
417
- acceptedCumulative: receipt.acceptedCumulative,
418
- deposit,
419
- spent: receipt.spent,
420
- units: receipt.units ?? 0,
421
- })
422
- }
423
-
424
- function invalid(state: SessionState, event: SessionEvent): never {
425
- throw new Error(`Invalid session transition: ${state.status} + ${event.type}`)
426
- }
427
-
428
- /** Inputs for validating a cumulative authorization against the local client cap. */
429
- export type LocalVoucherLimitParameters = {
430
- /** Cumulative amount being authorized or accepted. */
431
- cumulativeAmount: bigint
432
- /** Optional maximum local authorization boundary. Null means uncapped. */
433
- maxVoucherCumulative: bigint | null
434
- }
435
-
436
- /** Inputs for validating a payment receipt against local client state. */
437
- export type LocalReceiptValidationParameters = {
438
- /** Active local channel cache entry. */
439
- channel: ChannelEntry | null
440
- /** Optional local authorization cap. Null means uncapped. */
441
- maxVoucherCumulative: bigint | null
442
- /** Receipt returned by the server. */
443
- receipt: SessionReceipt
444
- }
445
-
446
- /** Inputs for deriving the next locally observed spend from a receipt. */
447
- export type NextReceiptSpendParameters = {
448
- /** Active local channel cache entry. */
449
- channel: ChannelEntry | null
450
- /** Optional local authorization cap. Null means uncapped. */
451
- maxVoucherCumulative: bigint | null
452
- /** Receipt returned by the server, when present. */
453
- receipt: SessionReceipt | null | undefined
454
- /** Current locally observed spend. */
455
- spent: bigint
456
- }
457
-
458
- /** Inputs for resolving the initial channel deposit in automatic client mode. */
459
- export type ResolveOpeningDepositParameters = {
460
- /** Caller-provided raw deposit override. */
461
- contextDepositRaw?: string | undefined
462
- /** Optional local maximum cumulative deposit/authorization boundary. */
463
- maxDeposit?: bigint | undefined
464
- /** Current request amount in raw token units. */
465
- requestAmount: bigint
466
- /** Server-suggested opening deposit in raw token units. */
467
- suggestedDepositRaw?: string | undefined
468
- }
469
-
470
- /** Throws when a cumulative voucher amount exceeds the caller's local cap. */
471
- export function assertVoucherWithinLocalLimit(parameters: LocalVoucherLimitParameters): void {
472
- const { cumulativeAmount, maxVoucherCumulative } = parameters
473
- if (maxVoucherCumulative === null) return
474
- if (cumulativeAmount <= maxVoucherCumulative) return
475
- throw new Error(
476
- `requested voucher amount ${cumulativeAmount} exceeds local maxDeposit ${maxVoucherCumulative}`,
477
- )
478
- }
479
-
480
- /** Validates a server receipt without allowing it to increase the local signing boundary. */
481
- export function assertReceiptWithinLocalState(parameters: LocalReceiptValidationParameters): void {
482
- const { channel, maxVoucherCumulative, receipt } = parameters
483
- if (!channel || receipt.channelId !== channel.channelId) return
484
- const acceptedCumulative = BigInt(receipt.acceptedCumulative)
485
- const receiptSpent = BigInt(receipt.spent)
486
- if (receiptSpent > acceptedCumulative) {
487
- throw new Error('receipt spent exceeds accepted cumulative voucher amount')
488
- }
489
- if (acceptedCumulative > channel.cumulativeAmount) {
490
- throw new Error('receipt accepted cumulative exceeds local voucher state')
491
- }
492
- if (receiptSpent > channel.cumulativeAmount) {
493
- throw new Error('receipt spent exceeds local voucher state')
494
- }
495
- assertVoucherWithinLocalLimit({ cumulativeAmount: acceptedCumulative, maxVoucherCumulative })
496
- assertVoucherWithinLocalLimit({ cumulativeAmount: receiptSpent, maxVoucherCumulative })
497
- }
498
-
499
- /** Returns the monotonic next local spend after validating an optional receipt. */
500
- export function nextSpentFromReceipt(parameters: NextReceiptSpendParameters): bigint {
501
- const { channel, maxVoucherCumulative, receipt, spent } = parameters
502
- if (!receipt || receipt.channelId !== channel?.channelId) return spent
503
- assertReceiptWithinLocalState({ channel, maxVoucherCumulative, receipt })
504
- const next = BigInt(receipt.spent)
505
- return spent > next ? spent : next
506
- }
507
-
508
- /** Parses a manager amount. Bigints are raw units; strings are parsed using token decimals. */
509
- export function parseManagerAmount(amount: string | bigint, decimals: number): bigint {
510
- if (typeof amount === 'bigint') return amount
511
- return parseUnits(amount, decimals)
512
- }
513
-
514
- /** Resolves the opening deposit from explicit context, server hint, request amount, and local cap. */
515
- export function resolveOpeningDeposit(parameters: ResolveOpeningDepositParameters): bigint {
516
- const { contextDepositRaw, maxDeposit, requestAmount, suggestedDepositRaw } = parameters
517
- assertWithinMaxDeposit(requestAmount, maxDeposit)
518
- if (contextDepositRaw !== undefined) {
519
- const deposit = BigInt(contextDepositRaw)
520
- if (deposit < requestAmount) {
521
- throw new Error(`opening deposit ${deposit} below request amount ${requestAmount}`)
522
- }
523
- return deposit
524
- }
525
-
526
- const suggestedDeposit =
527
- suggestedDepositRaw !== undefined ? BigInt(suggestedDepositRaw) : undefined
528
- const proposed =
529
- suggestedDeposit !== undefined && suggestedDeposit > requestAmount
530
- ? suggestedDeposit
531
- : requestAmount
532
- if (maxDeposit !== undefined) return proposed < maxDeposit ? proposed : maxDeposit
533
- return proposed
534
- }
535
-
536
- /** Resolves a bounded automatic refill, preferring explicit policy over server headroom. */
537
- export function resolveAutomaticTopUp(parameters: {
538
- deposit: bigint
539
- maxDeposit?: bigint | null | undefined
540
- requiredCumulative: bigint
541
- suggestedDeposit?: bigint | undefined
542
- topUpAmount?: bigint | null | undefined
543
- }): bigint {
544
- const { deposit, maxDeposit, requiredCumulative, suggestedDeposit, topUpAmount } = parameters
545
- if (requiredCumulative <= deposit) return 0n
546
- assertVoucherWithinLocalLimit({
547
- cumulativeAmount: requiredCumulative,
548
- maxVoucherCumulative: maxDeposit ?? null,
549
- })
550
- const shortfall = requiredCumulative - deposit
551
- const preferred = topUpAmount ?? suggestedDeposit ?? shortfall
552
- const proposed = preferred > shortfall ? preferred : shortfall
553
- if (maxDeposit === null || maxDeposit === undefined) return proposed
554
- const remaining = maxDeposit - deposit
555
- return proposed < remaining ? proposed : remaining
556
- }
557
-
558
- /** Enforces the optional client-side maximum cumulative voucher authorization. */
559
- export function assertWithinMaxDeposit(
560
- cumulativeAmount: bigint,
561
- maxDeposit: bigint | undefined,
562
- ): void {
563
- assertVoucherWithinLocalLimit({
564
- cumulativeAmount,
565
- maxVoucherCumulative: maxDeposit ?? null,
566
- })
567
- }
568
-
569
- /** Predicate used when waiting for a specific session receipt. */
570
- export type SessionReceiptPredicate = (receipt: SessionReceipt) => boolean
571
-
572
- /** Resolved data required to close a locally active session channel. */
573
- export type CloseTarget = {
574
- /** Challenge used to bind the close credential. */
575
- challenge: TempoSessionChallenge
576
- /** Local channel cache entry being closed. */
577
- channel: ChannelEntry
578
- /** Channel ID being closed. */
579
- channelId: Hex
580
- }
581
-
582
- /** Inputs for choosing the active close target. */
583
- export type ResolveCloseTargetParameters = {
584
- /** Current active channel cache entry. */
585
- channel: ChannelEntry | null
586
- /** Active WebSocket session, when close is happening in-band. */
587
- currentSocket: ActiveSocketSession | null
588
- /** Last HTTP/SSE challenge observed by the manager. */
589
- lastChallenge: TempoSessionChallenge | null
590
- }
591
-
592
- /** Inputs for validating socket close-ready spend before signing the final close voucher. */
593
- export type CloseReadySpendParameters = {
594
- /** Local cumulative voucher authorization. */
595
- cumulativeAmount: bigint
596
- /** Spend reported by the close-ready receipt. */
597
- readySpent: bigint
598
- /** Latest receipt-tracked local spend. */
599
- spent: bigint
600
- }
601
-
602
- /** Inputs for matching the expected final close receipt. */
603
- export type ExpectedCloseReceiptParameters = {
604
- /** Challenge ID used for the close credential. */
605
- challengeId: string
606
- /** Channel ID being closed. */
607
- channelId: Hex
608
- /** Expected final cumulative/spent amount. */
609
- expectedCloseAmount: string
610
- /** Receipt to test. */
611
- receipt: SessionReceipt
612
- }
613
-
614
- /** Resolves the currently closeable channel and challenge, or undefined when no channel is open. */
615
- export function resolveCloseTarget(
616
- parameters: ResolveCloseTargetParameters,
617
- ): CloseTarget | undefined {
618
- const { channel, currentSocket, lastChallenge } = parameters
619
- if (!channel?.opened) return undefined
620
-
621
- const challenge = currentSocket?.challenge ?? lastChallenge
622
- const channelId = currentSocket?.channelId ?? channel.channelId
623
-
624
- if (!challenge) {
625
- throw new Error(
626
- '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.',
627
- )
628
- }
629
- if (!channelId) {
630
- throw new Error(
631
- 'Cannot close session: no channel ID available. The session may not have been fully opened.',
632
- )
633
- }
634
-
635
- return { challenge, channel, channelId }
636
- }
637
-
638
- /** Highest spend the client may sign for during close based on local receipts and vouchers. */
639
- export function localCloseSpendLimit(parameters: Omit<CloseReadySpendParameters, 'readySpent'>) {
640
- const { cumulativeAmount, spent } = parameters
641
- return cumulativeAmount > spent ? cumulativeAmount : spent
642
- }
643
-
644
- /** Throws when a close-ready receipt asks the client to sign beyond local state. */
645
- export function assertCloseReadyWithinLocalState(parameters: CloseReadySpendParameters): void {
646
- const { cumulativeAmount, readySpent, spent } = parameters
647
- if (readySpent > localCloseSpendLimit({ cumulativeAmount, spent })) {
648
- throw new Error('close-ready spent exceeds local voucher state')
649
- }
650
- }
651
-
652
- /** Returns whether a receipt is the expected final close settlement receipt. */
653
- export function isExpectedCloseReceipt(parameters: ExpectedCloseReceiptParameters): boolean {
654
- const { challengeId, channelId, expectedCloseAmount, receipt } = parameters
655
- return (
656
- Boolean(receipt.txHash) &&
657
- receipt.challengeId === challengeId &&
658
- receipt.channelId === channelId &&
659
- receipt.acceptedCumulative === expectedCloseAmount &&
660
- receipt.spent === expectedCloseAmount
661
- )
662
- }
663
-
664
- /** Parameters used to project cached client channel data into an active machine state. */
665
- export type ActiveStateFromChannelParameters = {
666
- /** Challenge ID associated with the active payment flow. */
667
- challengeId: string
668
- /** Cached channel entry that owns descriptor, deposit, and cumulative authorization. */
669
- entry: ChannelEntry
670
- /** Latest locally observed spend in raw units. */
671
- spent: string
672
- /** Paid units observed by the active flow. */
673
- units: number
674
- }
675
-
676
- /** Parameters used to project a closed channel into machine state. */
677
- export type ClosedStateFromChannelParameters = {
678
- /** Channel ID that has been closed. */
679
- channelId: Hex
680
- /** Cached channel entry that owns the descriptor. */
681
- entry: ChannelEntry
682
- }
683
-
684
- /** Inputs for computing the safest fallback close amount when no fresh close-ready receipt is available. */
685
- export type FallbackCloseAmountParameters = {
686
- /** Challenge ID being closed. */
687
- challengeId: string
688
- /** Channel ID being closed. */
689
- channelId: Hex
690
- /** Last socket close-ready receipt, when one was received. */
691
- closeReadyReceipt?: SessionReceipt | null | undefined
692
- /** Current local cumulative voucher authorization. */
693
- cumulativeAmount: bigint
694
- /** Number of application chunks delivered over the socket. */
695
- deliveredChunks?: bigint | undefined
696
- /** Current socket challenge ID, used to decide whether socket delivery data applies. */
697
- socketChallengeId?: string | undefined
698
- /** Current socket channel ID, used to decide whether socket delivery data applies. */
699
- socketChannelId?: Hex | undefined
700
- /** Latest locally observed spend from receipts. */
701
- spent: bigint
702
- /** Per-message socket charge in raw units. */
703
- tickCost?: bigint | undefined
704
- }
705
-
706
- /** Minimal mutable session runtime state that must be restored when an auto-drive attempt fails. */
707
- export type RuntimeState = {
708
- /** Current client channel cache entry, when one is active. */
709
- channel: ChannelEntry | null
710
- /** Latest locally observed spend from receipts. */
711
- spent: bigint
712
- /** Current public state-machine state. */
713
- state: SessionState
714
- }
715
-
716
- /** Mutable client runtime state owned by one auto-driving `sessionManager()` instance. */
717
- export type SessionManagerRuntime = RuntimeState & {
718
- /** Last Tempo session challenge observed by HTTP/SSE/WebSocket bootstrap. */
719
- lastChallenge: TempoSessionChallenge | null
720
- /** Last HTTP resource URL usable for management POSTs. */
721
- lastUrl: RequestInfo | URL | null
722
- /** Active WebSocket payment session bookkeeping, when a socket is open. */
723
- socketSession: ActiveSocketSession | null
724
- }
725
-
726
- /** Immutable snapshot of mutable runtime fields needed for rollback. */
727
- export type RuntimeSnapshot = {
728
- /** Channel fields mutated during optimistic open/top-up/voucher attempts. */
729
- channel: {
730
- cumulativeAmount: bigint
731
- deposit: bigint
732
- entry: ChannelEntry
733
- opened: boolean
734
- } | null
735
- /** Latest locally observed spend when the snapshot was taken. */
736
- spent: bigint
737
- /** State-machine state when the snapshot was taken. */
738
- state: SessionState
739
- }
740
-
741
- /** Inputs for applying a server receipt to manager-local runtime state. */
742
- export type ApplySessionReceiptToRuntimeParameters = {
743
- /** Optional local cumulative authorization cap. Null means uncapped. */
744
- maxVoucherCumulative: bigint | null
745
- /** Receipt returned by a server transport, when present. */
746
- receipt: SessionReceipt | null | undefined
747
- /** Mutable manager runtime state to update. */
748
- runtime: SessionManagerRuntime
749
- }
750
-
751
- /** Inputs for restoring local cumulative authorization after a failed optimistic voucher retry. */
752
- export type RestoreCumulativeAuthorizationParameters = {
753
- /** Active local channel entry, when one is available. */
754
- channel: ChannelEntry | null
755
- /** Channel ID whose optimistic cumulative amount should be restored. */
756
- channelId: Hex
757
- /** Previous cumulative voucher authorization in raw units. */
758
- cumulativeAmount: bigint
759
- /** Last challenge ID observed by the manager, when known. */
760
- challengeId?: string | undefined
761
- /** Latest locally observed spend in raw units. */
762
- spent: bigint
763
- /** Current public state-machine state, used to preserve active unit count. */
764
- state: SessionState
765
- }
766
-
767
- /** Projects cached channel data into an active state-machine state. */
768
- export function activeStateFromChannel(parameters: ActiveStateFromChannelParameters): SessionState {
769
- return createActiveState({
770
- challengeId: parameters.challengeId,
771
- channelId: parameters.entry.channelId,
772
- descriptor: parameters.entry.descriptor,
773
- acceptedCumulative: parameters.entry.cumulativeAmount.toString(),
774
- deposit: parameters.entry.deposit.toString(),
775
- spent: parameters.spent,
776
- units: parameters.units,
777
- })
778
- }
779
-
780
- /** Creates the initial mutable runtime state for an auto-driving session manager. */
781
- export function createSessionManagerRuntime(): SessionManagerRuntime {
782
- return {
783
- channel: null,
784
- lastChallenge: null,
785
- lastUrl: null,
786
- spent: 0n,
787
- socketSession: null,
788
- state: initialState,
789
- }
790
- }
791
-
792
- /** Validates a receipt, advances observed spend, and projects matching receipts into public state. */
793
- export function applySessionReceiptToRuntime(
794
- parameters: ApplySessionReceiptToRuntimeParameters,
795
- ): void {
796
- const { maxVoucherCumulative, receipt, runtime } = parameters
797
- runtime.spent = nextSpentFromReceipt({
798
- channel: runtime.channel,
799
- maxVoucherCumulative,
800
- receipt,
801
- spent: runtime.spent,
802
- })
803
- if (receipt && runtime.channel?.channelId === receipt.channelId) {
804
- dispatchSessionEvent(runtime, {
805
- type: 'receiptAccepted',
806
- receipt,
807
- entry: runtime.channel,
808
- })
809
- }
810
- }
811
-
812
- /** Projects a verified receipt plus local descriptor/deposit data into an active state-machine state. */
813
- export function activeStateFromReceipt(receipt: SessionReceipt, entry: ChannelEntry): SessionState {
814
- return createActiveState({
815
- challengeId: receipt.challengeId,
816
- channelId: receipt.channelId,
817
- descriptor: entry.descriptor,
818
- acceptedCumulative: receipt.acceptedCumulative,
819
- deposit: entry.deposit.toString(),
820
- spent: receipt.spent,
821
- units: receipt.units ?? 0,
822
- })
823
- }
824
-
825
- /** Projects a closed channel into the public closed state-machine state. */
826
- export function closedStateFromChannel(parameters: ClosedStateFromChannelParameters): SessionState {
827
- return {
828
- status: 'closed',
829
- channelId: parameters.channelId,
830
- descriptor: parameters.entry.descriptor,
831
- }
832
- }
833
-
834
- /** Projects a final close receipt into the public closed state-machine state. */
835
- export function closedStateFromReceipt(receipt: SessionReceipt, entry: ChannelEntry): SessionState {
836
- return closedStateFromChannel({ channelId: receipt.channelId, entry })
837
- }
838
-
839
- /**
840
- * Computes the fallback close amount without authorizing more than the local cumulative voucher.
841
- *
842
- * Priority:
843
- * 1. Matching close-ready receipt spend.
844
- * 2. Matching socket delivery estimate (`deliveredChunks * tickCost`) clamped by cumulative.
845
- * 3. Latest receipt-tracked spend for HTTP/SSE.
846
- */
847
- export function computeFallbackCloseAmount(parameters: FallbackCloseAmountParameters): bigint {
848
- const {
849
- challengeId,
850
- channelId,
851
- closeReadyReceipt,
852
- cumulativeAmount,
853
- deliveredChunks = 0n,
854
- socketChallengeId,
855
- socketChannelId,
856
- spent,
857
- tickCost = 0n,
858
- } = parameters
859
-
860
- if (
861
- closeReadyReceipt &&
862
- closeReadyReceipt.challengeId === challengeId &&
863
- closeReadyReceipt.channelId === channelId
864
- ) {
865
- return BigInt(closeReadyReceipt.spent)
866
- }
867
-
868
- if (socketChallengeId === challengeId && socketChannelId === channelId && tickCost > 0n) {
869
- const deliveryEstimate = deliveredChunks * tickCost
870
- const bestSpent = spent > deliveryEstimate ? spent : deliveryEstimate
871
- return bestSpent > cumulativeAmount ? cumulativeAmount : bestSpent
872
- }
873
-
874
- return spent
875
- }
876
-
877
- /**
878
- * Restores a channel's cumulative voucher boundary and returns the refreshed active state.
879
- *
880
- * Returns `undefined` when the active channel does not match or no challenge is
881
- * available to label the active state.
882
- */
883
- export function restoreCumulativeAuthorization(
884
- parameters: RestoreCumulativeAuthorizationParameters,
885
- ): ActiveSessionState | undefined {
886
- const { channel, channelId, challengeId, cumulativeAmount, spent, state } = parameters
887
- if (!channel || channel.channelId !== channelId) return undefined
888
- channel.cumulativeAmount = cumulativeAmount
889
- if (!challengeId) return undefined
890
- return reduce(state, {
891
- type: 'activated',
892
- challengeId,
893
- entry: channel,
894
- spent: spent.toString(),
895
- units: state.status === 'active' ? state.units : 0,
896
- }).state as ActiveSessionState
897
- }
898
-
899
- /** Captures mutable session runtime fields before an optimistic manager action. */
900
- export function captureRuntimeSnapshot(runtime: RuntimeState): RuntimeSnapshot {
901
- return {
902
- channel:
903
- runtime.channel === null
904
- ? null
905
- : {
906
- entry: runtime.channel,
907
- cumulativeAmount: runtime.channel.cumulativeAmount,
908
- deposit: runtime.channel.deposit,
909
- opened: runtime.channel.opened,
910
- },
911
- spent: runtime.spent,
912
- state: runtime.state,
913
- }
914
- }
915
-
916
- /** Restores mutable session runtime fields from a previous snapshot. */
917
- export function restoreRuntimeSnapshot(
918
- snapshot: RuntimeSnapshot,
919
- currentChannel: ChannelEntry | null,
920
- ): RuntimeState {
921
- if (snapshot.channel) {
922
- snapshot.channel.entry.cumulativeAmount = snapshot.channel.cumulativeAmount
923
- snapshot.channel.entry.deposit = snapshot.channel.deposit
924
- snapshot.channel.entry.opened = snapshot.channel.opened
925
- return {
926
- channel: snapshot.channel.entry,
927
- spent: snapshot.spent,
928
- state: snapshot.state,
929
- }
930
- }
931
-
932
- if (currentChannel) currentChannel.opened = false
933
- return {
934
- channel: null,
935
- spent: snapshot.spent,
936
- state: snapshot.state,
937
- }
938
- }
939
-
940
- /** Creates a session credential for the selected challenge/context. */
941
- export type CreateSocketCloseCredential = (
942
- challenge: TempoSessionChallenge,
943
- context: SessionContext,
944
- ) => Promise<string>
945
-
946
- /** Inputs for cooperatively closing an active WebSocket session in-band. */
947
- export type CloseSocketSessionParameters = {
948
- /** Raw WebSocket used by the active paid stream. */
949
- activeSocket: WebSocket
950
- /** Creates the signed close credential. */
951
- createSessionCredential: CreateSocketCloseCredential
952
- /** Active WebSocket session state. */
953
- currentSocket: ActiveSocketSession
954
- /** Latest locally tracked spend from receipts. */
955
- spent: bigint
956
- /** Channel/challenge pair being closed. */
957
- target: CloseTarget
958
- /** Waits for the server's close-ready receipt after requesting stream close. */
959
- waitForCloseReady(): Promise<SessionReceipt>
960
- /** Waits for the final settlement receipt matching `predicate`. */
961
- waitForReceipt(predicate: SessionReceiptPredicate): Promise<SessionReceipt>
962
- }
963
-
964
- /** Cooperatively closes an active paid WebSocket session and returns the final receipt. */
965
- export async function closeSocketSession(
966
- parameters: CloseSocketSessionParameters,
967
- ): Promise<SessionReceipt> {
968
- const { activeSocket, currentSocket, target } = parameters
969
- const ready =
970
- currentSocket.closeReadyReceipt ??
971
- (await (async () => {
972
- activeSocket.send(Ws.formatCloseRequestMessage())
973
- return parameters.waitForCloseReady()
974
- })())
975
- const readySpent = BigInt(ready.spent)
976
- assertCloseReadyWithinLocalState({
977
- cumulativeAmount: target.channel.cumulativeAmount,
978
- readySpent,
979
- spent: parameters.spent,
980
- })
981
-
982
- const credential = await parameters.createSessionCredential(target.challenge, {
983
- action: 'close',
984
- channelId: target.channelId,
985
- descriptor: target.channel.descriptor,
986
- cumulativeAmountRaw: readySpent.toString(),
987
- })
988
-
989
- const expectedCloseAmount = readySpent.toString()
990
- currentSocket.expectedCloseAmount = expectedCloseAmount
991
- try {
992
- const pendingReceipt = parameters.waitForReceipt((receipt) =>
993
- isExpectedCloseReceipt({
994
- challengeId: target.challenge.id,
995
- channelId: target.channelId,
996
- expectedCloseAmount,
997
- receipt,
998
- }),
999
- )
1000
- activeSocket.send(Ws.formatAuthorizationMessage(credential))
1001
- const receipt = await pendingReceipt
1002
- activeSocket.close()
1003
- currentSocket.closeReadyReceipt = null
1004
- return receipt
1005
- } finally {
1006
- currentSocket.expectedCloseAmount = null
1007
- }
1008
- }