mppx 0.8.15 → 0.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (966) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +61 -39
  4. package/dist/Constants.d.ts +17 -17
  5. package/dist/Errors.d.ts +3 -3
  6. package/dist/Method.d.ts +35 -5
  7. package/dist/Method.js +7 -22
  8. package/dist/Store.d.ts +19 -0
  9. package/dist/Store.js +43 -0
  10. package/dist/attestation/Client.d.ts +17 -0
  11. package/dist/attestation/Client.js +28 -0
  12. package/dist/attestation/Constants.d.ts +15 -0
  13. package/dist/attestation/Constants.js +15 -0
  14. package/dist/attestation/Server.d.ts +4 -0
  15. package/dist/attestation/Server.js +8 -0
  16. package/dist/attestation/Types.d.ts +76 -0
  17. package/dist/attestation/Types.js +2 -0
  18. package/dist/attestation/index.d.ts +6 -0
  19. package/dist/attestation/index.js +6 -0
  20. package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
  21. package/dist/attestation/internal/HttpMessageSignature.js +320 -0
  22. package/dist/attestation/internal/SigningContext.d.ts +4 -0
  23. package/dist/attestation/internal/SigningContext.js +11 -0
  24. package/dist/bin.js +3 -3
  25. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  26. package/dist/cli/account.d.ts +14 -14
  27. package/dist/cli/cli.d.ts +6 -6
  28. package/dist/cli/cli.js +253 -1504
  29. package/dist/cli/plugins/index.js +19 -5
  30. package/dist/cli/plugins/tempo.js +7 -3
  31. package/dist/cli/sessions/Manager.js +7 -4
  32. package/dist/cli/sessions/commands.d.ts +4 -4
  33. package/dist/cli/sessions/request.d.ts +2 -0
  34. package/dist/cli/sessions/request.js +18 -0
  35. package/dist/cli/sessions/store.js +28 -14
  36. package/dist/cli/utils.d.ts +1 -1
  37. package/dist/cli/validate/index.d.ts +3 -3
  38. package/dist/client/Mppx.d.ts +3 -0
  39. package/dist/client/Mppx.js +13 -5
  40. package/dist/client/Transport.d.ts +3 -5
  41. package/dist/client/Transport.js +1 -17
  42. package/dist/client/internal/Fetch.js +2 -6
  43. package/dist/discovery/Discovery.js +2 -1
  44. package/dist/discovery/OpenApi.d.ts +3 -5
  45. package/dist/discovery/OpenApi.js +13 -34
  46. package/dist/discovery/internal/Metadata.d.ts +20 -0
  47. package/dist/discovery/internal/Metadata.js +36 -0
  48. package/dist/evm/Methods.d.ts +11 -11
  49. package/dist/evm/Types.d.ts +17 -17
  50. package/dist/evm/client/Charge.d.ts +11 -11
  51. package/dist/evm/client/Charge.js +8 -0
  52. package/dist/evm/client/Methods.d.ts +11 -11
  53. package/dist/evm/server/Charge.d.ts +1 -1
  54. package/dist/evm/server/Charge.js +2 -0
  55. package/dist/evm/server/Methods.d.ts +11 -11
  56. package/dist/internal/HeaderCodec.d.ts +2 -2
  57. package/dist/internal/types.d.ts +6 -0
  58. package/dist/proxy/Proxy.d.ts +2 -0
  59. package/dist/proxy/Proxy.js +117 -9
  60. package/dist/proxy/Service.d.ts +36 -1
  61. package/dist/proxy/Service.js +9 -8
  62. package/dist/proxy/services/anthropic.js +1 -0
  63. package/dist/proxy/services/openai.js +1 -0
  64. package/dist/proxy/services/stripe.js +1 -0
  65. package/dist/server/Mppx.d.ts +75 -13
  66. package/dist/server/Mppx.js +201 -23
  67. package/dist/server/core.d.ts +9 -0
  68. package/dist/server/core.js +9 -0
  69. package/dist/server/internal/html/config.d.ts +9 -9
  70. package/dist/server/internal/html/constants.d.ts +17 -17
  71. package/dist/stripe/Methods.d.ts +10 -10
  72. package/dist/stripe/client/Charge.d.ts +10 -10
  73. package/dist/stripe/client/Methods.d.ts +10 -10
  74. package/dist/stripe/internal/constants.d.ts +1 -1
  75. package/dist/stripe/internal/constants.js +1 -1
  76. package/dist/stripe/internal/types.d.ts +1 -0
  77. package/dist/stripe/server/Charge.d.ts +11 -11
  78. package/dist/stripe/server/Charge.js +51 -5
  79. package/dist/stripe/server/Methods.d.ts +137 -48
  80. package/dist/stripe/server/Methods.js +265 -4
  81. package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
  82. package/dist/stripe/server/internal/deposit-address.js +28 -0
  83. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  84. package/dist/stripe/server/internal/html.gen.js +1 -1
  85. package/dist/stripe/server/internal/record-payment.d.ts +15 -0
  86. package/dist/stripe/server/internal/record-payment.js +42 -0
  87. package/dist/stripe/server/internal/request.d.ts +25 -0
  88. package/dist/stripe/server/internal/request.js +29 -0
  89. package/dist/stripe/server/spt.d.ts +8 -0
  90. package/dist/stripe/server/spt.js +8 -0
  91. package/dist/tap/Constants.d.ts +28 -0
  92. package/dist/tap/Constants.js +32 -0
  93. package/dist/tap/Types.d.ts +11 -0
  94. package/dist/tap/Types.js +2 -0
  95. package/dist/tap/client/index.d.ts +26 -0
  96. package/dist/tap/client/index.js +33 -0
  97. package/dist/tap/index.d.ts +5 -0
  98. package/dist/tap/index.js +5 -0
  99. package/dist/tap/server/index.d.ts +20 -0
  100. package/dist/tap/server/index.js +36 -0
  101. package/dist/tempo/Attribution.d.ts +1 -1
  102. package/dist/tempo/Methods.d.ts +73 -60
  103. package/dist/tempo/Methods.js +14 -3
  104. package/dist/tempo/Proof.d.ts +16 -16
  105. package/dist/tempo/client/Charge.d.ts +22 -19
  106. package/dist/tempo/client/Charge.js +32 -16
  107. package/dist/tempo/client/Methods.d.ts +51 -38
  108. package/dist/tempo/client/Subscription.d.ts +23 -23
  109. package/dist/tempo/internal/address.d.ts +2 -1
  110. package/dist/tempo/internal/address.js +3 -1
  111. package/dist/tempo/internal/auto-swap.js +4 -19
  112. package/dist/tempo/internal/defaults.d.ts +17 -6
  113. package/dist/tempo/internal/defaults.js +11 -0
  114. package/dist/tempo/internal/fee-payer.d.ts +12 -12
  115. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  116. package/dist/tempo/internal/machine-token-charge.js +113 -0
  117. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  118. package/dist/tempo/internal/machine-token-session.js +173 -0
  119. package/dist/tempo/internal/proof.d.ts +17 -17
  120. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  121. package/dist/tempo/internal/signature-envelope.js +28 -0
  122. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  123. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  124. package/dist/tempo/legacy/client/Session.d.ts +33 -21
  125. package/dist/tempo/legacy/client/Session.js +3 -3
  126. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  127. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  128. package/dist/tempo/legacy/index.d.ts +1 -3
  129. package/dist/tempo/legacy/index.js +1 -3
  130. package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
  131. package/dist/tempo/server/Charge.d.ts +28 -11
  132. package/dist/tempo/server/Charge.js +101 -55
  133. package/dist/tempo/server/Methods.d.ts +58 -56
  134. package/dist/tempo/server/Methods.js +8 -18
  135. package/dist/tempo/server/Relay.d.ts +1 -1
  136. package/dist/tempo/server/Relay.js +2 -2
  137. package/dist/tempo/server/Subscription.d.ts +25 -25
  138. package/dist/tempo/server/Subscription.js +2 -0
  139. package/dist/tempo/server/index.d.ts +1 -1
  140. package/dist/tempo/server/index.js +1 -1
  141. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  142. package/dist/tempo/server/internal/html.gen.js +1 -1
  143. package/dist/tempo/server/internal/transport.d.ts +2 -0
  144. package/dist/tempo/server/internal/transport.js +9 -2
  145. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  146. package/dist/tempo/session/client/ChannelOps.js +35 -6
  147. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  148. package/dist/tempo/session/client/ChannelStore.js +2 -2
  149. package/dist/tempo/session/client/CredentialState.d.ts +18 -3
  150. package/dist/tempo/session/client/CredentialState.js +77 -76
  151. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  152. package/dist/tempo/session/client/Runtime.js +21 -5
  153. package/dist/tempo/session/client/Session.d.ts +34 -22
  154. package/dist/tempo/session/client/Session.js +186 -63
  155. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  156. package/dist/tempo/session/client/SessionManager.js +35 -11
  157. package/dist/tempo/session/client/Transports.d.ts +2 -0
  158. package/dist/tempo/session/client/Transports.js +12 -2
  159. package/dist/tempo/session/precompile/Chain.d.ts +37 -2
  160. package/dist/tempo/session/precompile/Chain.js +116 -15
  161. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  162. package/dist/tempo/session/precompile/Protocol.js +7 -0
  163. package/dist/tempo/session/precompile/Voucher.d.ts +7 -5
  164. package/dist/tempo/session/precompile/Voucher.js +6 -12
  165. package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
  166. package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
  167. package/dist/tempo/session/server/ChannelStore.js +27 -12
  168. package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
  169. package/dist/tempo/session/server/CredentialVerification.js +359 -89
  170. package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
  171. package/dist/tempo/session/server/MeteredStream.js +8 -5
  172. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  173. package/dist/tempo/session/server/RequestState.js +61 -15
  174. package/dist/tempo/session/server/Session.d.ts +46 -23
  175. package/dist/tempo/session/server/Session.js +150 -56
  176. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  177. package/dist/tempo/session/server/Settlement.js +53 -21
  178. package/dist/tempo/session/server/Sse.d.ts +3 -1
  179. package/dist/tempo/session/server/Sse.js +2 -1
  180. package/dist/tempo/session/server/Transports.d.ts +1 -1
  181. package/dist/tempo/session/server/Transports.js +1 -0
  182. package/dist/tempo/session/server/Ws.d.ts +6 -1
  183. package/dist/tempo/session/server/Ws.js +1 -0
  184. package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
  185. package/dist/web-bot-auth/Constants.d.ts +20 -0
  186. package/dist/web-bot-auth/Constants.js +24 -0
  187. package/dist/web-bot-auth/Types.d.ts +10 -0
  188. package/dist/web-bot-auth/Types.js +2 -0
  189. package/dist/web-bot-auth/client/index.d.ts +29 -0
  190. package/dist/web-bot-auth/client/index.js +64 -0
  191. package/dist/web-bot-auth/index.d.ts +7 -0
  192. package/dist/web-bot-auth/index.js +7 -0
  193. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
  194. package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
  195. package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
  196. package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
  197. package/dist/web-bot-auth/server/index.d.ts +35 -0
  198. package/dist/web-bot-auth/server/index.js +88 -0
  199. package/dist/x402/Types.d.ts +6 -6
  200. package/dist/x402/client/Exact.d.ts +8 -0
  201. package/dist/x402/client/Exact.js +40 -10
  202. package/dist/x402/server/EvmCharge.d.ts +22 -0
  203. package/dist/x402/server/EvmCharge.js +54 -20
  204. package/package.json +28 -34
  205. package/dist/BodyDigest.d.ts.map +0 -1
  206. package/dist/BodyDigest.js.map +0 -1
  207. package/dist/Challenge.d.ts.map +0 -1
  208. package/dist/Challenge.js.map +0 -1
  209. package/dist/Constants.d.ts.map +0 -1
  210. package/dist/Constants.js.map +0 -1
  211. package/dist/Credential.d.ts.map +0 -1
  212. package/dist/Credential.js.map +0 -1
  213. package/dist/Errors.d.ts.map +0 -1
  214. package/dist/Errors.js.map +0 -1
  215. package/dist/Expires.d.ts.map +0 -1
  216. package/dist/Expires.js.map +0 -1
  217. package/dist/Html.d.ts.map +0 -1
  218. package/dist/Html.js.map +0 -1
  219. package/dist/Mcp.d.ts.map +0 -1
  220. package/dist/Mcp.js.map +0 -1
  221. package/dist/Method.d.ts.map +0 -1
  222. package/dist/Method.js.map +0 -1
  223. package/dist/PaymentRequest.d.ts.map +0 -1
  224. package/dist/PaymentRequest.js.map +0 -1
  225. package/dist/Receipt.d.ts.map +0 -1
  226. package/dist/Receipt.js.map +0 -1
  227. package/dist/Store.d.ts.map +0 -1
  228. package/dist/Store.js.map +0 -1
  229. package/dist/bin.d.ts.map +0 -1
  230. package/dist/bin.js.map +0 -1
  231. package/dist/cli/account.d.ts.map +0 -1
  232. package/dist/cli/account.js.map +0 -1
  233. package/dist/cli/cli.d.ts.map +0 -1
  234. package/dist/cli/cli.js.map +0 -1
  235. package/dist/cli/config.d.ts.map +0 -1
  236. package/dist/cli/config.js.map +0 -1
  237. package/dist/cli/internal.d.ts.map +0 -1
  238. package/dist/cli/internal.js.map +0 -1
  239. package/dist/cli/plugins/evm.d.ts.map +0 -1
  240. package/dist/cli/plugins/evm.js.map +0 -1
  241. package/dist/cli/plugins/index.d.ts.map +0 -1
  242. package/dist/cli/plugins/index.js.map +0 -1
  243. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  244. package/dist/cli/plugins/plugin.js.map +0 -1
  245. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  246. package/dist/cli/plugins/stripe.js.map +0 -1
  247. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  248. package/dist/cli/plugins/tempo.js.map +0 -1
  249. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  250. package/dist/cli/sessions/Manager.js.map +0 -1
  251. package/dist/cli/sessions/commands.d.ts.map +0 -1
  252. package/dist/cli/sessions/commands.js.map +0 -1
  253. package/dist/cli/sessions/request.d.ts.map +0 -1
  254. package/dist/cli/sessions/request.js.map +0 -1
  255. package/dist/cli/sessions/store.d.ts.map +0 -1
  256. package/dist/cli/sessions/store.js.map +0 -1
  257. package/dist/cli/utils.d.ts.map +0 -1
  258. package/dist/cli/utils.js.map +0 -1
  259. package/dist/cli/validate/challenge.d.ts.map +0 -1
  260. package/dist/cli/validate/challenge.js.map +0 -1
  261. package/dist/cli/validate/discovery.d.ts.map +0 -1
  262. package/dist/cli/validate/discovery.js.map +0 -1
  263. package/dist/cli/validate/helpers.d.ts.map +0 -1
  264. package/dist/cli/validate/helpers.js.map +0 -1
  265. package/dist/cli/validate/index.d.ts.map +0 -1
  266. package/dist/cli/validate/index.js.map +0 -1
  267. package/dist/cli/validate/messages.d.ts.map +0 -1
  268. package/dist/cli/validate/messages.js.map +0 -1
  269. package/dist/cli/validate/payment.d.ts.map +0 -1
  270. package/dist/cli/validate/payment.js.map +0 -1
  271. package/dist/client/Methods.d.ts.map +0 -1
  272. package/dist/client/Methods.js.map +0 -1
  273. package/dist/client/Mppx.d.ts.map +0 -1
  274. package/dist/client/Mppx.js.map +0 -1
  275. package/dist/client/Transport.d.ts.map +0 -1
  276. package/dist/client/Transport.js.map +0 -1
  277. package/dist/client/index.d.ts.map +0 -1
  278. package/dist/client/index.js.map +0 -1
  279. package/dist/client/internal/Fetch.d.ts.map +0 -1
  280. package/dist/client/internal/Fetch.js.map +0 -1
  281. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  282. package/dist/client/internal/MethodChallenge.js.map +0 -1
  283. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  284. package/dist/client/internal/MethodResponse.js.map +0 -1
  285. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  286. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  287. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  288. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  289. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  290. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  291. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  292. package/dist/client/internal/protocols/Shared.js.map +0 -1
  293. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  294. package/dist/client/internal/protocols/X402.js.map +0 -1
  295. package/dist/client/node.d.ts.map +0 -1
  296. package/dist/client/node.js.map +0 -1
  297. package/dist/discovery/Discovery.d.ts.map +0 -1
  298. package/dist/discovery/Discovery.js.map +0 -1
  299. package/dist/discovery/OpenApi.d.ts.map +0 -1
  300. package/dist/discovery/OpenApi.js.map +0 -1
  301. package/dist/discovery/Validate.d.ts.map +0 -1
  302. package/dist/discovery/Validate.js.map +0 -1
  303. package/dist/discovery/index.d.ts.map +0 -1
  304. package/dist/discovery/index.js.map +0 -1
  305. package/dist/evm/Assets.d.ts.map +0 -1
  306. package/dist/evm/Assets.js.map +0 -1
  307. package/dist/evm/Chains.d.ts.map +0 -1
  308. package/dist/evm/Chains.js.map +0 -1
  309. package/dist/evm/Methods.d.ts.map +0 -1
  310. package/dist/evm/Methods.js.map +0 -1
  311. package/dist/evm/Types.d.ts.map +0 -1
  312. package/dist/evm/Types.js.map +0 -1
  313. package/dist/evm/client/Charge.d.ts.map +0 -1
  314. package/dist/evm/client/Charge.js.map +0 -1
  315. package/dist/evm/client/Methods.d.ts.map +0 -1
  316. package/dist/evm/client/Methods.js.map +0 -1
  317. package/dist/evm/client/index.d.ts.map +0 -1
  318. package/dist/evm/client/index.js.map +0 -1
  319. package/dist/evm/index.d.ts.map +0 -1
  320. package/dist/evm/index.js.map +0 -1
  321. package/dist/evm/server/Charge.d.ts.map +0 -1
  322. package/dist/evm/server/Charge.js.map +0 -1
  323. package/dist/evm/server/Methods.d.ts.map +0 -1
  324. package/dist/evm/server/Methods.js.map +0 -1
  325. package/dist/evm/server/index.d.ts.map +0 -1
  326. package/dist/evm/server/index.js.map +0 -1
  327. package/dist/index.d.ts.map +0 -1
  328. package/dist/index.js.map +0 -1
  329. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  330. package/dist/internal/AcceptPayment.js.map +0 -1
  331. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  332. package/dist/internal/HeaderCodec.js.map +0 -1
  333. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  334. package/dist/internal/constantTimeEqual.js.map +0 -1
  335. package/dist/internal/env.d.ts.map +0 -1
  336. package/dist/internal/env.js.map +0 -1
  337. package/dist/internal/types.d.ts.map +0 -1
  338. package/dist/internal/types.js.map +0 -1
  339. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  340. package/dist/mcp/client/McpClient.js.map +0 -1
  341. package/dist/mcp/client/index.d.ts.map +0 -1
  342. package/dist/mcp/client/index.js.map +0 -1
  343. package/dist/mcp/server/Transport.d.ts.map +0 -1
  344. package/dist/mcp/server/Transport.js.map +0 -1
  345. package/dist/mcp/server/index.d.ts.map +0 -1
  346. package/dist/mcp/server/index.js.map +0 -1
  347. package/dist/middlewares/elysia.d.ts.map +0 -1
  348. package/dist/middlewares/elysia.js.map +0 -1
  349. package/dist/middlewares/express.d.ts.map +0 -1
  350. package/dist/middlewares/express.js.map +0 -1
  351. package/dist/middlewares/hono.d.ts.map +0 -1
  352. package/dist/middlewares/hono.js.map +0 -1
  353. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  354. package/dist/middlewares/internal/mppx.js.map +0 -1
  355. package/dist/middlewares/nextjs.d.ts.map +0 -1
  356. package/dist/middlewares/nextjs.js.map +0 -1
  357. package/dist/proxy/Proxy.d.ts.map +0 -1
  358. package/dist/proxy/Proxy.js.map +0 -1
  359. package/dist/proxy/Service.d.ts.map +0 -1
  360. package/dist/proxy/Service.js.map +0 -1
  361. package/dist/proxy/index.d.ts.map +0 -1
  362. package/dist/proxy/index.js.map +0 -1
  363. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  364. package/dist/proxy/internal/Headers.js.map +0 -1
  365. package/dist/proxy/internal/Route.d.ts.map +0 -1
  366. package/dist/proxy/internal/Route.js.map +0 -1
  367. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  368. package/dist/proxy/services/anthropic.js.map +0 -1
  369. package/dist/proxy/services/openai.d.ts.map +0 -1
  370. package/dist/proxy/services/openai.js.map +0 -1
  371. package/dist/proxy/services/stripe.d.ts.map +0 -1
  372. package/dist/proxy/services/stripe.js.map +0 -1
  373. package/dist/server/Methods.d.ts.map +0 -1
  374. package/dist/server/Methods.js.map +0 -1
  375. package/dist/server/Mppx.d.ts.map +0 -1
  376. package/dist/server/Mppx.js.map +0 -1
  377. package/dist/server/NodeListener.d.ts.map +0 -1
  378. package/dist/server/NodeListener.js.map +0 -1
  379. package/dist/server/Request.d.ts.map +0 -1
  380. package/dist/server/Request.js.map +0 -1
  381. package/dist/server/Response.d.ts.map +0 -1
  382. package/dist/server/Response.js.map +0 -1
  383. package/dist/server/Transport.d.ts.map +0 -1
  384. package/dist/server/Transport.js.map +0 -1
  385. package/dist/server/index.d.ts.map +0 -1
  386. package/dist/server/index.js.map +0 -1
  387. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  388. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  389. package/dist/server/internal/html/config.d.ts.map +0 -1
  390. package/dist/server/internal/html/config.js.map +0 -1
  391. package/dist/server/internal/html/constants.d.ts.map +0 -1
  392. package/dist/server/internal/html/constants.js.map +0 -1
  393. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  394. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  395. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  396. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  397. package/dist/server/internal/scope.d.ts.map +0 -1
  398. package/dist/server/internal/scope.js.map +0 -1
  399. package/dist/stripe/Methods.d.ts.map +0 -1
  400. package/dist/stripe/Methods.js.map +0 -1
  401. package/dist/stripe/client/Charge.d.ts.map +0 -1
  402. package/dist/stripe/client/Charge.js.map +0 -1
  403. package/dist/stripe/client/Methods.d.ts.map +0 -1
  404. package/dist/stripe/client/Methods.js.map +0 -1
  405. package/dist/stripe/client/index.d.ts.map +0 -1
  406. package/dist/stripe/client/index.js.map +0 -1
  407. package/dist/stripe/index.d.ts.map +0 -1
  408. package/dist/stripe/index.js.map +0 -1
  409. package/dist/stripe/internal/constants.d.ts.map +0 -1
  410. package/dist/stripe/internal/constants.js.map +0 -1
  411. package/dist/stripe/internal/types.d.ts.map +0 -1
  412. package/dist/stripe/internal/types.js.map +0 -1
  413. package/dist/stripe/server/Charge.d.ts.map +0 -1
  414. package/dist/stripe/server/Charge.js.map +0 -1
  415. package/dist/stripe/server/Methods.d.ts.map +0 -1
  416. package/dist/stripe/server/Methods.js.map +0 -1
  417. package/dist/stripe/server/index.d.ts.map +0 -1
  418. package/dist/stripe/server/index.js.map +0 -1
  419. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  420. package/dist/stripe/server/internal/html/types.js.map +0 -1
  421. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  422. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  423. package/dist/tempo/Attribution.d.ts.map +0 -1
  424. package/dist/tempo/Attribution.js.map +0 -1
  425. package/dist/tempo/Methods.d.ts.map +0 -1
  426. package/dist/tempo/Methods.js.map +0 -1
  427. package/dist/tempo/Proof.d.ts.map +0 -1
  428. package/dist/tempo/Proof.js.map +0 -1
  429. package/dist/tempo/client/Charge.d.ts.map +0 -1
  430. package/dist/tempo/client/Charge.js.map +0 -1
  431. package/dist/tempo/client/Methods.d.ts.map +0 -1
  432. package/dist/tempo/client/Methods.js.map +0 -1
  433. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  434. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  435. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  436. package/dist/tempo/client/Subscription.js.map +0 -1
  437. package/dist/tempo/client/index.d.ts.map +0 -1
  438. package/dist/tempo/client/index.js.map +0 -1
  439. package/dist/tempo/index.d.ts.map +0 -1
  440. package/dist/tempo/index.js.map +0 -1
  441. package/dist/tempo/internal/account.d.ts.map +0 -1
  442. package/dist/tempo/internal/account.js.map +0 -1
  443. package/dist/tempo/internal/address.d.ts.map +0 -1
  444. package/dist/tempo/internal/address.js.map +0 -1
  445. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  446. package/dist/tempo/internal/auto-swap.js.map +0 -1
  447. package/dist/tempo/internal/charge.d.ts.map +0 -1
  448. package/dist/tempo/internal/charge.js.map +0 -1
  449. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  450. package/dist/tempo/internal/defaults.js.map +0 -1
  451. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  452. package/dist/tempo/internal/fee-payer.js.map +0 -1
  453. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  454. package/dist/tempo/internal/fee-token.js.map +0 -1
  455. package/dist/tempo/internal/proof.d.ts.map +0 -1
  456. package/dist/tempo/internal/proof.js.map +0 -1
  457. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  458. package/dist/tempo/internal/selectors.js.map +0 -1
  459. package/dist/tempo/internal/types.d.ts.map +0 -1
  460. package/dist/tempo/internal/types.js.map +0 -1
  461. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  462. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  463. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  464. package/dist/tempo/legacy/client/Session.js.map +0 -1
  465. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  466. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  467. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  468. package/dist/tempo/legacy/client/index.js.map +0 -1
  469. package/dist/tempo/legacy/index.d.ts.map +0 -1
  470. package/dist/tempo/legacy/index.js.map +0 -1
  471. package/dist/tempo/legacy/server/Session.d.ts +0 -208
  472. package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
  473. package/dist/tempo/legacy/server/Session.js +0 -698
  474. package/dist/tempo/legacy/server/Session.js.map +0 -1
  475. package/dist/tempo/legacy/server/index.d.ts +0 -5
  476. package/dist/tempo/legacy/server/index.d.ts.map +0 -1
  477. package/dist/tempo/legacy/server/index.js +0 -5
  478. package/dist/tempo/legacy/server/index.js.map +0 -1
  479. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  480. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  481. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  482. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  483. package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
  484. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
  485. package/dist/tempo/legacy/session/ChannelStore.js +0 -6
  486. package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
  487. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  488. package/dist/tempo/legacy/session/Types.js.map +0 -1
  489. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  490. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  491. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  492. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  493. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  494. package/dist/tempo/legacy/session/index.js.map +0 -1
  495. package/dist/tempo/server/Charge.d.ts.map +0 -1
  496. package/dist/tempo/server/Charge.js.map +0 -1
  497. package/dist/tempo/server/Methods.d.ts.map +0 -1
  498. package/dist/tempo/server/Methods.js.map +0 -1
  499. package/dist/tempo/server/Relay.d.ts.map +0 -1
  500. package/dist/tempo/server/Relay.js.map +0 -1
  501. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  502. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  503. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  504. package/dist/tempo/server/Subscription.js.map +0 -1
  505. package/dist/tempo/server/index.d.ts.map +0 -1
  506. package/dist/tempo/server/index.js.map +0 -1
  507. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  508. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  509. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  510. package/dist/tempo/server/internal/request-body.js.map +0 -1
  511. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  512. package/dist/tempo/server/internal/transport.js.map +0 -1
  513. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  514. package/dist/tempo/session/Snapshot.js.map +0 -1
  515. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  516. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  517. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  518. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  519. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  520. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  521. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  522. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  523. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  524. package/dist/tempo/session/client/Runtime.js.map +0 -1
  525. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  526. package/dist/tempo/session/client/Session.js.map +0 -1
  527. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  528. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  529. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  530. package/dist/tempo/session/client/Transports.js.map +0 -1
  531. package/dist/tempo/session/client/index.d.ts.map +0 -1
  532. package/dist/tempo/session/client/index.js.map +0 -1
  533. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  534. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  535. package/dist/tempo/session/index.d.ts.map +0 -1
  536. package/dist/tempo/session/index.js.map +0 -1
  537. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  538. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  539. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  540. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  541. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  542. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  543. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  544. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  545. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  546. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  547. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  548. package/dist/tempo/session/precompile/index.js.map +0 -1
  549. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  550. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  551. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  552. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  553. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  554. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  555. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  556. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  557. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  558. package/dist/tempo/session/server/RequestState.js.map +0 -1
  559. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  560. package/dist/tempo/session/server/Session.js.map +0 -1
  561. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  562. package/dist/tempo/session/server/Settlement.js.map +0 -1
  563. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  564. package/dist/tempo/session/server/Sse.js.map +0 -1
  565. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  566. package/dist/tempo/session/server/Transports.js.map +0 -1
  567. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  568. package/dist/tempo/session/server/Ws.js.map +0 -1
  569. package/dist/tempo/session/server/index.d.ts.map +0 -1
  570. package/dist/tempo/session/server/index.js.map +0 -1
  571. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  572. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  573. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  574. package/dist/tempo/subscription/Receipt.js.map +0 -1
  575. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  576. package/dist/tempo/subscription/Store.js.map +0 -1
  577. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  578. package/dist/tempo/subscription/Types.js.map +0 -1
  579. package/dist/tempo/subscription/index.d.ts.map +0 -1
  580. package/dist/tempo/subscription/index.js.map +0 -1
  581. package/dist/validation/core.d.ts.map +0 -1
  582. package/dist/validation/core.js.map +0 -1
  583. package/dist/validation/index.d.ts.map +0 -1
  584. package/dist/validation/index.js.map +0 -1
  585. package/dist/viem/Account.d.ts.map +0 -1
  586. package/dist/viem/Account.js.map +0 -1
  587. package/dist/viem/Client.d.ts.map +0 -1
  588. package/dist/viem/Client.js.map +0 -1
  589. package/dist/x402/Assets.d.ts.map +0 -1
  590. package/dist/x402/Assets.js.map +0 -1
  591. package/dist/x402/Header.d.ts.map +0 -1
  592. package/dist/x402/Header.js.map +0 -1
  593. package/dist/x402/Types.d.ts.map +0 -1
  594. package/dist/x402/Types.js.map +0 -1
  595. package/dist/x402/client/Exact.d.ts.map +0 -1
  596. package/dist/x402/client/Exact.js.map +0 -1
  597. package/dist/x402/index.d.ts.map +0 -1
  598. package/dist/x402/index.js.map +0 -1
  599. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  600. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  601. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  602. package/dist/x402/internal/RouteBinding.js.map +0 -1
  603. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  604. package/dist/x402/server/EvmCharge.js.map +0 -1
  605. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  606. package/dist/x402/server/Facilitator.js.map +0 -1
  607. package/dist/zod.d.ts.map +0 -1
  608. package/dist/zod.js.map +0 -1
  609. package/src/BodyDigest.test.ts +0 -43
  610. package/src/BodyDigest.ts +0 -55
  611. package/src/Challenge.fuzz.test.ts +0 -121
  612. package/src/Challenge.test-d.ts +0 -82
  613. package/src/Challenge.test.ts +0 -995
  614. package/src/Challenge.ts +0 -683
  615. package/src/Constants.ts +0 -58
  616. package/src/Credential.fuzz.test.ts +0 -62
  617. package/src/Credential.test.ts +0 -378
  618. package/src/Credential.ts +0 -217
  619. package/src/Errors.test.ts +0 -520
  620. package/src/Errors.ts +0 -448
  621. package/src/Expires.test.ts +0 -112
  622. package/src/Expires.ts +0 -59
  623. package/src/Html.ts +0 -67
  624. package/src/Mcp.ts +0 -85
  625. package/src/Method.test.ts +0 -177
  626. package/src/Method.ts +0 -617
  627. package/src/PaymentRequest.test.ts +0 -147
  628. package/src/PaymentRequest.ts +0 -108
  629. package/src/Receipt.test.ts +0 -151
  630. package/src/Receipt.ts +0 -146
  631. package/src/Store.test-d.ts +0 -195
  632. package/src/Store.test.ts +0 -357
  633. package/src/Store.ts +0 -329
  634. package/src/bin.ts +0 -4
  635. package/src/cli/account.ts +0 -269
  636. package/src/cli/cli.test.ts +0 -2221
  637. package/src/cli/cli.ts +0 -1649
  638. package/src/cli/config.test.ts +0 -89
  639. package/src/cli/config.ts +0 -50
  640. package/src/cli/internal.ts +0 -114
  641. package/src/cli/mcp.test.ts +0 -262
  642. package/src/cli/plugins/evm.ts +0 -55
  643. package/src/cli/plugins/index.ts +0 -4
  644. package/src/cli/plugins/plugin.ts +0 -84
  645. package/src/cli/plugins/stripe.ts +0 -174
  646. package/src/cli/plugins/tempo.ts +0 -1102
  647. package/src/cli/sessions/Manager.test.ts +0 -249
  648. package/src/cli/sessions/Manager.ts +0 -93
  649. package/src/cli/sessions/commands.ts +0 -444
  650. package/src/cli/sessions/request.test.ts +0 -51
  651. package/src/cli/sessions/request.ts +0 -353
  652. package/src/cli/sessions/store.test.ts +0 -581
  653. package/src/cli/sessions/store.ts +0 -940
  654. package/src/cli/utils.test.ts +0 -156
  655. package/src/cli/utils.ts +0 -394
  656. package/src/cli/validate/challenge.ts +0 -565
  657. package/src/cli/validate/discovery.test.ts +0 -435
  658. package/src/cli/validate/discovery.ts +0 -221
  659. package/src/cli/validate/helpers.ts +0 -166
  660. package/src/cli/validate/index.ts +0 -229
  661. package/src/cli/validate/messages.ts +0 -7
  662. package/src/cli/validate/payment.ts +0 -774
  663. package/src/cli/validate.test.ts +0 -843
  664. package/src/client/Methods.ts +0 -8
  665. package/src/client/Mppx.test-d.ts +0 -270
  666. package/src/client/Mppx.test.ts +0 -1065
  667. package/src/client/Mppx.ts +0 -466
  668. package/src/client/Transport.test.ts +0 -619
  669. package/src/client/Transport.ts +0 -191
  670. package/src/client/index.ts +0 -29
  671. package/src/client/internal/Fetch.browser.test.ts +0 -197
  672. package/src/client/internal/Fetch.test-d.ts +0 -109
  673. package/src/client/internal/Fetch.test.ts +0 -2336
  674. package/src/client/internal/Fetch.ts +0 -1079
  675. package/src/client/internal/MethodChallenge.ts +0 -35
  676. package/src/client/internal/MethodResponse.ts +0 -67
  677. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  678. package/src/client/internal/protocols/Mcp.ts +0 -186
  679. package/src/client/internal/protocols/Mpp.ts +0 -21
  680. package/src/client/internal/protocols/Protocol.ts +0 -10
  681. package/src/client/internal/protocols/Shared.ts +0 -25
  682. package/src/client/internal/protocols/X402.ts +0 -46
  683. package/src/client/node.test.ts +0 -115
  684. package/src/client/node.ts +0 -247
  685. package/src/discovery/Discovery.test.ts +0 -214
  686. package/src/discovery/Discovery.ts +0 -105
  687. package/src/discovery/OpenApi.test.ts +0 -453
  688. package/src/discovery/OpenApi.ts +0 -224
  689. package/src/discovery/Validate.test.ts +0 -305
  690. package/src/discovery/Validate.ts +0 -77
  691. package/src/discovery/index.ts +0 -3
  692. package/src/env.d.ts +0 -12
  693. package/src/evm/Assets.ts +0 -1
  694. package/src/evm/Chains.ts +0 -11
  695. package/src/evm/Methods.ts +0 -44
  696. package/src/evm/PublicInterface.test-d.ts +0 -134
  697. package/src/evm/Types.ts +0 -140
  698. package/src/evm/client/Charge.test.ts +0 -347
  699. package/src/evm/client/Charge.ts +0 -187
  700. package/src/evm/client/Methods.ts +0 -19
  701. package/src/evm/client/index.ts +0 -6
  702. package/src/evm/index.ts +0 -16
  703. package/src/evm/server/Charge.test.ts +0 -339
  704. package/src/evm/server/Charge.ts +0 -290
  705. package/src/evm/server/Methods.ts +0 -22
  706. package/src/evm/server/index.ts +0 -6
  707. package/src/index.ts +0 -14
  708. package/src/internal/AcceptPayment.test.ts +0 -343
  709. package/src/internal/AcceptPayment.ts +0 -366
  710. package/src/internal/HeaderCodec.ts +0 -36
  711. package/src/internal/changeset.test.ts +0 -106
  712. package/src/internal/constantTimeEqual.test.ts +0 -47
  713. package/src/internal/constantTimeEqual.ts +0 -10
  714. package/src/internal/env.test.ts +0 -42
  715. package/src/internal/env.ts +0 -49
  716. package/src/internal/types.test-d.ts +0 -21
  717. package/src/internal/types.ts +0 -470
  718. package/src/mcp/client/McpClient.integration.test.ts +0 -652
  719. package/src/mcp/client/McpClient.test-d.ts +0 -144
  720. package/src/mcp/client/McpClient.test.ts +0 -463
  721. package/src/mcp/client/McpClient.ts +0 -307
  722. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  723. package/src/mcp/client/index.ts +0 -2
  724. package/src/mcp/server/Transport.test.ts +0 -191
  725. package/src/mcp/server/Transport.ts +0 -111
  726. package/src/mcp/server/index.ts +0 -1
  727. package/src/middlewares/elysia.test.ts +0 -295
  728. package/src/middlewares/elysia.ts +0 -116
  729. package/src/middlewares/express.test.ts +0 -371
  730. package/src/middlewares/express.ts +0 -140
  731. package/src/middlewares/hono.test.ts +0 -476
  732. package/src/middlewares/hono.ts +0 -153
  733. package/src/middlewares/internal/mppx.test.ts +0 -177
  734. package/src/middlewares/internal/mppx.ts +0 -67
  735. package/src/middlewares/nextjs.test.ts +0 -369
  736. package/src/middlewares/nextjs.ts +0 -107
  737. package/src/proxy/Proxy.test.ts +0 -1031
  738. package/src/proxy/Proxy.ts +0 -345
  739. package/src/proxy/Service.test.ts +0 -182
  740. package/src/proxy/Service.ts +0 -253
  741. package/src/proxy/index.ts +0 -6
  742. package/src/proxy/internal/Headers.test.ts +0 -139
  743. package/src/proxy/internal/Headers.ts +0 -66
  744. package/src/proxy/internal/Route.test.ts +0 -217
  745. package/src/proxy/internal/Route.ts +0 -64
  746. package/src/proxy/services/anthropic.test.ts +0 -132
  747. package/src/proxy/services/anthropic.ts +0 -52
  748. package/src/proxy/services/openai.test.ts +0 -157
  749. package/src/proxy/services/openai.ts +0 -59
  750. package/src/proxy/services/stripe.test.ts +0 -175
  751. package/src/proxy/services/stripe.ts +0 -58
  752. package/src/server/Methods.ts +0 -3
  753. package/src/server/Mppx.authorize.test.ts +0 -210
  754. package/src/server/Mppx.test-d.ts +0 -360
  755. package/src/server/Mppx.test.ts +0 -5813
  756. package/src/server/Mppx.ts +0 -2623
  757. package/src/server/NodeListener.test.ts +0 -293
  758. package/src/server/NodeListener.ts +0 -45
  759. package/src/server/Request.test.ts +0 -255
  760. package/src/server/Request.ts +0 -155
  761. package/src/server/Response.test.ts +0 -32
  762. package/src/server/Response.ts +0 -45
  763. package/src/server/Transport.test.ts +0 -598
  764. package/src/server/Transport.ts +0 -320
  765. package/src/server/index.ts +0 -9
  766. package/src/server/internal/html/compose.main.gen.ts +0 -2
  767. package/src/server/internal/html/compose.main.ts +0 -88
  768. package/src/server/internal/html/config.ts +0 -672
  769. package/src/server/internal/html/constants.ts +0 -28
  770. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  771. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  772. package/src/server/internal/html/serviceWorker.ts +0 -27
  773. package/src/server/internal/html/tsconfig.compose.json +0 -8
  774. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  775. package/src/server/internal/html/tsconfig.worker.json +0 -8
  776. package/src/server/internal/scope.ts +0 -43
  777. package/src/stripe/Charge.integration.test.ts +0 -329
  778. package/src/stripe/Methods.test.ts +0 -62
  779. package/src/stripe/Methods.ts +0 -44
  780. package/src/stripe/client/Charge.test.ts +0 -205
  781. package/src/stripe/client/Charge.ts +0 -132
  782. package/src/stripe/client/Methods.ts +0 -37
  783. package/src/stripe/client/index.ts +0 -2
  784. package/src/stripe/index.ts +0 -1
  785. package/src/stripe/internal/constants.ts +0 -7
  786. package/src/stripe/internal/types.ts +0 -46
  787. package/src/stripe/server/Charge.test-d.ts +0 -66
  788. package/src/stripe/server/Charge.test.ts +0 -621
  789. package/src/stripe/server/Charge.ts +0 -434
  790. package/src/stripe/server/Methods.ts +0 -24
  791. package/src/stripe/server/index.ts +0 -2
  792. package/src/stripe/server/internal/html/main.ts +0 -165
  793. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  794. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  795. package/src/stripe/server/internal/html/package.json +0 -9
  796. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  797. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  798. package/src/stripe/server/internal/html/types.ts +0 -5
  799. package/src/stripe/server/internal/html.gen.ts +0 -2
  800. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  801. package/src/tempo/Attribution.test.ts +0 -294
  802. package/src/tempo/Attribution.ts +0 -185
  803. package/src/tempo/Methods.test.ts +0 -425
  804. package/src/tempo/Methods.ts +0 -367
  805. package/src/tempo/Proof.conformance.test.ts +0 -146
  806. package/src/tempo/Proof.test-d.ts +0 -32
  807. package/src/tempo/Proof.test.ts +0 -40
  808. package/src/tempo/Proof.ts +0 -69
  809. package/src/tempo/PublicExports.test-d.ts +0 -130
  810. package/src/tempo/Subscription.integration.test.ts +0 -591
  811. package/src/tempo/client/Charge.test.ts +0 -501
  812. package/src/tempo/client/Charge.ts +0 -289
  813. package/src/tempo/client/Methods.ts +0 -45
  814. package/src/tempo/client/ResolveAccount.ts +0 -46
  815. package/src/tempo/client/Subscription.test.ts +0 -180
  816. package/src/tempo/client/Subscription.ts +0 -156
  817. package/src/tempo/client/index.ts +0 -17
  818. package/src/tempo/index.ts +0 -5
  819. package/src/tempo/internal/account.ts +0 -56
  820. package/src/tempo/internal/address.ts +0 -6
  821. package/src/tempo/internal/auto-swap.test.ts +0 -198
  822. package/src/tempo/internal/auto-swap.ts +0 -188
  823. package/src/tempo/internal/charge.test.ts +0 -66
  824. package/src/tempo/internal/charge.ts +0 -43
  825. package/src/tempo/internal/defaults.test.ts +0 -95
  826. package/src/tempo/internal/defaults.ts +0 -53
  827. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  828. package/src/tempo/internal/fee-payer.ts +0 -808
  829. package/src/tempo/internal/fee-token.test.ts +0 -165
  830. package/src/tempo/internal/fee-token.ts +0 -72
  831. package/src/tempo/internal/proof.test.ts +0 -97
  832. package/src/tempo/internal/proof.ts +0 -87
  833. package/src/tempo/internal/selectors.ts +0 -10
  834. package/src/tempo/internal/types.ts +0 -19
  835. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  836. package/src/tempo/legacy/README.md +0 -9
  837. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  838. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  839. package/src/tempo/legacy/client/Session.test.ts +0 -800
  840. package/src/tempo/legacy/client/Session.ts +0 -397
  841. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  842. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  843. package/src/tempo/legacy/client/index.ts +0 -6
  844. package/src/tempo/legacy/index.ts +0 -6
  845. package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
  846. package/src/tempo/legacy/server/Session.test.ts +0 -6370
  847. package/src/tempo/legacy/server/Session.ts +0 -1024
  848. package/src/tempo/legacy/server/index.ts +0 -4
  849. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  850. package/src/tempo/legacy/session/Chain.ts +0 -830
  851. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  852. package/src/tempo/legacy/session/Channel.ts +0 -51
  853. package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
  854. package/src/tempo/legacy/session/ChannelStore.ts +0 -39
  855. package/src/tempo/legacy/session/Types.ts +0 -91
  856. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  857. package/src/tempo/legacy/session/Voucher.ts +0 -183
  858. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  859. package/src/tempo/legacy/session/index.ts +0 -8
  860. package/src/tempo/server/AtomicStore.test-d.ts +0 -50
  861. package/src/tempo/server/Charge.test.ts +0 -6121
  862. package/src/tempo/server/Charge.ts +0 -1351
  863. package/src/tempo/server/Methods.ts +0 -106
  864. package/src/tempo/server/Relay.test.ts +0 -677
  865. package/src/tempo/server/Relay.ts +0 -297
  866. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  867. package/src/tempo/server/SponsorBudget.ts +0 -219
  868. package/src/tempo/server/Sse.test.ts +0 -321
  869. package/src/tempo/server/Subscription.test.ts +0 -1944
  870. package/src/tempo/server/Subscription.ts +0 -1333
  871. package/src/tempo/server/index.ts +0 -12
  872. package/src/tempo/server/internal/html/main.ts +0 -115
  873. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  874. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  875. package/src/tempo/server/internal/html/package.json +0 -10
  876. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  877. package/src/tempo/server/internal/html.gen.ts +0 -2
  878. package/src/tempo/server/internal/request-body.test.ts +0 -210
  879. package/src/tempo/server/internal/request-body.ts +0 -61
  880. package/src/tempo/server/internal/transport.test.ts +0 -903
  881. package/src/tempo/server/internal/transport.ts +0 -310
  882. package/src/tempo/session/README.md +0 -208
  883. package/src/tempo/session/Snapshot.test.ts +0 -41
  884. package/src/tempo/session/Snapshot.ts +0 -95
  885. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  886. package/src/tempo/session/client/ChannelOps.ts +0 -348
  887. package/src/tempo/session/client/ChannelStore.ts +0 -111
  888. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  889. package/src/tempo/session/client/CredentialState.ts +0 -942
  890. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  891. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  892. package/src/tempo/session/client/Runtime.ts +0 -1008
  893. package/src/tempo/session/client/Session.test.ts +0 -1355
  894. package/src/tempo/session/client/Session.ts +0 -420
  895. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  896. package/src/tempo/session/client/SessionManager.ts +0 -996
  897. package/src/tempo/session/client/Transports.test.ts +0 -1141
  898. package/src/tempo/session/client/Transports.ts +0 -1534
  899. package/src/tempo/session/client/index.ts +0 -40
  900. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  901. package/src/tempo/session/index.ts +0 -7
  902. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  903. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  904. package/src/tempo/session/precompile/Chain.ts +0 -1149
  905. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  906. package/src/tempo/session/precompile/Channel.ts +0 -108
  907. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  908. package/src/tempo/session/precompile/Protocol.ts +0 -520
  909. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  910. package/src/tempo/session/precompile/Voucher.ts +0 -162
  911. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  912. package/src/tempo/session/precompile/index.ts +0 -33
  913. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  914. package/src/tempo/session/server/ChannelOps.ts +0 -157
  915. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  916. package/src/tempo/session/server/ChannelStore.ts +0 -835
  917. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  918. package/src/tempo/session/server/CredentialVerification.ts +0 -775
  919. package/src/tempo/session/server/MeteredStream.ts +0 -95
  920. package/src/tempo/session/server/RequestState.test.ts +0 -574
  921. package/src/tempo/session/server/RequestState.ts +0 -507
  922. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  923. package/src/tempo/session/server/Session.test.ts +0 -3862
  924. package/src/tempo/session/server/Session.ts +0 -570
  925. package/src/tempo/session/server/Settlement.test.ts +0 -345
  926. package/src/tempo/session/server/Settlement.ts +0 -527
  927. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  928. package/src/tempo/session/server/Sse.test.ts +0 -557
  929. package/src/tempo/session/server/Sse.ts +0 -254
  930. package/src/tempo/session/server/Transports.test.ts +0 -346
  931. package/src/tempo/session/server/Transports.ts +0 -255
  932. package/src/tempo/session/server/Ws.test.ts +0 -594
  933. package/src/tempo/session/server/Ws.ts +0 -385
  934. package/src/tempo/session/server/index.ts +0 -12
  935. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  936. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  937. package/src/tempo/subscription/Receipt.ts +0 -28
  938. package/src/tempo/subscription/Store.test.ts +0 -609
  939. package/src/tempo/subscription/Store.ts +0 -449
  940. package/src/tempo/subscription/Types.ts +0 -68
  941. package/src/tempo/subscription/index.ts +0 -23
  942. package/src/tsconfig.json +0 -10
  943. package/src/validation/core.ts +0 -386
  944. package/src/validation/index.ts +0 -11
  945. package/src/viem/Account.test.ts +0 -72
  946. package/src/viem/Account.ts +0 -30
  947. package/src/viem/Client.test.ts +0 -366
  948. package/src/viem/Client.ts +0 -93
  949. package/src/x402/Assets.test.ts +0 -253
  950. package/src/x402/Assets.ts +0 -221
  951. package/src/x402/Exact.e2e.test.ts +0 -448
  952. package/src/x402/Exact.localnet.test.ts +0 -475
  953. package/src/x402/Header.test.ts +0 -73
  954. package/src/x402/Header.ts +0 -79
  955. package/src/x402/PublicInterface.test-d.ts +0 -39
  956. package/src/x402/Types.ts +0 -248
  957. package/src/x402/client/Exact.test.ts +0 -309
  958. package/src/x402/client/Exact.ts +0 -186
  959. package/src/x402/index.ts +0 -6
  960. package/src/x402/internal/ChallengeBrand.ts +0 -14
  961. package/src/x402/internal/RouteBinding.ts +0 -18
  962. package/src/x402/server/EvmCharge.ts +0 -394
  963. package/src/x402/server/Facilitator.test.ts +0 -111
  964. package/src/x402/server/Facilitator.ts +0 -56
  965. package/src/zod.test.ts +0 -169
  966. package/src/zod.ts +0 -71
@@ -1,808 +0,0 @@
1
- import { Secp256k1 } from 'ox'
2
- import type { TempoAddress } from 'ox/tempo'
3
- import { TxEnvelopeTempo } from 'ox/tempo'
4
- import type { Hex } from 'viem'
5
- import type { Account } from 'viem'
6
- import { decodeFunctionData, encodeFunctionData, maxUint256, toHex } from 'viem'
7
- import { Abis, Addresses, Transaction } from 'viem/tempo'
8
-
9
- import * as TempoAddress_internal from './address.js'
10
- import * as defaults from './defaults.js'
11
- import * as Selectors from './selectors.js'
12
-
13
- /** Returns true if the serialized transaction has a Tempo envelope prefix. */
14
- export function isTempoTransaction(serialized: string | undefined): boolean {
15
- return (
16
- serialized?.startsWith(TxEnvelopeTempo.serializedType) === true ||
17
- serialized?.startsWith(TxEnvelopeTempo.feePayerMagic) === true
18
- )
19
- }
20
-
21
- /**
22
- * Allowed call patterns for fee-payer sponsored transactions.
23
- * Each inner array is an ordered list of function selectors.
24
- */
25
- export const callScopes = [
26
- [Selectors.transfer],
27
- [Selectors.transferWithMemo],
28
- [Selectors.approve, Selectors.swapExactAmountOut, Selectors.transfer],
29
- [Selectors.approve, Selectors.swapExactAmountOut, Selectors.transferWithMemo],
30
- ]
31
-
32
- export type Policy = {
33
- maxGas: bigint
34
- maxFeePerGas: bigint
35
- maxPriorityFeePerGas: bigint
36
- maxTotalFee: bigint
37
- maxValidityWindowSeconds: number
38
- }
39
-
40
- // Reuse the exact object shape returned by `Transaction.deserialize()`.
41
- // `typeof Transaction` gets the module value type, `['deserialize']` picks the
42
- // deserialize function off that module, and `ReturnType<...>` asks TypeScript
43
- // for that function's return type so this helper stays aligned with upstream
44
- // Tempo transaction fields.
45
- type SponsoredTransaction = ReturnType<(typeof Transaction)['deserialize']>
46
-
47
- type HostedFeePayerFillResponse = {
48
- error?: { message?: string | undefined } | undefined
49
- result?: {
50
- tx?: {
51
- feePayerSignature?: unknown
52
- feeToken?: unknown
53
- }
54
- }
55
- }
56
-
57
- type ExpectedTransfer = {
58
- amount: string
59
- allowAnyMemo?: boolean | undefined
60
- memo?: Hex | undefined
61
- recipient: TempoAddress.Address
62
- }
63
-
64
- const preservedTransactionKeys = [
65
- 'accessList',
66
- 'calls',
67
- 'chainId',
68
- 'feeToken',
69
- 'from',
70
- 'gas',
71
- 'keyAuthorization',
72
- 'maxFeePerGas',
73
- 'maxPriorityFeePerGas',
74
- 'nonce',
75
- 'nonceKey',
76
- 'signature',
77
- 'validAfter',
78
- 'validBefore',
79
- ] as const satisfies readonly (keyof SponsoredTransaction)[]
80
-
81
- const rejectedTransactionKeys = [
82
- 'blobVersionedHashes',
83
- 'blobs',
84
- 'data',
85
- 'feePayerSignature',
86
- 'gasPrice',
87
- 'kzg',
88
- 'maxFeePerBlobGas',
89
- 'r',
90
- 's',
91
- 'sidecars',
92
- 'to',
93
- 'v',
94
- 'value',
95
- 'yParity',
96
- ] as const
97
-
98
- const rewrittenTransactionKeys = ['type'] as const
99
-
100
- const supportedTransactionKeys = new Set<string>([
101
- ...preservedTransactionKeys,
102
- ...rejectedTransactionKeys,
103
- ...rewrittenTransactionKeys,
104
- ])
105
-
106
- function pushAllowedFeeToken(tokens: TempoAddress.Address[], token: string | undefined) {
107
- if (!token) return
108
- const normalized = token as TempoAddress.Address
109
- if (tokens.some((existing) => TempoAddress_internal.isEqual(existing, normalized))) return
110
- tokens.push(normalized)
111
- }
112
-
113
- /** Returns fee tokens that mppx allows sponsored transactions to charge. */
114
- export function defaultAllowedFeeTokens(chainId: number | undefined) {
115
- const tokens: TempoAddress.Address[] = []
116
- pushAllowedFeeToken(tokens, defaults.tokens.pathUsd)
117
- pushAllowedFeeToken(tokens, defaults.currency[chainId as keyof typeof defaults.currency])
118
- return tokens
119
- }
120
-
121
- /** Rejects a sponsored fee token outside the server's allowlist. */
122
- export function assertAllowedFeeToken(
123
- transaction: { feeToken?: unknown },
124
- allowedFeeTokens: readonly TempoAddress.Address[],
125
- ) {
126
- const { feeToken } = transaction
127
- if (feeToken === undefined) return
128
- if (typeof feeToken !== 'string')
129
- throw new FeePayerValidationError('fee-sponsored transaction feeToken is invalid', {})
130
- const normalized = feeToken as TempoAddress.Address
131
- if (!allowedFeeTokens.some((allowed) => TempoAddress_internal.isEqual(allowed, normalized)))
132
- throw new FeePayerValidationError('fee-sponsored transaction feeToken is not allowed', {
133
- feeToken,
134
- })
135
- }
136
-
137
- function hostedFeePayerRequest(transaction: SponsoredTransaction) {
138
- return {
139
- ...(transaction.accessList?.length ? { accessList: transaction.accessList } : {}),
140
- calls: transaction.calls.map(
141
- (call: {
142
- data?: `0x${string}` | undefined
143
- to?: TempoAddress.Address | undefined
144
- value?: bigint | undefined
145
- }) => ({
146
- ...(call.to ? { to: call.to } : {}),
147
- ...(call.data ? { data: call.data } : {}),
148
- value: call.value === undefined ? '0x' : toHex(call.value),
149
- }),
150
- ),
151
- feePayer: true,
152
- from: transaction.from,
153
- ...(transaction.gas !== undefined ? { gas: toHex(transaction.gas) } : {}),
154
- ...(transaction.keyAuthorization !== undefined
155
- ? { keyAuthorization: transaction.keyAuthorization }
156
- : {}),
157
- ...(transaction.maxFeePerGas !== undefined
158
- ? { maxFeePerGas: toHex(transaction.maxFeePerGas) }
159
- : {}),
160
- ...(transaction.maxPriorityFeePerGas !== undefined
161
- ? { maxPriorityFeePerGas: toHex(transaction.maxPriorityFeePerGas) }
162
- : {}),
163
- nonce: toHex(transaction.nonce ?? 0),
164
- ...(transaction.nonceKey !== undefined ? { nonceKey: toHex(transaction.nonceKey) } : {}),
165
- type: '0x76',
166
- ...(transaction.validAfter !== undefined ? { validAfter: toHex(transaction.validAfter) } : {}),
167
- ...(transaction.validBefore !== undefined
168
- ? { validBefore: toHex(transaction.validBefore) }
169
- : {}),
170
- }
171
- }
172
-
173
- /**
174
- * Co-signs a sender-signed partial sponsorship envelope using a hosted
175
- * fee-payer endpoint without letting the endpoint mutate sender-committed
176
- * transaction fields.
177
- *
178
- * @returns The serialized co-signed transaction plus the sponsor's recovered
179
- * `feePayer` address and chosen `feeToken`, so callers can pre-broadcast
180
- * simulate the exact transaction the sponsor broadcasts.
181
- */
182
- export async function fillHostedFeePayerTransaction(parameters: {
183
- allowedFeeTokens: readonly TempoAddress.Address[]
184
- challengeExpires?: string | undefined
185
- chainId: number
186
- details: Record<string, string>
187
- policy?: Partial<Policy> | undefined
188
- transaction: SponsoredTransaction
189
- url: string
190
- }) {
191
- const { allowedFeeTokens, challengeExpires, chainId, details, policy, transaction, url } =
192
- parameters
193
- assertTransactionPolicy({
194
- challengeExpires,
195
- chainId,
196
- details,
197
- policy,
198
- transaction,
199
- })
200
- const response = await fetch(url, {
201
- body: JSON.stringify(
202
- {
203
- id: 1,
204
- jsonrpc: '2.0',
205
- method: 'eth_fillTransaction',
206
- params: [hostedFeePayerRequest(transaction)],
207
- },
208
- (_key, value) => (typeof value === 'bigint' ? toHex(value) : value),
209
- ),
210
- headers: { 'content-type': 'application/json' },
211
- method: 'POST',
212
- })
213
- const payload = (await response.json().catch(async () => ({
214
- error: { message: await response.text() },
215
- }))) as HostedFeePayerFillResponse
216
- const filled = payload.result?.tx
217
- if (!response.ok || payload.error || !filled?.feePayerSignature)
218
- throw new FeePayerValidationError(
219
- payload.error?.message ?? 'hosted fee payer failed to sponsor transaction',
220
- {},
221
- )
222
- if (typeof filled.feeToken !== 'string')
223
- throw new FeePayerValidationError('hosted fee payer did not return a feeToken', {})
224
-
225
- assertAllowedFeeToken({ feeToken: filled.feeToken }, allowedFeeTokens)
226
-
227
- const feePayerSignature = {
228
- ...(filled.feePayerSignature as Record<string, unknown>),
229
- yParity: Number((filled.feePayerSignature as { yParity?: unknown }).yParity),
230
- }
231
- const feeToken = filled.feeToken as TempoAddress.Address
232
-
233
- // Recover the concrete sponsor address so the simulation can use a concrete
234
- // `feePayer` (the node rejects `eth_call` with `feePayer: true`).
235
- const feePayer = (() => {
236
- try {
237
- return Secp256k1.recoverAddress({
238
- payload: TxEnvelopeTempo.getFeePayerSignPayload(
239
- TxEnvelopeTempo.from({
240
- ...transaction,
241
- feePayerSignature: undefined,
242
- feeToken,
243
- signature: undefined,
244
- } as never),
245
- { sender: transaction.from as never },
246
- ),
247
- signature: feePayerSignature as never,
248
- })
249
- } catch {
250
- throw new FeePayerValidationError(
251
- 'hosted fee payer returned an invalid feePayerSignature',
252
- {},
253
- )
254
- }
255
- })()
256
-
257
- return {
258
- feePayer,
259
- feeToken,
260
- serializedTransaction: await Transaction.serialize({
261
- ...transaction,
262
- feePayer: true,
263
- feePayerSignature,
264
- feeToken,
265
- } as never),
266
- }
267
- }
268
-
269
- /**
270
- * Returns a transaction shape suitable for pre-broadcast simulation.
271
- *
272
- * Sponsored transactions are first simulated as calls from the sender with no
273
- * fee fields or signatures. This checks call execution without requiring the
274
- * sender to hold the fee token; transferred value and call-level balances are
275
- * still checked by the RPC.
276
- */
277
- export function simulationTransaction(
278
- transaction: SponsoredTransaction,
279
- options: { feePayer: boolean },
280
- ) {
281
- if (options.feePayer)
282
- return {
283
- account: transaction.from,
284
- calls: transaction.calls,
285
- }
286
- return {
287
- ...transaction,
288
- account: transaction.from,
289
- calls: transaction.calls,
290
- feePayerSignature: undefined,
291
- }
292
- }
293
-
294
- /**
295
- * Returns the final fee-sponsored transaction shape for pre-broadcast
296
- * simulation. RPC `eth_call` does not carry either transaction signature.
297
- */
298
- export function sponsoredSimulationTransaction(
299
- transaction: SponsoredTransaction,
300
- options: { feePayer: TempoAddress.Address; feeToken?: TempoAddress.Address | undefined },
301
- ) {
302
- const { feePayer, feeToken } = options
303
- return {
304
- ...transaction,
305
- account: transaction.from,
306
- calls: transaction.calls,
307
- feePayer,
308
- feePayerSignature: undefined,
309
- ...(feeToken !== undefined ? { feeToken } : {}),
310
- signature: undefined,
311
- }
312
- }
313
-
314
- /** A completed sponsorship envelope that can be simulated before signing or broadcast. */
315
- export type PreflightSponsorship = {
316
- feePayer: TempoAddress.Address
317
- feeToken?: TempoAddress.Address | undefined
318
- transaction: SponsoredTransaction
319
- }
320
-
321
- /**
322
- * Runs execution-only sender and final-envelope simulations around sponsorship.
323
- *
324
- * First, it simulates the calls with the sender as `from`, omitting fee fields
325
- * and signatures so the sender's fee balance is irrelevant. Next, `complete`
326
- * resolves the sponsor and produces the co-signed transaction. Finally, it
327
- * simulates that transaction with its concrete fee payer and fee token.
328
- *
329
- * `complete` runs only after sender-context execution succeeds, so a reverting
330
- * transaction never reaches a local signer or hosted fee-payer.
331
- */
332
- export async function preflightSponsorship<sponsorship extends PreflightSponsorship>(parameters: {
333
- complete: () => Promise<sponsorship>
334
- simulate: (request: Record<string, unknown>) => Promise<unknown>
335
- transaction: SponsoredTransaction
336
- }): Promise<sponsorship> {
337
- const { complete, simulate, transaction } = parameters
338
- await simulate(simulationTransaction(transaction, { feePayer: true }))
339
- const completed = await complete()
340
- await simulate(
341
- sponsoredSimulationTransaction(completed.transaction, {
342
- feePayer: completed.feePayer,
343
- feeToken: completed.feeToken,
344
- }),
345
- )
346
- return completed
347
- }
348
-
349
- /**
350
- * maxTotalFee must be high enough to cover `transferWithMemo` and
351
- * swap transactions at peak gas prices. Bumped from 0.01 ETH in #327.
352
- */
353
- const defaultPolicy: Policy = {
354
- maxGas: 2_000_000n,
355
- maxFeePerGas: 100_000_000_000n,
356
- maxPriorityFeePerGas: 10_000_000_000n,
357
- maxTotalFee: 50_000_000_000_000_000n,
358
- maxValidityWindowSeconds: 15 * 60,
359
- }
360
-
361
- const policyByChainId = {
362
- [defaults.chainId.mainnet]: defaultPolicy,
363
- // Moderato regularly needs a higher priority fee than mainnet.
364
- [defaults.chainId.testnet]: {
365
- ...defaultPolicy,
366
- maxPriorityFeePerGas: 50_000_000_000n,
367
- },
368
- } as const satisfies Record<defaults.ChainId, Policy>
369
-
370
- function getPolicy(chainId: number, overrides: Partial<Policy> | undefined): Policy {
371
- const base = policyByChainId[chainId as defaults.ChainId] ?? defaultPolicy
372
- if (!overrides) return base
373
-
374
- return {
375
- maxGas: overrides.maxGas ?? base.maxGas,
376
- maxFeePerGas: overrides.maxFeePerGas ?? base.maxFeePerGas,
377
- maxPriorityFeePerGas: overrides.maxPriorityFeePerGas ?? base.maxPriorityFeePerGas,
378
- maxTotalFee: overrides.maxTotalFee ?? base.maxTotalFee,
379
- maxValidityWindowSeconds: overrides.maxValidityWindowSeconds ?? base.maxValidityWindowSeconds,
380
- }
381
- }
382
-
383
- function isExpiringNonceKey(nonceKey: SponsoredTransaction['nonceKey']): boolean {
384
- return nonceKey === 'expiring' || nonceKey === maxUint256
385
- }
386
-
387
- const sponsoredCallAbi = [...Abis.tip20, ...Abis.stablecoinDex] as const
388
- const sponsoredCallSelectors = new Set([
389
- Selectors.approve,
390
- Selectors.transfer,
391
- Selectors.transferWithMemo,
392
- Selectors.swapExactAmountOut,
393
- ])
394
-
395
- function canonicalSponsoredCallData(
396
- data: Hex,
397
- call: string,
398
- fail: (reason: string, extra?: Record<string, string>) => never,
399
- ) {
400
- if (!sponsoredCallSelectors.has(data.slice(0, 10) as Hex)) return undefined
401
-
402
- let decoded: ReturnType<typeof decodeFunctionData<typeof sponsoredCallAbi>>
403
- try {
404
- decoded = decodeFunctionData({ abi: sponsoredCallAbi, data })
405
- } catch {
406
- fail('fee-sponsored transaction call calldata is invalid', { call })
407
- }
408
- return encodeFunctionData({
409
- abi: sponsoredCallAbi,
410
- functionName: decoded.functionName,
411
- args: decoded.args,
412
- })
413
- }
414
-
415
- /**
416
- * Rejects sponsored transaction fields that increase intrinsic gas without
417
- * changing the decoded payment intent.
418
- */
419
- function assertCanonicalSponsoredTransaction(
420
- transaction: SponsoredTransaction,
421
- fail: (reason: string, extra?: Record<string, string>) => never,
422
- ) {
423
- if (transaction.accessList !== undefined && transaction.accessList.length > 0)
424
- fail('fee-sponsored transaction accessList is not allowed', {
425
- accessListEntries: String(transaction.accessList.length),
426
- })
427
-
428
- const calls = transaction.calls
429
- if (!Array.isArray(calls) || calls.length === 0)
430
- fail('fee-sponsored transaction must declare calls')
431
-
432
- for (const [index, call] of calls.entries()) {
433
- const callIndex = String(index)
434
- const value = call.value
435
- if (value !== undefined && value !== 0n)
436
- fail('fee-sponsored transaction call value is not allowed', {
437
- call: callIndex,
438
- value: value.toString(),
439
- })
440
-
441
- const data = call.data
442
- if (!data)
443
- fail('fee-sponsored transaction call is missing calldata', {
444
- call: callIndex,
445
- })
446
-
447
- const canonical = canonicalSponsoredCallData(data, callIndex, fail)
448
- if (canonical && data.toLowerCase() !== canonical.toLowerCase())
449
- fail('fee-sponsored transaction call calldata is not canonical', {
450
- call: callIndex,
451
- })
452
- }
453
- }
454
-
455
- /** Validates that a set of transaction calls matches an allowed fee-payer pattern. */
456
- export function validateCalls(
457
- calls: readonly { data?: `0x${string}` | undefined; to?: TempoAddress.Address | undefined }[],
458
- details: Record<string, string>,
459
- options?: {
460
- currency?: TempoAddress.Address | undefined
461
- expectedTransfers?: readonly ExpectedTransfer[] | undefined
462
- },
463
- ) {
464
- if (calls.length === 0)
465
- throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details)
466
-
467
- const callSelectors = calls.map((c) => c.data?.slice(0, 10))
468
- const hasSwapPrefix = callSelectors[0] === Selectors.approve
469
-
470
- if (hasSwapPrefix) {
471
- if (callSelectors[1] !== Selectors.swapExactAmountOut)
472
- throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details)
473
- } else if (callSelectors[0] === Selectors.swapExactAmountOut) {
474
- throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details)
475
- }
476
-
477
- const transferSelectors = callSelectors.slice(hasSwapPrefix ? 2 : 0)
478
- if (transferSelectors.length === 0)
479
- throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details)
480
-
481
- const expectedTransfers = options?.expectedTransfers
482
- const transferLimit = expectedTransfers?.length ?? 11
483
- if (
484
- transferSelectors.length > transferLimit ||
485
- transferSelectors.some(
486
- (selector) => selector !== Selectors.transfer && selector !== Selectors.transferWithMemo,
487
- ) ||
488
- (expectedTransfers && transferSelectors.length !== expectedTransfers.length)
489
- )
490
- throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details)
491
-
492
- // Bind the swap approval to the token the DEX call will actually spend.
493
- const buyCall = calls.find((c) => c.data?.slice(0, 10) === Selectors.swapExactAmountOut)
494
- const buyArgs = buyCall
495
- ? (decodeFunctionData({ abi: Abis.stablecoinDex, data: buyCall.data! }).args as [
496
- `0x${string}`,
497
- `0x${string}`,
498
- bigint,
499
- bigint,
500
- ])
501
- : undefined
502
-
503
- const approveCall = calls.find((c) => c.data?.slice(0, 10) === Selectors.approve)
504
- if (approveCall) {
505
- const { args } = decodeFunctionData({ abi: Abis.tip20, data: approveCall.data! })
506
- const [spender, amount] = args as [`0x${string}`, bigint]
507
- if (!approveCall.to || (buyArgs && !TempoAddress_internal.isEqual(approveCall.to, buyArgs[0])))
508
- throw new FeePayerValidationError('approve target does not match swap tokenIn', details)
509
- if (!TempoAddress_internal.isEqual(spender, Addresses.stablecoinDex))
510
- throw new FeePayerValidationError('approve spender is not the DEX', details)
511
- if (buyArgs && amount !== buyArgs[3])
512
- throw new FeePayerValidationError('approve amount does not match swap max input', details)
513
- }
514
- if (
515
- buyCall &&
516
- (!buyCall.to || !TempoAddress_internal.isEqual(buyCall.to, Addresses.stablecoinDex))
517
- )
518
- throw new FeePayerValidationError('buy target is not the DEX', details)
519
-
520
- if (!expectedTransfers) return
521
-
522
- const currency = options?.currency ?? (details.currency as TempoAddress.Address | undefined)
523
- if (!currency) throw new FeePayerValidationError('missing payment currency', details)
524
-
525
- if (buyArgs) {
526
- const [, tokenOut, amountOut] = buyArgs
527
- const expectedAmountOut = expectedTransfers.reduce(
528
- (sum, transfer) => sum + BigInt(transfer.amount),
529
- 0n,
530
- )
531
- if (!TempoAddress_internal.isEqual(tokenOut, currency))
532
- throw new FeePayerValidationError('swap tokenOut does not match payment currency', details)
533
- if (amountOut !== expectedAmountOut)
534
- throw new FeePayerValidationError('swap output does not match payment amount', details)
535
- }
536
-
537
- const transferCalls = calls.slice(hasSwapPrefix ? 2 : 0)
538
- const sorted = [...expectedTransfers].sort((a, b) => {
539
- if (a.memo && !b.memo) return -1
540
- if (!a.memo && b.memo) return 1
541
- return 0
542
- })
543
-
544
- const used = new Set<number>()
545
- for (const expected of sorted) {
546
- const matchIndex = transferCalls.findIndex((call, index) => {
547
- if (used.has(index)) return false
548
- if (!call.to || !TempoAddress_internal.isEqual(call.to, currency) || !call.data) return false
549
-
550
- try {
551
- const selector = call.data.slice(0, 10)
552
- const { args } = decodeFunctionData({ abi: Abis.tip20, data: call.data })
553
- if (selector === Selectors.transfer) {
554
- const [recipient, amount] = args as [`0x${string}`, bigint]
555
- if (!TempoAddress_internal.isEqual(recipient, expected.recipient)) return false
556
- if (amount.toString() !== expected.amount) return false
557
- return expected.memo === undefined
558
- }
559
-
560
- if (selector === Selectors.transferWithMemo) {
561
- const [recipient, amount, memo] = args as [`0x${string}`, bigint, Hex]
562
- if (!TempoAddress_internal.isEqual(recipient, expected.recipient)) return false
563
- if (amount.toString() !== expected.amount) return false
564
- if (expected.memo) return memo.toLowerCase() === expected.memo.toLowerCase()
565
- return expected.allowAnyMemo === true
566
- }
567
- } catch {
568
- return false
569
- }
570
-
571
- return false
572
- })
573
-
574
- if (matchIndex === -1)
575
- throw new FeePayerValidationError('payment transfer does not match challenge', details)
576
-
577
- used.add(matchIndex)
578
- }
579
- }
580
-
581
- /** Validates sponsor fee policy limits for a fee-payer transaction. */
582
- export function assertTransactionPolicy(parameters: {
583
- challengeExpires?: string | undefined
584
- chainId: number
585
- details: Record<string, string>
586
- now?: Date | undefined
587
- policy?: Partial<Policy> | undefined
588
- transaction: SponsoredTransaction
589
- }) {
590
- const {
591
- challengeExpires,
592
- chainId,
593
- details,
594
- now = new Date(),
595
- policy: policyOverrides,
596
- transaction,
597
- } = parameters
598
- const policy = getPolicy(chainId, policyOverrides)
599
- const {
600
- chainId: transactionChainId,
601
- gas,
602
- maxFeePerGas,
603
- maxPriorityFeePerGas,
604
- nonceKey,
605
- validBefore,
606
- } = transaction
607
-
608
- const fail = (reason: string, extra: Record<string, string> = {}) => {
609
- throw new FeePayerValidationError(reason, { ...details, ...extra })
610
- }
611
-
612
- if (transaction.type !== undefined && transaction.type !== 'tempo')
613
- fail('fee-sponsored transaction type is invalid', {
614
- type: String(transaction.type),
615
- })
616
-
617
- if (transactionChainId !== chainId)
618
- fail('fee-sponsored transaction chainId does not match challenge', {
619
- chainId: String(transactionChainId),
620
- })
621
-
622
- assertCanonicalSponsoredTransaction(transaction, fail)
623
-
624
- if (gas === undefined || gas <= 0n) fail('fee-sponsored transaction must declare gas')
625
- const gasLimit = gas
626
- if (gasLimit > policy.maxGas)
627
- fail('fee-sponsored transaction gas exceeds sponsor policy', {
628
- gas: gasLimit.toString(),
629
- })
630
-
631
- if (maxFeePerGas === undefined || maxFeePerGas <= 0n)
632
- fail('fee-sponsored transaction must declare maxFeePerGas')
633
- const maxFeePerGasValue = maxFeePerGas
634
- if (maxFeePerGasValue > policy.maxFeePerGas)
635
- fail('fee-sponsored transaction maxFeePerGas exceeds sponsor policy', {
636
- maxFeePerGas: maxFeePerGasValue.toString(),
637
- })
638
-
639
- const maxTotalFee = BigInt(gasLimit) * BigInt(maxFeePerGasValue)
640
- if (maxTotalFee > policy.maxTotalFee)
641
- fail('fee-sponsored transaction total fee budget exceeds sponsor policy', {
642
- gas: gasLimit.toString(),
643
- maxFeePerGas: maxFeePerGasValue.toString(),
644
- totalFee: maxTotalFee.toString(),
645
- })
646
- if (maxPriorityFeePerGas !== undefined && maxPriorityFeePerGas > maxFeePerGasValue)
647
- fail('fee-sponsored transaction maxPriorityFeePerGas exceeds maxFeePerGas', {
648
- maxFeePerGas: maxFeePerGasValue.toString(),
649
- maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
650
- })
651
- if (maxPriorityFeePerGas !== undefined && maxPriorityFeePerGas > policy.maxPriorityFeePerGas)
652
- fail('fee-sponsored transaction maxPriorityFeePerGas exceeds sponsor policy', {
653
- maxPriorityFeePerGas: maxPriorityFeePerGas.toString(),
654
- })
655
-
656
- if (!isExpiringNonceKey(nonceKey)) fail('fee-sponsored transaction must use an expiring nonce')
657
- if (validBefore === undefined)
658
- fail('fee-sponsored transaction must declare validBefore for the expiring nonce')
659
- const validBeforeValue = validBefore
660
-
661
- const nowSeconds = Math.floor(now.getTime() / 1_000)
662
- if (validBeforeValue <= nowSeconds)
663
- fail('fee-sponsored transaction has already expired', {
664
- validBefore: String(validBeforeValue),
665
- })
666
-
667
- const challengeExpirySeconds = challengeExpires
668
- ? Math.floor(new Date(challengeExpires).getTime() / 1_000)
669
- : undefined
670
- const maxValidBefore = Math.min(
671
- nowSeconds + policy.maxValidityWindowSeconds,
672
- challengeExpirySeconds ? challengeExpirySeconds + 60 : Number.MAX_SAFE_INTEGER,
673
- )
674
- if (validBeforeValue > maxValidBefore)
675
- fail('fee-sponsored transaction validity window exceeds sponsor policy', {
676
- validBefore: String(validBeforeValue),
677
- })
678
-
679
- return {
680
- gasLimit,
681
- maxFeePerGasValue,
682
- totalFee: maxTotalFee,
683
- validBeforeValue,
684
- }
685
- }
686
-
687
- export function prepareSponsoredTransaction(parameters: {
688
- account: Account
689
- allowedFeeTokens?: readonly TempoAddress.Address[] | undefined
690
- challengeExpires?: string | undefined
691
- chainId: number
692
- details: Record<string, string>
693
- now?: Date | undefined
694
- policy?: Partial<Policy> | undefined
695
- transaction: SponsoredTransaction
696
- }) {
697
- const {
698
- account,
699
- allowedFeeTokens,
700
- challengeExpires,
701
- chainId,
702
- details,
703
- now = new Date(),
704
- policy: policyOverrides,
705
- transaction,
706
- } = parameters
707
- const transactionRecord = transaction as Record<string, unknown>
708
-
709
- const {
710
- accessList,
711
- calls,
712
- chainId: transactionChainId,
713
- feeToken,
714
- from,
715
- keyAuthorization,
716
- maxPriorityFeePerGas,
717
- nonce,
718
- nonceKey,
719
- signature,
720
- validAfter,
721
- } = transaction
722
-
723
- const fail = (reason: string, extra: Record<string, string> = {}) => {
724
- throw new FeePayerValidationError(reason, { ...details, ...extra })
725
- }
726
-
727
- const unsupportedKeys = Object.entries(transaction).flatMap(([key, value]) => {
728
- if (value === undefined) return []
729
- if (supportedTransactionKeys.has(key)) return []
730
- return [key]
731
- })
732
- if (unsupportedKeys.length > 0)
733
- fail('fee-sponsored transaction contains unsupported fields', {
734
- unsupportedFields: unsupportedKeys.join(', '),
735
- })
736
-
737
- const rejectedKeys = rejectedTransactionKeys.filter((key) => {
738
- const value = transactionRecord[key]
739
- return value !== undefined && value !== null
740
- })
741
- if (rejectedKeys.length > 0)
742
- fail('fee-sponsored transaction contains rejected fields', {
743
- rejectedFields: rejectedKeys.join(', '),
744
- })
745
-
746
- const { gasLimit, maxFeePerGasValue, validBeforeValue } = assertTransactionPolicy({
747
- challengeExpires,
748
- chainId,
749
- details,
750
- now,
751
- policy: policyOverrides,
752
- transaction,
753
- })
754
-
755
- const normalizedFeeToken = (() => {
756
- if (feeToken === undefined) return undefined
757
- if (typeof feeToken !== 'string') fail('fee-sponsored transaction feeToken is invalid')
758
- return feeToken
759
- })()
760
-
761
- if (normalizedFeeToken !== undefined) {
762
- if (
763
- allowedFeeTokens &&
764
- !allowedFeeTokens.some((allowed) =>
765
- TempoAddress_internal.isEqual(normalizedFeeToken, allowed),
766
- )
767
- )
768
- fail('fee-sponsored transaction feeToken is not allowed', {
769
- feeToken: normalizedFeeToken,
770
- })
771
- }
772
-
773
- return {
774
- accessList,
775
- account,
776
- calls,
777
- chainId: transactionChainId,
778
- feePayer: account,
779
- ...(normalizedFeeToken ? { feeToken: normalizedFeeToken } : {}),
780
- ...(from ? { from } : {}),
781
- gas: gasLimit,
782
- ...(keyAuthorization !== undefined ? { keyAuthorization } : {}),
783
- ...(nonce !== undefined ? { nonce } : {}),
784
- maxFeePerGas: maxFeePerGasValue,
785
- ...(maxPriorityFeePerGas !== undefined ? { maxPriorityFeePerGas } : {}),
786
- nonceKey,
787
- ...(signature ? { signature } : {}),
788
- type: 'tempo' as const,
789
- ...(validAfter !== undefined ? { validAfter } : {}),
790
- validBefore: validBeforeValue,
791
- } satisfies ReturnType<(typeof Transaction)['deserialize']> & {
792
- account: Account
793
- feePayer: Account
794
- }
795
- }
796
-
797
- export class FeePayerValidationError extends Error {
798
- override readonly name = 'FeePayerValidationError'
799
-
800
- constructor(reason: string, details: Record<string, string>) {
801
- super(
802
- [
803
- `Invalid transaction: ${reason}`,
804
- ...Object.entries(details).map(([k, v]) => ` - ${k}: ${v}`),
805
- ].join('\n'),
806
- )
807
- }
808
- }