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
@@ -1,11 +1,13 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type * as Attestation from '../attestation/Types.js';
2
3
  import * as Challenge from '../Challenge.js';
3
4
  import * as Credential from '../Credential.js';
4
5
  import * as Errors from '../Errors.js';
5
- import type { MaybePromise } from '../internal/types.js';
6
+ import type { DeepReadonly, MaybePromise } from '../internal/types.js';
6
7
  import * as Method from '../Method.js';
7
8
  import type * as Receipt from '../Receipt.js';
8
9
  import * as z from '../zod.js';
10
+ import * as Html from './internal/html/config.js';
9
11
  import * as Transport from './Transport.js';
10
12
  export type Methods = readonly (Method.AnyServer | readonly Method.AnyServer[])[];
11
13
  export type ServerEventMap<methods extends readonly Method.Method[] = readonly Method.Method[], transport extends Transport.AnyTransport = Transport.AnyTransport> = {
@@ -36,6 +38,36 @@ export type ServerMethodDescriptor<method extends Pick<Method.Method, 'intent' |
36
38
  intent: method['intent'];
37
39
  name: method['name'];
38
40
  }>;
41
+ /** A configured payment offer exposed to the server's `selectOffers` hook. */
42
+ export type ServerOffer<method extends Method.Method = Method.Method> = method extends unknown ? ServerOfferFor<method> : never;
43
+ type ServerOfferFor<method extends Method.Method> = Readonly<{
44
+ /** Canonical wire key for the configured method. */
45
+ key: `${method['name']}/${method['intent']}`;
46
+ /** Immutable method metadata for this offer. */
47
+ method: ServerOfferMethodDescriptor<method>;
48
+ /** Schema-normalized request configured for this offer. */
49
+ request: DeepReadonly<z.output<method['schema']['request']>>;
50
+ }>;
51
+ /** Immutable method metadata exposed to offer-selection hooks. */
52
+ export type ServerOfferMethodDescriptor<method extends Method.Method = Method.Method> = Readonly<{
53
+ /** Optional public alias used to register this server method. */
54
+ alias?: method extends {
55
+ alias?: infer alias;
56
+ } ? alias : string;
57
+ intent: method['intent'];
58
+ name: method['name'];
59
+ }>;
60
+ /**
61
+ * Selects a subset of configured offers before payment challenges are issued.
62
+ *
63
+ * The hook must select at least one offer. Returned offers must come from the input,
64
+ * contain no duplicates, and preserve their original order. Offers and their
65
+ * normalized requests are deeply immutable. The incoming request is cloned so
66
+ * the hook may safely inspect its body when it has not already been consumed.
67
+ */
68
+ export type SelectOffers<methods extends readonly Method.Method[]> = (offers: readonly ServerOffer<methods[number]>[], context: Readonly<{
69
+ request: globalThis.Request;
70
+ }>) => MaybePromise<readonly ServerOffer<methods[number]>[]>;
39
71
  /** Context passed to `onChallengeCreated`. */
40
72
  export type ChallengeContext<method extends Method.Method = Method.Method, transport extends Transport.AnyTransport = Transport.AnyTransport> = Readonly<{
41
73
  capturedRequest?: Method.CapturedRequest | undefined;
@@ -136,7 +168,7 @@ export type Mppx<methods extends Methods = Methods, transport extends Transport.
136
168
  * })
137
169
  * ```
138
170
  */
139
- compose(...entries: ComposeEntry<FlattenMethods<methods>>[]): (input: Request) => Promise<MethodFn.Response<Transport.Http>>;
171
+ compose(...entries: ComposeEntry<FlattenMethods<methods>>[]): ComposedHandler;
140
172
  } : {}) & Handlers<FlattenMethods<methods>, transport> & {
141
173
  /**
142
174
  * Generate Challenge objects for registered methods without going through
@@ -196,7 +228,7 @@ type TransportOverrideOf<mi> = mi extends {
196
228
  type EffectiveTransportOf<mi, defaultTransport extends Transport.AnyTransport> = [
197
229
  TransportOverrideOf<mi>
198
230
  ] extends [never] ? defaultTransport : TransportOverrideOf<mi>;
199
- declare const reservedMppxKeyValues: readonly ["challenge", "compose", "methods", "on", "onChallengeCreated", "onPaymentFailed", "onPaymentSuccess", "realm", "broadcastCredential", "transport", "validateCredential", "verifyCredential"];
231
+ declare const reservedMppxKeyValues: readonly ['challenge', 'compose', 'methods', 'on', 'onChallengeCreated', 'onPaymentFailed', 'onPaymentSuccess', 'realm', 'broadcastCredential', 'transport', 'validateCredential', 'verifyCredential'];
200
232
  /** Public instance keys that payment method names and shorthand intents cannot shadow. */
201
233
  export type ReservedKey = (typeof reservedMppxKeyValues)[number];
202
234
  /** Public instance keys that payment method names and shorthand intents cannot shadow. */
@@ -207,18 +239,25 @@ type IsUniqueIntent<methods extends readonly Method.AnyServer[], intent extends
207
239
  }> extends infer M ? M extends M ? [Exclude<Extract<methods[number], {
208
240
  intent: intent;
209
241
  }>, M>] extends [never] ? true : false : never : never;
210
- /** Only includes shorthand intent keys when the intent is unique across methods. */
211
- type UniqueIntentHandlers<methods extends readonly Method.AnyServer[], transport extends Transport.AnyTransport> = {
212
- [method_name in methods[number]['intent'] as IsUniqueIntent<methods, method_name> extends true ? method_name extends ReservedKey ? never : method_name : never]: MethodFn<Extract<methods[number], {
213
- intent: method_name;
242
+ /** Shorthand intent handlers. Single-method intents get direct handlers;
243
+ * multi-method intents get an implicit compose wrapper. */
244
+ type IntentHandlers<methods extends readonly Method.AnyServer[], transport extends Transport.AnyTransport> = {
245
+ [intent in methods[number]['intent'] as intent extends ReservedKey ? never : intent]: IsUniqueIntent<methods, intent> extends true ? MethodFn<Extract<methods[number], {
246
+ intent: intent;
214
247
  }>, EffectiveTransportOf<Extract<methods[number], {
215
- intent: method_name;
248
+ intent: intent;
216
249
  }>, transport>, NonNullable<Extract<methods[number], {
217
- intent: method_name;
250
+ intent: intent;
218
251
  }>['defaults']>> & MethodExtensions<Extract<methods[number], {
219
- intent: method_name;
220
- }>>;
252
+ intent: intent;
253
+ }>> : MultiMethodFn<Extract<methods[number], {
254
+ intent: intent;
255
+ }>, transport>;
221
256
  };
257
+ /** Handler for an intent with multiple methods - takes the intersection of all methods' options. */
258
+ type MultiMethodFn<methods extends Method.AnyServer, transport extends Transport.AnyTransport> = (options: UnionToIntersection<MultiMethodFnDistribute<methods>>) => (input: Transport.InputOf<transport>) => Promise<MethodFn.Response<transport>>;
259
+ type MultiMethodFnDistribute<M> = M extends Method.Server<infer method, infer defaults, any, any, any> ? MethodFn.Options<method, NonNullable<defaults>> : never;
260
+ type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
222
261
  /** Nested handlers: `mppx.tempo.charge(...)`, grouped by method name then intent. */
223
262
  type PublicAlias<method extends Method.AnyServer> = method extends {
224
263
  alias?: infer alias;
@@ -237,7 +276,7 @@ type NestedHandlers<methods extends readonly Method.AnyServer[], transport exten
237
276
  };
238
277
  type Handlers<methods extends readonly Method.AnyServer[], transport extends Transport.AnyTransport> = {
239
278
  [mi in methods[number] as `${mi['name']}/${mi['intent']}`]: MethodFn<mi, EffectiveTransportOf<mi, transport>, NonNullable<mi['defaults']>> & MethodExtensions<mi>;
240
- } & UniqueIntentHandlers<methods, transport> & NestedHandlers<methods, transport> & {
279
+ } & IntentHandlers<methods, transport> & NestedHandlers<methods, transport> & {
241
280
  [mi in methods[number] as PublicAlias<mi> extends string ? `${mi['name']}/${PublicAlias<mi>}` : never]: MethodFn<mi, EffectiveTransportOf<mi, transport>, NonNullable<mi['defaults']>> & MethodExtensions<mi>;
242
281
  };
243
282
  type MethodExtensions<method extends Method.AnyServer> = method extends {
@@ -272,12 +311,16 @@ type ChallengeFn<method extends Method.Method, defaults extends Record<string, u
272
311
  export declare function create<const methods extends Methods, const transport extends Transport.AnyTransport = Transport.Http>(config: create.Config<methods, transport>): Mppx<methods, transport>;
273
312
  export declare namespace create {
274
313
  type Config<methods extends Methods = Methods, transport extends Transport.AnyTransport = Transport.Http> = {
314
+ /** Request-attestation verifiers required before handling an HTTP payment request. */
315
+ attestation?: transport extends Transport.Http ? Attestation.VerifierMap | undefined : never;
275
316
  /** Array of configured methods. @example [tempo()] */
276
317
  methods: methods;
277
318
  /** Server realm (e.g., hostname). Resolution order: explicit value > env vars (`MPP_REALM`, `FLY_APP_NAME`, `VERCEL_URL`, etc.) > request URL hostname > `"MPP Payment"`. */
278
319
  realm?: string | undefined;
279
320
  /** Secret key for HMAC-bound challenge IDs for stateless verification. Must be at least 32 bytes. Auto-detected from `MPP_SECRET_KEY` environment variable. */
280
321
  secretKey?: string | undefined;
322
+ /** Selects a subset of composed HTTP offers before challenges are issued. Successfully matched credential dispatch bypasses this hook. */
323
+ selectOffers?: transport extends Transport.Http ? SelectOffers<FlattenMethods<methods>> | undefined : never;
281
324
  /** Transport to use. @default Transport.http() */
282
325
  transport?: transport | undefined;
283
326
  };
@@ -312,6 +355,25 @@ declare namespace MethodFn {
312
355
  withReceipt: Transport.WithReceipt<transport>;
313
356
  };
314
357
  }
358
+ /** A configured handler — the return value of e.g. `mppx.charge({ ... })`. @internal */
359
+ type ConfiguredHandler = ((input: Request) => Promise<MethodFn.Response<Transport.Http>>) & {
360
+ _internal: {
361
+ _method: Method.AnyServer;
362
+ description?: string | undefined;
363
+ name: string;
364
+ intent: string;
365
+ html: Html.Options | undefined;
366
+ meta?: Record<string, string> | undefined;
367
+ scope?: string | undefined;
368
+ _canonicalRequest: Record<string, unknown>;
369
+ _stableBinding?: Method.StableBindingFn<Method.Method> | undefined;
370
+ };
371
+ };
372
+ type ComposedHandler = ((input: Request) => Promise<MethodFn.Response<Transport.Http>>) & {
373
+ _internal?: {
374
+ offers: readonly ConfiguredHandler['_internal'][];
375
+ };
376
+ };
315
377
  /** An entry for `compose()`: a method reference, handler function ref, or string key paired with its options. */
316
378
  type ComposeEntry<methods extends readonly Method.AnyServer[]> = {
317
379
  [i in keyof methods]: readonly [
@@ -331,7 +393,7 @@ type ComposeEntry<methods extends readonly Method.AnyServer[]> = {
331
393
  MethodFn.Options<methods[i], NonNullable<methods[i]['defaults']>>
332
394
  ];
333
395
  }[number];
334
- export declare function compose(...args: readonly unknown[]): (input: Request) => Promise<MethodFn.Response<Transport.Http>>;
396
+ export declare function compose(...args: readonly unknown[]): ComposedHandler;
335
397
  /**
336
398
  * Wraps a payment handler to create a Node.js HTTP listener.
337
399
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Mppx.d.ts","sourceRoot":"","sources":["../../src/server/Mppx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mppx.d.ts","sourceRoot":"","sources":["../../src/server/Mppx.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { isDeepStrictEqual } from 'node:util';
2
+ import * as AttestationServer from '../attestation/Server.js';
2
3
  import * as Challenge from '../Challenge.js';
3
4
  import * as Constants from '../Constants.js';
4
5
  import * as Credential from '../Credential.js';
@@ -6,7 +7,6 @@ import * as Errors from '../Errors.js';
6
7
  import * as Expires from '../Expires.js';
7
8
  import * as AcceptPayment from '../internal/AcceptPayment.js';
8
9
  import * as Env from '../internal/env.js';
9
- import * as Method from '../Method.js';
10
10
  import * as PaymentRequest from '../PaymentRequest.js';
11
11
  import * as x402_Header from '../x402/Header.js';
12
12
  import * as x402_Types from '../x402/Types.js';
@@ -52,21 +52,36 @@ export const reservedMppxKeys = new Set(reservedMppxKeyValues);
52
52
  * ```
53
53
  */
54
54
  export function create(config) {
55
- const { realm = Env.get('realm'), secretKey = Env.get('secretKey'), transport = Transport.http(), } = config;
55
+ const { attestation, realm = Env.get('realm'), selectOffers, secretKey = Env.get('secretKey'), transport = Transport.http(), } = config;
56
56
  if (!secretKey) {
57
57
  throw new Error('Missing secret key. Set the MPP_SECRET_KEY environment variable or pass `secretKey` to Mppx.create().');
58
58
  }
59
59
  assertSecretKey(secretKey);
60
60
  const methods = config.methods.flat();
61
61
  const serverEvents = createServerEventDispatcher();
62
+ const verifyAttestation = attestation
63
+ ? createAttestationGuard(attestation)
64
+ : undefined;
62
65
  const handlers = {};
63
66
  const intentCount = {};
64
67
  for (const mi of methods) {
65
68
  intentCount[mi.intent] = (intentCount[mi.intent] ?? 0) + 1;
69
+ if (mi.onPaymentSuccess) {
70
+ serverEvents.on('payment.success', (async (ctx) => {
71
+ if (ctx.method.name === mi.name && ctx.method.intent === mi.intent) {
72
+ await mi.onPaymentSuccess({
73
+ input: ctx.input,
74
+ receipt: ctx.receipt,
75
+ request: ctx.request,
76
+ });
77
+ }
78
+ }));
79
+ }
66
80
  }
67
81
  assertNoReservedMppxKeys(methods);
68
82
  for (const mi of methods) {
69
83
  const fn = createMethodFn({
84
+ ...(verifyAttestation && { attest: verifyAttestation }),
70
85
  authorize: mi.authorize,
71
86
  defaults: mi.defaults,
72
87
  method: mi,
@@ -91,10 +106,27 @@ export function create(config) {
91
106
  if (aliasKey)
92
107
  handlers[aliasKey] = fn;
93
108
  }
94
- // Also set shorthand intent key when there's no collision
109
+ // Set shorthand intent key: single method gets direct handler,
110
+ // multiple methods get an implicit compose wrapper.
111
+ const processedIntents = new Set();
95
112
  for (const mi of methods) {
96
- if (intentCount[mi.intent] === 1)
113
+ if (processedIntents.has(mi.intent))
114
+ continue;
115
+ processedIntents.add(mi.intent);
116
+ if (intentCount[mi.intent] === 1) {
97
117
  handlers[mi.intent] = handlers[`${mi.name}/${mi.intent}`];
118
+ }
119
+ else {
120
+ const intentMethods = methods.filter((m) => m.intent === mi.intent);
121
+ handlers[mi.intent] = (options) => {
122
+ const configured = intentMethods.map((m) => {
123
+ const key = `${m.name}/${m.intent}`;
124
+ const handlerFn = handlers[key];
125
+ return handlerFn(options);
126
+ });
127
+ return composeHandlers(configured, undefined, selectOffers);
128
+ };
129
+ }
98
130
  }
99
131
  // Build nested handlers: mppx.tempo.charge(...)
100
132
  for (const mi of methods) {
@@ -123,7 +155,7 @@ export function create(config) {
123
155
  const emitFailures = parameters.emitFailures === true;
124
156
  const { method: credMethod, intent: credIntent } = credential.challenge;
125
157
  const methodCandidates = methods.filter((m) => m.name === credMethod && m.intent === credIntent);
126
- const mi = Method.selectServerMethod(methodCandidates, credential.challenge);
158
+ const mi = methodCandidates[0];
127
159
  const eventMethod = mi ?? { intent: credIntent, name: credMethod };
128
160
  const emitStandalonePaymentFailed = async (failure) => {
129
161
  if (!emitFailures)
@@ -316,7 +348,7 @@ export function create(config) {
316
348
  throw new Error(`No handler for "${key}". Is this method in your methods array?`);
317
349
  return handlerFn(options);
318
350
  });
319
- return compose(...configured);
351
+ return composeHandlers(configured, undefined, selectOffers);
320
352
  }
321
353
  function onChallengeCreated(handler) {
322
354
  return serverEvents.on('challenge.created', handler);
@@ -351,7 +383,7 @@ function assertSecretKey(secretKey) {
351
383
  }
352
384
  // biome-ignore lint/correctness/noUnusedVariables: _
353
385
  function createMethodFn(parameters) {
354
- const { authorize, defaults, events, method, preflight, realm, respond, secretKey, broadcast, stableBinding, transport, validate, verify, } = parameters;
386
+ const { attest, authorize, defaults, events, method, preflight, realm, respond, secretKey, broadcast, stableBinding, transport, validate, verify, } = parameters;
355
387
  return (options) => {
356
388
  const { description, meta, scope, ...rest } = options;
357
389
  const staticMeta = Scope.merge({ meta, scope });
@@ -366,7 +398,18 @@ function createMethodFn(parameters) {
366
398
  _canonicalRequest: PaymentRequest.fromMethod(method, { ...defaults, ...rest }),
367
399
  _stableBinding: stableBinding,
368
400
  };
401
+ Object.defineProperty(internal, '_method', { value: method });
369
402
  const handler = async (input) => {
403
+ if (attest && input instanceof globalThis.Request) {
404
+ const response = await attest(input);
405
+ if (response)
406
+ return {
407
+ status: 200,
408
+ withReceipt() {
409
+ return response;
410
+ },
411
+ };
412
+ }
370
413
  if (method.html && isServiceWorkerRequest(input))
371
414
  return {
372
415
  status: 402,
@@ -827,6 +870,33 @@ function createChallengeFn(parameters) {
827
870
  }).then((resolved) => resolved.challenge);
828
871
  };
829
872
  }
873
+ function createAttestationGuard(verifiers) {
874
+ const entries = Object.entries(verifiers);
875
+ if (entries.length === 0)
876
+ throw new TypeError('Mppx server attestation must configure at least one verifier.');
877
+ const cache = new WeakMap();
878
+ return (request) => {
879
+ const cached = cache.get(request);
880
+ if (cached)
881
+ return cached;
882
+ const verification = AttestationServer.verify(request, verifiers).then((outcomes) => {
883
+ for (const [name, outcome] of Object.entries(outcomes))
884
+ if (outcome.status === 'invalid')
885
+ return new globalThis.Response(`Request attestation "${name}" is invalid: ${outcome.reason}`, { status: 401 });
886
+ for (const [name, outcome] of Object.entries(outcomes)) {
887
+ if (outcome.status === 'verified')
888
+ continue;
889
+ const reason = outcome.status === 'unverified'
890
+ ? `Request attestation "${name}" could not be verified: ${outcome.reason}`
891
+ : `Request attestation "${name}" is required.`;
892
+ return new globalThis.Response(reason, { status: 403 });
893
+ }
894
+ return undefined;
895
+ });
896
+ cache.set(request, verification);
897
+ return verification;
898
+ };
899
+ }
830
900
  function createServerEventDispatcher() {
831
901
  const handlers = {
832
902
  '*': new Set(),
@@ -1303,9 +1373,20 @@ export function compose(...args) {
1303
1373
  })()
1304
1374
  : undefined;
1305
1375
  const handlers = (composeOptions ? args.slice(0, -1) : args);
1376
+ return composeHandlers(handlers, composeOptions);
1377
+ }
1378
+ function composeHandlers(handlers, composeOptions, selectOffers) {
1306
1379
  if (handlers.length === 0)
1307
1380
  throw new Error('compose() requires at least one handler');
1308
- return async (input) => {
1381
+ const offerSelector = selectOffers;
1382
+ const offerEntries = handlers.map((handler) => {
1383
+ const internal = handler._internal;
1384
+ const offer = internal && !isComposedHandlerMetadata(internal) ? createServerOffer(internal) : undefined;
1385
+ const method = internal && !isComposedHandlerMetadata(internal) ? internal._method : undefined;
1386
+ return { handler, method, offer };
1387
+ });
1388
+ const hasOfferPolicy = offerSelector !== undefined || offerEntries.some(({ method }) => method?.canOffer !== undefined);
1389
+ const composed = async (input) => {
1309
1390
  // Serve service worker for html-enabled compose
1310
1391
  if (new URL(input.url).searchParams.has(Html.params.serviceWorker)) {
1311
1392
  const hasHtml = handlers.some((h) => h._internal?.html);
@@ -1337,14 +1418,13 @@ export function compose(...args) {
1337
1418
  const { method: credMethod, intent: credIntent } = credential.challenge;
1338
1419
  const credReq = credential.challenge.request;
1339
1420
  // Filter by name+intent, then narrow by comparing stable request fields
1340
- // from the echoed challenge against each handler's canonical request.
1421
+ // from the echoed challenge against each handler's configured offers.
1341
1422
  // Uses the schema-parsed canonical form (not raw options) so that
1342
1423
  // transformed fields (e.g. amount with decimals) match correctly.
1343
1424
  // Also checks inside methodDetails for fields moved there by transforms.
1344
- const candidates = handlers.filter((h) => {
1425
+ const candidates = handlers.filter((handler) => getConfiguredOffers(handler).some((internal) => {
1345
1426
  try {
1346
- const internal = h._internal;
1347
- if (!internal || internal.name !== credMethod || internal.intent !== credIntent)
1427
+ if (internal.name !== credMethod || internal.intent !== credIntent)
1348
1428
  return false;
1349
1429
  const mismatch = internal._stableBinding
1350
1430
  ? getRequestBindingMismatch(getStableBinding(internal._canonicalRequest, internal._stableBinding), getStableBinding(credReq, internal._stableBinding))
@@ -1354,23 +1434,26 @@ export function compose(...args) {
1354
1434
  catch {
1355
1435
  return false;
1356
1436
  }
1357
- });
1437
+ }));
1358
1438
  const match = candidates[0] ??
1359
- handlers.find((h) => {
1360
- const meta = h._internal;
1361
- return meta?.name === credMethod && meta?.intent === credIntent;
1362
- });
1439
+ handlers.find((handler) => getConfiguredOffers(handler).some((internal) => internal.name === credMethod && internal.intent === credIntent));
1363
1440
  if (match)
1364
1441
  return match(input);
1365
1442
  }
1366
- // Payment credential present but no matching handler dispatch to first
1367
- // handler which will reject with an appropriate error (invalid challenge, etc.).
1368
- return handlers[0](input);
1443
+ // Unrecognized or malformed credentials still use the currently eligible
1444
+ // offer set before the first handler issues its rejection challenge.
1369
1445
  }
1446
+ const selectedHandlers = hasOfferPolicy
1447
+ ? await selectOfferHandlers({
1448
+ entries: offerEntries,
1449
+ input,
1450
+ selectOffers: offerSelector,
1451
+ })
1452
+ : handlers;
1370
1453
  // No credential — evaluate handlers sequentially so authorize()/renewal hooks
1371
1454
  // can safely claim the request without racing each other.
1372
1455
  const results = [];
1373
- for (const handler of handlers) {
1456
+ for (const handler of selectedHandlers) {
1374
1457
  const result = await handler(input);
1375
1458
  if (result.status === 200)
1376
1459
  return result;
@@ -1378,7 +1461,7 @@ export function compose(...args) {
1378
1461
  }
1379
1462
  const challengeEntries = (() => {
1380
1463
  const entries = [];
1381
- for (let i = 0; i < handlers.length; i++) {
1464
+ for (let i = 0; i < selectedHandlers.length; i++) {
1382
1465
  const result = results[i];
1383
1466
  if (result?.status !== 402)
1384
1467
  continue;
@@ -1387,7 +1470,7 @@ export function compose(...args) {
1387
1470
  if (!wwwAuth)
1388
1471
  continue;
1389
1472
  entries.push({
1390
- handler: handlers[i],
1473
+ handler: selectedHandlers[i],
1391
1474
  challenge: Challenge.deserialize(wwwAuth),
1392
1475
  result,
1393
1476
  });
@@ -1488,6 +1571,101 @@ export function compose(...args) {
1488
1571
  challenge: new Response(body, { status: 402, headers: mergedHeaders }),
1489
1572
  };
1490
1573
  };
1574
+ const offers = handlers.flatMap(getConfiguredOffers);
1575
+ if (offers.length > 0)
1576
+ composed._internal = { offers };
1577
+ return composed;
1578
+ }
1579
+ /** Returns the flattened configured offers accepted by a handler. */
1580
+ function getConfiguredOffers(handler) {
1581
+ const internal = handler._internal;
1582
+ if (!internal)
1583
+ return [];
1584
+ if (isComposedHandlerMetadata(internal))
1585
+ return internal.offers;
1586
+ return [internal];
1587
+ }
1588
+ function isComposedHandlerMetadata(internal) {
1589
+ return 'offers' in internal && !('_canonicalRequest' in internal);
1590
+ }
1591
+ function createServerOffer(internal) {
1592
+ return Object.freeze({
1593
+ key: `${internal.name}/${internal.intent}`,
1594
+ method: Object.freeze({
1595
+ ...(internal._method.alias ? { alias: internal._method.alias } : {}),
1596
+ intent: internal.intent,
1597
+ name: internal.name,
1598
+ }),
1599
+ request: immutableSnapshot(internal._canonicalRequest),
1600
+ });
1601
+ }
1602
+ /** Applies and validates the server-level offer selection policy. */
1603
+ async function selectOfferHandlers(parameters) {
1604
+ const { entries, input, selectOffers } = parameters;
1605
+ const eligibleEntries = [];
1606
+ for (const entry of entries) {
1607
+ const canOffer = entry.method?.canOffer;
1608
+ if (canOffer) {
1609
+ const approved = await canOffer({
1610
+ input: cloneOfferInput(input),
1611
+ request: entry.offer.request,
1612
+ });
1613
+ if (typeof approved !== 'boolean')
1614
+ throw new Error('canOffer() must return a boolean');
1615
+ if (!approved)
1616
+ continue;
1617
+ }
1618
+ eligibleEntries.push(entry);
1619
+ }
1620
+ if (eligibleEntries.length === 0)
1621
+ throw new Error('No payment offers are available for this request');
1622
+ if (!selectOffers)
1623
+ return eligibleEntries.map(({ handler }) => handler);
1624
+ const offers = eligibleEntries.map(({ offer }) => {
1625
+ if (!offer)
1626
+ throw new Error('selectOffers() can only select configured payment offers');
1627
+ return offer;
1628
+ });
1629
+ const selected = await selectOffers(Object.freeze(offers), Object.freeze({ request: cloneOfferInput(input) }));
1630
+ if (!Array.isArray(selected))
1631
+ throw new Error('selectOffers() must return an array of offers');
1632
+ if (selected.length === 0)
1633
+ throw new Error('selectOffers() must select at least one offer');
1634
+ let previousIndex = -1;
1635
+ const selectedHandlers = selected.map((offer) => {
1636
+ const index = offers.indexOf(offer);
1637
+ if (index === -1)
1638
+ throw new Error('selectOffers() must return only offers from its input array');
1639
+ if (index <= previousIndex)
1640
+ throw new Error('selectOffers() must preserve offer order and must not return duplicates');
1641
+ previousIndex = index;
1642
+ return eligibleEntries[index].handler;
1643
+ });
1644
+ return selectedHandlers;
1645
+ }
1646
+ /** Clones a request for offer hooks, falling back to a bodyless metadata copy. */
1647
+ function cloneOfferInput(input) {
1648
+ try {
1649
+ return input.clone();
1650
+ }
1651
+ catch {
1652
+ return new globalThis.Request(input.url, {
1653
+ headers: new Headers(input.headers),
1654
+ method: input.method,
1655
+ signal: input.signal,
1656
+ });
1657
+ }
1658
+ }
1659
+ /** Clones and recursively freezes protocol data exposed to offer hooks. */
1660
+ function immutableSnapshot(value) {
1661
+ return deepFreeze(structuredClone(value));
1662
+ }
1663
+ function deepFreeze(value) {
1664
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
1665
+ return value;
1666
+ for (const nested of Object.values(value))
1667
+ deepFreeze(nested);
1668
+ return Object.freeze(value);
1491
1669
  }
1492
1670
  function mergeX402PaymentRequiredHeaders(values) {
1493
1671
  if (values.length === 0)