mppx 0.8.17 → 0.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (914) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +21 -4
  4. package/dist/bin.js +3 -3
  5. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  6. package/dist/cli/cli.js +253 -1505
  7. package/dist/cli/plugins/index.js +19 -5
  8. package/dist/cli/plugins/tempo.js +7 -3
  9. package/dist/cli/sessions/Manager.js +7 -4
  10. package/dist/cli/sessions/request.d.ts +2 -0
  11. package/dist/cli/sessions/request.js +18 -0
  12. package/dist/cli/sessions/store.js +28 -14
  13. package/dist/discovery/Discovery.js +2 -1
  14. package/dist/evm/client/Charge.js +8 -0
  15. package/dist/server/core.d.ts +9 -0
  16. package/dist/server/core.js +9 -0
  17. package/dist/stripe/server/Charge.js +2 -4
  18. package/dist/stripe/server/Methods.d.ts +2 -2
  19. package/dist/stripe/server/Methods.js +17 -11
  20. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  21. package/dist/stripe/server/internal/html.gen.js +1 -1
  22. package/dist/stripe/server/spt.d.ts +8 -0
  23. package/dist/stripe/server/spt.js +8 -0
  24. package/dist/tempo/Methods.d.ts +13 -0
  25. package/dist/tempo/Methods.js +14 -3
  26. package/dist/tempo/client/Charge.d.ts +3 -0
  27. package/dist/tempo/client/Charge.js +31 -9
  28. package/dist/tempo/client/Methods.d.ts +13 -0
  29. package/dist/tempo/internal/defaults.d.ts +11 -0
  30. package/dist/tempo/internal/defaults.js +11 -0
  31. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  32. package/dist/tempo/internal/machine-token-charge.js +113 -0
  33. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  34. package/dist/tempo/internal/machine-token-session.js +173 -0
  35. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  36. package/dist/tempo/internal/signature-envelope.js +28 -0
  37. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  38. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  39. package/dist/tempo/legacy/client/Session.d.ts +13 -1
  40. package/dist/tempo/legacy/client/Session.js +3 -3
  41. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  42. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  43. package/dist/tempo/server/Charge.d.ts +3 -0
  44. package/dist/tempo/server/Charge.js +58 -17
  45. package/dist/tempo/server/Methods.d.ts +21 -4
  46. package/dist/tempo/server/Methods.js +8 -4
  47. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  48. package/dist/tempo/server/internal/html.gen.js +1 -1
  49. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  50. package/dist/tempo/session/client/ChannelOps.js +35 -6
  51. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  52. package/dist/tempo/session/client/ChannelStore.js +2 -2
  53. package/dist/tempo/session/client/CredentialState.d.ts +17 -2
  54. package/dist/tempo/session/client/CredentialState.js +77 -76
  55. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  56. package/dist/tempo/session/client/Runtime.js +21 -5
  57. package/dist/tempo/session/client/Session.d.ts +15 -3
  58. package/dist/tempo/session/client/Session.js +186 -63
  59. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  60. package/dist/tempo/session/client/SessionManager.js +35 -11
  61. package/dist/tempo/session/client/Transports.d.ts +2 -0
  62. package/dist/tempo/session/client/Transports.js +12 -2
  63. package/dist/tempo/session/precompile/Chain.d.ts +10 -2
  64. package/dist/tempo/session/precompile/Chain.js +50 -10
  65. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  66. package/dist/tempo/session/precompile/Protocol.js +7 -0
  67. package/dist/tempo/session/precompile/Voucher.d.ts +3 -1
  68. package/dist/tempo/session/precompile/Voucher.js +6 -12
  69. package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
  70. package/dist/tempo/session/server/ChannelStore.js +11 -4
  71. package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
  72. package/dist/tempo/session/server/CredentialVerification.js +185 -109
  73. package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
  74. package/dist/tempo/session/server/MeteredStream.js +5 -4
  75. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  76. package/dist/tempo/session/server/RequestState.js +61 -15
  77. package/dist/tempo/session/server/Session.d.ts +14 -2
  78. package/dist/tempo/session/server/Session.js +37 -6
  79. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  80. package/dist/tempo/session/server/Settlement.js +53 -21
  81. package/dist/x402/client/Exact.d.ts +8 -0
  82. package/dist/x402/client/Exact.js +40 -10
  83. package/dist/x402/server/EvmCharge.d.ts +22 -0
  84. package/dist/x402/server/EvmCharge.js +23 -1
  85. package/package.json +15 -37
  86. package/dist/BodyDigest.d.ts.map +0 -1
  87. package/dist/BodyDigest.js.map +0 -1
  88. package/dist/Challenge.d.ts.map +0 -1
  89. package/dist/Challenge.js.map +0 -1
  90. package/dist/Constants.d.ts.map +0 -1
  91. package/dist/Constants.js.map +0 -1
  92. package/dist/Credential.d.ts.map +0 -1
  93. package/dist/Credential.js.map +0 -1
  94. package/dist/Errors.d.ts.map +0 -1
  95. package/dist/Errors.js.map +0 -1
  96. package/dist/Expires.d.ts.map +0 -1
  97. package/dist/Expires.js.map +0 -1
  98. package/dist/Html.d.ts.map +0 -1
  99. package/dist/Html.js.map +0 -1
  100. package/dist/Mcp.d.ts.map +0 -1
  101. package/dist/Mcp.js.map +0 -1
  102. package/dist/Method.d.ts.map +0 -1
  103. package/dist/Method.js.map +0 -1
  104. package/dist/PaymentRequest.d.ts.map +0 -1
  105. package/dist/PaymentRequest.js.map +0 -1
  106. package/dist/Receipt.d.ts.map +0 -1
  107. package/dist/Receipt.js.map +0 -1
  108. package/dist/Store.d.ts.map +0 -1
  109. package/dist/Store.js.map +0 -1
  110. package/dist/attestation/Client.d.ts.map +0 -1
  111. package/dist/attestation/Client.js.map +0 -1
  112. package/dist/attestation/Constants.d.ts.map +0 -1
  113. package/dist/attestation/Constants.js.map +0 -1
  114. package/dist/attestation/Server.d.ts.map +0 -1
  115. package/dist/attestation/Server.js.map +0 -1
  116. package/dist/attestation/Types.d.ts.map +0 -1
  117. package/dist/attestation/Types.js.map +0 -1
  118. package/dist/attestation/index.d.ts.map +0 -1
  119. package/dist/attestation/index.js.map +0 -1
  120. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
  121. package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
  122. package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
  123. package/dist/attestation/internal/SigningContext.js.map +0 -1
  124. package/dist/bin.d.ts.map +0 -1
  125. package/dist/bin.js.map +0 -1
  126. package/dist/cli/account.d.ts.map +0 -1
  127. package/dist/cli/account.js.map +0 -1
  128. package/dist/cli/cli.d.ts.map +0 -1
  129. package/dist/cli/cli.js.map +0 -1
  130. package/dist/cli/config.d.ts.map +0 -1
  131. package/dist/cli/config.js.map +0 -1
  132. package/dist/cli/internal.d.ts.map +0 -1
  133. package/dist/cli/internal.js.map +0 -1
  134. package/dist/cli/plugins/evm.d.ts.map +0 -1
  135. package/dist/cli/plugins/evm.js.map +0 -1
  136. package/dist/cli/plugins/index.d.ts.map +0 -1
  137. package/dist/cli/plugins/index.js.map +0 -1
  138. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  139. package/dist/cli/plugins/plugin.js.map +0 -1
  140. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  141. package/dist/cli/plugins/stripe.js.map +0 -1
  142. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  143. package/dist/cli/plugins/tempo.js.map +0 -1
  144. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  145. package/dist/cli/sessions/Manager.js.map +0 -1
  146. package/dist/cli/sessions/commands.d.ts.map +0 -1
  147. package/dist/cli/sessions/commands.js.map +0 -1
  148. package/dist/cli/sessions/request.d.ts.map +0 -1
  149. package/dist/cli/sessions/request.js.map +0 -1
  150. package/dist/cli/sessions/store.d.ts.map +0 -1
  151. package/dist/cli/sessions/store.js.map +0 -1
  152. package/dist/cli/utils.d.ts.map +0 -1
  153. package/dist/cli/utils.js.map +0 -1
  154. package/dist/cli/validate/challenge.d.ts.map +0 -1
  155. package/dist/cli/validate/challenge.js.map +0 -1
  156. package/dist/cli/validate/discovery.d.ts.map +0 -1
  157. package/dist/cli/validate/discovery.js.map +0 -1
  158. package/dist/cli/validate/helpers.d.ts.map +0 -1
  159. package/dist/cli/validate/helpers.js.map +0 -1
  160. package/dist/cli/validate/index.d.ts.map +0 -1
  161. package/dist/cli/validate/index.js.map +0 -1
  162. package/dist/cli/validate/messages.d.ts.map +0 -1
  163. package/dist/cli/validate/messages.js.map +0 -1
  164. package/dist/cli/validate/payment.d.ts.map +0 -1
  165. package/dist/cli/validate/payment.js.map +0 -1
  166. package/dist/client/Methods.d.ts.map +0 -1
  167. package/dist/client/Methods.js.map +0 -1
  168. package/dist/client/Mppx.d.ts.map +0 -1
  169. package/dist/client/Mppx.js.map +0 -1
  170. package/dist/client/Transport.d.ts.map +0 -1
  171. package/dist/client/Transport.js.map +0 -1
  172. package/dist/client/index.d.ts.map +0 -1
  173. package/dist/client/index.js.map +0 -1
  174. package/dist/client/internal/Fetch.d.ts.map +0 -1
  175. package/dist/client/internal/Fetch.js.map +0 -1
  176. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  177. package/dist/client/internal/MethodChallenge.js.map +0 -1
  178. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  179. package/dist/client/internal/MethodResponse.js.map +0 -1
  180. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  181. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  182. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  183. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  184. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  185. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  186. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  187. package/dist/client/internal/protocols/Shared.js.map +0 -1
  188. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  189. package/dist/client/internal/protocols/X402.js.map +0 -1
  190. package/dist/client/node.d.ts.map +0 -1
  191. package/dist/client/node.js.map +0 -1
  192. package/dist/discovery/Discovery.d.ts.map +0 -1
  193. package/dist/discovery/Discovery.js.map +0 -1
  194. package/dist/discovery/OpenApi.d.ts.map +0 -1
  195. package/dist/discovery/OpenApi.js.map +0 -1
  196. package/dist/discovery/Validate.d.ts.map +0 -1
  197. package/dist/discovery/Validate.js.map +0 -1
  198. package/dist/discovery/index.d.ts.map +0 -1
  199. package/dist/discovery/index.js.map +0 -1
  200. package/dist/discovery/internal/Metadata.d.ts.map +0 -1
  201. package/dist/discovery/internal/Metadata.js.map +0 -1
  202. package/dist/evm/Assets.d.ts.map +0 -1
  203. package/dist/evm/Assets.js.map +0 -1
  204. package/dist/evm/Chains.d.ts.map +0 -1
  205. package/dist/evm/Chains.js.map +0 -1
  206. package/dist/evm/Methods.d.ts.map +0 -1
  207. package/dist/evm/Methods.js.map +0 -1
  208. package/dist/evm/Types.d.ts.map +0 -1
  209. package/dist/evm/Types.js.map +0 -1
  210. package/dist/evm/client/Charge.d.ts.map +0 -1
  211. package/dist/evm/client/Charge.js.map +0 -1
  212. package/dist/evm/client/Methods.d.ts.map +0 -1
  213. package/dist/evm/client/Methods.js.map +0 -1
  214. package/dist/evm/client/index.d.ts.map +0 -1
  215. package/dist/evm/client/index.js.map +0 -1
  216. package/dist/evm/index.d.ts.map +0 -1
  217. package/dist/evm/index.js.map +0 -1
  218. package/dist/evm/server/Charge.d.ts.map +0 -1
  219. package/dist/evm/server/Charge.js.map +0 -1
  220. package/dist/evm/server/Methods.d.ts.map +0 -1
  221. package/dist/evm/server/Methods.js.map +0 -1
  222. package/dist/evm/server/index.d.ts.map +0 -1
  223. package/dist/evm/server/index.js.map +0 -1
  224. package/dist/index.d.ts.map +0 -1
  225. package/dist/index.js.map +0 -1
  226. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  227. package/dist/internal/AcceptPayment.js.map +0 -1
  228. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  229. package/dist/internal/HeaderCodec.js.map +0 -1
  230. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  231. package/dist/internal/constantTimeEqual.js.map +0 -1
  232. package/dist/internal/env.d.ts.map +0 -1
  233. package/dist/internal/env.js.map +0 -1
  234. package/dist/internal/types.d.ts.map +0 -1
  235. package/dist/internal/types.js.map +0 -1
  236. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  237. package/dist/mcp/client/McpClient.js.map +0 -1
  238. package/dist/mcp/client/index.d.ts.map +0 -1
  239. package/dist/mcp/client/index.js.map +0 -1
  240. package/dist/mcp/server/Transport.d.ts.map +0 -1
  241. package/dist/mcp/server/Transport.js.map +0 -1
  242. package/dist/mcp/server/index.d.ts.map +0 -1
  243. package/dist/mcp/server/index.js.map +0 -1
  244. package/dist/middlewares/elysia.d.ts.map +0 -1
  245. package/dist/middlewares/elysia.js.map +0 -1
  246. package/dist/middlewares/express.d.ts.map +0 -1
  247. package/dist/middlewares/express.js.map +0 -1
  248. package/dist/middlewares/hono.d.ts.map +0 -1
  249. package/dist/middlewares/hono.js.map +0 -1
  250. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  251. package/dist/middlewares/internal/mppx.js.map +0 -1
  252. package/dist/middlewares/nextjs.d.ts.map +0 -1
  253. package/dist/middlewares/nextjs.js.map +0 -1
  254. package/dist/proxy/Proxy.d.ts.map +0 -1
  255. package/dist/proxy/Proxy.js.map +0 -1
  256. package/dist/proxy/Service.d.ts.map +0 -1
  257. package/dist/proxy/Service.js.map +0 -1
  258. package/dist/proxy/index.d.ts.map +0 -1
  259. package/dist/proxy/index.js.map +0 -1
  260. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  261. package/dist/proxy/internal/Headers.js.map +0 -1
  262. package/dist/proxy/internal/Route.d.ts.map +0 -1
  263. package/dist/proxy/internal/Route.js.map +0 -1
  264. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  265. package/dist/proxy/services/anthropic.js.map +0 -1
  266. package/dist/proxy/services/openai.d.ts.map +0 -1
  267. package/dist/proxy/services/openai.js.map +0 -1
  268. package/dist/proxy/services/stripe.d.ts.map +0 -1
  269. package/dist/proxy/services/stripe.js.map +0 -1
  270. package/dist/server/Methods.d.ts.map +0 -1
  271. package/dist/server/Methods.js.map +0 -1
  272. package/dist/server/Mppx.d.ts.map +0 -1
  273. package/dist/server/Mppx.js.map +0 -1
  274. package/dist/server/NodeListener.d.ts.map +0 -1
  275. package/dist/server/NodeListener.js.map +0 -1
  276. package/dist/server/Request.d.ts.map +0 -1
  277. package/dist/server/Request.js.map +0 -1
  278. package/dist/server/Response.d.ts.map +0 -1
  279. package/dist/server/Response.js.map +0 -1
  280. package/dist/server/Transport.d.ts.map +0 -1
  281. package/dist/server/Transport.js.map +0 -1
  282. package/dist/server/index.d.ts.map +0 -1
  283. package/dist/server/index.js.map +0 -1
  284. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  285. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  286. package/dist/server/internal/html/config.d.ts.map +0 -1
  287. package/dist/server/internal/html/config.js.map +0 -1
  288. package/dist/server/internal/html/constants.d.ts.map +0 -1
  289. package/dist/server/internal/html/constants.js.map +0 -1
  290. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  291. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  292. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  293. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  294. package/dist/server/internal/scope.d.ts.map +0 -1
  295. package/dist/server/internal/scope.js.map +0 -1
  296. package/dist/stripe/Methods.d.ts.map +0 -1
  297. package/dist/stripe/Methods.js.map +0 -1
  298. package/dist/stripe/client/Charge.d.ts.map +0 -1
  299. package/dist/stripe/client/Charge.js.map +0 -1
  300. package/dist/stripe/client/Methods.d.ts.map +0 -1
  301. package/dist/stripe/client/Methods.js.map +0 -1
  302. package/dist/stripe/client/index.d.ts.map +0 -1
  303. package/dist/stripe/client/index.js.map +0 -1
  304. package/dist/stripe/index.d.ts.map +0 -1
  305. package/dist/stripe/index.js.map +0 -1
  306. package/dist/stripe/internal/constants.d.ts.map +0 -1
  307. package/dist/stripe/internal/constants.js.map +0 -1
  308. package/dist/stripe/internal/types.d.ts.map +0 -1
  309. package/dist/stripe/internal/types.js.map +0 -1
  310. package/dist/stripe/server/Charge.d.ts.map +0 -1
  311. package/dist/stripe/server/Charge.js.map +0 -1
  312. package/dist/stripe/server/Methods.d.ts.map +0 -1
  313. package/dist/stripe/server/Methods.js.map +0 -1
  314. package/dist/stripe/server/index.d.ts.map +0 -1
  315. package/dist/stripe/server/index.js.map +0 -1
  316. package/dist/stripe/server/internal/deposit-address.d.ts.map +0 -1
  317. package/dist/stripe/server/internal/deposit-address.js.map +0 -1
  318. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  319. package/dist/stripe/server/internal/html/types.js.map +0 -1
  320. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  321. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  322. package/dist/stripe/server/internal/record-payment.d.ts.map +0 -1
  323. package/dist/stripe/server/internal/record-payment.js.map +0 -1
  324. package/dist/stripe/server/internal/request.d.ts.map +0 -1
  325. package/dist/stripe/server/internal/request.js.map +0 -1
  326. package/dist/tap/Constants.d.ts.map +0 -1
  327. package/dist/tap/Constants.js.map +0 -1
  328. package/dist/tap/Types.d.ts.map +0 -1
  329. package/dist/tap/Types.js.map +0 -1
  330. package/dist/tap/client/index.d.ts.map +0 -1
  331. package/dist/tap/client/index.js.map +0 -1
  332. package/dist/tap/index.d.ts.map +0 -1
  333. package/dist/tap/index.js.map +0 -1
  334. package/dist/tap/server/index.d.ts.map +0 -1
  335. package/dist/tap/server/index.js.map +0 -1
  336. package/dist/tempo/Attribution.d.ts.map +0 -1
  337. package/dist/tempo/Attribution.js.map +0 -1
  338. package/dist/tempo/Methods.d.ts.map +0 -1
  339. package/dist/tempo/Methods.js.map +0 -1
  340. package/dist/tempo/Proof.d.ts.map +0 -1
  341. package/dist/tempo/Proof.js.map +0 -1
  342. package/dist/tempo/client/Charge.d.ts.map +0 -1
  343. package/dist/tempo/client/Charge.js.map +0 -1
  344. package/dist/tempo/client/Methods.d.ts.map +0 -1
  345. package/dist/tempo/client/Methods.js.map +0 -1
  346. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  347. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  348. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  349. package/dist/tempo/client/Subscription.js.map +0 -1
  350. package/dist/tempo/client/index.d.ts.map +0 -1
  351. package/dist/tempo/client/index.js.map +0 -1
  352. package/dist/tempo/index.d.ts.map +0 -1
  353. package/dist/tempo/index.js.map +0 -1
  354. package/dist/tempo/internal/account.d.ts.map +0 -1
  355. package/dist/tempo/internal/account.js.map +0 -1
  356. package/dist/tempo/internal/address.d.ts.map +0 -1
  357. package/dist/tempo/internal/address.js.map +0 -1
  358. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  359. package/dist/tempo/internal/auto-swap.js.map +0 -1
  360. package/dist/tempo/internal/charge.d.ts.map +0 -1
  361. package/dist/tempo/internal/charge.js.map +0 -1
  362. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  363. package/dist/tempo/internal/defaults.js.map +0 -1
  364. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  365. package/dist/tempo/internal/fee-payer.js.map +0 -1
  366. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  367. package/dist/tempo/internal/fee-token.js.map +0 -1
  368. package/dist/tempo/internal/proof.d.ts.map +0 -1
  369. package/dist/tempo/internal/proof.js.map +0 -1
  370. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  371. package/dist/tempo/internal/selectors.js.map +0 -1
  372. package/dist/tempo/internal/types.d.ts.map +0 -1
  373. package/dist/tempo/internal/types.js.map +0 -1
  374. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  375. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  376. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  377. package/dist/tempo/legacy/client/Session.js.map +0 -1
  378. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  379. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  380. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  381. package/dist/tempo/legacy/client/index.js.map +0 -1
  382. package/dist/tempo/legacy/index.d.ts.map +0 -1
  383. package/dist/tempo/legacy/index.js.map +0 -1
  384. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  385. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  386. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  387. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  388. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  389. package/dist/tempo/legacy/session/Types.js.map +0 -1
  390. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  391. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  392. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  393. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  394. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  395. package/dist/tempo/legacy/session/index.js.map +0 -1
  396. package/dist/tempo/server/Charge.d.ts.map +0 -1
  397. package/dist/tempo/server/Charge.js.map +0 -1
  398. package/dist/tempo/server/Methods.d.ts.map +0 -1
  399. package/dist/tempo/server/Methods.js.map +0 -1
  400. package/dist/tempo/server/Relay.d.ts.map +0 -1
  401. package/dist/tempo/server/Relay.js.map +0 -1
  402. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  403. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  404. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  405. package/dist/tempo/server/Subscription.js.map +0 -1
  406. package/dist/tempo/server/index.d.ts.map +0 -1
  407. package/dist/tempo/server/index.js.map +0 -1
  408. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  409. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  410. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  411. package/dist/tempo/server/internal/request-body.js.map +0 -1
  412. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  413. package/dist/tempo/server/internal/transport.js.map +0 -1
  414. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  415. package/dist/tempo/session/Snapshot.js.map +0 -1
  416. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  417. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  418. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  419. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  420. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  421. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  422. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  423. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  424. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  425. package/dist/tempo/session/client/Runtime.js.map +0 -1
  426. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  427. package/dist/tempo/session/client/Session.js.map +0 -1
  428. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  429. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  430. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  431. package/dist/tempo/session/client/Transports.js.map +0 -1
  432. package/dist/tempo/session/client/index.d.ts.map +0 -1
  433. package/dist/tempo/session/client/index.js.map +0 -1
  434. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  435. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  436. package/dist/tempo/session/index.d.ts.map +0 -1
  437. package/dist/tempo/session/index.js.map +0 -1
  438. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  439. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  440. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  441. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  442. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  443. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  444. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  445. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  446. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  447. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  448. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  449. package/dist/tempo/session/precompile/index.js.map +0 -1
  450. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  451. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  452. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  453. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  454. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  455. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  456. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  457. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  458. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  459. package/dist/tempo/session/server/RequestState.js.map +0 -1
  460. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  461. package/dist/tempo/session/server/Session.js.map +0 -1
  462. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  463. package/dist/tempo/session/server/Settlement.js.map +0 -1
  464. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  465. package/dist/tempo/session/server/Sse.js.map +0 -1
  466. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  467. package/dist/tempo/session/server/Transports.js.map +0 -1
  468. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  469. package/dist/tempo/session/server/Ws.js.map +0 -1
  470. package/dist/tempo/session/server/index.d.ts.map +0 -1
  471. package/dist/tempo/session/server/index.js.map +0 -1
  472. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  473. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  474. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  475. package/dist/tempo/subscription/Receipt.js.map +0 -1
  476. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  477. package/dist/tempo/subscription/Store.js.map +0 -1
  478. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  479. package/dist/tempo/subscription/Types.js.map +0 -1
  480. package/dist/tempo/subscription/index.d.ts.map +0 -1
  481. package/dist/tempo/subscription/index.js.map +0 -1
  482. package/dist/validation/core.d.ts.map +0 -1
  483. package/dist/validation/core.js.map +0 -1
  484. package/dist/validation/index.d.ts.map +0 -1
  485. package/dist/validation/index.js.map +0 -1
  486. package/dist/viem/Account.d.ts.map +0 -1
  487. package/dist/viem/Account.js.map +0 -1
  488. package/dist/viem/Client.d.ts.map +0 -1
  489. package/dist/viem/Client.js.map +0 -1
  490. package/dist/web-bot-auth/Constants.d.ts.map +0 -1
  491. package/dist/web-bot-auth/Constants.js.map +0 -1
  492. package/dist/web-bot-auth/Types.d.ts.map +0 -1
  493. package/dist/web-bot-auth/Types.js.map +0 -1
  494. package/dist/web-bot-auth/client/index.d.ts.map +0 -1
  495. package/dist/web-bot-auth/client/index.js.map +0 -1
  496. package/dist/web-bot-auth/index.d.ts.map +0 -1
  497. package/dist/web-bot-auth/index.js.map +0 -1
  498. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
  499. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
  500. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
  501. package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
  502. package/dist/web-bot-auth/server/index.d.ts.map +0 -1
  503. package/dist/web-bot-auth/server/index.js.map +0 -1
  504. package/dist/x402/Assets.d.ts.map +0 -1
  505. package/dist/x402/Assets.js.map +0 -1
  506. package/dist/x402/Header.d.ts.map +0 -1
  507. package/dist/x402/Header.js.map +0 -1
  508. package/dist/x402/Types.d.ts.map +0 -1
  509. package/dist/x402/Types.js.map +0 -1
  510. package/dist/x402/client/Exact.d.ts.map +0 -1
  511. package/dist/x402/client/Exact.js.map +0 -1
  512. package/dist/x402/index.d.ts.map +0 -1
  513. package/dist/x402/index.js.map +0 -1
  514. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  515. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  516. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  517. package/dist/x402/internal/RouteBinding.js.map +0 -1
  518. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  519. package/dist/x402/server/EvmCharge.js.map +0 -1
  520. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  521. package/dist/x402/server/Facilitator.js.map +0 -1
  522. package/dist/zod.d.ts.map +0 -1
  523. package/dist/zod.js.map +0 -1
  524. package/src/BodyDigest.test.ts +0 -43
  525. package/src/BodyDigest.ts +0 -55
  526. package/src/Challenge.fuzz.test.ts +0 -154
  527. package/src/Challenge.test-d.ts +0 -82
  528. package/src/Challenge.test.ts +0 -1060
  529. package/src/Challenge.ts +0 -687
  530. package/src/Constants.ts +0 -58
  531. package/src/Credential.fuzz.test.ts +0 -62
  532. package/src/Credential.test.ts +0 -378
  533. package/src/Credential.ts +0 -217
  534. package/src/Errors.test.ts +0 -520
  535. package/src/Errors.ts +0 -448
  536. package/src/Expires.test.ts +0 -112
  537. package/src/Expires.ts +0 -59
  538. package/src/Html.ts +0 -67
  539. package/src/Mcp.ts +0 -85
  540. package/src/Method.test.ts +0 -177
  541. package/src/Method.ts +0 -631
  542. package/src/PaymentRequest.test.ts +0 -147
  543. package/src/PaymentRequest.ts +0 -108
  544. package/src/Receipt.test.ts +0 -151
  545. package/src/Receipt.ts +0 -146
  546. package/src/Store.test-d.ts +0 -211
  547. package/src/Store.test.ts +0 -407
  548. package/src/Store.ts +0 -397
  549. package/src/attestation/Attestation.integration.test.ts +0 -208
  550. package/src/attestation/Client.test.ts +0 -83
  551. package/src/attestation/Client.ts +0 -34
  552. package/src/attestation/Constants.ts +0 -15
  553. package/src/attestation/Server.test.ts +0 -60
  554. package/src/attestation/Server.ts +0 -12
  555. package/src/attestation/Types.test-d.ts +0 -54
  556. package/src/attestation/Types.ts +0 -77
  557. package/src/attestation/index.ts +0 -5
  558. package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
  559. package/src/attestation/internal/HttpMessageSignature.ts +0 -429
  560. package/src/attestation/internal/SigningContext.ts +0 -13
  561. package/src/bin.js +0 -2
  562. package/src/bin.ts +0 -4
  563. package/src/cli/account.ts +0 -269
  564. package/src/cli/cli.test.ts +0 -2221
  565. package/src/cli/cli.ts +0 -1650
  566. package/src/cli/config.test.ts +0 -89
  567. package/src/cli/config.ts +0 -50
  568. package/src/cli/internal.ts +0 -114
  569. package/src/cli/mcp.test.ts +0 -262
  570. package/src/cli/plugins/evm.ts +0 -55
  571. package/src/cli/plugins/index.ts +0 -4
  572. package/src/cli/plugins/plugin.ts +0 -84
  573. package/src/cli/plugins/stripe.ts +0 -174
  574. package/src/cli/plugins/tempo.ts +0 -1102
  575. package/src/cli/sessions/Manager.test.ts +0 -249
  576. package/src/cli/sessions/Manager.ts +0 -93
  577. package/src/cli/sessions/commands.ts +0 -444
  578. package/src/cli/sessions/request.test.ts +0 -51
  579. package/src/cli/sessions/request.ts +0 -353
  580. package/src/cli/sessions/store.test.ts +0 -581
  581. package/src/cli/sessions/store.ts +0 -940
  582. package/src/cli/utils.test.ts +0 -156
  583. package/src/cli/utils.ts +0 -394
  584. package/src/cli/validate/challenge.ts +0 -565
  585. package/src/cli/validate/discovery.test.ts +0 -435
  586. package/src/cli/validate/discovery.ts +0 -221
  587. package/src/cli/validate/helpers.ts +0 -166
  588. package/src/cli/validate/index.ts +0 -229
  589. package/src/cli/validate/messages.ts +0 -7
  590. package/src/cli/validate/payment.ts +0 -774
  591. package/src/cli/validate.test.ts +0 -843
  592. package/src/client/Methods.ts +0 -8
  593. package/src/client/Mppx.test-d.ts +0 -287
  594. package/src/client/Mppx.test.ts +0 -1065
  595. package/src/client/Mppx.ts +0 -487
  596. package/src/client/Transport.test.ts +0 -586
  597. package/src/client/Transport.ts +0 -170
  598. package/src/client/index.ts +0 -29
  599. package/src/client/internal/Fetch.browser.test.ts +0 -197
  600. package/src/client/internal/Fetch.test-d.ts +0 -109
  601. package/src/client/internal/Fetch.test.ts +0 -2336
  602. package/src/client/internal/Fetch.ts +0 -1075
  603. package/src/client/internal/MethodChallenge.ts +0 -35
  604. package/src/client/internal/MethodResponse.ts +0 -67
  605. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  606. package/src/client/internal/protocols/Mcp.ts +0 -186
  607. package/src/client/internal/protocols/Mpp.ts +0 -21
  608. package/src/client/internal/protocols/Protocol.ts +0 -10
  609. package/src/client/internal/protocols/Shared.ts +0 -25
  610. package/src/client/internal/protocols/X402.ts +0 -46
  611. package/src/client/node.test.ts +0 -115
  612. package/src/client/node.ts +0 -247
  613. package/src/discovery/Discovery.test.ts +0 -214
  614. package/src/discovery/Discovery.ts +0 -105
  615. package/src/discovery/OpenApi.test.ts +0 -623
  616. package/src/discovery/OpenApi.ts +0 -192
  617. package/src/discovery/Validate.test.ts +0 -305
  618. package/src/discovery/Validate.ts +0 -77
  619. package/src/discovery/index.ts +0 -3
  620. package/src/discovery/internal/Metadata.ts +0 -51
  621. package/src/env.d.ts +0 -12
  622. package/src/evm/Assets.ts +0 -1
  623. package/src/evm/Chains.ts +0 -11
  624. package/src/evm/Methods.ts +0 -44
  625. package/src/evm/PublicInterface.test-d.ts +0 -134
  626. package/src/evm/Types.ts +0 -140
  627. package/src/evm/client/Charge.test.ts +0 -347
  628. package/src/evm/client/Charge.ts +0 -187
  629. package/src/evm/client/Methods.ts +0 -19
  630. package/src/evm/client/index.ts +0 -6
  631. package/src/evm/index.ts +0 -16
  632. package/src/evm/server/Charge.test.ts +0 -339
  633. package/src/evm/server/Charge.ts +0 -295
  634. package/src/evm/server/Methods.ts +0 -22
  635. package/src/evm/server/index.ts +0 -6
  636. package/src/index.ts +0 -14
  637. package/src/internal/AcceptPayment.test.ts +0 -347
  638. package/src/internal/AcceptPayment.ts +0 -366
  639. package/src/internal/HeaderCodec.ts +0 -36
  640. package/src/internal/changeset.test.ts +0 -106
  641. package/src/internal/constantTimeEqual.test.ts +0 -47
  642. package/src/internal/constantTimeEqual.ts +0 -10
  643. package/src/internal/env.test.ts +0 -42
  644. package/src/internal/env.ts +0 -49
  645. package/src/internal/types.test-d.ts +0 -21
  646. package/src/internal/types.ts +0 -479
  647. package/src/mcp/client/McpClient.integration.test.ts +0 -639
  648. package/src/mcp/client/McpClient.test-d.ts +0 -144
  649. package/src/mcp/client/McpClient.test.ts +0 -463
  650. package/src/mcp/client/McpClient.ts +0 -307
  651. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  652. package/src/mcp/client/index.ts +0 -2
  653. package/src/mcp/server/Transport.test.ts +0 -191
  654. package/src/mcp/server/Transport.ts +0 -111
  655. package/src/mcp/server/index.ts +0 -1
  656. package/src/middlewares/elysia.test.ts +0 -285
  657. package/src/middlewares/elysia.ts +0 -116
  658. package/src/middlewares/express.test.ts +0 -361
  659. package/src/middlewares/express.ts +0 -140
  660. package/src/middlewares/hono.test.ts +0 -473
  661. package/src/middlewares/hono.ts +0 -153
  662. package/src/middlewares/internal/mppx.test.ts +0 -177
  663. package/src/middlewares/internal/mppx.ts +0 -67
  664. package/src/middlewares/nextjs.test.ts +0 -359
  665. package/src/middlewares/nextjs.ts +0 -107
  666. package/src/proxy/Proxy.test.ts +0 -1038
  667. package/src/proxy/Proxy.ts +0 -483
  668. package/src/proxy/Proxy.upstreamError.test.ts +0 -364
  669. package/src/proxy/Service.test.ts +0 -252
  670. package/src/proxy/Service.ts +0 -280
  671. package/src/proxy/index.ts +0 -6
  672. package/src/proxy/internal/Headers.test.ts +0 -139
  673. package/src/proxy/internal/Headers.ts +0 -66
  674. package/src/proxy/internal/Route.test.ts +0 -217
  675. package/src/proxy/internal/Route.ts +0 -64
  676. package/src/proxy/services/anthropic.test.ts +0 -132
  677. package/src/proxy/services/anthropic.ts +0 -53
  678. package/src/proxy/services/hooks.test-d.ts +0 -14
  679. package/src/proxy/services/hooks.test.ts +0 -44
  680. package/src/proxy/services/openai.test.ts +0 -157
  681. package/src/proxy/services/openai.ts +0 -60
  682. package/src/proxy/services/stripe.test.ts +0 -175
  683. package/src/proxy/services/stripe.ts +0 -59
  684. package/src/server/Methods.test-d.ts +0 -88
  685. package/src/server/Methods.test.ts +0 -69
  686. package/src/server/Methods.ts +0 -3
  687. package/src/server/Mppx.authorize.test.ts +0 -210
  688. package/src/server/Mppx.test-d.ts +0 -494
  689. package/src/server/Mppx.test.ts +0 -6711
  690. package/src/server/Mppx.ts +0 -2919
  691. package/src/server/NodeListener.test.ts +0 -293
  692. package/src/server/NodeListener.ts +0 -45
  693. package/src/server/Request.test.ts +0 -255
  694. package/src/server/Request.ts +0 -155
  695. package/src/server/Response.test.ts +0 -32
  696. package/src/server/Response.ts +0 -45
  697. package/src/server/Transport.test.ts +0 -598
  698. package/src/server/Transport.ts +0 -320
  699. package/src/server/index.ts +0 -9
  700. package/src/server/internal/html/compose.main.gen.ts +0 -2
  701. package/src/server/internal/html/compose.main.ts +0 -88
  702. package/src/server/internal/html/config.ts +0 -672
  703. package/src/server/internal/html/constants.ts +0 -28
  704. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  705. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  706. package/src/server/internal/html/serviceWorker.ts +0 -27
  707. package/src/server/internal/html/tsconfig.compose.json +0 -8
  708. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  709. package/src/server/internal/html/tsconfig.worker.json +0 -8
  710. package/src/server/internal/scope.ts +0 -43
  711. package/src/stripe/Charge.integration.test.ts +0 -329
  712. package/src/stripe/Methods.test.ts +0 -62
  713. package/src/stripe/Methods.ts +0 -44
  714. package/src/stripe/client/Charge.test.ts +0 -205
  715. package/src/stripe/client/Charge.ts +0 -132
  716. package/src/stripe/client/Methods.ts +0 -37
  717. package/src/stripe/client/index.ts +0 -2
  718. package/src/stripe/index.ts +0 -1
  719. package/src/stripe/internal/constants.ts +0 -7
  720. package/src/stripe/internal/types.ts +0 -47
  721. package/src/stripe/server/Charge.test-d.ts +0 -81
  722. package/src/stripe/server/Charge.test.ts +0 -700
  723. package/src/stripe/server/Charge.ts +0 -487
  724. package/src/stripe/server/Methods.test-d.ts +0 -157
  725. package/src/stripe/server/Methods.test.ts +0 -403
  726. package/src/stripe/server/Methods.ts +0 -441
  727. package/src/stripe/server/index.ts +0 -2
  728. package/src/stripe/server/internal/deposit-address.ts +0 -57
  729. package/src/stripe/server/internal/html/main.ts +0 -165
  730. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  731. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  732. package/src/stripe/server/internal/html/package.json +0 -9
  733. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  734. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  735. package/src/stripe/server/internal/html/types.ts +0 -5
  736. package/src/stripe/server/internal/html.gen.ts +0 -2
  737. package/src/stripe/server/internal/record-payment.ts +0 -66
  738. package/src/stripe/server/internal/request.ts +0 -49
  739. package/src/tap/Constants.ts +0 -32
  740. package/src/tap/Tap.test.ts +0 -125
  741. package/src/tap/Types.ts +0 -11
  742. package/src/tap/client/index.ts +0 -54
  743. package/src/tap/index.ts +0 -4
  744. package/src/tap/server/index.ts +0 -48
  745. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  746. package/src/tempo/Attribution.test.ts +0 -294
  747. package/src/tempo/Attribution.ts +0 -185
  748. package/src/tempo/Methods.test.ts +0 -425
  749. package/src/tempo/Methods.ts +0 -367
  750. package/src/tempo/Proof.conformance.test.ts +0 -146
  751. package/src/tempo/Proof.test-d.ts +0 -32
  752. package/src/tempo/Proof.test.ts +0 -40
  753. package/src/tempo/Proof.ts +0 -69
  754. package/src/tempo/PublicExports.test-d.ts +0 -130
  755. package/src/tempo/Subscription.integration.test.ts +0 -591
  756. package/src/tempo/client/Charge.test.ts +0 -501
  757. package/src/tempo/client/Charge.ts +0 -271
  758. package/src/tempo/client/Methods.ts +0 -45
  759. package/src/tempo/client/ResolveAccount.ts +0 -46
  760. package/src/tempo/client/Subscription.test.ts +0 -180
  761. package/src/tempo/client/Subscription.ts +0 -156
  762. package/src/tempo/client/index.ts +0 -17
  763. package/src/tempo/index.ts +0 -5
  764. package/src/tempo/internal/account.ts +0 -56
  765. package/src/tempo/internal/address.test.ts +0 -42
  766. package/src/tempo/internal/address.ts +0 -6
  767. package/src/tempo/internal/auto-swap.test.ts +0 -198
  768. package/src/tempo/internal/auto-swap.ts +0 -145
  769. package/src/tempo/internal/charge.test.ts +0 -66
  770. package/src/tempo/internal/charge.ts +0 -43
  771. package/src/tempo/internal/defaults.test.ts +0 -95
  772. package/src/tempo/internal/defaults.ts +0 -53
  773. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  774. package/src/tempo/internal/fee-payer.ts +0 -808
  775. package/src/tempo/internal/fee-token.test.ts +0 -165
  776. package/src/tempo/internal/fee-token.ts +0 -72
  777. package/src/tempo/internal/proof.test.ts +0 -97
  778. package/src/tempo/internal/proof.ts +0 -87
  779. package/src/tempo/internal/selectors.ts +0 -10
  780. package/src/tempo/internal/types.ts +0 -19
  781. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  782. package/src/tempo/legacy/README.md +0 -9
  783. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  784. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  785. package/src/tempo/legacy/client/Session.test.ts +0 -800
  786. package/src/tempo/legacy/client/Session.ts +0 -397
  787. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  788. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  789. package/src/tempo/legacy/client/index.ts +0 -6
  790. package/src/tempo/legacy/index.ts +0 -4
  791. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  792. package/src/tempo/legacy/session/Chain.ts +0 -830
  793. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  794. package/src/tempo/legacy/session/Channel.ts +0 -51
  795. package/src/tempo/legacy/session/Types.ts +0 -91
  796. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  797. package/src/tempo/legacy/session/Voucher.ts +0 -183
  798. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  799. package/src/tempo/legacy/session/index.ts +0 -8
  800. package/src/tempo/server/AtomicStore.test-d.ts +0 -63
  801. package/src/tempo/server/Charge.test.ts +0 -6056
  802. package/src/tempo/server/Charge.ts +0 -1379
  803. package/src/tempo/server/Methods.ts +0 -86
  804. package/src/tempo/server/Relay.test.ts +0 -677
  805. package/src/tempo/server/Relay.ts +0 -297
  806. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  807. package/src/tempo/server/SponsorBudget.ts +0 -219
  808. package/src/tempo/server/Sse.test.ts +0 -321
  809. package/src/tempo/server/Subscription.test.ts +0 -1944
  810. package/src/tempo/server/Subscription.ts +0 -1336
  811. package/src/tempo/server/index.ts +0 -12
  812. package/src/tempo/server/internal/html/main.ts +0 -115
  813. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  814. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  815. package/src/tempo/server/internal/html/package.json +0 -10
  816. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  817. package/src/tempo/server/internal/html.gen.ts +0 -2
  818. package/src/tempo/server/internal/request-body.test.ts +0 -210
  819. package/src/tempo/server/internal/request-body.ts +0 -61
  820. package/src/tempo/server/internal/transport.test.ts +0 -922
  821. package/src/tempo/server/internal/transport.ts +0 -322
  822. package/src/tempo/session/README.md +0 -320
  823. package/src/tempo/session/Snapshot.test.ts +0 -41
  824. package/src/tempo/session/Snapshot.ts +0 -95
  825. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  826. package/src/tempo/session/client/ChannelOps.ts +0 -348
  827. package/src/tempo/session/client/ChannelStore.ts +0 -111
  828. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  829. package/src/tempo/session/client/CredentialState.ts +0 -942
  830. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  831. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  832. package/src/tempo/session/client/Runtime.ts +0 -1008
  833. package/src/tempo/session/client/Session.test.ts +0 -1355
  834. package/src/tempo/session/client/Session.ts +0 -420
  835. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  836. package/src/tempo/session/client/SessionManager.ts +0 -996
  837. package/src/tempo/session/client/Transports.test.ts +0 -1141
  838. package/src/tempo/session/client/Transports.ts +0 -1534
  839. package/src/tempo/session/client/index.ts +0 -40
  840. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  841. package/src/tempo/session/index.ts +0 -7
  842. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  843. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  844. package/src/tempo/session/precompile/Chain.ts +0 -1269
  845. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  846. package/src/tempo/session/precompile/Channel.ts +0 -108
  847. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  848. package/src/tempo/session/precompile/Protocol.ts +0 -520
  849. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  850. package/src/tempo/session/precompile/Voucher.ts +0 -162
  851. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  852. package/src/tempo/session/precompile/index.ts +0 -33
  853. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  854. package/src/tempo/session/server/ChannelOps.ts +0 -157
  855. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  856. package/src/tempo/session/server/ChannelStore.ts +0 -856
  857. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  858. package/src/tempo/session/server/CredentialVerification.ts +0 -1087
  859. package/src/tempo/session/server/MeteredStream.ts +0 -99
  860. package/src/tempo/session/server/RequestState.test.ts +0 -574
  861. package/src/tempo/session/server/RequestState.ts +0 -507
  862. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  863. package/src/tempo/session/server/Session.test.ts +0 -4247
  864. package/src/tempo/session/server/Session.ts +0 -669
  865. package/src/tempo/session/server/Settlement.test.ts +0 -345
  866. package/src/tempo/session/server/Settlement.ts +0 -527
  867. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  868. package/src/tempo/session/server/Sse.test.ts +0 -634
  869. package/src/tempo/session/server/Sse.ts +0 -261
  870. package/src/tempo/session/server/Transports.test.ts +0 -346
  871. package/src/tempo/session/server/Transports.ts +0 -256
  872. package/src/tempo/session/server/Ws.test.ts +0 -765
  873. package/src/tempo/session/server/Ws.ts +0 -391
  874. package/src/tempo/session/server/index.ts +0 -12
  875. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  876. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  877. package/src/tempo/subscription/Receipt.ts +0 -28
  878. package/src/tempo/subscription/Store.test.ts +0 -609
  879. package/src/tempo/subscription/Store.ts +0 -449
  880. package/src/tempo/subscription/Types.ts +0 -68
  881. package/src/tempo/subscription/index.ts +0 -23
  882. package/src/tsconfig.json +0 -10
  883. package/src/validation/core.ts +0 -386
  884. package/src/validation/index.ts +0 -11
  885. package/src/viem/Account.test.ts +0 -72
  886. package/src/viem/Account.ts +0 -30
  887. package/src/viem/Client.test.ts +0 -366
  888. package/src/viem/Client.ts +0 -93
  889. package/src/web-bot-auth/Constants.ts +0 -24
  890. package/src/web-bot-auth/Types.ts +0 -9
  891. package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
  892. package/src/web-bot-auth/client/index.ts +0 -84
  893. package/src/web-bot-auth/index.ts +0 -6
  894. package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
  895. package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
  896. package/src/web-bot-auth/server/index.ts +0 -113
  897. package/src/x402/Assets.test.ts +0 -253
  898. package/src/x402/Assets.ts +0 -221
  899. package/src/x402/Exact.e2e.test.ts +0 -488
  900. package/src/x402/Exact.localnet.test.ts +0 -475
  901. package/src/x402/Header.test.ts +0 -73
  902. package/src/x402/Header.ts +0 -79
  903. package/src/x402/PublicInterface.test-d.ts +0 -39
  904. package/src/x402/Types.ts +0 -248
  905. package/src/x402/client/Exact.test.ts +0 -309
  906. package/src/x402/client/Exact.ts +0 -186
  907. package/src/x402/index.ts +0 -6
  908. package/src/x402/internal/ChallengeBrand.ts +0 -14
  909. package/src/x402/internal/RouteBinding.ts +0 -18
  910. package/src/x402/server/EvmCharge.ts +0 -410
  911. package/src/x402/server/Facilitator.test.ts +0 -111
  912. package/src/x402/server/Facilitator.ts +0 -56
  913. package/src/zod.test.ts +0 -169
  914. package/src/zod.ts +0 -71
@@ -1,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
- }