mppx 0.8.14 → 0.8.17

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 (507) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/Challenge.d.ts.map +1 -1
  3. package/dist/Challenge.js +40 -35
  4. package/dist/Challenge.js.map +1 -1
  5. package/dist/Constants.d.ts +17 -17
  6. package/dist/Constants.d.ts.map +1 -1
  7. package/dist/Credential.d.ts.map +1 -1
  8. package/dist/Errors.d.ts +3 -3
  9. package/dist/Errors.d.ts.map +1 -1
  10. package/dist/Errors.js.map +1 -1
  11. package/dist/Method.d.ts +35 -5
  12. package/dist/Method.d.ts.map +1 -1
  13. package/dist/Method.js +7 -22
  14. package/dist/Method.js.map +1 -1
  15. package/dist/Store.d.ts +19 -0
  16. package/dist/Store.d.ts.map +1 -1
  17. package/dist/Store.js +43 -0
  18. package/dist/Store.js.map +1 -1
  19. package/dist/attestation/Client.d.ts +17 -0
  20. package/dist/attestation/Client.d.ts.map +1 -0
  21. package/dist/attestation/Client.js +28 -0
  22. package/dist/attestation/Client.js.map +1 -0
  23. package/dist/attestation/Constants.d.ts +15 -0
  24. package/dist/attestation/Constants.d.ts.map +1 -0
  25. package/dist/attestation/Constants.js +15 -0
  26. package/dist/attestation/Constants.js.map +1 -0
  27. package/dist/attestation/Server.d.ts +4 -0
  28. package/dist/attestation/Server.d.ts.map +1 -0
  29. package/dist/attestation/Server.js +8 -0
  30. package/dist/attestation/Server.js.map +1 -0
  31. package/dist/attestation/Types.d.ts +76 -0
  32. package/dist/attestation/Types.d.ts.map +1 -0
  33. package/dist/attestation/Types.js +2 -0
  34. package/dist/attestation/Types.js.map +1 -0
  35. package/dist/attestation/index.d.ts +6 -0
  36. package/dist/attestation/index.d.ts.map +1 -0
  37. package/dist/attestation/index.js +6 -0
  38. package/dist/attestation/index.js.map +1 -0
  39. package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
  40. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +1 -0
  41. package/dist/attestation/internal/HttpMessageSignature.js +320 -0
  42. package/dist/attestation/internal/HttpMessageSignature.js.map +1 -0
  43. package/dist/attestation/internal/SigningContext.d.ts +4 -0
  44. package/dist/attestation/internal/SigningContext.d.ts.map +1 -0
  45. package/dist/attestation/internal/SigningContext.js +11 -0
  46. package/dist/attestation/internal/SigningContext.js.map +1 -0
  47. package/dist/cli/account.d.ts +14 -14
  48. package/dist/cli/account.d.ts.map +1 -1
  49. package/dist/cli/cli.d.ts +6 -6
  50. package/dist/cli/cli.d.ts.map +1 -1
  51. package/dist/cli/cli.js +1 -0
  52. package/dist/cli/cli.js.map +1 -1
  53. package/dist/cli/plugins/tempo.js.map +1 -1
  54. package/dist/cli/sessions/commands.d.ts +4 -4
  55. package/dist/cli/sessions/commands.d.ts.map +1 -1
  56. package/dist/cli/sessions/commands.js.map +1 -1
  57. package/dist/cli/sessions/store.d.ts.map +1 -1
  58. package/dist/cli/sessions/store.js.map +1 -1
  59. package/dist/cli/utils.d.ts +1 -1
  60. package/dist/cli/utils.d.ts.map +1 -1
  61. package/dist/cli/utils.js.map +1 -1
  62. package/dist/cli/validate/discovery.js.map +1 -1
  63. package/dist/cli/validate/index.d.ts +3 -3
  64. package/dist/cli/validate/index.d.ts.map +1 -1
  65. package/dist/cli/validate/payment.d.ts.map +1 -1
  66. package/dist/cli/validate/payment.js +18 -4
  67. package/dist/cli/validate/payment.js.map +1 -1
  68. package/dist/client/Mppx.d.ts +3 -0
  69. package/dist/client/Mppx.d.ts.map +1 -1
  70. package/dist/client/Mppx.js +13 -5
  71. package/dist/client/Mppx.js.map +1 -1
  72. package/dist/client/Transport.d.ts +3 -5
  73. package/dist/client/Transport.d.ts.map +1 -1
  74. package/dist/client/Transport.js +1 -17
  75. package/dist/client/Transport.js.map +1 -1
  76. package/dist/client/internal/Fetch.d.ts.map +1 -1
  77. package/dist/client/internal/Fetch.js +92 -13
  78. package/dist/client/internal/Fetch.js.map +1 -1
  79. package/dist/client/internal/MethodChallenge.d.ts +2 -0
  80. package/dist/client/internal/MethodChallenge.d.ts.map +1 -1
  81. package/dist/client/internal/MethodChallenge.js +4 -0
  82. package/dist/client/internal/MethodChallenge.js.map +1 -1
  83. package/dist/client/internal/MethodResponse.d.ts +15 -0
  84. package/dist/client/internal/MethodResponse.d.ts.map +1 -1
  85. package/dist/client/internal/MethodResponse.js +10 -0
  86. package/dist/client/internal/MethodResponse.js.map +1 -1
  87. package/dist/client/node.js.map +1 -1
  88. package/dist/discovery/OpenApi.d.ts +3 -5
  89. package/dist/discovery/OpenApi.d.ts.map +1 -1
  90. package/dist/discovery/OpenApi.js +13 -34
  91. package/dist/discovery/OpenApi.js.map +1 -1
  92. package/dist/discovery/internal/Metadata.d.ts +20 -0
  93. package/dist/discovery/internal/Metadata.d.ts.map +1 -0
  94. package/dist/discovery/internal/Metadata.js +36 -0
  95. package/dist/discovery/internal/Metadata.js.map +1 -0
  96. package/dist/evm/Methods.d.ts +11 -11
  97. package/dist/evm/Methods.d.ts.map +1 -1
  98. package/dist/evm/Types.d.ts +17 -17
  99. package/dist/evm/Types.d.ts.map +1 -1
  100. package/dist/evm/client/Charge.d.ts +11 -11
  101. package/dist/evm/client/Methods.d.ts +11 -11
  102. package/dist/evm/server/Charge.d.ts +1 -1
  103. package/dist/evm/server/Charge.d.ts.map +1 -1
  104. package/dist/evm/server/Charge.js +2 -0
  105. package/dist/evm/server/Charge.js.map +1 -1
  106. package/dist/evm/server/Methods.d.ts +11 -11
  107. package/dist/internal/HeaderCodec.d.ts +2 -2
  108. package/dist/internal/HeaderCodec.d.ts.map +1 -1
  109. package/dist/internal/types.d.ts +6 -0
  110. package/dist/internal/types.d.ts.map +1 -1
  111. package/dist/middlewares/elysia.js.map +1 -1
  112. package/dist/middlewares/express.js.map +1 -1
  113. package/dist/middlewares/hono.js.map +1 -1
  114. package/dist/middlewares/nextjs.js.map +1 -1
  115. package/dist/proxy/Proxy.d.ts +2 -0
  116. package/dist/proxy/Proxy.d.ts.map +1 -1
  117. package/dist/proxy/Proxy.js +117 -9
  118. package/dist/proxy/Proxy.js.map +1 -1
  119. package/dist/proxy/Service.d.ts +36 -1
  120. package/dist/proxy/Service.d.ts.map +1 -1
  121. package/dist/proxy/Service.js +9 -8
  122. package/dist/proxy/Service.js.map +1 -1
  123. package/dist/proxy/services/anthropic.d.ts.map +1 -1
  124. package/dist/proxy/services/anthropic.js +1 -0
  125. package/dist/proxy/services/anthropic.js.map +1 -1
  126. package/dist/proxy/services/openai.d.ts.map +1 -1
  127. package/dist/proxy/services/openai.js +1 -0
  128. package/dist/proxy/services/openai.js.map +1 -1
  129. package/dist/proxy/services/stripe.d.ts.map +1 -1
  130. package/dist/proxy/services/stripe.js +1 -0
  131. package/dist/proxy/services/stripe.js.map +1 -1
  132. package/dist/server/Mppx.d.ts +75 -13
  133. package/dist/server/Mppx.d.ts.map +1 -1
  134. package/dist/server/Mppx.js +201 -23
  135. package/dist/server/Mppx.js.map +1 -1
  136. package/dist/server/internal/html/config.d.ts +9 -9
  137. package/dist/server/internal/html/config.d.ts.map +1 -1
  138. package/dist/server/internal/html/constants.d.ts +17 -17
  139. package/dist/server/internal/html/constants.d.ts.map +1 -1
  140. package/dist/stripe/Methods.d.ts +10 -10
  141. package/dist/stripe/Methods.d.ts.map +1 -1
  142. package/dist/stripe/client/Charge.d.ts +10 -10
  143. package/dist/stripe/client/Methods.d.ts +10 -10
  144. package/dist/stripe/internal/constants.d.ts +1 -1
  145. package/dist/stripe/internal/constants.js +1 -1
  146. package/dist/stripe/internal/types.d.ts +1 -0
  147. package/dist/stripe/internal/types.d.ts.map +1 -1
  148. package/dist/stripe/server/Charge.d.ts +11 -11
  149. package/dist/stripe/server/Charge.d.ts.map +1 -1
  150. package/dist/stripe/server/Charge.js +49 -1
  151. package/dist/stripe/server/Charge.js.map +1 -1
  152. package/dist/stripe/server/Methods.d.ts +137 -48
  153. package/dist/stripe/server/Methods.d.ts.map +1 -1
  154. package/dist/stripe/server/Methods.js +259 -4
  155. package/dist/stripe/server/Methods.js.map +1 -1
  156. package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
  157. package/dist/stripe/server/internal/deposit-address.d.ts.map +1 -0
  158. package/dist/stripe/server/internal/deposit-address.js +28 -0
  159. package/dist/stripe/server/internal/deposit-address.js.map +1 -0
  160. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  161. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  162. package/dist/stripe/server/internal/html.gen.js +1 -1
  163. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  164. package/dist/stripe/server/internal/record-payment.d.ts +15 -0
  165. package/dist/stripe/server/internal/record-payment.d.ts.map +1 -0
  166. package/dist/stripe/server/internal/record-payment.js +42 -0
  167. package/dist/stripe/server/internal/record-payment.js.map +1 -0
  168. package/dist/stripe/server/internal/request.d.ts +25 -0
  169. package/dist/stripe/server/internal/request.d.ts.map +1 -0
  170. package/dist/stripe/server/internal/request.js +29 -0
  171. package/dist/stripe/server/internal/request.js.map +1 -0
  172. package/dist/tap/Constants.d.ts +28 -0
  173. package/dist/tap/Constants.d.ts.map +1 -0
  174. package/dist/tap/Constants.js +32 -0
  175. package/dist/tap/Constants.js.map +1 -0
  176. package/dist/tap/Types.d.ts +11 -0
  177. package/dist/tap/Types.d.ts.map +1 -0
  178. package/dist/tap/Types.js +2 -0
  179. package/dist/tap/Types.js.map +1 -0
  180. package/dist/tap/client/index.d.ts +26 -0
  181. package/dist/tap/client/index.d.ts.map +1 -0
  182. package/dist/tap/client/index.js +33 -0
  183. package/dist/tap/client/index.js.map +1 -0
  184. package/dist/tap/index.d.ts +5 -0
  185. package/dist/tap/index.d.ts.map +1 -0
  186. package/dist/tap/index.js +5 -0
  187. package/dist/tap/index.js.map +1 -0
  188. package/dist/tap/server/index.d.ts +20 -0
  189. package/dist/tap/server/index.d.ts.map +1 -0
  190. package/dist/tap/server/index.js +36 -0
  191. package/dist/tap/server/index.js.map +1 -0
  192. package/dist/tempo/Attribution.d.ts +1 -1
  193. package/dist/tempo/Methods.d.ts +60 -60
  194. package/dist/tempo/Methods.d.ts.map +1 -1
  195. package/dist/tempo/Proof.d.ts +16 -16
  196. package/dist/tempo/client/Charge.d.ts +19 -19
  197. package/dist/tempo/client/Charge.d.ts.map +1 -1
  198. package/dist/tempo/client/Charge.js +1 -7
  199. package/dist/tempo/client/Charge.js.map +1 -1
  200. package/dist/tempo/client/Methods.d.ts +38 -38
  201. package/dist/tempo/client/Methods.js.map +1 -1
  202. package/dist/tempo/client/Subscription.d.ts +23 -23
  203. package/dist/tempo/client/Subscription.js.map +1 -1
  204. package/dist/tempo/internal/address.d.ts +2 -1
  205. package/dist/tempo/internal/address.d.ts.map +1 -1
  206. package/dist/tempo/internal/address.js +3 -1
  207. package/dist/tempo/internal/address.js.map +1 -1
  208. package/dist/tempo/internal/auto-swap.d.ts.map +1 -1
  209. package/dist/tempo/internal/auto-swap.js +4 -19
  210. package/dist/tempo/internal/auto-swap.js.map +1 -1
  211. package/dist/tempo/internal/defaults.d.ts +6 -6
  212. package/dist/tempo/internal/defaults.d.ts.map +1 -1
  213. package/dist/tempo/internal/fee-payer.d.ts +12 -12
  214. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  215. package/dist/tempo/internal/fee-payer.js.map +1 -1
  216. package/dist/tempo/internal/proof.d.ts +17 -17
  217. package/dist/tempo/internal/proof.d.ts.map +1 -1
  218. package/dist/tempo/legacy/client/Session.d.ts +20 -20
  219. package/dist/tempo/legacy/client/Session.js.map +1 -1
  220. package/dist/tempo/legacy/client/SessionManager.js.map +1 -1
  221. package/dist/tempo/legacy/index.d.ts +1 -3
  222. package/dist/tempo/legacy/index.d.ts.map +1 -1
  223. package/dist/tempo/legacy/index.js +1 -3
  224. package/dist/tempo/legacy/index.js.map +1 -1
  225. package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
  226. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +1 -1
  227. package/dist/tempo/server/Charge.d.ts +34 -12
  228. package/dist/tempo/server/Charge.d.ts.map +1 -1
  229. package/dist/tempo/server/Charge.js +44 -39
  230. package/dist/tempo/server/Charge.js.map +1 -1
  231. package/dist/tempo/server/Methods.d.ts +37 -52
  232. package/dist/tempo/server/Methods.d.ts.map +1 -1
  233. package/dist/tempo/server/Methods.js +0 -14
  234. package/dist/tempo/server/Methods.js.map +1 -1
  235. package/dist/tempo/server/Relay.d.ts +14 -5
  236. package/dist/tempo/server/Relay.d.ts.map +1 -1
  237. package/dist/tempo/server/Relay.js +6 -4
  238. package/dist/tempo/server/Relay.js.map +1 -1
  239. package/dist/tempo/server/SponsorBudget.d.ts.map +1 -1
  240. package/dist/tempo/server/SponsorBudget.js +7 -1
  241. package/dist/tempo/server/SponsorBudget.js.map +1 -1
  242. package/dist/tempo/server/Subscription.d.ts +25 -25
  243. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  244. package/dist/tempo/server/Subscription.js +2 -0
  245. package/dist/tempo/server/Subscription.js.map +1 -1
  246. package/dist/tempo/server/index.d.ts +1 -1
  247. package/dist/tempo/server/index.d.ts.map +1 -1
  248. package/dist/tempo/server/index.js +1 -1
  249. package/dist/tempo/server/index.js.map +1 -1
  250. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  251. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  252. package/dist/tempo/server/internal/html.gen.js +1 -1
  253. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  254. package/dist/tempo/server/internal/transport.d.ts +2 -0
  255. package/dist/tempo/server/internal/transport.d.ts.map +1 -1
  256. package/dist/tempo/server/internal/transport.js +9 -2
  257. package/dist/tempo/server/internal/transport.js.map +1 -1
  258. package/dist/tempo/session/client/ChannelOps.js.map +1 -1
  259. package/dist/tempo/session/client/CredentialState.d.ts +1 -1
  260. package/dist/tempo/session/client/CredentialState.js.map +1 -1
  261. package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -1
  262. package/dist/tempo/session/client/Runtime.js.map +1 -1
  263. package/dist/tempo/session/client/Session.d.ts +19 -19
  264. package/dist/tempo/session/client/Session.d.ts.map +1 -1
  265. package/dist/tempo/session/client/Session.js +128 -14
  266. package/dist/tempo/session/client/Session.js.map +1 -1
  267. package/dist/tempo/session/client/SessionManager.d.ts.map +1 -1
  268. package/dist/tempo/session/client/SessionManager.js +62 -20
  269. package/dist/tempo/session/client/SessionManager.js.map +1 -1
  270. package/dist/tempo/session/client/Transports.d.ts +9 -1
  271. package/dist/tempo/session/client/Transports.d.ts.map +1 -1
  272. package/dist/tempo/session/client/Transports.js +36 -13
  273. package/dist/tempo/session/client/Transports.js.map +1 -1
  274. package/dist/tempo/session/precompile/Chain.d.ts +27 -0
  275. package/dist/tempo/session/precompile/Chain.d.ts.map +1 -1
  276. package/dist/tempo/session/precompile/Chain.js +68 -7
  277. package/dist/tempo/session/precompile/Chain.js.map +1 -1
  278. package/dist/tempo/session/precompile/Protocol.js.map +1 -1
  279. package/dist/tempo/session/precompile/Voucher.d.ts +4 -4
  280. package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -1
  281. package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
  282. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -1
  283. package/dist/tempo/session/server/ChannelStore.d.ts +9 -0
  284. package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -1
  285. package/dist/tempo/session/server/ChannelStore.js +16 -8
  286. package/dist/tempo/session/server/ChannelStore.js.map +1 -1
  287. package/dist/tempo/session/server/CredentialVerification.d.ts +30 -13
  288. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -1
  289. package/dist/tempo/session/server/CredentialVerification.js +207 -13
  290. package/dist/tempo/session/server/CredentialVerification.js.map +1 -1
  291. package/dist/tempo/session/server/MeteredStream.d.ts +3 -0
  292. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -1
  293. package/dist/tempo/session/server/MeteredStream.js +3 -1
  294. package/dist/tempo/session/server/MeteredStream.js.map +1 -1
  295. package/dist/tempo/session/server/Session.d.ts +32 -21
  296. package/dist/tempo/session/server/Session.d.ts.map +1 -1
  297. package/dist/tempo/session/server/Session.js +116 -53
  298. package/dist/tempo/session/server/Session.js.map +1 -1
  299. package/dist/tempo/session/server/Sse.d.ts +3 -1
  300. package/dist/tempo/session/server/Sse.d.ts.map +1 -1
  301. package/dist/tempo/session/server/Sse.js +2 -1
  302. package/dist/tempo/session/server/Sse.js.map +1 -1
  303. package/dist/tempo/session/server/Transports.d.ts +1 -1
  304. package/dist/tempo/session/server/Transports.d.ts.map +1 -1
  305. package/dist/tempo/session/server/Transports.js +1 -0
  306. package/dist/tempo/session/server/Transports.js.map +1 -1
  307. package/dist/tempo/session/server/Ws.d.ts +6 -1
  308. package/dist/tempo/session/server/Ws.d.ts.map +1 -1
  309. package/dist/tempo/session/server/Ws.js +4 -0
  310. package/dist/tempo/session/server/Ws.js.map +1 -1
  311. package/dist/tempo/subscription/KeyAuthorization.d.ts +38 -866
  312. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
  313. package/dist/tempo/subscription/KeyAuthorization.js +14 -3
  314. package/dist/tempo/subscription/KeyAuthorization.js.map +1 -1
  315. package/dist/viem/Account.d.ts.map +1 -1
  316. package/dist/viem/Account.js.map +1 -1
  317. package/dist/viem/Client.d.ts.map +1 -1
  318. package/dist/viem/Client.js +6 -1
  319. package/dist/viem/Client.js.map +1 -1
  320. package/dist/web-bot-auth/Constants.d.ts +20 -0
  321. package/dist/web-bot-auth/Constants.d.ts.map +1 -0
  322. package/dist/web-bot-auth/Constants.js +24 -0
  323. package/dist/web-bot-auth/Constants.js.map +1 -0
  324. package/dist/web-bot-auth/Types.d.ts +10 -0
  325. package/dist/web-bot-auth/Types.d.ts.map +1 -0
  326. package/dist/web-bot-auth/Types.js +2 -0
  327. package/dist/web-bot-auth/Types.js.map +1 -0
  328. package/dist/web-bot-auth/client/index.d.ts +29 -0
  329. package/dist/web-bot-auth/client/index.d.ts.map +1 -0
  330. package/dist/web-bot-auth/client/index.js +64 -0
  331. package/dist/web-bot-auth/client/index.js.map +1 -0
  332. package/dist/web-bot-auth/index.d.ts +7 -0
  333. package/dist/web-bot-auth/index.d.ts.map +1 -0
  334. package/dist/web-bot-auth/index.js +7 -0
  335. package/dist/web-bot-auth/index.js.map +1 -0
  336. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
  337. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +1 -0
  338. package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
  339. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +1 -0
  340. package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
  341. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +1 -0
  342. package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
  343. package/dist/web-bot-auth/internal/SignatureAgent.js.map +1 -0
  344. package/dist/web-bot-auth/server/index.d.ts +35 -0
  345. package/dist/web-bot-auth/server/index.d.ts.map +1 -0
  346. package/dist/web-bot-auth/server/index.js +88 -0
  347. package/dist/web-bot-auth/server/index.js.map +1 -0
  348. package/dist/x402/Assets.d.ts.map +1 -1
  349. package/dist/x402/Types.d.ts +6 -6
  350. package/dist/x402/Types.d.ts.map +1 -1
  351. package/dist/x402/server/EvmCharge.d.ts.map +1 -1
  352. package/dist/x402/server/EvmCharge.js +32 -20
  353. package/dist/x402/server/EvmCharge.js.map +1 -1
  354. package/package.json +20 -4
  355. package/src/Challenge.fuzz.test.ts +80 -47
  356. package/src/Challenge.test.ts +65 -0
  357. package/src/Challenge.ts +39 -35
  358. package/src/Method.ts +82 -68
  359. package/src/Store.test-d.ts +16 -0
  360. package/src/Store.test.ts +50 -0
  361. package/src/Store.ts +68 -0
  362. package/src/attestation/Attestation.integration.test.ts +208 -0
  363. package/src/attestation/Client.test.ts +83 -0
  364. package/src/attestation/Client.ts +34 -0
  365. package/src/attestation/Constants.ts +15 -0
  366. package/src/attestation/Server.test.ts +60 -0
  367. package/src/attestation/Server.ts +12 -0
  368. package/src/attestation/Types.test-d.ts +54 -0
  369. package/src/attestation/Types.ts +77 -0
  370. package/src/attestation/index.ts +5 -0
  371. package/src/attestation/internal/HttpMessageSignature.test.ts +101 -0
  372. package/src/attestation/internal/HttpMessageSignature.ts +429 -0
  373. package/src/attestation/internal/SigningContext.ts +13 -0
  374. package/src/bin.js +2 -0
  375. package/src/cli/cli.ts +1 -0
  376. package/src/cli/validate/payment.ts +18 -4
  377. package/src/cli/validate.test.ts +16 -0
  378. package/src/client/Mppx.test-d.ts +17 -0
  379. package/src/client/Mppx.test.ts +14 -14
  380. package/src/client/Mppx.ts +25 -4
  381. package/src/client/Transport.test.ts +12 -45
  382. package/src/client/Transport.ts +3 -24
  383. package/src/client/internal/Fetch.test.ts +77 -0
  384. package/src/client/internal/Fetch.ts +112 -14
  385. package/src/client/internal/MethodChallenge.ts +5 -0
  386. package/src/client/internal/MethodResponse.ts +28 -0
  387. package/src/discovery/OpenApi.test.ts +170 -0
  388. package/src/discovery/OpenApi.ts +16 -48
  389. package/src/discovery/internal/Metadata.ts +51 -0
  390. package/src/evm/server/Charge.ts +6 -1
  391. package/src/internal/AcceptPayment.test.ts +12 -8
  392. package/src/internal/types.ts +9 -0
  393. package/src/mcp/client/McpClient.integration.test.ts +19 -32
  394. package/src/middlewares/elysia.test.ts +2 -12
  395. package/src/middlewares/express.test.ts +2 -12
  396. package/src/middlewares/hono.test.ts +6 -9
  397. package/src/middlewares/nextjs.test.ts +2 -12
  398. package/src/proxy/Proxy.test.ts +26 -19
  399. package/src/proxy/Proxy.ts +147 -9
  400. package/src/proxy/Proxy.upstreamError.test.ts +364 -0
  401. package/src/proxy/Service.test.ts +73 -3
  402. package/src/proxy/Service.ts +50 -23
  403. package/src/proxy/services/anthropic.ts +1 -0
  404. package/src/proxy/services/hooks.test-d.ts +14 -0
  405. package/src/proxy/services/hooks.test.ts +44 -0
  406. package/src/proxy/services/openai.ts +1 -0
  407. package/src/proxy/services/stripe.ts +1 -0
  408. package/src/server/Methods.test-d.ts +88 -0
  409. package/src/server/Methods.test.ts +69 -0
  410. package/src/server/Mppx.test-d.ts +141 -7
  411. package/src/server/Mppx.test.ts +1017 -119
  412. package/src/server/Mppx.ts +350 -54
  413. package/src/stripe/internal/constants.ts +1 -1
  414. package/src/stripe/internal/types.ts +1 -0
  415. package/src/stripe/server/Charge.test-d.ts +16 -1
  416. package/src/stripe/server/Charge.test.ts +79 -0
  417. package/src/stripe/server/Charge.ts +54 -1
  418. package/src/stripe/server/Methods.test-d.ts +157 -0
  419. package/src/stripe/server/Methods.test.ts +403 -0
  420. package/src/stripe/server/Methods.ts +423 -6
  421. package/src/stripe/server/internal/deposit-address.ts +57 -0
  422. package/src/stripe/server/internal/html/node_modules/.bin/mppx +3 -3
  423. package/src/stripe/server/internal/html/package.json +1 -1
  424. package/src/stripe/server/internal/html.gen.ts +1 -1
  425. package/src/stripe/server/internal/record-payment.ts +66 -0
  426. package/src/stripe/server/internal/request.ts +49 -0
  427. package/src/tap/Constants.ts +32 -0
  428. package/src/tap/Tap.test.ts +125 -0
  429. package/src/tap/Types.ts +11 -0
  430. package/src/tap/client/index.ts +54 -0
  431. package/src/tap/index.ts +4 -0
  432. package/src/tap/server/index.ts +48 -0
  433. package/src/tempo/PublicExports.test-d.ts +3 -3
  434. package/src/tempo/client/Charge.ts +1 -19
  435. package/src/tempo/internal/address.test.ts +42 -0
  436. package/src/tempo/internal/address.ts +3 -3
  437. package/src/tempo/internal/auto-swap.test.ts +4 -4
  438. package/src/tempo/internal/auto-swap.ts +7 -50
  439. package/src/tempo/legacy/README.md +5 -5
  440. package/src/tempo/legacy/index.ts +1 -3
  441. package/src/tempo/server/AtomicStore.test-d.ts +13 -0
  442. package/src/tempo/server/Charge.test.ts +19 -84
  443. package/src/tempo/server/Charge.ts +92 -56
  444. package/src/tempo/server/Methods.ts +0 -20
  445. package/src/tempo/server/Relay.test.ts +161 -7
  446. package/src/tempo/server/Relay.ts +15 -6
  447. package/src/tempo/server/SponsorBudget.test.ts +29 -0
  448. package/src/tempo/server/SponsorBudget.ts +7 -1
  449. package/src/tempo/server/Subscription.ts +4 -1
  450. package/src/tempo/server/index.ts +1 -1
  451. package/src/tempo/server/internal/html/node_modules/.bin/mppx +3 -3
  452. package/src/tempo/server/internal/html/package.json +1 -1
  453. package/src/tempo/server/internal/html.gen.ts +1 -1
  454. package/src/tempo/server/internal/transport.test.ts +22 -3
  455. package/src/tempo/server/internal/transport.ts +15 -3
  456. package/src/tempo/session/README.md +119 -0
  457. package/src/tempo/session/client/Session.test.ts +299 -33
  458. package/src/tempo/session/client/Session.ts +152 -16
  459. package/src/tempo/session/client/SessionManager.test.ts +216 -9
  460. package/src/tempo/session/client/SessionManager.ts +63 -17
  461. package/src/tempo/session/client/Transports.test.ts +22 -0
  462. package/src/tempo/session/client/Transports.ts +58 -22
  463. package/src/tempo/session/precompile/Chain.ts +131 -11
  464. package/src/tempo/session/server/ChannelStore.ts +33 -12
  465. package/src/tempo/session/server/CredentialVerification.test.ts +4 -4
  466. package/src/tempo/session/server/CredentialVerification.ts +340 -28
  467. package/src/tempo/session/server/MeteredStream.ts +5 -1
  468. package/src/tempo/session/server/Session.test.ts +483 -36
  469. package/src/tempo/session/server/Session.ts +159 -60
  470. package/src/tempo/session/server/Sse.test.ts +77 -0
  471. package/src/tempo/session/server/Sse.ts +8 -1
  472. package/src/tempo/session/server/Transports.ts +2 -1
  473. package/src/tempo/session/server/Ws.test.ts +171 -0
  474. package/src/tempo/session/server/Ws.ts +10 -1
  475. package/src/tempo/subscription/KeyAuthorization.test.ts +70 -1
  476. package/src/tempo/subscription/KeyAuthorization.ts +14 -3
  477. package/src/viem/Client.test.ts +18 -1
  478. package/src/viem/Client.ts +7 -1
  479. package/src/web-bot-auth/Constants.ts +24 -0
  480. package/src/web-bot-auth/Types.ts +9 -0
  481. package/src/web-bot-auth/WebBotAuth.test.ts +182 -0
  482. package/src/web-bot-auth/client/index.ts +84 -0
  483. package/src/web-bot-auth/index.ts +6 -0
  484. package/src/web-bot-auth/internal/JwkThumbprint.ts +21 -0
  485. package/src/web-bot-auth/internal/SignatureAgent.ts +18 -0
  486. package/src/web-bot-auth/server/index.ts +113 -0
  487. package/src/x402/Exact.e2e.test.ts +121 -81
  488. package/src/x402/Exact.localnet.test.ts +1 -1
  489. package/src/x402/server/EvmCharge.ts +35 -19
  490. package/dist/tempo/legacy/server/Session.d.ts +0 -208
  491. package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
  492. package/dist/tempo/legacy/server/Session.js +0 -698
  493. package/dist/tempo/legacy/server/Session.js.map +0 -1
  494. package/dist/tempo/legacy/server/index.d.ts +0 -5
  495. package/dist/tempo/legacy/server/index.d.ts.map +0 -1
  496. package/dist/tempo/legacy/server/index.js +0 -5
  497. package/dist/tempo/legacy/server/index.js.map +0 -1
  498. package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
  499. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
  500. package/dist/tempo/legacy/session/ChannelStore.js +0 -6
  501. package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
  502. package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
  503. package/src/tempo/legacy/server/Session.test.ts +0 -6370
  504. package/src/tempo/legacy/server/Session.ts +0 -1024
  505. package/src/tempo/legacy/server/index.ts +0 -4
  506. package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
  507. package/src/tempo/legacy/session/ChannelStore.ts +0 -39
@@ -4,6 +4,7 @@ import { describe, expect, test } from 'vp/test'
4
4
  import * as Http from '~test/Http.js'
5
5
  import { accounts, asset, client } from '~test/tempo/viem.js'
6
6
 
7
+ import * as evm_Types from '../evm/Types.js'
7
8
  import * as Header from './Header.js'
8
9
  import * as RouteBinding from './internal/RouteBinding.js'
9
10
  import * as Types from './Types.js'
@@ -157,22 +158,8 @@ describe('x402 exact e2e', () => {
157
158
  const paymentRequired = Header.decodePaymentRequired(
158
159
  routeAChallenge.challenge.headers.get(Types.paymentRequiredHeader)!,
159
160
  )
160
- const accepted = paymentRequired.accepts[0]!
161
- const paymentSignature = Header.encodePaymentSignature({
162
- accepted,
163
- payload: {
164
- authorization: {
165
- from: accounts[0].address,
166
- nonce: `0x${'1'.repeat(64)}`,
167
- to: accepted.payTo as `0x${string}`,
168
- validAfter: '0',
169
- validBefore: '9999999999',
170
- value: accepted.amount,
171
- },
172
- signature: `0x${'2'.repeat(130)}`,
173
- },
174
- resource: paymentRequired.resource,
175
- x402Version: 2,
161
+ const paymentSignature = await standardPaymentSignature(paymentRequired, {
162
+ nonce: `0x${'1'.repeat(64)}`,
176
163
  })
177
164
 
178
165
  const result = await route(
@@ -185,7 +172,7 @@ describe('x402 exact e2e', () => {
185
172
  expect(verifyCalls).toBe(0)
186
173
  })
187
174
 
188
- test('rejects x402 route extensions with extra binding fields', async () => {
175
+ test('rejects invalid x402 route bindings', async () => {
189
176
  let verifyCalls = 0
190
177
  const payment = ServerMppx.create({
191
178
  methods: [
@@ -223,49 +210,54 @@ describe('x402 exact e2e', () => {
223
210
  const accepted = paymentRequired.accepts[0]!
224
211
  const mppxExtension = paymentRequired.extensions!.mppx
225
212
  if (!mppxExtension) throw new Error()
226
- const extensions: Types.Extensions = {
213
+ const extensionsWithExtra: Types.Extensions = {
227
214
  ...paymentRequired.extensions!,
228
215
  mppx: {
229
216
  schema: mppxExtension.schema,
230
217
  info: {
231
218
  ...mppxExtension.info,
232
219
  extra: 'not allowed',
220
+ nonce: '1'.repeat(64),
233
221
  },
234
222
  },
235
223
  }
236
- const paymentSignature = Header.encodePaymentSignature({
237
- accepted,
238
- extensions,
239
- payload: {
240
- authorization: {
241
- from: accounts[0].address,
242
- nonce: RouteBinding.nonce({
243
- accepted,
244
- extensions,
245
- resource: paymentRequired.resource,
246
- }),
247
- to: accepted.payTo as `0x${string}`,
248
- validAfter: '0',
249
- validBefore: '9999999999',
250
- value: accepted.amount,
224
+ const extensionsWithNonce: Types.Extensions = {
225
+ ...paymentRequired.extensions!,
226
+ mppx: {
227
+ schema: mppxExtension.schema,
228
+ info: {
229
+ ...mppxExtension.info,
230
+ nonce: 'client-salt',
251
231
  },
252
- signature: `0x${'2'.repeat(130)}`,
253
232
  },
254
- resource: paymentRequired.resource,
255
- x402Version: 2,
256
- })
257
-
258
- const result = await route(
259
- new Request('https://example.com/a', {
260
- headers: { [Types.paymentSignatureHeader]: paymentSignature },
233
+ }
234
+ const paymentSignatures = await Promise.all([
235
+ standardPaymentSignature(paymentRequired, {
236
+ extensions: extensionsWithExtra,
237
+ nonce: RouteBinding.nonce({
238
+ accepted,
239
+ extensions: extensionsWithExtra,
240
+ resource: paymentRequired.resource,
241
+ }),
261
242
  }),
262
- )
243
+ standardPaymentSignature(paymentRequired, {
244
+ extensions: extensionsWithNonce,
245
+ nonce: `0x${'5'.repeat(64)}`,
246
+ }),
247
+ ])
263
248
 
264
- expect(result.status).toBe(402)
249
+ for (const paymentSignature of paymentSignatures) {
250
+ const result = await route(
251
+ new Request('https://example.com/a', {
252
+ headers: { [Types.paymentSignatureHeader]: paymentSignature },
253
+ }),
254
+ )
255
+ expect(result.status).toBe(402)
256
+ }
265
257
  expect(verifyCalls).toBe(0)
266
258
  })
267
259
 
268
- test('does not advertise x402 for body-bearing requests without a digest', async () => {
260
+ test('accepts standard x402 payments for body-bearing requests without a digest', async () => {
269
261
  let verifyCalls = 0
270
262
  const payment = ServerMppx.create({
271
263
  methods: [
@@ -292,56 +284,57 @@ describe('x402 exact e2e', () => {
292
284
  secretKey,
293
285
  })
294
286
  const route = payment.evm.charge({ amount: '0.01' })
287
+ const body = JSON.stringify({ a: 1 })
295
288
 
296
- const result = await route(
289
+ const first = await route(
297
290
  new Request('https://example.com/body', {
298
- body: JSON.stringify({ a: 1 }),
291
+ body,
299
292
  method: 'POST',
300
293
  }),
301
294
  )
302
295
 
303
- expect(result.status).toBe(402)
304
- if (result.status !== 402) throw new Error()
305
- expect(result.challenge.headers.has('WWW-Authenticate')).toBe(true)
306
- expect(result.challenge.headers.has(Types.paymentRequiredHeader)).toBe(false)
307
-
308
- const getChallenge = await route(new Request('https://example.com/body'))
309
- expect(getChallenge.status).toBe(402)
310
- if (getChallenge.status !== 402) throw new Error()
296
+ expect(first.status).toBe(402)
297
+ if (first.status !== 402) throw new Error()
298
+ expect(first.challenge.headers.has('WWW-Authenticate')).toBe(true)
299
+ expect(first.challenge.headers.has(Types.paymentRequiredHeader)).toBe(true)
311
300
  const paymentRequired = Header.decodePaymentRequired(
312
- getChallenge.challenge.headers.get(Types.paymentRequiredHeader)!,
301
+ first.challenge.headers.get(Types.paymentRequiredHeader)!,
313
302
  )
314
- const accepted = paymentRequired.accepts[0]!
315
- const paymentSignature = Header.encodePaymentSignature({
316
- accepted,
317
- extensions: paymentRequired.extensions,
318
- payload: {
319
- authorization: {
320
- from: accounts[0].address,
321
- nonce: RouteBinding.nonce({
322
- accepted,
323
- extensions: paymentRequired.extensions!,
324
- resource: paymentRequired.resource,
325
- }),
326
- to: accepted.payTo as `0x${string}`,
327
- validAfter: '0',
328
- validBefore: '9999999999',
329
- value: accepted.amount,
330
- },
331
- signature: `0x${'2'.repeat(130)}`,
332
- },
333
- resource: paymentRequired.resource,
334
- x402Version: 2,
303
+
304
+ const paymentSignatures = await Promise.all([
305
+ standardPaymentSignature(paymentRequired, {
306
+ nonce: `0x${'3'.repeat(64)}`,
307
+ }),
308
+ standardPaymentSignature(paymentRequired, {
309
+ extensions: paymentRequired.extensions,
310
+ nonce: `0x${'4'.repeat(64)}`,
311
+ }),
312
+ ])
313
+ for (const paymentSignature of paymentSignatures) {
314
+ const result = await route(
315
+ new Request('https://example.com/body', {
316
+ body,
317
+ headers: { [Types.paymentSignatureHeader]: paymentSignature },
318
+ method: 'POST',
319
+ }),
320
+ )
321
+ expect(result.status).toBe(200)
322
+ }
323
+ expect(verifyCalls).toBe(2)
324
+
325
+ const scopedRoute = payment.evm.charge({
326
+ amount: '0.01',
327
+ scope: 'POST /body',
335
328
  })
336
- const replay = await route(
329
+ const scopedResult = await scopedRoute(
337
330
  new Request('https://example.com/body', {
338
- body: JSON.stringify({ a: 2 }),
339
- headers: { [Types.paymentSignatureHeader]: paymentSignature },
331
+ body,
332
+ headers: { [Types.paymentSignatureHeader]: paymentSignatures[0]! },
340
333
  method: 'POST',
341
334
  }),
342
335
  )
343
- expect(replay.status).toBe(402)
344
- expect(verifyCalls).toBe(0)
336
+ expect(scopedResult.status).toBe(402)
337
+ expect(verifyCalls).toBe(2)
345
338
  })
346
339
 
347
340
  test('serves tempo and x402 from one composed live endpoint', async () => {
@@ -438,6 +431,53 @@ function payerOf(paymentPayload: Types.PaymentPayload): string {
438
431
  return paymentPayload.payload.permit2Authorization.from
439
432
  }
440
433
 
434
+ async function standardPaymentSignature(
435
+ paymentRequired: Types.PaymentRequired,
436
+ options: {
437
+ extensions?: Types.Extensions | undefined
438
+ nonce: `0x${string}`
439
+ },
440
+ ): Promise<string> {
441
+ const accepted = paymentRequired.accepts[0]!
442
+ const name = accepted.extra?.name
443
+ const version = accepted.extra?.version
444
+ if (typeof name !== 'string' || typeof version !== 'string') throw new Error()
445
+ const authorization = {
446
+ from: accounts[0].address,
447
+ nonce: options.nonce,
448
+ to: accepted.payTo as `0x${string}`,
449
+ validAfter: '0',
450
+ validBefore: '9999999999',
451
+ value: accepted.amount,
452
+ }
453
+ const signature = await accounts[0].signTypedData({
454
+ domain: {
455
+ chainId: Number(accepted.network.slice('eip155:'.length)),
456
+ name,
457
+ verifyingContract: accepted.asset as `0x${string}`,
458
+ version,
459
+ },
460
+ message: {
461
+ ...authorization,
462
+ validAfter: BigInt(authorization.validAfter),
463
+ validBefore: BigInt(authorization.validBefore),
464
+ value: BigInt(authorization.value),
465
+ },
466
+ primaryType: 'TransferWithAuthorization',
467
+ types: evm_Types.authorizationTypes,
468
+ })
469
+ return Header.encodePaymentSignature({
470
+ accepted,
471
+ ...(options.extensions ? { extensions: options.extensions } : {}),
472
+ payload: {
473
+ authorization,
474
+ signature,
475
+ },
476
+ resource: paymentRequired.resource,
477
+ x402Version: 2,
478
+ })
479
+ }
480
+
441
481
  function pureX402Challenge(response: Response): Response {
442
482
  const paymentRequired = response.headers.get(Types.paymentRequiredHeader)
443
483
  if (!paymentRequired) throw new Error('Missing PAYMENT-REQUIRED header.')
@@ -115,7 +115,7 @@ describeLocalnet('x402 exact localnet settlement', () => {
115
115
  }
116
116
  })
117
117
 
118
- test('rejects replayed localnet x402 payment', async () => {
118
+ test('rejects replayed localnet x402 payment', { timeout: 60_000 }, async () => {
119
119
  const harness = await setupHarness()
120
120
  const paidServer = await createPaidServer(harness)
121
121
 
@@ -111,27 +111,48 @@ export function createPath(config: ResolvedOptions): Path {
111
111
  })
112
112
 
113
113
  const expectedResource = { url: input.url }
114
- if (!isDeepStrictEqual(paymentPayload.resource, expectedResource))
114
+ const clientNonce = paymentPayload.extensions?.[mppxExtensionKey]?.info.nonce
115
+ const isRouteBound = clientNonce !== undefined
116
+ const routeRequiresBinding =
117
+ challenge.digest !== undefined ||
118
+ challenge.opaque !== undefined ||
119
+ challenge.meta !== undefined
120
+ if (routeRequiresBinding && !isRouteBound)
115
121
  throw new VerificationFailedError({
116
- reason: 'x402 payment payload resource does not match route resource',
122
+ reason: 'x402 payment payload does not bind required route metadata',
117
123
  })
118
124
 
119
- const expectedExtensions = routeExtensions(challenge, input)
120
- if (!containsExtensions(paymentPayload.extensions, expectedExtensions))
125
+ if (isRouteBound) {
126
+ if (!isDeepStrictEqual(paymentPayload.resource, expectedResource))
127
+ throw new VerificationFailedError({
128
+ reason: 'x402 payment payload resource does not match route resource',
129
+ })
130
+
131
+ const expectedExtensions = routeExtensions(challenge, input)
132
+ if (!containsExtensions(paymentPayload.extensions, expectedExtensions))
133
+ throw new VerificationFailedError({
134
+ reason: 'x402 payment payload extensions do not match route binding',
135
+ })
136
+ } else if (
137
+ paymentPayload.resource !== undefined &&
138
+ paymentPayload.resource.url !== expectedResource.url
139
+ )
121
140
  throw new VerificationFailedError({
122
- reason: 'x402 payment payload extensions do not match route binding',
141
+ reason: 'x402 payment payload resource does not match route resource',
123
142
  })
124
143
 
125
144
  const payload = payloadToAuthorization(paymentPayload)
126
- const expectedNonce = x402_RouteBinding.nonce({
127
- accepted: paymentRequirements,
128
- extensions: paymentPayload.extensions!,
129
- resource: expectedResource,
130
- })
131
- if (payload.nonce !== expectedNonce)
132
- throw new VerificationFailedError({
133
- reason: 'x402 authorization nonce does not match route binding',
145
+ if (isRouteBound) {
146
+ const expectedNonce = x402_RouteBinding.nonce({
147
+ accepted: paymentRequirements,
148
+ extensions: paymentPayload.extensions!,
149
+ resource: expectedResource,
134
150
  })
151
+ if (payload.nonce !== expectedNonce)
152
+ throw new VerificationFailedError({
153
+ reason: 'x402 authorization nonce does not match route binding',
154
+ })
155
+ }
135
156
 
136
157
  return markCredential(
137
158
  Credential_.from({
@@ -147,7 +168,6 @@ export function createPath(config: ResolvedOptions): Path {
147
168
 
148
169
  respondChallenge(options, response) {
149
170
  if (!response) throw new Error('x402 path requires a base challenge response.')
150
- if (options.input.body !== null && options.challenge.digest === undefined) return response
151
171
  const headers = new Headers(response.headers)
152
172
  const request = options.challenge.request as Types.ChargeRequest
153
173
  headers.set(
@@ -354,11 +374,7 @@ function stripClientNonce(info: Record<string, unknown>): Record<string, unknown
354
374
  }
355
375
 
356
376
  async function assertBodyDigest(challenge: Challenge.Challenge, input: Request): Promise<void> {
357
- if (input.body === null) return
358
- if (challenge.digest === undefined)
359
- throw new VerificationFailedError({
360
- reason: 'x402 payment requires a body digest for body-bearing requests',
361
- })
377
+ if (input.body === null || challenge.digest === undefined) return
362
378
  let body: string
363
379
  try {
364
380
  body = await input.clone().text()
@@ -1,208 +0,0 @@
1
- /**
2
- * Server-side session payment method for request/response flows.
3
- *
4
- * Handles the full channel lifecycle (open, voucher, top-up, close) and
5
- * one-shot settlement. Each incoming request carries a session credential
6
- * with a cumulative voucher that the server validates and records.
7
- *
8
- * Use `session()` for standard HTTP request/response patterns where each
9
- * request is a discrete paid unit (for example, a page scrape or API call).
10
- * For long-lived connections that emit multiple paid events over a single
11
- * request, use {@link ../session/Sse} instead.
12
- */
13
- import { type Address, type Hex, type Account as viem_Account, type Client as viem_Client } from 'viem';
14
- import type { LooseOmit, NoExtraKeys } from '../../../internal/types.js';
15
- import * as Method from '../../../Method.js';
16
- import * as Store from '../../../Store.js';
17
- import * as Client from '../../../viem/Client.js';
18
- import type * as z from '../../../zod.js';
19
- import * as Account from '../../internal/account.js';
20
- import * as FeePayer from '../../internal/fee-payer.js';
21
- import type * as types from '../../internal/types.js';
22
- import * as Methods from '../../Methods.js';
23
- import * as Transport from '../../server/internal/transport.js';
24
- import * as ChannelStore from '../session/ChannelStore.js';
25
- /**
26
- * Creates a session payment server using the Method.toServer() pattern.
27
- *
28
- * @example
29
- * ```ts
30
- * import { Mppx, tempo } from 'mppx/server'
31
- *
32
- * const mppx = Mppx.create({
33
- * methods: [
34
- * tempo.session({
35
- * store: myStore,
36
- * recipient: '0x...',
37
- * currency: '0x...',
38
- * escrowContract: '0x...',
39
- * }),
40
- * ],
41
- * realm: 'my-app',
42
- * secretKey: '...',
43
- * })
44
- * ```
45
- */
46
- export declare function session<const parameters extends session.Parameters>(p?: NoExtraKeys<parameters, session.Parameters>): Method.Server<{
47
- readonly name: "tempo";
48
- readonly intent: "session";
49
- readonly schema: {
50
- readonly credential: {
51
- readonly payload: z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
52
- action: z.ZodMiniLiteral<"open">;
53
- authorizedSigner: z.ZodMiniOptional<z.ZodMiniString<string>>;
54
- channelId: z.ZodMiniString<string>;
55
- cumulativeAmount: z.ZodMiniString<string>;
56
- descriptor: z.ZodMiniOptional<z.ZodMiniCustom<import("../../session/precompile/Protocol.js").ChannelDescriptor, import("../../session/precompile/Protocol.js").ChannelDescriptor>>;
57
- signature: z.ZodMiniString<string>;
58
- transaction: z.ZodMiniString<string>;
59
- type: z.ZodMiniLiteral<"transaction">;
60
- }, z.core.$strip>, z.ZodMiniObject<{
61
- action: z.ZodMiniLiteral<"topUp">;
62
- additionalDeposit: z.ZodMiniString<string>;
63
- channelId: z.ZodMiniString<string>;
64
- descriptor: z.ZodMiniOptional<z.ZodMiniCustom<import("../../session/precompile/Protocol.js").ChannelDescriptor, import("../../session/precompile/Protocol.js").ChannelDescriptor>>;
65
- transaction: z.ZodMiniString<string>;
66
- type: z.ZodMiniLiteral<"transaction">;
67
- }, z.core.$strip>, z.ZodMiniObject<{
68
- action: z.ZodMiniLiteral<"voucher">;
69
- channelId: z.ZodMiniString<string>;
70
- cumulativeAmount: z.ZodMiniString<string>;
71
- descriptor: z.ZodMiniOptional<z.ZodMiniCustom<import("../../session/precompile/Protocol.js").ChannelDescriptor, import("../../session/precompile/Protocol.js").ChannelDescriptor>>;
72
- signature: z.ZodMiniString<string>;
73
- }, z.core.$strip>, z.ZodMiniObject<{
74
- action: z.ZodMiniLiteral<"close">;
75
- channelId: z.ZodMiniString<string>;
76
- cumulativeAmount: z.ZodMiniString<string>;
77
- descriptor: z.ZodMiniOptional<z.ZodMiniCustom<import("../../session/precompile/Protocol.js").ChannelDescriptor, import("../../session/precompile/Protocol.js").ChannelDescriptor>>;
78
- signature: z.ZodMiniString<string>;
79
- }, z.core.$strip>], "action">;
80
- };
81
- readonly request: z.ZodMiniPipe<z.ZodMiniObject<{
82
- amount: z.ZodMiniString<string>;
83
- chainId: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
84
- channelId: z.ZodMiniOptional<z.ZodMiniString<string>>;
85
- currency: z.ZodMiniString<string>;
86
- decimals: z.ZodMiniNumber<number>;
87
- escrowContract: z.ZodMiniOptional<z.ZodMiniString<string>>;
88
- feePayer: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniCustom<viem_Account, viem_Account>]>, z.ZodMiniTransform<boolean, boolean | viem_Account>>>;
89
- minVoucherDelta: z.ZodMiniOptional<z.ZodMiniString<string>>;
90
- operator: z.ZodMiniOptional<z.ZodMiniString<string>>;
91
- recipient: z.ZodMiniOptional<z.ZodMiniString<string>>;
92
- sessionProtocol: z.ZodMiniOptional<z.ZodMiniEnum<{
93
- v1: "v1";
94
- v2: "v2";
95
- }>>;
96
- sessionSnapshot: z.ZodMiniOptional<z.ZodMiniCustom<import("../../session/Snapshot.js").SessionSnapshot, import("../../session/Snapshot.js").SessionSnapshot>>;
97
- suggestedDeposit: z.ZodMiniOptional<z.ZodMiniString<string>>;
98
- unitType: z.ZodMiniString<string>;
99
- }, z.core.$strip>, z.ZodMiniTransform<{
100
- methodDetails: {
101
- sessionSnapshot?: import("../../session/Snapshot.js").SessionSnapshot | undefined;
102
- sessionProtocol?: "v1" | "v2" | undefined;
103
- operator?: string | undefined;
104
- feePayer?: boolean | undefined;
105
- chainId?: number | undefined;
106
- minVoucherDelta?: string | undefined;
107
- channelId?: string | undefined;
108
- escrowContract: string | undefined;
109
- };
110
- suggestedDeposit?: string | undefined;
111
- amount: string;
112
- currency: string;
113
- unitType: string;
114
- recipient?: string | undefined;
115
- }, {
116
- amount: string;
117
- currency: string;
118
- decimals: number;
119
- unitType: string;
120
- chainId?: number | undefined;
121
- channelId?: string | undefined;
122
- escrowContract?: string | undefined;
123
- feePayer?: boolean | undefined;
124
- minVoucherDelta?: string | undefined;
125
- operator?: string | undefined;
126
- recipient?: string | undefined;
127
- sessionProtocol?: "v1" | "v2" | undefined;
128
- sessionSnapshot?: import("../../session/Snapshot.js").SessionSnapshot | undefined;
129
- suggestedDeposit?: string | undefined;
130
- }>>;
131
- };
132
- }, session.DeriveDefaults<parameters>, parameters["sse"] extends false | undefined ? undefined : Transport.Sse, {}, undefined>;
133
- /** Type helpers for the legacy contract-backed session server method. */
134
- export declare namespace session {
135
- type Defaults = LooseOmit<Method.RequestDefaults<typeof Methods.session>, 'feePayer' | 'recipient'>;
136
- type FeePayerPolicy = Partial<FeePayer.Policy>;
137
- type Parameters = {
138
- /** TTL in milliseconds for cached on-chain channel state. After this duration, the server re-queries on-chain state during voucher handling to detect forced close requests. @default 5_000 */
139
- channelStateTtl?: number | undefined;
140
- /** Override the fee-sponsor policy used for sponsored open/topUp transactions. */
141
- feePayerPolicy?: FeePayerPolicy | undefined;
142
- /** Minimum voucher delta to accept (numeric string, default: "0"). */
143
- minVoucherDelta?: string | undefined;
144
- /**
145
- * Whether to wait for the open transaction to confirm on-chain before
146
- * responding. @default true
147
- *
148
- * When `false`, the transaction is simulated via `eth_estimateGas` and
149
- * broadcast without waiting for inclusion. The receipt will optimistically
150
- * report `status: 'success'` based on simulation alone — if the
151
- * transaction reverts on-chain after broadcast (e.g. due to a state
152
- * change between simulation and inclusion), the receipt will not reflect
153
- * the failure.
154
- */
155
- waitForConfirmation?: boolean | undefined;
156
- /**
157
- * Atomic store backend for channel state.
158
- *
159
- * Session state mutations must be linearizable across instances, so this
160
- * requires a {@link Store.AtomicStore}. Use `Store.memory()` for tests or
161
- * local single-process usage.
162
- */
163
- store?: Store.AtomicStore | undefined;
164
- /**
165
- * Prefix prepended to channel state store keys.
166
- *
167
- * By default, no prefix is applied.
168
- */
169
- storeKeyPrefix?: string | undefined;
170
- /**
171
- * Enable SSE streaming.
172
- *
173
- * Pass `true` to enable with defaults, or an options object
174
- * to configure SSE (e.g. `{ poll: true }` for
175
- * Cloudflare Workers compatibility).
176
- */
177
- sse?: boolean | Transport.sse.Options | undefined;
178
- /** Testnet mode. */
179
- testnet?: boolean | undefined;
180
- } & Account.resolve.Parameters & Client.getResolver.Parameters & Defaults;
181
- type DeriveDefaults<parameters extends Parameters> = types.DeriveDefaults<parameters, Defaults, {
182
- currency: string;
183
- decimals: number;
184
- }>;
185
- }
186
- /**
187
- * One-shot settle: reads highest voucher from store and submits on-chain.
188
- */
189
- export declare function settle(store: ChannelStore.ChannelStore, client: viem_Client, channelId: Hex, options?: {
190
- escrowContract?: Address | undefined;
191
- } & ({
192
- feePayer: viem_Account;
193
- account: viem_Account;
194
- } | {
195
- feePayer?: undefined;
196
- account?: viem_Account | undefined;
197
- })): Promise<Hex>;
198
- /**
199
- * Charge against a channel's balance.
200
- *
201
- * Exported so consumers can deduct from a channel outside the `session()`
202
- * handler (e.g., custom middleware, the SSE `serve()` loop, or direct tests).
203
- *
204
- * Delegates to the shared `deductFromChannel` atomic helper and translates
205
- * failure modes into typed errors (`InsufficientBalanceError`, `ChannelClosedError`).
206
- */
207
- export declare function charge(store: ChannelStore.ChannelStore, channelId: Hex, amount: bigint): Promise<ChannelStore.State>;
208
- //# sourceMappingURL=Session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../../src/tempo/legacy/server/Session.ts"],"names":[],"mappings":"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"}