mppx 0.8.17 → 0.8.19

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 +61 -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 +51 -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,774 +0,0 @@
1
- import * as childProcess from 'node:child_process'
2
-
3
- import { type Address, type Chain, createClient, erc20Abi, http } from 'viem'
4
- import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts'
5
- import { readContract, waitForTransactionReceipt } from 'viem/actions'
6
- import * as viemChains from 'viem/chains'
7
- import { Actions } from 'viem/tempo'
8
- import { tempoModerato, tempo as tempoMainnetChain } from 'viem/tempo/chains'
9
-
10
- import * as Challenge from '../../Challenge.js'
11
- import * as Mppx from '../../client/Mppx.js'
12
- import * as Constants from '../../Constants.js'
13
- import type { AnyClient } from '../../Method.js'
14
- import * as Receipt from '../../Receipt.js'
15
- import { tempo as tempoMethods } from '../../tempo/client/index.js'
16
- import { chainId as tempoChainIds } from '../../tempo/internal/defaults.js'
17
- import { resolveAccount, resolveAccountName } from '../account.js'
18
- import type { Config } from '../config.js'
19
- import { loadConfig, resolvePlugin } from '../internal.js'
20
- import { fetchTokenInfo, confirm, pc } from '../utils.js'
21
- import { buildUrl } from './discovery.js'
22
- import type { CheckResult, EndpointSpec } from './helpers.js'
23
- import {
24
- check,
25
- fail,
26
- fetchWithTimeout,
27
- formatBytes,
28
- isValidIntegerAmount,
29
- parseHeaders,
30
- skip,
31
- warn,
32
- } from './helpers.js'
33
-
34
- async function provisionAndPayTestnet(
35
- challenge: Challenge.Challenge,
36
- verbose: boolean,
37
- silent?: boolean,
38
- ): Promise<{ methods: AnyClient[] } | undefined> {
39
- try {
40
- if (!silent) console.log(pc.dim(' Provisioning testnet wallet and funding via faucet...'))
41
- const key = generatePrivateKey()
42
- const account = privateKeyToAccount(key)
43
-
44
- const client = createClient({ chain: tempoModerato, transport: http() })
45
- const hashes = await Actions.faucet.fund(client, { account })
46
- await Promise.all(hashes.map((hash) => waitForTransactionReceipt(client, { hash })))
47
- if (!silent) console.log(pc.dim(` Using wallet: ${account.address}`))
48
-
49
- // The faucet tx receipt can land before the RPC's balance reads are
50
- // consistent with it, so poll briefly for the funded balance to appear
51
- // rather than racing straight into the charge.
52
- const currency = (challenge.request as Record<string, unknown>).currency
53
- if (typeof currency === 'string') {
54
- for (let attempt = 0; attempt < 10; attempt++) {
55
- const balance = await Actions.token
56
- .getBalance(client, { account: account.address, token: currency as Address })
57
- .catch(() => undefined)
58
- if (balance && balance.amount > 0n) break
59
- await new Promise((resolve) => setTimeout(resolve, 500))
60
- }
61
- }
62
-
63
- const methods = [...tempoMethods({ account })]
64
- return { methods }
65
- } catch (error) {
66
- if (verbose) console.log(pc.dim(` Provisioning failed: ${(error as Error).message}`))
67
- return undefined
68
- }
69
- }
70
-
71
- async function resolveWalletAddress(): Promise<string | undefined> {
72
- const accountName = resolveAccountName()
73
- const { isTempoAccount } = await import('../utils.js')
74
- const { resolveTempoAccount } = await import('../plugins/tempo.js')
75
- if (isTempoAccount(accountName)) {
76
- const entry = resolveTempoAccount(accountName)
77
- if (entry) return entry.wallet_address
78
- }
79
- try {
80
- const account = await resolveAccount()
81
- return account.address
82
- } catch {
83
- return undefined
84
- }
85
- }
86
-
87
- // Auto-detect Stripe test key from the Stripe CLI if installed and logged in.
88
- function resolveStripeKey(verbose: boolean): string | undefined {
89
- try {
90
- const { execSync } = childProcess
91
- const output = execSync('stripe config --list', { encoding: 'utf8', timeout: 5000 })
92
- const match = output.match(/test_mode_api_key\s*=\s*'([^']+)'/)
93
- if (match?.[1]) {
94
- if (verbose) console.log(pc.dim(' Using Stripe test key from stripe CLI'))
95
- return match[1]
96
- }
97
- } catch {}
98
- return undefined
99
- }
100
-
101
- async function fetchEvmTokenInfo(
102
- chain: Chain,
103
- token: Address,
104
- account: Address,
105
- ): Promise<{ balance: bigint; symbol: string | undefined }> {
106
- const client = createClient({ chain, transport: http() })
107
- const [balance, symbol] = await Promise.all([
108
- readContract(client, {
109
- address: token,
110
- abi: erc20Abi,
111
- functionName: 'balanceOf',
112
- args: [account],
113
- }),
114
- readContract(client, { address: token, abi: erc20Abi, functionName: 'symbol' }).catch(
115
- () => undefined,
116
- ),
117
- ])
118
- return { balance, symbol: symbol ?? undefined }
119
- }
120
-
121
- function resolveEvmChain(chainId: number): Chain | undefined {
122
- const all = Object.values(viemChains) as Chain[]
123
- return all.find((c) => c.id === chainId)
124
- }
125
-
126
- function formatAmount(amount: bigint, decimals: number): string {
127
- return `$${(Number(amount) / 10 ** decimals).toFixed(2)}`
128
- }
129
-
130
- function methodSetupHint(challenge: Challenge.Challenge): string {
131
- switch (challenge.method) {
132
- case Constants.Methods.evm:
133
- return 'no EVM payment plugin yet'
134
- case 'solana':
135
- return 'no Solana payment plugin yet'
136
- default:
137
- return `no plugin for ${challenge.method}/${challenge.intent}`
138
- }
139
- }
140
- export async function validatePaymentFlow(
141
- baseUrl: string,
142
- endpoint: EndpointSpec,
143
- verbose: boolean,
144
- options: {
145
- body?: string | undefined
146
- query?: string[] | undefined
147
- extraHeaders?: string[] | undefined
148
- yes?: boolean | undefined
149
- silent?: boolean | undefined
150
- interactive?: boolean | undefined
151
- onResults?: (results: CheckResult[]) => void
152
- },
153
- ): Promise<CheckResult[]> {
154
- const results: CheckResult[] = []
155
- const url = buildUrl(baseUrl, endpoint, options.query)
156
- const fetchHeaders: Record<string, string> = parseHeaders(options.extraHeaders)
157
- let fetchBody: string | undefined
158
- if (options.body) {
159
- fetchBody = options.body
160
- fetchHeaders['content-type'] = 'application/json'
161
- }
162
-
163
- // Get a fresh challenge
164
- let challengeResponse: Response
165
- try {
166
- challengeResponse = await fetchWithTimeout(url, {
167
- method: endpoint.method,
168
- headers: fetchHeaders,
169
- body: fetchBody ?? null,
170
- })
171
- } catch (error) {
172
- results.push(fail('Payment: fetch challenge', (error as Error).message))
173
- return results
174
- }
175
-
176
- if (challengeResponse.status !== 402) {
177
- results.push(skip('Payment: skipped', `Endpoint returned ${challengeResponse.status}`))
178
- return results
179
- }
180
-
181
- // Parse all challenges
182
- let challenges: Challenge.Challenge[]
183
- try {
184
- challenges = Challenge.fromResponseList(challengeResponse)
185
- } catch (error) {
186
- results.push(fail('Payment: parse challenge', (error as Error).message))
187
- return results
188
- }
189
- if (challenges.length === 0) {
190
- results.push(fail('Payment: parse challenge', 'No Payment challenges in response'))
191
- return results
192
- }
193
-
194
- // Testnet Tempo: always use ephemeral wallet (zero-setup, free money)
195
- const tempoTestnetChallenge = challenges.find((ch) => {
196
- if (ch.method !== Constants.Methods.tempo) return false
197
- const req = ch.request as Record<string, unknown>
198
- const md = req.methodDetails as Record<string, unknown> | undefined
199
- return typeof md?.chainId === 'number' && md.chainId !== tempoChainIds.mainnet
200
- })
201
-
202
- if (tempoTestnetChallenge) {
203
- const provisioned = await provisionAndPayTestnet(tempoTestnetChallenge, verbose, options.silent)
204
- if (provisioned) {
205
- const fakeResp = new Response(null, {
206
- status: 402,
207
- headers: {
208
- [Constants.Headers.wwwAuthenticate]: Challenge.serialize(tempoTestnetChallenge),
209
- },
210
- })
211
- try {
212
- const mppx = Mppx.create({ methods: provisioned.methods, polyfill: false })
213
- const cred = await mppx.createCredential(fakeResp)
214
- results.push(check('Payment: submitted', 'ephemeral testnet wallet'))
215
- await sendAndValidateResponse(
216
- results,
217
- url,
218
- endpoint,
219
- cred,
220
- fetchHeaders,
221
- fetchBody,
222
- verbose,
223
- tempoModerato,
224
- )
225
- } catch (error) {
226
- results.push(fail('Payment: create credential', (error as Error).message))
227
- }
228
- } else {
229
- results.push(
230
- fail('Payment: auto-provision wallet', 'Failed to create and fund testnet wallet'),
231
- )
232
- }
233
- options.onResults?.(results)
234
- }
235
-
236
- // Try each remaining challenge method (tempo testnet already handled above),
237
- // so validate exercises every payment method the server offers, same as mainnet.
238
- const loaded = await loadConfig().catch(() => undefined)
239
- const isInteractive = options.interactive
240
- const stripeKey = process.env.MPPX_STRIPE_SECRET_KEY ?? resolveStripeKey(verbose)
241
- const isStripeTestKey = stripeKey?.startsWith('sk_test_') || stripeKey?.startsWith('rk_test_')
242
- const supportedPaymentMethods: Set<string> = new Set([
243
- Constants.Methods.tempo,
244
- Constants.Methods.evm,
245
- Constants.Methods.stripe,
246
- ])
247
-
248
- for (const challenge of challenges) {
249
- if (challenge === tempoTestnetChallenge) continue
250
- if (!supportedPaymentMethods.has(challenge.method)) continue
251
- if (!options.silent) console.log('')
252
-
253
- const flushStart = results.length
254
- const flush = () => {
255
- if (options.onResults && results.length > flushStart)
256
- options.onResults(results.slice(flushStart))
257
- }
258
- const tag = `Payment [${challenge.method}]`
259
-
260
- try {
261
- switch (challenge.method) {
262
- case Constants.Methods.tempo:
263
- case Constants.Methods.evm:
264
- await attemptCryptoPayment(challenge, tag, {
265
- results,
266
- url,
267
- endpoint,
268
- fetchHeaders,
269
- fetchBody,
270
- verbose,
271
- loaded,
272
- isInteractive,
273
- options,
274
- })
275
- break
276
- case Constants.Methods.stripe:
277
- await attemptStripePayment(challenge, tag, {
278
- results,
279
- url,
280
- endpoint,
281
- fetchHeaders,
282
- fetchBody,
283
- verbose,
284
- loaded,
285
- isInteractive,
286
- isStripeTestKey: isStripeTestKey ?? false,
287
- stripeKey,
288
- options,
289
- })
290
- break
291
- }
292
- } finally {
293
- flush()
294
- }
295
- }
296
-
297
- return results
298
- }
299
-
300
- type PaymentContext = {
301
- results: CheckResult[]
302
- url: string
303
- endpoint: EndpointSpec
304
- fetchHeaders: Record<string, string>
305
- fetchBody: string | undefined
306
- verbose: boolean
307
- loaded: { config: Config; path: string } | undefined
308
- isInteractive: boolean | undefined
309
- options: {
310
- body?: string | undefined
311
- query?: string[] | undefined
312
- extraHeaders?: string[] | undefined
313
- yes?: boolean | undefined
314
- silent?: boolean | undefined
315
- interactive?: boolean | undefined
316
- onResults?: ((results: CheckResult[]) => void) | undefined
317
- }
318
- }
319
-
320
- async function attemptCryptoPayment(
321
- challenge: Challenge.Challenge,
322
- tag: string,
323
- ctx: PaymentContext,
324
- ): Promise<void> {
325
- const { results, url, endpoint, fetchHeaders, fetchBody, verbose, loaded, options } = ctx
326
- const request = challenge.request as Record<string, unknown>
327
- const methodDetails = request.methodDetails as Record<string, unknown> | undefined
328
- const requiredAmount = isValidIntegerAmount(request.amount)
329
- ? BigInt(request.amount as string)
330
- : undefined
331
- const decimals =
332
- (methodDetails?.decimals as number | undefined) ?? (request.decimals as number | undefined) ?? 6
333
- const currency = request.currency as string | undefined
334
-
335
- // Resolve wallet
336
- let walletAddress: string | undefined
337
- try {
338
- walletAddress = await resolveWalletAddress()
339
- } catch {}
340
- if (!walletAddress) {
341
- results.push(skip(tag, 'no wallet configured. Run "mppx account create" to create one.'))
342
- return
343
- }
344
-
345
- // Pre-flight balance check and chain resolution
346
- let paymentChain: Chain | undefined
347
- if (challenge.method === Constants.Methods.tempo) paymentChain = tempoMainnetChain
348
- else if (challenge.method === Constants.Methods.evm) {
349
- const chainId = methodDetails?.chainId as number | undefined
350
- if (chainId) paymentChain = resolveEvmChain(chainId)
351
- }
352
-
353
- let tokenSymbol: string | undefined
354
- if (requiredAmount && currency && paymentChain) {
355
- try {
356
- let balance: bigint
357
- if (challenge.method === Constants.Methods.tempo) {
358
- const client = createClient({ chain: tempoMainnetChain, transport: http() })
359
- const info = await fetchTokenInfo(client, currency as Address, walletAddress as Address)
360
- balance = info.balance
361
- tokenSymbol = info.symbol
362
- } else {
363
- const info = await fetchEvmTokenInfo(
364
- paymentChain,
365
- currency as Address,
366
- walletAddress as Address,
367
- )
368
- balance = info.balance
369
- tokenSymbol = info.symbol
370
- }
371
- if (balance < requiredAmount) {
372
- const requiredDisplay = formatAmount(requiredAmount, decimals)
373
- const balanceDisplay = formatAmount(balance, decimals)
374
- const symbol = tokenSymbol ?? 'tokens'
375
- results.push(
376
- skip(
377
- tag,
378
- `insufficient balance (have ${balanceDisplay}, need ${requiredDisplay} ${symbol} on ${paymentChain.name})`,
379
- `Fund wallet ${walletAddress} with at least ${requiredDisplay} ${symbol} on ${paymentChain.name}.`,
380
- ),
381
- )
382
- return
383
- }
384
- } catch (e) {
385
- if (verbose) console.log(pc.dim(` Balance check skipped: ${(e as Error).message}`))
386
- }
387
- }
388
-
389
- // Prompt
390
- const amountDisplay = requiredAmount ? formatAmount(requiredAmount, decimals) : 'unknown amount'
391
- const tokenDisplay = tokenSymbol ?? (currency?.length === 3 ? currency.toUpperCase() : '')
392
- const chainName = paymentChain?.name
393
- const paymentDesc = `${amountDisplay}${tokenDisplay ? ` ${tokenDisplay}` : ''}${chainName ? ` on ${chainName}` : ''}`
394
-
395
- if (!options.silent) console.log(pc.dim(` Attempting payment with wallet ${walletAddress}`))
396
-
397
- if (paymentChain?.testnet) {
398
- if (!options.silent) console.log(pc.dim(` Auto-approved: ${paymentDesc} (testnet)`))
399
- } else if (!options.yes && !ctx.isInteractive) {
400
- results.push(skip(tag, 'non-interactive mode, use --yes to approve'))
401
- return
402
- } else if (!options.yes) {
403
- const ok = await confirm(` ${pc.yellow('Pay')} ${paymentDesc}. Continue?`, false)
404
- if (!ok) {
405
- results.push(skip(tag, 'declined'))
406
- return
407
- }
408
- } else {
409
- if (!options.silent) console.log(pc.dim(` Auto-approved: ${paymentDesc}`))
410
- }
411
-
412
- // Resolve plugin and pay
413
- const resolved = resolvePlugin(challenge, loaded?.config)
414
- const plugin = resolved.plugin
415
- const directMethod = resolved.method
416
- if (!plugin && !directMethod) {
417
- results.push(skip(tag, methodSetupHint(challenge)))
418
- return
419
- }
420
-
421
- let methods: AnyClient[]
422
- let createCredentialFn: ((response: Response) => Promise<string>) | undefined
423
- if (plugin) {
424
- try {
425
- const pluginResult = await plugin.setup({
426
- challenge,
427
- options: { network: 'mainnet' },
428
- methodOpts: {},
429
- })
430
- methods = pluginResult.methods
431
- createCredentialFn = pluginResult.createCredential
432
- } catch (error) {
433
- results.push(skip(tag, (error as Error).message))
434
- return
435
- }
436
- } else {
437
- methods = [directMethod!]
438
- }
439
-
440
- const credential = await createAndSend(challenge, methods, createCredentialFn, tag, results)
441
- if (!credential) return
442
-
443
- plugin?.prepareCredentialRequest?.({ challenge, credential, headers: fetchHeaders })
444
- await sendAndValidateResponse(
445
- results,
446
- url,
447
- endpoint,
448
- credential,
449
- fetchHeaders,
450
- fetchBody,
451
- verbose,
452
- paymentChain,
453
- )
454
- }
455
-
456
- async function attemptStripePayment(
457
- challenge: Challenge.Challenge,
458
- tag: string,
459
- ctx: PaymentContext & { isStripeTestKey: boolean; stripeKey?: string | undefined },
460
- ): Promise<void> {
461
- const {
462
- results,
463
- url,
464
- endpoint,
465
- fetchHeaders,
466
- fetchBody,
467
- verbose,
468
- loaded,
469
- options,
470
- isStripeTestKey,
471
- stripeKey,
472
- } = ctx
473
- const request = challenge.request as Record<string, unknown>
474
- const requiredAmount = isValidIntegerAmount(request.amount)
475
- ? BigInt(request.amount as string)
476
- : undefined
477
- const decimals = (request.decimals as number | undefined) ?? 2
478
- const currency = request.currency as string | undefined
479
-
480
- const amountDisplay = requiredAmount ? formatAmount(requiredAmount, decimals) : 'unknown amount'
481
- const tokenDisplay = currency?.length === 3 ? currency.toUpperCase() : ''
482
- const paymentDesc = `${amountDisplay}${tokenDisplay ? ` ${tokenDisplay}` : ''} via Stripe${isStripeTestKey ? ' (testmode)' : ''}`
483
-
484
- if (isStripeTestKey) {
485
- if (!options.silent) console.log(pc.dim(` Attempting: ${paymentDesc}`))
486
- } else if (!options.yes && !ctx.isInteractive) {
487
- results.push(skip(tag, 'non-interactive mode, use --yes to approve'))
488
- return
489
- } else if (!options.yes) {
490
- const ok = await confirm(` ${pc.yellow('Pay')} ${paymentDesc}. Continue?`, false)
491
- if (!ok) {
492
- results.push(skip(tag, 'declined'))
493
- return
494
- }
495
- } else {
496
- if (!options.silent) console.log(pc.dim(` Auto-approved: ${paymentDesc}`))
497
- }
498
-
499
- // Resolve plugin
500
- const resolved = resolvePlugin(challenge, loaded?.config)
501
- const plugin = resolved.plugin
502
- if (!plugin) {
503
- results.push(skip(tag, 'no Stripe plugin available'))
504
- return
505
- }
506
-
507
- let methods: AnyClient[]
508
- let createCredentialFn: ((response: Response) => Promise<string>) | undefined
509
- try {
510
- const methodOpts: Record<string, string> = { paymentMethod: 'pm_card_visa' }
511
- if (stripeKey) methodOpts.secretKey = stripeKey
512
- const pluginResult = await plugin.setup({
513
- challenge,
514
- options: {},
515
- methodOpts,
516
- })
517
- methods = pluginResult.methods
518
- createCredentialFn = pluginResult.createCredential
519
- } catch (error) {
520
- results.push(skip(tag, (error as Error).message))
521
- return
522
- }
523
-
524
- const credential = await createAndSend(challenge, methods, createCredentialFn, tag, results)
525
- if (!credential) return
526
-
527
- plugin.prepareCredentialRequest?.({ challenge, credential, headers: fetchHeaders })
528
-
529
- // Stripe testmode: detect livemode rejection gracefully
530
- if (isStripeTestKey) {
531
- const resp = await fetchWithTimeout(
532
- url,
533
- {
534
- method: endpoint.method,
535
- headers: { ...fetchHeaders, [Constants.Headers.authorization]: credential },
536
- body: fetchBody ?? null,
537
- },
538
- 30_000,
539
- )
540
- if (resp.status >= 200 && resp.status < 300) {
541
- results.push(check(`${tag}: successful`, `HTTP ${resp.status}`))
542
- } else {
543
- results.push(
544
- skip(
545
- `${tag}: server is in livemode`,
546
- undefined,
547
- 'Run your server with a Stripe test key to automatically validate Stripe payments in testmode.',
548
- ),
549
- )
550
- }
551
- return
552
- }
553
-
554
- await sendAndValidateResponse(
555
- results,
556
- url,
557
- endpoint,
558
- credential,
559
- fetchHeaders,
560
- fetchBody,
561
- verbose,
562
- undefined,
563
- )
564
- }
565
-
566
- async function createAndSend(
567
- challenge: Challenge.Challenge,
568
- methods: AnyClient[],
569
- createCredentialFn: ((response: Response) => Promise<string>) | undefined,
570
- tag: string,
571
- results: CheckResult[],
572
- ): Promise<string | undefined> {
573
- const fakeResponse = new Response(null, {
574
- status: 402,
575
- headers: { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) },
576
- })
577
- try {
578
- let credential: string
579
- if (createCredentialFn) {
580
- credential = await createCredentialFn(fakeResponse)
581
- } else {
582
- const mppx = Mppx.create({ methods, polyfill: false })
583
- credential = await mppx.createCredential(fakeResponse)
584
- }
585
- results.push(check(`${tag}: submitted`))
586
- return credential
587
- } catch (error) {
588
- const msg = (error as Error).message
589
- if (msg.toLowerCase().includes('insufficient')) {
590
- results.push(skip(tag, `insufficient balance: ${msg}`))
591
- } else {
592
- results.push(fail(tag, msg))
593
- }
594
- return undefined
595
- }
596
- }
597
-
598
- async function sendAndValidateResponse(
599
- results: CheckResult[],
600
- url: string,
601
- endpoint: EndpointSpec,
602
- credential: string,
603
- baseHeaders: Record<string, string>,
604
- fetchBody: string | undefined,
605
- verbose: boolean,
606
- explorerChain?: Chain | undefined,
607
- ): Promise<CheckResult[]> {
608
- let paymentResponse: Response
609
- try {
610
- paymentResponse = await fetchWithTimeout(
611
- url,
612
- {
613
- method: endpoint.method,
614
- headers: { ...baseHeaders, [Constants.Headers.authorization]: credential },
615
- body: fetchBody ?? null,
616
- },
617
- 30_000,
618
- )
619
- } catch (error) {
620
- results.push(fail('Payment: send credential', (error as Error).message))
621
- return results
622
- }
623
-
624
- if (paymentResponse.status === 402) {
625
- const body = await paymentResponse.text().catch(() => '')
626
- let detail = 'Payment rejected'
627
- try {
628
- const problem = JSON.parse(body) as Record<string, unknown>
629
- detail = (problem.detail as string) ?? (problem.title as string) ?? detail
630
- } catch {}
631
- results.push(
632
- fail(
633
- 'Payment: accepted',
634
- detail,
635
- 'The server rejected a valid credential. Check that your payment verification logic accepts the credential format and that the payment was processed on-chain.',
636
- ),
637
- )
638
- return results
639
- }
640
-
641
- if (paymentResponse.status >= 400 && paymentResponse.status < 500) {
642
- results.push(
643
- warn(
644
- 'Payment: post-payment response',
645
- `Got ${paymentResponse.status}`,
646
- 'Payment succeeded but the endpoint returned a client error. The endpoint likely requires request body parameters. Use --body to provide them.',
647
- ),
648
- )
649
- } else if (paymentResponse.status >= 500) {
650
- results.push(
651
- fail(
652
- 'Payment: server response',
653
- `Got ${paymentResponse.status}`,
654
- 'Payment was accepted but the server errored while generating the response. Check server logs for the underlying error.',
655
- ),
656
- )
657
- return results
658
- } else {
659
- results.push(check('Payment: successful', `HTTP ${paymentResponse.status}`))
660
- }
661
-
662
- // Validate receipt
663
- const receiptHeader = paymentResponse.headers.get(Constants.Headers.paymentReceipt)
664
- if (!receiptHeader) {
665
- results.push(
666
- fail(
667
- 'Payment-Receipt header present',
668
- undefined,
669
- 'After accepting payment, include a Payment-Receipt header with a base64url-encoded JSON object containing: method, reference, status ("success"), and timestamp (ISO 8601).',
670
- ),
671
- )
672
- } else {
673
- results.push(check('Payment-Receipt header present'))
674
- try {
675
- const receipt = Receipt.deserialize(receiptHeader)
676
- results.push(check('Receipt parseable'))
677
-
678
- if (receipt.status === 'success') {
679
- results.push(check('Receipt status is "success"'))
680
- } else {
681
- results.push(fail('Receipt status is "success"', `Got: ${receipt.status}`))
682
- }
683
-
684
- if (receipt.reference) {
685
- const validTxHash = /^0x[0-9a-fA-F]{64}$/.test(receipt.reference)
686
- const validStripeRef = receipt.reference.startsWith('pi_')
687
- if (validTxHash || validStripeRef) {
688
- results.push(check('Receipt reference valid', receipt.reference.slice(0, 20) + '...'))
689
- } else {
690
- results.push(warn('Receipt reference format', receipt.reference.slice(0, 40)))
691
- }
692
- } else {
693
- results.push(warn('Receipt has reference', 'No reference field'))
694
- }
695
-
696
- if (receipt.timestamp) {
697
- const ts = new Date(receipt.timestamp)
698
- const age = Date.now() - ts.getTime()
699
- if (age < 60_000) {
700
- results.push(check('Receipt timestamp recent', `${Math.round(age / 1000)}s ago`))
701
- } else {
702
- results.push(warn('Receipt timestamp recent', `${Math.round(age / 60000)}m ago`))
703
- }
704
- }
705
-
706
- if (verbose) {
707
- console.log(pc.dim(` Receipt: ${JSON.stringify(receipt, null, 2)}`))
708
- }
709
- } catch (error) {
710
- results.push(fail('Receipt parseable', (error as Error).message))
711
- }
712
- }
713
-
714
- // Validate response body
715
- const contentType = paymentResponse.headers.get('content-type') ?? ''
716
- const body = await paymentResponse.text().catch(() => '')
717
-
718
- if (body.length > 0) {
719
- results.push(
720
- check('Response body non-empty', `${contentType.split(';')[0]}, ${formatBytes(body.length)}`),
721
- )
722
- } else {
723
- const suspiciousHeaders = [...paymentResponse.headers.entries()].filter(
724
- ([key]) =>
725
- !key.startsWith('x-') &&
726
- ![
727
- 'content-type',
728
- 'content-length',
729
- 'date',
730
- 'server',
731
- 'connection',
732
- 'keep-alive',
733
- 'cache-control',
734
- 'vary',
735
- 'access-control-allow-origin',
736
- 'payment-receipt',
737
- 'payment-session',
738
- 'payment-session-snapshot',
739
- ].includes(key.toLowerCase()),
740
- )
741
- if (suspiciousHeaders.length > 0) {
742
- results.push(
743
- warn(
744
- 'Response body empty -- data may be in headers only',
745
- suspiciousHeaders.map(([k]) => k).join(', '),
746
- ),
747
- )
748
- } else {
749
- results.push(warn('Response body empty'))
750
- }
751
- }
752
-
753
- if (!contentType) {
754
- results.push(warn('Content-Type header set'))
755
- } else {
756
- results.push(check('Content-Type header set', contentType.split(';')[0]))
757
- }
758
-
759
- // Explorer link for on-chain payments
760
- if (receiptHeader) {
761
- try {
762
- const receipt = Receipt.deserialize(receiptHeader)
763
- if (receipt.reference && /^0x[0-9a-fA-F]{64}$/.test(receipt.reference)) {
764
- const explorerUrl = explorerChain?.blockExplorers?.default?.url
765
- if (explorerUrl) {
766
- const path = explorerUrl.includes('tempo') ? 'receipt' : 'tx'
767
- results.push(check('On-chain transaction', `${explorerUrl}/${path}/${receipt.reference}`))
768
- }
769
- }
770
- } catch {}
771
- }
772
-
773
- return results
774
- }