mppx 0.6.31 → 0.7.0

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 (477) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/Challenge.d.ts.map +1 -1
  3. package/dist/Challenge.js +9 -7
  4. package/dist/Challenge.js.map +1 -1
  5. package/dist/Constants.d.ts +46 -0
  6. package/dist/Constants.d.ts.map +1 -0
  7. package/dist/Constants.js +46 -0
  8. package/dist/Constants.js.map +1 -0
  9. package/dist/Credential.d.ts.map +1 -1
  10. package/dist/Credential.js +5 -4
  11. package/dist/Credential.js.map +1 -1
  12. package/dist/Method.d.ts +32 -4
  13. package/dist/Method.d.ts.map +1 -1
  14. package/dist/Method.js +5 -2
  15. package/dist/Method.js.map +1 -1
  16. package/dist/Receipt.d.ts.map +1 -1
  17. package/dist/Receipt.js +3 -2
  18. package/dist/Receipt.js.map +1 -1
  19. package/dist/cli/cli.d.ts.map +1 -1
  20. package/dist/cli/cli.js +19 -11
  21. package/dist/cli/cli.js.map +1 -1
  22. package/dist/cli/plugins/tempo.d.ts.map +1 -1
  23. package/dist/cli/plugins/tempo.js +17 -6
  24. package/dist/cli/plugins/tempo.js.map +1 -1
  25. package/dist/cli/utils.d.ts +5 -0
  26. package/dist/cli/utils.d.ts.map +1 -1
  27. package/dist/cli/utils.js +10 -0
  28. package/dist/cli/utils.js.map +1 -1
  29. package/dist/client/Methods.d.ts +5 -2
  30. package/dist/client/Methods.d.ts.map +1 -1
  31. package/dist/client/Methods.js +5 -2
  32. package/dist/client/Methods.js.map +1 -1
  33. package/dist/client/Transport.d.ts.map +1 -1
  34. package/dist/client/Transport.js +4 -5
  35. package/dist/client/Transport.js.map +1 -1
  36. package/dist/client/index.d.ts +2 -1
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js +2 -1
  39. package/dist/client/index.js.map +1 -1
  40. package/dist/client/internal/Fetch.d.ts.map +1 -1
  41. package/dist/client/internal/Fetch.js +14 -6
  42. package/dist/client/internal/Fetch.js.map +1 -1
  43. package/dist/evm/server/Methods.d.ts +1 -1
  44. package/dist/evm/server/Methods.d.ts.map +1 -1
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/internal/AcceptPayment.d.ts +3 -0
  50. package/dist/internal/AcceptPayment.d.ts.map +1 -1
  51. package/dist/internal/AcceptPayment.js +15 -11
  52. package/dist/internal/AcceptPayment.js.map +1 -1
  53. package/dist/mcp-sdk/client/McpClient.d.ts +12 -5
  54. package/dist/mcp-sdk/client/McpClient.d.ts.map +1 -1
  55. package/dist/mcp-sdk/client/McpClient.js +55 -42
  56. package/dist/mcp-sdk/client/McpClient.js.map +1 -1
  57. package/dist/server/Mppx.d.ts +11 -3
  58. package/dist/server/Mppx.d.ts.map +1 -1
  59. package/dist/server/Mppx.js +76 -27
  60. package/dist/server/Mppx.js.map +1 -1
  61. package/dist/server/Response.d.ts.map +1 -1
  62. package/dist/server/Response.js +2 -1
  63. package/dist/server/Response.js.map +1 -1
  64. package/dist/server/Transport.d.ts.map +1 -1
  65. package/dist/server/Transport.js +4 -3
  66. package/dist/server/Transport.js.map +1 -1
  67. package/dist/server/index.d.ts +1 -0
  68. package/dist/server/index.d.ts.map +1 -1
  69. package/dist/server/index.js +1 -0
  70. package/dist/server/index.js.map +1 -1
  71. package/dist/stripe/client/Charge.d.ts +1 -1
  72. package/dist/stripe/client/Charge.d.ts.map +1 -1
  73. package/dist/stripe/client/Charge.js +3 -1
  74. package/dist/stripe/client/Charge.js.map +1 -1
  75. package/dist/stripe/server/Charge.d.ts +1 -1
  76. package/dist/stripe/server/Charge.d.ts.map +1 -1
  77. package/dist/stripe/server/Charge.js +9 -2
  78. package/dist/stripe/server/Charge.js.map +1 -1
  79. package/dist/stripe/server/Methods.d.ts +1 -1
  80. package/dist/stripe/server/Methods.d.ts.map +1 -1
  81. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  82. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  83. package/dist/stripe/server/internal/html.gen.js +1 -1
  84. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  85. package/dist/tempo/Methods.d.ts +18 -0
  86. package/dist/tempo/Methods.d.ts.map +1 -1
  87. package/dist/tempo/Methods.js +16 -1
  88. package/dist/tempo/Methods.js.map +1 -1
  89. package/dist/tempo/client/Charge.d.ts +6 -0
  90. package/dist/tempo/client/Charge.d.ts.map +1 -1
  91. package/dist/tempo/client/Charge.js +9 -2
  92. package/dist/tempo/client/Charge.js.map +1 -1
  93. package/dist/tempo/client/Methods.d.ts +36 -7
  94. package/dist/tempo/client/Methods.d.ts.map +1 -1
  95. package/dist/tempo/client/Methods.js +12 -5
  96. package/dist/tempo/client/Methods.js.map +1 -1
  97. package/dist/tempo/client/index.d.ts +7 -4
  98. package/dist/tempo/client/index.d.ts.map +1 -1
  99. package/dist/tempo/client/index.js +5 -3
  100. package/dist/tempo/client/index.js.map +1 -1
  101. package/dist/tempo/index.d.ts +1 -0
  102. package/dist/tempo/index.d.ts.map +1 -1
  103. package/dist/tempo/index.js +1 -0
  104. package/dist/tempo/index.js.map +1 -1
  105. package/dist/tempo/internal/fee-payer.d.ts +21 -1
  106. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  107. package/dist/tempo/internal/fee-payer.js +109 -4
  108. package/dist/tempo/internal/fee-payer.js.map +1 -1
  109. package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
  110. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
  111. package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
  112. package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
  113. package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
  114. package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
  115. package/dist/tempo/{client → legacy/client}/Session.js +14 -7
  116. package/dist/tempo/legacy/client/Session.js.map +1 -0
  117. package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
  118. package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
  119. package/dist/tempo/{client → legacy/client}/SessionManager.js +20 -16
  120. package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
  121. package/dist/tempo/legacy/client/index.d.ts +7 -0
  122. package/dist/tempo/legacy/client/index.d.ts.map +1 -0
  123. package/dist/tempo/legacy/client/index.js +5 -0
  124. package/dist/tempo/legacy/client/index.js.map +1 -0
  125. package/dist/tempo/legacy/index.d.ts +7 -0
  126. package/dist/tempo/legacy/index.d.ts.map +1 -0
  127. package/dist/tempo/legacy/index.js +7 -0
  128. package/dist/tempo/legacy/index.js.map +1 -0
  129. package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
  130. package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
  131. package/dist/tempo/{server → legacy/server}/Session.js +12 -10
  132. package/dist/tempo/legacy/server/Session.js.map +1 -0
  133. package/dist/tempo/legacy/server/index.d.ts +5 -0
  134. package/dist/tempo/legacy/server/index.d.ts.map +1 -0
  135. package/dist/tempo/legacy/server/index.js +5 -0
  136. package/dist/tempo/legacy/server/index.js.map +1 -0
  137. package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
  138. package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
  139. package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
  140. package/dist/tempo/legacy/session/Chain.js.map +1 -0
  141. package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
  142. package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
  143. package/dist/tempo/legacy/session/Channel.js.map +1 -0
  144. package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
  145. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
  146. package/dist/tempo/legacy/session/ChannelStore.js +6 -0
  147. package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
  148. package/dist/tempo/legacy/session/Types.d.ts +73 -0
  149. package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
  150. package/dist/tempo/legacy/session/Types.js.map +1 -0
  151. package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
  152. package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
  153. package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
  154. package/dist/tempo/legacy/session/Voucher.js.map +1 -0
  155. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
  156. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
  157. package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
  158. package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
  159. package/dist/tempo/legacy/session/index.d.ts +9 -0
  160. package/dist/tempo/legacy/session/index.d.ts.map +1 -0
  161. package/dist/tempo/legacy/session/index.js +9 -0
  162. package/dist/tempo/legacy/session/index.js.map +1 -0
  163. package/dist/tempo/server/Charge.d.ts +1 -1
  164. package/dist/tempo/server/Charge.d.ts.map +1 -1
  165. package/dist/tempo/server/Charge.js +13 -16
  166. package/dist/tempo/server/Charge.js.map +1 -1
  167. package/dist/tempo/server/Methods.d.ts +63 -6
  168. package/dist/tempo/server/Methods.d.ts.map +1 -1
  169. package/dist/tempo/server/Methods.js +36 -8
  170. package/dist/tempo/server/Methods.js.map +1 -1
  171. package/dist/tempo/server/Subscription.d.ts +1 -1
  172. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  173. package/dist/tempo/server/index.d.ts +6 -5
  174. package/dist/tempo/server/index.d.ts.map +1 -1
  175. package/dist/tempo/server/index.js +5 -5
  176. package/dist/tempo/server/index.js.map +1 -1
  177. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  178. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  179. package/dist/tempo/server/internal/html.gen.js +1 -1
  180. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  181. package/dist/tempo/server/internal/request-body.d.ts +7 -2
  182. package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
  183. package/dist/tempo/server/internal/request-body.js +20 -3
  184. package/dist/tempo/server/internal/request-body.js.map +1 -1
  185. package/dist/tempo/server/internal/transport.d.ts +8 -4
  186. package/dist/tempo/server/internal/transport.d.ts.map +1 -1
  187. package/dist/tempo/server/internal/transport.js +8 -7
  188. package/dist/tempo/server/internal/transport.js.map +1 -1
  189. package/dist/tempo/session/Snapshot.d.ts +32 -0
  190. package/dist/tempo/session/Snapshot.d.ts.map +1 -0
  191. package/dist/tempo/session/Snapshot.js +37 -0
  192. package/dist/tempo/session/Snapshot.js.map +1 -0
  193. package/dist/tempo/session/client/ChannelOps.d.ts +82 -0
  194. package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
  195. package/dist/tempo/session/client/ChannelOps.js +204 -0
  196. package/dist/tempo/session/client/ChannelOps.js.map +1 -0
  197. package/dist/tempo/session/client/CredentialState.d.ts +262 -0
  198. package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
  199. package/dist/tempo/session/client/CredentialState.js +417 -0
  200. package/dist/tempo/session/client/CredentialState.js.map +1 -0
  201. package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
  202. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
  203. package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
  204. package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
  205. package/dist/tempo/session/client/Runtime.d.ts +464 -0
  206. package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
  207. package/dist/tempo/session/client/Runtime.js +499 -0
  208. package/dist/tempo/session/client/Runtime.js.map +1 -0
  209. package/dist/tempo/session/client/Session.d.ts +132 -0
  210. package/dist/tempo/session/client/Session.d.ts.map +1 -0
  211. package/dist/tempo/session/client/Session.js +55 -0
  212. package/dist/tempo/session/client/Session.js.map +1 -0
  213. package/dist/tempo/session/client/SessionManager.d.ts +120 -0
  214. package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
  215. package/dist/tempo/session/client/SessionManager.js +627 -0
  216. package/dist/tempo/session/client/SessionManager.js.map +1 -0
  217. package/dist/tempo/session/client/Transports.d.ts +449 -0
  218. package/dist/tempo/session/client/Transports.d.ts.map +1 -0
  219. package/dist/tempo/session/client/Transports.js +721 -0
  220. package/dist/tempo/session/client/Transports.js.map +1 -0
  221. package/dist/tempo/session/client/index.d.ts +12 -0
  222. package/dist/tempo/session/client/index.d.ts.map +1 -0
  223. package/dist/tempo/session/client/index.js +5 -0
  224. package/dist/tempo/session/client/index.js.map +1 -0
  225. package/dist/tempo/session/index.d.ts +7 -8
  226. package/dist/tempo/session/index.d.ts.map +1 -1
  227. package/dist/tempo/session/index.js +7 -8
  228. package/dist/tempo/session/index.js.map +1 -1
  229. package/dist/tempo/session/precompile/Chain.d.ts +319 -0
  230. package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
  231. package/dist/tempo/session/precompile/Chain.js +492 -0
  232. package/dist/tempo/session/precompile/Chain.js.map +1 -0
  233. package/dist/tempo/session/precompile/Channel.d.ts +46 -0
  234. package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
  235. package/dist/tempo/session/precompile/Channel.js +56 -0
  236. package/dist/tempo/session/precompile/Channel.js.map +1 -0
  237. package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
  238. package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
  239. package/dist/tempo/session/precompile/Protocol.js +264 -0
  240. package/dist/tempo/session/precompile/Protocol.js.map +1 -0
  241. package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
  242. package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
  243. package/dist/tempo/session/precompile/Voucher.js +126 -0
  244. package/dist/tempo/session/precompile/Voucher.js.map +1 -0
  245. package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
  246. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
  247. package/dist/tempo/session/precompile/escrow.abi.js +224 -0
  248. package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
  249. package/dist/tempo/session/precompile/index.d.ts +24 -0
  250. package/dist/tempo/session/precompile/index.d.ts.map +1 -0
  251. package/dist/tempo/session/precompile/index.js +22 -0
  252. package/dist/tempo/session/precompile/index.js.map +1 -0
  253. package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
  254. package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
  255. package/dist/tempo/session/server/ChannelOps.js +91 -0
  256. package/dist/tempo/session/server/ChannelOps.js.map +1 -0
  257. package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
  258. package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
  259. package/dist/tempo/session/server/ChannelStore.js +404 -0
  260. package/dist/tempo/session/server/ChannelStore.js.map +1 -0
  261. package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
  262. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
  263. package/dist/tempo/session/server/CredentialVerification.js +494 -0
  264. package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
  265. package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
  266. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
  267. package/dist/tempo/session/server/MeteredStream.js +42 -0
  268. package/dist/tempo/session/server/MeteredStream.js.map +1 -0
  269. package/dist/tempo/session/server/RequestState.d.ts +208 -0
  270. package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
  271. package/dist/tempo/session/server/RequestState.js +252 -0
  272. package/dist/tempo/session/server/RequestState.js.map +1 -0
  273. package/dist/tempo/session/server/Session.d.ts +169 -0
  274. package/dist/tempo/session/server/Session.d.ts.map +1 -0
  275. package/dist/tempo/session/server/Session.js +351 -0
  276. package/dist/tempo/session/server/Session.js.map +1 -0
  277. package/dist/tempo/session/server/Settlement.d.ts +185 -0
  278. package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
  279. package/dist/tempo/session/server/Settlement.js +250 -0
  280. package/dist/tempo/session/server/Settlement.js.map +1 -0
  281. package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
  282. package/dist/tempo/session/server/Sse.d.ts.map +1 -0
  283. package/dist/tempo/session/server/Sse.js +184 -0
  284. package/dist/tempo/session/server/Sse.js.map +1 -0
  285. package/dist/tempo/session/server/Transports.d.ts +89 -0
  286. package/dist/tempo/session/server/Transports.d.ts.map +1 -0
  287. package/dist/tempo/session/server/Transports.js +149 -0
  288. package/dist/tempo/session/server/Transports.js.map +1 -0
  289. package/dist/tempo/session/server/Ws.d.ts +48 -0
  290. package/dist/tempo/session/server/Ws.d.ts.map +1 -0
  291. package/dist/tempo/session/server/Ws.js +244 -0
  292. package/dist/tempo/session/server/Ws.js.map +1 -0
  293. package/dist/tempo/session/server/index.d.ts +4 -0
  294. package/dist/tempo/session/server/index.d.ts.map +1 -0
  295. package/dist/tempo/session/server/index.js +2 -0
  296. package/dist/tempo/session/server/index.js.map +1 -0
  297. package/package.json +6 -1
  298. package/src/Challenge.ts +9 -7
  299. package/src/Constants.ts +58 -0
  300. package/src/Credential.ts +5 -4
  301. package/src/Method.ts +46 -5
  302. package/src/Receipt.ts +3 -2
  303. package/src/cli/cli.test.ts +23 -28
  304. package/src/cli/cli.ts +23 -10
  305. package/src/cli/mcp.test.ts +21 -7
  306. package/src/cli/plugins/tempo.ts +21 -8
  307. package/src/cli/utils.test.ts +25 -1
  308. package/src/cli/utils.ts +10 -0
  309. package/src/client/Methods.ts +5 -2
  310. package/src/client/Mppx.test-d.ts +10 -0
  311. package/src/client/Mppx.test.ts +75 -0
  312. package/src/client/Transport.ts +4 -5
  313. package/src/client/index.ts +11 -1
  314. package/src/client/internal/Fetch.test.ts +29 -4
  315. package/src/client/internal/Fetch.ts +17 -5
  316. package/src/env.d.ts +1 -1
  317. package/src/index.ts +1 -0
  318. package/src/internal/AcceptPayment.test.ts +61 -0
  319. package/src/internal/AcceptPayment.ts +21 -14
  320. package/src/mcp-sdk/client/McpClient.integration.test.ts +8 -7
  321. package/src/mcp-sdk/client/McpClient.test-d.ts +7 -0
  322. package/src/mcp-sdk/client/McpClient.ts +99 -67
  323. package/src/mcp-sdk/client/McpClient.unit.test.ts +131 -0
  324. package/src/middlewares/elysia.test.ts +8 -4
  325. package/src/middlewares/express.test.ts +8 -4
  326. package/src/middlewares/hono.test.ts +4 -4
  327. package/src/middlewares/nextjs.test.ts +8 -4
  328. package/src/proxy/Proxy.test.ts +8 -8
  329. package/src/server/Mppx.test-d.ts +54 -0
  330. package/src/server/Mppx.test.ts +200 -7
  331. package/src/server/Mppx.ts +487 -406
  332. package/src/server/Response.ts +2 -1
  333. package/src/server/Transport.ts +4 -3
  334. package/src/server/index.ts +1 -0
  335. package/src/stripe/client/Charge.test.ts +20 -5
  336. package/src/stripe/client/Charge.ts +6 -2
  337. package/src/stripe/server/Charge.test.ts +114 -1
  338. package/src/stripe/server/Charge.ts +13 -2
  339. package/src/stripe/server/internal/html.gen.ts +1 -1
  340. package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
  341. package/src/tempo/Methods.test.ts +45 -17
  342. package/src/tempo/Methods.ts +22 -0
  343. package/src/tempo/PublicExports.test-d.ts +105 -0
  344. package/src/tempo/client/Charge.test.ts +85 -0
  345. package/src/tempo/client/Charge.ts +19 -2
  346. package/src/tempo/client/Methods.ts +18 -6
  347. package/src/tempo/client/index.ts +15 -4
  348. package/src/tempo/index.ts +1 -0
  349. package/src/tempo/internal/fee-payer.test.ts +241 -17
  350. package/src/tempo/internal/fee-payer.ts +150 -4
  351. package/src/tempo/internal/fee-token.test.ts +14 -9
  352. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
  353. package/src/tempo/legacy/README.md +9 -0
  354. package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
  355. package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
  356. package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
  357. package/src/tempo/{client → legacy/client}/Session.ts +25 -11
  358. package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
  359. package/src/tempo/{client → legacy/client}/SessionManager.ts +41 -20
  360. package/src/tempo/legacy/client/index.ts +6 -0
  361. package/src/tempo/legacy/index.ts +6 -0
  362. package/src/tempo/{server → legacy/server}/Session.test.ts +45 -45
  363. package/src/tempo/{server → legacy/server}/Session.ts +32 -23
  364. package/src/tempo/legacy/server/index.ts +4 -0
  365. package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
  366. package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
  367. package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
  368. package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
  369. package/src/tempo/legacy/session/ChannelStore.ts +39 -0
  370. package/src/tempo/legacy/session/Types.ts +91 -0
  371. package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
  372. package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
  373. package/src/tempo/legacy/session/index.ts +8 -0
  374. package/src/tempo/server/AtomicStore.test-d.ts +16 -11
  375. package/src/tempo/server/Charge.test.ts +92 -14
  376. package/src/tempo/server/Charge.ts +18 -16
  377. package/src/tempo/server/Methods.ts +54 -8
  378. package/src/tempo/server/Sse.test.ts +2 -2
  379. package/src/tempo/server/index.ts +6 -5
  380. package/src/tempo/server/internal/html.gen.ts +1 -1
  381. package/src/tempo/server/internal/request-body.test.ts +37 -4
  382. package/src/tempo/server/internal/request-body.ts +25 -6
  383. package/src/tempo/server/internal/transport.test.ts +4 -4
  384. package/src/tempo/server/internal/transport.ts +19 -10
  385. package/src/tempo/session/Snapshot.test.ts +41 -0
  386. package/src/tempo/session/Snapshot.ts +74 -0
  387. package/src/tempo/session/client/ChannelOps.test.ts +163 -0
  388. package/src/tempo/session/client/ChannelOps.ts +344 -0
  389. package/src/tempo/session/client/CredentialState.test.ts +645 -0
  390. package/src/tempo/session/client/CredentialState.ts +814 -0
  391. package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
  392. package/src/tempo/session/client/Runtime.test.ts +1092 -0
  393. package/src/tempo/session/client/Runtime.ts +986 -0
  394. package/src/tempo/session/client/Session.test.ts +734 -0
  395. package/src/tempo/session/client/Session.ts +97 -0
  396. package/src/tempo/session/client/SessionManager.test.ts +1308 -0
  397. package/src/tempo/session/client/SessionManager.ts +845 -0
  398. package/src/tempo/session/client/Transports.test.ts +837 -0
  399. package/src/tempo/session/client/Transports.ts +1292 -0
  400. package/src/tempo/session/client/index.ts +37 -0
  401. package/src/tempo/session/index.ts +7 -8
  402. package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
  403. package/src/tempo/session/precompile/Chain.test.ts +1258 -0
  404. package/src/tempo/session/precompile/Chain.ts +979 -0
  405. package/src/tempo/session/precompile/Channel.test.ts +138 -0
  406. package/src/tempo/session/precompile/Channel.ts +103 -0
  407. package/src/tempo/session/precompile/Protocol.test.ts +358 -0
  408. package/src/tempo/session/precompile/Protocol.ts +520 -0
  409. package/src/tempo/session/precompile/Voucher.test.ts +316 -0
  410. package/src/tempo/session/precompile/Voucher.ts +160 -0
  411. package/src/tempo/session/precompile/escrow.abi.ts +226 -0
  412. package/src/tempo/session/precompile/index.ts +33 -0
  413. package/src/tempo/session/server/ChannelOps.test.ts +129 -0
  414. package/src/tempo/session/server/ChannelOps.ts +157 -0
  415. package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
  416. package/src/tempo/session/server/ChannelStore.ts +835 -0
  417. package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
  418. package/src/tempo/session/server/CredentialVerification.ts +710 -0
  419. package/src/tempo/session/server/MeteredStream.ts +88 -0
  420. package/src/tempo/session/server/RequestState.test.ts +531 -0
  421. package/src/tempo/session/server/RequestState.ts +499 -0
  422. package/src/tempo/session/server/Session.integration.test.ts +444 -0
  423. package/src/tempo/session/server/Session.test.ts +3253 -0
  424. package/src/tempo/session/server/Session.ts +543 -0
  425. package/src/tempo/session/server/Settlement.test.ts +242 -0
  426. package/src/tempo/session/server/Settlement.ts +470 -0
  427. package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
  428. package/src/tempo/session/server/Sse.ts +256 -0
  429. package/src/tempo/session/server/Transports.test.ts +346 -0
  430. package/src/tempo/session/server/Transports.ts +255 -0
  431. package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
  432. package/src/tempo/session/server/Ws.ts +384 -0
  433. package/src/tempo/session/server/index.ts +8 -0
  434. package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
  435. package/dist/tempo/client/ChannelOps.js.map +0 -1
  436. package/dist/tempo/client/Session.d.ts.map +0 -1
  437. package/dist/tempo/client/Session.js.map +0 -1
  438. package/dist/tempo/client/SessionManager.d.ts.map +0 -1
  439. package/dist/tempo/client/SessionManager.js.map +0 -1
  440. package/dist/tempo/server/Session.d.ts.map +0 -1
  441. package/dist/tempo/server/Session.js.map +0 -1
  442. package/dist/tempo/session/Chain.d.ts.map +0 -1
  443. package/dist/tempo/session/Chain.js.map +0 -1
  444. package/dist/tempo/session/Channel.d.ts.map +0 -1
  445. package/dist/tempo/session/Channel.js.map +0 -1
  446. package/dist/tempo/session/ChannelStore.d.ts +0 -117
  447. package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
  448. package/dist/tempo/session/ChannelStore.js +0 -172
  449. package/dist/tempo/session/ChannelStore.js.map +0 -1
  450. package/dist/tempo/session/Receipt.d.ts +0 -22
  451. package/dist/tempo/session/Receipt.d.ts.map +0 -1
  452. package/dist/tempo/session/Receipt.js +0 -34
  453. package/dist/tempo/session/Receipt.js.map +0 -1
  454. package/dist/tempo/session/Sse.d.ts.map +0 -1
  455. package/dist/tempo/session/Sse.js +0 -363
  456. package/dist/tempo/session/Sse.js.map +0 -1
  457. package/dist/tempo/session/Types.d.ts +0 -78
  458. package/dist/tempo/session/Types.d.ts.map +0 -1
  459. package/dist/tempo/session/Types.js.map +0 -1
  460. package/dist/tempo/session/Voucher.d.ts.map +0 -1
  461. package/dist/tempo/session/Voucher.js.map +0 -1
  462. package/dist/tempo/session/Ws.d.ts +0 -87
  463. package/dist/tempo/session/Ws.d.ts.map +0 -1
  464. package/dist/tempo/session/Ws.js +0 -443
  465. package/dist/tempo/session/Ws.js.map +0 -1
  466. package/dist/tempo/session/escrow.abi.js.map +0 -1
  467. package/src/tempo/session/ChannelStore.ts +0 -308
  468. package/src/tempo/session/Receipt.test.ts +0 -89
  469. package/src/tempo/session/Receipt.ts +0 -46
  470. package/src/tempo/session/Sse.ts +0 -462
  471. package/src/tempo/session/Types.ts +0 -86
  472. package/src/tempo/session/Ws.ts +0 -576
  473. /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
  474. /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
  475. /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
  476. /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
  477. /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
@@ -0,0 +1,208 @@
1
+ import { type Account as viem_Account, type Address, type Hex } from 'viem';
2
+ import * as Constants from '../../../Constants.js';
3
+ import type * as Credential from '../../../Credential.js';
4
+ import type { Challenge } from '../../../index.js';
5
+ import type * as z from '../../../zod.js';
6
+ import * as Methods from '../../Methods.js';
7
+ import { isSessionContentRequest, type RequestBodyProbe } from '../../server/internal/request-body.js';
8
+ import type * as PrecompileChain from '../precompile/Chain.js';
9
+ import { type SessionCredentialPayload } from '../precompile/Protocol.js';
10
+ import type { SessionSnapshot } from '../Snapshot.js';
11
+ import * as ChannelStore from './ChannelStore.js';
12
+ import { type ParameterFeePayer } from './Settlement.js';
13
+ /** Inputs used to build server bootstrap hints for a reusable session channel. */
14
+ export type ResolveSessionSnapshotParameters = {
15
+ /** Raw request amount that must be covered by the next voucher. */
16
+ amount: bigint;
17
+ /** Channel ID from credential or challenge request, when available. */
18
+ channelId: Hex | undefined;
19
+ /** Payment fields the reusable channel must match before it is advertised. */
20
+ expected?: SessionSnapshotPaymentFields | undefined;
21
+ /** Server channel store. */
22
+ store: ChannelStore.ChannelStore;
23
+ };
24
+ /** Payment fields used to bind a reusable channel hint to the current challenge. */
25
+ export type SessionSnapshotPaymentFields = {
26
+ /** Tempo chain ID expected by the challenge. */
27
+ chainId: number;
28
+ /** Token address expected by the challenge. */
29
+ currency: Address;
30
+ /** Escrow precompile address expected by the challenge. */
31
+ escrowContract: Address;
32
+ /** Payee address expected by the challenge. */
33
+ recipient: Address;
34
+ };
35
+ /** Request metadata available to `resolveChannelId` without exposing a mutable `Request`. */
36
+ export type SessionChannelIdRequest = {
37
+ /** Request headers, useful for cookies or auth/session headers. */
38
+ readonly headers: Headers;
39
+ /** Whether the original request had a body, when known. */
40
+ readonly hasBody?: boolean | undefined;
41
+ /** HTTP method for the protected request. */
42
+ readonly method: string;
43
+ /** Request URL, when the transport captured it. */
44
+ readonly url?: URL | undefined;
45
+ };
46
+ /** Inputs for resolving a reusable channel when the request did not include a channel ID. */
47
+ export type ResolveSessionChannelIdParameters = {
48
+ /** Captured HTTP request metadata, when the transport provides it. */
49
+ request?: SessionChannelIdRequest | undefined;
50
+ /** Credential submitted with the request, when present. */
51
+ credential: Credential.Credential | null | undefined;
52
+ /** Cryptographic payer identity from a verified zero-amount bootstrap proof. */
53
+ source?: string | undefined;
54
+ /** Session payment request being challenged. */
55
+ paymentRequest: SessionPaymentRequestInput;
56
+ /** Channel store backing this session method. */
57
+ store: ChannelStore.ChannelStore;
58
+ };
59
+ /** Application hook for mapping request identity to an existing session channel. */
60
+ export type ResolveSessionChannelId = (parameters: ResolveSessionChannelIdParameters) => Promise<string | null | undefined> | string | null | undefined;
61
+ /** Normalizes a session channel ID hint when one is present. */
62
+ export declare function normalizeSessionChannelId(value: unknown): Hex | undefined;
63
+ /** Extracts and normalizes a credential channel ID after credential verification. */
64
+ export declare function getCredentialChannelId(credential: Credential.Credential | null | undefined): `0x${string}` | undefined;
65
+ /** Resolves the channel ID used to build server-side session bootstrap hints. */
66
+ export declare function resolveSessionChannelId(parameters: {
67
+ capturedRequest?: RequestBodyProbe | undefined;
68
+ credential: Credential.Credential | null | undefined;
69
+ request: SessionPaymentRequestInput;
70
+ resolveChannelId?: ResolveSessionChannelId | undefined;
71
+ source?: string | undefined;
72
+ store: ChannelStore.ChannelStore;
73
+ }): Promise<Hex | undefined>;
74
+ /** Builds server bootstrap hints for a reusable precompile session channel. */
75
+ export declare function resolveSessionSnapshot(parameters: ResolveSessionSnapshotParameters): Promise<SessionSnapshot | undefined>;
76
+ /** Inputs for deciding whether a verified session credential should serve content. */
77
+ export type SessionResponseGateParameters = {
78
+ /** Captured request metadata from the verification envelope, when available. */
79
+ capturedRequest?: Parameters<typeof isSessionContentRequest>[0] | undefined;
80
+ /** Raw HTTP request used as a fallback when no captured metadata exists. */
81
+ input: Request;
82
+ /** Credential payload or minimal action-bearing payload. */
83
+ payload: SessionCredentialPayload | {
84
+ action?: unknown;
85
+ };
86
+ };
87
+ /**
88
+ * Returns a management response for non-content session actions.
89
+ *
90
+ * `close` and `topUp` are always management-only. `open` and `voucher` serve
91
+ * content only when the request classifier says the request is billable.
92
+ */
93
+ export declare function respondToSessionCredential(parameters: SessionResponseGateParameters): Response | undefined;
94
+ type ChainIdClient = {
95
+ chain?: {
96
+ id?: number | undefined;
97
+ } | undefined;
98
+ };
99
+ /** Public request input accepted by the tempo session method before schema normalization. */
100
+ export type SessionPaymentRequestInput = z.input<typeof Methods.session.schema.request>;
101
+ /** Canonical request shape embedded in signed `tempo/session` challenges. */
102
+ export type CanonicalSessionPaymentRequest = z.output<typeof Methods.session.schema.request>;
103
+ /** Canonical challenge request after required TIP-1034 method details have been proven present. */
104
+ export type VerifiedSessionPaymentRequest = CanonicalSessionPaymentRequest & {
105
+ /** Required TIP-1034 method details for credential verification. */
106
+ methodDetails: SessionMethodDetails;
107
+ };
108
+ /** Session request input after server-side chain, escrow, fee-payer, and snapshot defaults are added. */
109
+ export type ResolvedSessionPaymentRequest = SessionPaymentRequestInput & {
110
+ chainId: number;
111
+ escrowContract: Address;
112
+ feePayer?: boolean | viem_Account | undefined;
113
+ operator?: Address | undefined;
114
+ sessionSnapshot?: SessionSnapshot | undefined;
115
+ };
116
+ /** TIP-1034 session details embedded in a payment challenge request. */
117
+ export type SessionMethodDetails = {
118
+ /** Tempo chain ID used for voucher domain and channel ID checks. */
119
+ chainId: number;
120
+ /** TIP20EscrowChannel precompile address for this challenge. */
121
+ escrowContract: Address;
122
+ /** Whether this challenge allows fee-sponsored management transactions. */
123
+ feePayer?: boolean | undefined;
124
+ /** Minimum raw-unit increase required for voucher credentials. */
125
+ minVoucherDelta?: string | undefined;
126
+ /** Channel operator address the client should encode in new open transactions. */
127
+ operator?: Address | undefined;
128
+ /** Tempo session protocol version for this challenge. */
129
+ sessionProtocol?: Constants.SessionProtocol | undefined;
130
+ };
131
+ /** Inputs used to resolve the chain ID for a session challenge. */
132
+ export type ResolveRequestChainIdParameters = {
133
+ getClient(parameters: {
134
+ chainId?: number | undefined;
135
+ }): ChainIdClient | Promise<ChainIdClient>;
136
+ parameterChainId?: number | undefined;
137
+ requestChainId?: number | undefined;
138
+ };
139
+ /** Inputs used to enrich a server session payment request before challenge creation. */
140
+ export type ResolveSessionPaymentRequestParameters = {
141
+ capturedRequest?: RequestBodyProbe | undefined;
142
+ credential: Credential.Credential | null | undefined;
143
+ decimals: number;
144
+ defaultFeePayer?: viem_Account | undefined;
145
+ getClient: ResolveRequestChainIdParameters['getClient'];
146
+ parameterChainId?: number | undefined;
147
+ parameterEscrowContract?: Address | undefined;
148
+ parameterFeePayer?: ParameterFeePayer;
149
+ request: SessionPaymentRequestInput;
150
+ resolveChannelId?: ResolveSessionChannelId | undefined;
151
+ source?: string | undefined;
152
+ store: ChannelStore.ChannelStore;
153
+ };
154
+ /** Inputs used to resolve shared context for credential verification. */
155
+ export type ResolveCredentialVerificationContextParameters = {
156
+ /** Default configured fee-payer account, when enabled. */
157
+ feePayer?: viem_Account | undefined;
158
+ /** Resolves a viem client for the challenge chain ID. */
159
+ getClient(parameters: {
160
+ chainId: number;
161
+ }): PrecompileChain.TransactionClient | Promise<PrecompileChain.TransactionClient>;
162
+ /** Default human-readable minimum voucher delta configured on `session()`. */
163
+ minVoucherDelta?: string | undefined;
164
+ /** Token decimals used to parse default minimum voucher delta. */
165
+ decimals: number;
166
+ /** Canonical or schema-input request being verified. */
167
+ request: unknown;
168
+ };
169
+ /** Shared context derived from the HMAC-bound challenge request for credential verification. */
170
+ export type CredentialVerificationContext = {
171
+ /** Canonical session request shape. */
172
+ request: VerifiedSessionPaymentRequest;
173
+ /** Required TIP-1034 method details embedded in the challenge request. */
174
+ methodDetails: SessionMethodDetails;
175
+ /** Challenge chain ID. */
176
+ chainId: number;
177
+ /** Challenge escrow precompile address. */
178
+ escrow: Address;
179
+ /** Client for precompile reads and transaction broadcasts. */
180
+ client: PrecompileChain.TransactionClient;
181
+ /** Fee payer authorized for this credential, when allowed. */
182
+ feePayer?: viem_Account | undefined;
183
+ /** Minimum allowed voucher delta in raw token units. */
184
+ minVoucherDelta: bigint;
185
+ };
186
+ /** Payment fields extracted from the credential challenge request. */
187
+ export type ChallengePaymentFields = {
188
+ /** Raw request amount in token units. */
189
+ amount: bigint;
190
+ /** Token address expected by the server. */
191
+ currency: Address;
192
+ /** Payee address expected by the server. */
193
+ recipient: Address;
194
+ };
195
+ /** Reads the destination, token, and raw amount from a session challenge request. */
196
+ export declare function getChallengePaymentFields(challenge: Challenge.Challenge): ChallengePaymentFields;
197
+ /** Resolves the chain ID from request override, method parameters, or client config. */
198
+ export declare function resolveRequestChainId(parameters: ResolveRequestChainIdParameters): Promise<number | undefined>;
199
+ /** Resolves request-time TIP-1034 details and server bootstrap hints for a challenge. */
200
+ export declare function resolveSessionPaymentRequest(parameters: ResolveSessionPaymentRequestParameters): Promise<ResolvedSessionPaymentRequest>;
201
+ /** Parses the canonical session request shape used during credential verification. */
202
+ export declare function resolveVerificationRequest(request: unknown): VerifiedSessionPaymentRequest;
203
+ /** Returns required TIP-1034 method details from a canonical session request. */
204
+ export declare function requireMethodDetails(request: VerifiedSessionPaymentRequest): SessionMethodDetails;
205
+ /** Resolves all non-payload verification context from a session challenge request. */
206
+ export declare function resolveCredentialVerificationContext(parameters: ResolveCredentialVerificationContextParameters): Promise<CredentialVerificationContext>;
207
+ export {};
208
+ //# sourceMappingURL=RequestState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestState.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/server/RequestState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,252 @@
1
+ import { isAddress, isAddressEqual, parseUnits, } from 'viem';
2
+ import * as Constants from '../../../Constants.js';
3
+ import { VerificationFailedError } from '../../../Errors.js';
4
+ import * as Methods from '../../Methods.js';
5
+ import { captureRequestBodyProbe, isSessionContentRequest, } from '../../server/internal/request-body.js';
6
+ import { tip20ChannelEscrow } from '../precompile/Protocol.js';
7
+ import * as ChannelStore from './ChannelStore.js';
8
+ import { requireSessionCredentialAction } from './CredentialVerification.js';
9
+ import { resolveCredentialFeePayer, resolveRequestFeePayer, } from './Settlement.js';
10
+ /** Normalizes a session channel ID hint when one is present. */
11
+ export function normalizeSessionChannelId(value) {
12
+ if (typeof value !== 'string')
13
+ return undefined;
14
+ try {
15
+ return ChannelStore.normalizeChannelId(value);
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ }
21
+ /** Extracts and normalizes a credential channel ID after credential verification. */
22
+ export function getCredentialChannelId(credential) {
23
+ if (!isObject(credential?.payload))
24
+ return undefined;
25
+ return normalizeSessionChannelId(credential.payload.channelId);
26
+ }
27
+ function normalizeResolvedSessionChannelId(value) {
28
+ if (value === null || value === undefined)
29
+ return undefined;
30
+ return ChannelStore.normalizeChannelId(value);
31
+ }
32
+ /** Resolves the channel ID used to build server-side session bootstrap hints. */
33
+ export async function resolveSessionChannelId(parameters) {
34
+ const { capturedRequest, credential, request, resolveChannelId, source, store } = parameters;
35
+ const explicitChannelId = normalizeSessionChannelId(request.channelId);
36
+ if (explicitChannelId)
37
+ return explicitChannelId;
38
+ if (!resolveChannelId)
39
+ return undefined;
40
+ return normalizeResolvedSessionChannelId(await resolveChannelId({
41
+ request: capturedRequest,
42
+ credential: source ? credential : null,
43
+ source,
44
+ paymentRequest: request,
45
+ store,
46
+ }));
47
+ }
48
+ /** Builds server bootstrap hints for a reusable precompile session channel. */
49
+ export async function resolveSessionSnapshot(parameters) {
50
+ const { amount, channelId, expected, store } = parameters;
51
+ if (!channelId)
52
+ return undefined;
53
+ const channel = await store.getChannel(ChannelStore.normalizeChannelId(channelId));
54
+ if (!channel || !ChannelStore.isPrecompileState(channel))
55
+ return undefined;
56
+ if (channel.finalized)
57
+ return undefined;
58
+ if (expected && !matchesSnapshotPaymentFields(channel, expected))
59
+ return undefined;
60
+ const requiredCumulative = channel.spent + amount;
61
+ const acceptedCumulative = channel.highestVoucherAmount > requiredCumulative
62
+ ? channel.highestVoucherAmount
63
+ : requiredCumulative;
64
+ return {
65
+ acceptedCumulative: acceptedCumulative.toString(),
66
+ chainId: channel.chainId,
67
+ channelId: channel.channelId,
68
+ closeRequestedAt: channel.closeRequestedAt === 0n ? undefined : channel.closeRequestedAt.toString(),
69
+ deposit: channel.deposit.toString(),
70
+ descriptor: channel.descriptor,
71
+ escrow: channel.escrowContract,
72
+ requiredCumulative: requiredCumulative.toString(),
73
+ settled: channel.settledOnChain.toString(),
74
+ spent: channel.spent.toString(),
75
+ units: channel.units,
76
+ };
77
+ }
78
+ function matchesSnapshotPaymentFields(channel, expected) {
79
+ return (channel.chainId === expected.chainId &&
80
+ isAddressEqual(channel.escrowContract, expected.escrowContract) &&
81
+ isAddressEqual(channel.payee, expected.recipient) &&
82
+ isAddressEqual(channel.token, expected.currency));
83
+ }
84
+ /**
85
+ * Returns a management response for non-content session actions.
86
+ *
87
+ * `close` and `topUp` are always management-only. `open` and `voucher` serve
88
+ * content only when the request classifier says the request is billable.
89
+ */
90
+ export function respondToSessionCredential(parameters) {
91
+ const action = requireSessionCredentialAction(parameters.payload);
92
+ if (action === 'close')
93
+ return new Response(null, { status: 204 });
94
+ if (action === 'topUp')
95
+ return new Response(null, { status: 204 });
96
+ const request = parameters.capturedRequest ?? captureRequestBodyProbe(parameters.input);
97
+ if (isSessionContentRequest(request))
98
+ return undefined;
99
+ return new Response(null, { status: 204 });
100
+ }
101
+ function isObject(value) {
102
+ return typeof value === 'object' && value !== null;
103
+ }
104
+ function isCanonicalSessionMethodDetails(value) {
105
+ return (isObject(value) &&
106
+ typeof value.chainId === 'number' &&
107
+ typeof value.escrowContract === 'string' &&
108
+ isAddress(value.escrowContract, { strict: false }) &&
109
+ (value.feePayer === undefined || typeof value.feePayer === 'boolean') &&
110
+ (value.minVoucherDelta === undefined || typeof value.minVoucherDelta === 'string') &&
111
+ (value.operator === undefined ||
112
+ (typeof value.operator === 'string' && isAddress(value.operator, { strict: false }))) &&
113
+ (value.sessionProtocol === undefined || value.sessionProtocol === Constants.SessionProtocols.v2));
114
+ }
115
+ function isVerifiedSessionPaymentRequest(request) {
116
+ return (isObject(request) &&
117
+ typeof request.amount === 'string' &&
118
+ typeof request.currency === 'string' &&
119
+ typeof request.unitType === 'string' &&
120
+ isCanonicalSessionMethodDetails(request.methodDetails));
121
+ }
122
+ function readChallengeAddress(value, label) {
123
+ if (typeof value === 'string' && isAddress(value, { strict: false }))
124
+ return value;
125
+ throw new VerificationFailedError({ reason: `missing challenge ${label}` });
126
+ }
127
+ function readChallengeAmount(value) {
128
+ if (typeof value === 'string')
129
+ return BigInt(value);
130
+ throw new VerificationFailedError({ reason: 'missing challenge amount' });
131
+ }
132
+ /** Reads the destination, token, and raw amount from a session challenge request. */
133
+ export function getChallengePaymentFields(challenge) {
134
+ return {
135
+ amount: readChallengeAmount(challenge.request.amount),
136
+ currency: readChallengeAddress(challenge.request.currency, 'currency'),
137
+ recipient: readChallengeAddress(challenge.request.recipient, 'recipient'),
138
+ };
139
+ }
140
+ /** Resolves the chain ID from request override, method parameters, or client config. */
141
+ export async function resolveRequestChainId(parameters) {
142
+ const { getClient, parameterChainId, requestChainId } = parameters;
143
+ if (requestChainId)
144
+ return requestChainId;
145
+ if (parameterChainId)
146
+ return parameterChainId;
147
+ return (await getClient({})).chain?.id;
148
+ }
149
+ /** Resolves request-time TIP-1034 details and server bootstrap hints for a challenge. */
150
+ export async function resolveSessionPaymentRequest(parameters) {
151
+ const { capturedRequest, credential, decimals, defaultFeePayer, getClient, parameterChainId, parameterEscrowContract, parameterFeePayer, request, resolveChannelId, source, store, } = parameters;
152
+ const chainId = await resolveRequestChainId({
153
+ getClient,
154
+ parameterChainId,
155
+ requestChainId: request.chainId,
156
+ });
157
+ if (!chainId)
158
+ throw new Error('No chainId configured for tempo.session().');
159
+ const client = await getClient({ chainId });
160
+ if (client.chain?.id !== chainId)
161
+ throw new Error(`Client not configured with chainId ${chainId}.`);
162
+ const escrowContract = resolveRequestEscrowContract(request.escrowContract, parameterEscrowContract);
163
+ const operator = resolveRequestOperator(request.operator);
164
+ const requestAmount = parseUnits(request.amount, decimals);
165
+ const channelId = await resolveSessionChannelId({
166
+ capturedRequest,
167
+ credential,
168
+ request,
169
+ resolveChannelId,
170
+ source,
171
+ store,
172
+ });
173
+ const sessionSnapshot = await resolveSessionSnapshot({
174
+ amount: capturedRequest && !isSessionContentRequest(capturedRequest) ? 0n : requestAmount,
175
+ channelId,
176
+ expected: {
177
+ chainId,
178
+ currency: readChallengeAddress(request.currency, 'currency'),
179
+ escrowContract,
180
+ recipient: readChallengeAddress(request.recipient, 'recipient'),
181
+ },
182
+ store,
183
+ });
184
+ const { operator: _operator, ...requestWithoutOperator } = request;
185
+ return {
186
+ ...requestWithoutOperator,
187
+ chainId,
188
+ escrowContract,
189
+ feePayer: resolveRequestFeePayer({
190
+ credential,
191
+ defaultFeePayer,
192
+ parameterFeePayer,
193
+ requestFeePayer: request.feePayer,
194
+ }),
195
+ ...(operator ? { operator } : {}),
196
+ ...(sessionSnapshot ? { sessionSnapshot } : {}),
197
+ };
198
+ }
199
+ function resolveRequestEscrowContract(requestEscrowContract, parameterEscrowContract) {
200
+ if (typeof requestEscrowContract === 'string') {
201
+ if (!isAddress(requestEscrowContract, { strict: false }))
202
+ throw new Error('Invalid escrowContract configured for tempo.session().');
203
+ return requestEscrowContract;
204
+ }
205
+ return parameterEscrowContract ?? tip20ChannelEscrow;
206
+ }
207
+ function resolveRequestOperator(requestOperator) {
208
+ if (requestOperator === undefined)
209
+ return undefined;
210
+ if (typeof requestOperator === 'string' && isAddress(requestOperator, { strict: false }))
211
+ return requestOperator;
212
+ throw new Error('Invalid operator configured for tempo.session().');
213
+ }
214
+ /** Parses the canonical session request shape used during credential verification. */
215
+ export function resolveVerificationRequest(request) {
216
+ const parsed = Methods.session.schema.request.safeParse(request);
217
+ if (parsed.success && isVerifiedSessionPaymentRequest(parsed.data))
218
+ return parsed.data;
219
+ // verifyCredential() passes the HMAC-bound challenge request, which is
220
+ // already in canonical output form and should not be transformed again.
221
+ if (isVerifiedSessionPaymentRequest(request))
222
+ return request;
223
+ throw new VerificationFailedError({ reason: 'invalid session request' });
224
+ }
225
+ /** Returns required TIP-1034 method details from a canonical session request. */
226
+ export function requireMethodDetails(request) {
227
+ return request.methodDetails;
228
+ }
229
+ /** Resolves all non-payload verification context from a session challenge request. */
230
+ export async function resolveCredentialVerificationContext(parameters) {
231
+ const { decimals, feePayer, getClient, minVoucherDelta, request } = parameters;
232
+ const resolvedRequest = resolveVerificationRequest(request);
233
+ const methodDetails = requireMethodDetails(resolvedRequest);
234
+ const chainId = methodDetails.chainId;
235
+ const client = await getClient({ chainId });
236
+ return {
237
+ request: resolvedRequest,
238
+ methodDetails,
239
+ chainId,
240
+ escrow: methodDetails.escrowContract,
241
+ client,
242
+ feePayer: resolveCredentialFeePayer({
243
+ feePayer,
244
+ methodDetails,
245
+ request: resolvedRequest,
246
+ }),
247
+ minVoucherDelta: methodDetails.minVoucherDelta
248
+ ? BigInt(methodDetails.minVoucherDelta)
249
+ : parseUnits(minVoucherDelta ?? '0', decimals),
250
+ };
251
+ }
252
+ //# sourceMappingURL=RequestState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestState.js","sourceRoot":"","sources":["../../../../src/tempo/session/server/RequestState.ts"],"names":[],"mappings":"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"}