mppx 0.6.31 → 0.8.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 (616) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +20 -11
  3. package/dist/Challenge.d.ts.map +1 -1
  4. package/dist/Challenge.js +27 -13
  5. package/dist/Challenge.js.map +1 -1
  6. package/dist/Constants.d.ts +46 -0
  7. package/dist/Constants.d.ts.map +1 -0
  8. package/dist/Constants.js +46 -0
  9. package/dist/Constants.js.map +1 -0
  10. package/dist/Credential.d.ts.map +1 -1
  11. package/dist/Credential.js +5 -4
  12. package/dist/Credential.js.map +1 -1
  13. package/dist/Mcp.d.ts +3 -0
  14. package/dist/Mcp.d.ts.map +1 -1
  15. package/dist/Mcp.js +2 -0
  16. package/dist/Mcp.js.map +1 -1
  17. package/dist/Method.d.ts +32 -4
  18. package/dist/Method.d.ts.map +1 -1
  19. package/dist/Method.js +5 -2
  20. package/dist/Method.js.map +1 -1
  21. package/dist/PaymentRequest.d.ts +10 -10
  22. package/dist/PaymentRequest.js +8 -8
  23. package/dist/Receipt.d.ts.map +1 -1
  24. package/dist/Receipt.js +3 -2
  25. package/dist/Receipt.js.map +1 -1
  26. package/dist/cli/cli.d.ts.map +1 -1
  27. package/dist/cli/cli.js +19 -11
  28. package/dist/cli/cli.js.map +1 -1
  29. package/dist/cli/plugins/tempo.d.ts.map +1 -1
  30. package/dist/cli/plugins/tempo.js +17 -6
  31. package/dist/cli/plugins/tempo.js.map +1 -1
  32. package/dist/cli/utils.d.ts +5 -0
  33. package/dist/cli/utils.d.ts.map +1 -1
  34. package/dist/cli/utils.js +10 -0
  35. package/dist/cli/utils.js.map +1 -1
  36. package/dist/client/Methods.d.ts +5 -2
  37. package/dist/client/Methods.d.ts.map +1 -1
  38. package/dist/client/Methods.js +5 -2
  39. package/dist/client/Methods.js.map +1 -1
  40. package/dist/client/Mppx.js +2 -2
  41. package/dist/client/Mppx.js.map +1 -1
  42. package/dist/client/Transport.d.ts +11 -16
  43. package/dist/client/Transport.d.ts.map +1 -1
  44. package/dist/client/Transport.js +55 -76
  45. package/dist/client/Transport.js.map +1 -1
  46. package/dist/client/index.d.ts +5 -1
  47. package/dist/client/index.d.ts.map +1 -1
  48. package/dist/client/index.js +3 -1
  49. package/dist/client/index.js.map +1 -1
  50. package/dist/client/internal/Fetch.d.ts.map +1 -1
  51. package/dist/client/internal/Fetch.js +60 -13
  52. package/dist/client/internal/Fetch.js.map +1 -1
  53. package/dist/client/internal/protocols/Mcp.d.ts +7 -0
  54. package/dist/client/internal/protocols/Mcp.d.ts.map +1 -0
  55. package/dist/client/internal/protocols/Mcp.js +159 -0
  56. package/dist/client/internal/protocols/Mcp.js.map +1 -0
  57. package/dist/client/internal/protocols/Mpp.d.ts +4 -0
  58. package/dist/client/internal/protocols/Mpp.d.ts.map +1 -0
  59. package/dist/client/internal/protocols/Mpp.js +18 -0
  60. package/dist/client/internal/protocols/Mpp.js.map +1 -0
  61. package/dist/client/internal/protocols/Protocol.d.ts +10 -0
  62. package/dist/client/internal/protocols/Protocol.d.ts.map +1 -0
  63. package/dist/client/internal/protocols/Protocol.js +2 -0
  64. package/dist/client/internal/protocols/Protocol.js.map +1 -0
  65. package/dist/client/internal/protocols/Shared.d.ts +5 -0
  66. package/dist/client/internal/protocols/Shared.d.ts.map +1 -0
  67. package/dist/client/internal/protocols/Shared.js +20 -0
  68. package/dist/client/internal/protocols/Shared.js.map +1 -0
  69. package/dist/client/internal/protocols/X402.d.ts +8 -0
  70. package/dist/client/internal/protocols/X402.d.ts.map +1 -0
  71. package/dist/client/internal/protocols/X402.js +39 -0
  72. package/dist/client/internal/protocols/X402.js.map +1 -0
  73. package/dist/evm/client/index.d.ts +1 -0
  74. package/dist/evm/client/index.d.ts.map +1 -1
  75. package/dist/evm/client/index.js +1 -0
  76. package/dist/evm/client/index.js.map +1 -1
  77. package/dist/evm/index.d.ts +2 -0
  78. package/dist/evm/index.d.ts.map +1 -1
  79. package/dist/evm/index.js +2 -0
  80. package/dist/evm/index.js.map +1 -1
  81. package/dist/evm/server/Methods.d.ts +1 -1
  82. package/dist/evm/server/Methods.d.ts.map +1 -1
  83. package/dist/evm/server/index.d.ts +1 -0
  84. package/dist/evm/server/index.d.ts.map +1 -1
  85. package/dist/evm/server/index.js +1 -0
  86. package/dist/evm/server/index.js.map +1 -1
  87. package/dist/index.d.ts +1 -0
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +1 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/internal/AcceptPayment.d.ts +3 -0
  92. package/dist/internal/AcceptPayment.d.ts.map +1 -1
  93. package/dist/internal/AcceptPayment.js +15 -11
  94. package/dist/internal/AcceptPayment.js.map +1 -1
  95. package/dist/mcp/client/McpClient.d.ts +101 -0
  96. package/dist/mcp/client/McpClient.d.ts.map +1 -0
  97. package/dist/mcp/client/McpClient.js +162 -0
  98. package/dist/mcp/client/McpClient.js.map +1 -0
  99. package/dist/mcp/client/index.d.ts.map +1 -0
  100. package/dist/mcp/client/index.js.map +1 -0
  101. package/dist/mcp/server/Transport.d.ts.map +1 -0
  102. package/dist/mcp/server/Transport.js.map +1 -0
  103. package/dist/mcp/server/index.d.ts.map +1 -0
  104. package/dist/mcp/server/index.js.map +1 -0
  105. package/dist/server/Mppx.d.ts +12 -4
  106. package/dist/server/Mppx.d.ts.map +1 -1
  107. package/dist/server/Mppx.js +85 -27
  108. package/dist/server/Mppx.js.map +1 -1
  109. package/dist/server/Response.d.ts.map +1 -1
  110. package/dist/server/Response.js +2 -1
  111. package/dist/server/Response.js.map +1 -1
  112. package/dist/server/Transport.d.ts +1 -1
  113. package/dist/server/Transport.d.ts.map +1 -1
  114. package/dist/server/Transport.js +5 -4
  115. package/dist/server/Transport.js.map +1 -1
  116. package/dist/server/index.d.ts +1 -0
  117. package/dist/server/index.d.ts.map +1 -1
  118. package/dist/server/index.js +1 -0
  119. package/dist/server/index.js.map +1 -1
  120. package/dist/stripe/client/Charge.d.ts +1 -1
  121. package/dist/stripe/client/Charge.d.ts.map +1 -1
  122. package/dist/stripe/client/Charge.js +3 -1
  123. package/dist/stripe/client/Charge.js.map +1 -1
  124. package/dist/stripe/server/Charge.d.ts +1 -1
  125. package/dist/stripe/server/Charge.d.ts.map +1 -1
  126. package/dist/stripe/server/Charge.js +9 -2
  127. package/dist/stripe/server/Charge.js.map +1 -1
  128. package/dist/stripe/server/Methods.d.ts +1 -1
  129. package/dist/stripe/server/Methods.d.ts.map +1 -1
  130. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  131. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  132. package/dist/stripe/server/internal/html.gen.js +1 -1
  133. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  134. package/dist/tempo/Methods.d.ts +18 -0
  135. package/dist/tempo/Methods.d.ts.map +1 -1
  136. package/dist/tempo/Methods.js +16 -1
  137. package/dist/tempo/Methods.js.map +1 -1
  138. package/dist/tempo/Proof.d.ts +85 -1
  139. package/dist/tempo/Proof.d.ts.map +1 -1
  140. package/dist/tempo/Proof.js +35 -0
  141. package/dist/tempo/Proof.js.map +1 -1
  142. package/dist/tempo/client/Charge.d.ts +19 -1
  143. package/dist/tempo/client/Charge.d.ts.map +1 -1
  144. package/dist/tempo/client/Charge.js +47 -27
  145. package/dist/tempo/client/Charge.js.map +1 -1
  146. package/dist/tempo/client/Methods.d.ts +41 -10
  147. package/dist/tempo/client/Methods.d.ts.map +1 -1
  148. package/dist/tempo/client/Methods.js +16 -7
  149. package/dist/tempo/client/Methods.js.map +1 -1
  150. package/dist/tempo/client/ResolveAccount.d.ts +40 -0
  151. package/dist/tempo/client/ResolveAccount.d.ts.map +1 -0
  152. package/dist/tempo/client/ResolveAccount.js +2 -0
  153. package/dist/tempo/client/ResolveAccount.js.map +1 -0
  154. package/dist/tempo/client/index.d.ts +7 -4
  155. package/dist/tempo/client/index.d.ts.map +1 -1
  156. package/dist/tempo/client/index.js +5 -3
  157. package/dist/tempo/client/index.js.map +1 -1
  158. package/dist/tempo/index.d.ts +1 -0
  159. package/dist/tempo/index.d.ts.map +1 -1
  160. package/dist/tempo/index.js +1 -0
  161. package/dist/tempo/index.js.map +1 -1
  162. package/dist/tempo/internal/fee-payer.d.ts +29 -1
  163. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  164. package/dist/tempo/internal/fee-payer.js +138 -4
  165. package/dist/tempo/internal/fee-payer.js.map +1 -1
  166. package/dist/tempo/internal/proof.d.ts +71 -5
  167. package/dist/tempo/internal/proof.d.ts.map +1 -1
  168. package/dist/tempo/internal/proof.js +42 -6
  169. package/dist/tempo/internal/proof.js.map +1 -1
  170. package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
  171. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
  172. package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
  173. package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
  174. package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
  175. package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
  176. package/dist/tempo/{client → legacy/client}/Session.js +14 -7
  177. package/dist/tempo/legacy/client/Session.js.map +1 -0
  178. package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
  179. package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
  180. package/dist/tempo/{client → legacy/client}/SessionManager.js +30 -19
  181. package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
  182. package/dist/tempo/legacy/client/index.d.ts +7 -0
  183. package/dist/tempo/legacy/client/index.d.ts.map +1 -0
  184. package/dist/tempo/legacy/client/index.js +5 -0
  185. package/dist/tempo/legacy/client/index.js.map +1 -0
  186. package/dist/tempo/legacy/index.d.ts +7 -0
  187. package/dist/tempo/legacy/index.d.ts.map +1 -0
  188. package/dist/tempo/legacy/index.js +7 -0
  189. package/dist/tempo/legacy/index.js.map +1 -0
  190. package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
  191. package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
  192. package/dist/tempo/{server → legacy/server}/Session.js +12 -10
  193. package/dist/tempo/legacy/server/Session.js.map +1 -0
  194. package/dist/tempo/legacy/server/index.d.ts +5 -0
  195. package/dist/tempo/legacy/server/index.d.ts.map +1 -0
  196. package/dist/tempo/legacy/server/index.js +5 -0
  197. package/dist/tempo/legacy/server/index.js.map +1 -0
  198. package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
  199. package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
  200. package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
  201. package/dist/tempo/legacy/session/Chain.js.map +1 -0
  202. package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
  203. package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
  204. package/dist/tempo/legacy/session/Channel.js.map +1 -0
  205. package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
  206. package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
  207. package/dist/tempo/legacy/session/ChannelStore.js +6 -0
  208. package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
  209. package/dist/tempo/legacy/session/Types.d.ts +73 -0
  210. package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
  211. package/dist/tempo/legacy/session/Types.js.map +1 -0
  212. package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
  213. package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
  214. package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
  215. package/dist/tempo/legacy/session/Voucher.js.map +1 -0
  216. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
  217. package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
  218. package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
  219. package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
  220. package/dist/tempo/legacy/session/index.d.ts +9 -0
  221. package/dist/tempo/legacy/session/index.d.ts.map +1 -0
  222. package/dist/tempo/legacy/session/index.js +9 -0
  223. package/dist/tempo/legacy/session/index.js.map +1 -0
  224. package/dist/tempo/server/Charge.d.ts +1 -1
  225. package/dist/tempo/server/Charge.d.ts.map +1 -1
  226. package/dist/tempo/server/Charge.js +51 -30
  227. package/dist/tempo/server/Charge.js.map +1 -1
  228. package/dist/tempo/server/Methods.d.ts +67 -8
  229. package/dist/tempo/server/Methods.d.ts.map +1 -1
  230. package/dist/tempo/server/Methods.js +40 -10
  231. package/dist/tempo/server/Methods.js.map +1 -1
  232. package/dist/tempo/server/Subscription.d.ts +11 -1
  233. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  234. package/dist/tempo/server/Subscription.js +135 -23
  235. package/dist/tempo/server/Subscription.js.map +1 -1
  236. package/dist/tempo/server/index.d.ts +6 -5
  237. package/dist/tempo/server/index.d.ts.map +1 -1
  238. package/dist/tempo/server/index.js +5 -5
  239. package/dist/tempo/server/index.js.map +1 -1
  240. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  241. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  242. package/dist/tempo/server/internal/html.gen.js +1 -1
  243. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  244. package/dist/tempo/server/internal/request-body.d.ts +7 -2
  245. package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
  246. package/dist/tempo/server/internal/request-body.js +20 -3
  247. package/dist/tempo/server/internal/request-body.js.map +1 -1
  248. package/dist/tempo/server/internal/transport.d.ts +8 -4
  249. package/dist/tempo/server/internal/transport.d.ts.map +1 -1
  250. package/dist/tempo/server/internal/transport.js +8 -7
  251. package/dist/tempo/server/internal/transport.js.map +1 -1
  252. package/dist/tempo/session/Snapshot.d.ts +32 -0
  253. package/dist/tempo/session/Snapshot.d.ts.map +1 -0
  254. package/dist/tempo/session/Snapshot.js +37 -0
  255. package/dist/tempo/session/Snapshot.js.map +1 -0
  256. package/dist/tempo/session/client/ChannelOps.d.ts +81 -0
  257. package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
  258. package/dist/tempo/session/client/ChannelOps.js +201 -0
  259. package/dist/tempo/session/client/ChannelOps.js.map +1 -0
  260. package/dist/tempo/session/client/ChannelStore.d.ts +51 -0
  261. package/dist/tempo/session/client/ChannelStore.d.ts.map +1 -0
  262. package/dist/tempo/session/client/ChannelStore.js +63 -0
  263. package/dist/tempo/session/client/ChannelStore.js.map +1 -0
  264. package/dist/tempo/session/client/CredentialState.d.ts +245 -0
  265. package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
  266. package/dist/tempo/session/client/CredentialState.js +419 -0
  267. package/dist/tempo/session/client/CredentialState.js.map +1 -0
  268. package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
  269. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
  270. package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
  271. package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
  272. package/dist/tempo/session/client/Runtime.d.ts +464 -0
  273. package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
  274. package/dist/tempo/session/client/Runtime.js +499 -0
  275. package/dist/tempo/session/client/Runtime.js.map +1 -0
  276. package/dist/tempo/session/client/Session.d.ts +138 -0
  277. package/dist/tempo/session/client/Session.d.ts.map +1 -0
  278. package/dist/tempo/session/client/Session.js +69 -0
  279. package/dist/tempo/session/client/Session.js.map +1 -0
  280. package/dist/tempo/session/client/SessionManager.d.ts +84 -0
  281. package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
  282. package/dist/tempo/session/client/SessionManager.js +577 -0
  283. package/dist/tempo/session/client/SessionManager.js.map +1 -0
  284. package/dist/tempo/session/client/Transports.d.ts +449 -0
  285. package/dist/tempo/session/client/Transports.d.ts.map +1 -0
  286. package/dist/tempo/session/client/Transports.js +721 -0
  287. package/dist/tempo/session/client/Transports.js.map +1 -0
  288. package/dist/tempo/session/client/index.d.ts +11 -0
  289. package/dist/tempo/session/client/index.d.ts.map +1 -0
  290. package/dist/tempo/session/client/index.js +6 -0
  291. package/dist/tempo/session/client/index.js.map +1 -0
  292. package/dist/tempo/session/index.d.ts +7 -8
  293. package/dist/tempo/session/index.d.ts.map +1 -1
  294. package/dist/tempo/session/index.js +7 -8
  295. package/dist/tempo/session/index.js.map +1 -1
  296. package/dist/tempo/session/precompile/Chain.d.ts +319 -0
  297. package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
  298. package/dist/tempo/session/precompile/Chain.js +492 -0
  299. package/dist/tempo/session/precompile/Chain.js.map +1 -0
  300. package/dist/tempo/session/precompile/Channel.d.ts +46 -0
  301. package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
  302. package/dist/tempo/session/precompile/Channel.js +56 -0
  303. package/dist/tempo/session/precompile/Channel.js.map +1 -0
  304. package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
  305. package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
  306. package/dist/tempo/session/precompile/Protocol.js +264 -0
  307. package/dist/tempo/session/precompile/Protocol.js.map +1 -0
  308. package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
  309. package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
  310. package/dist/tempo/session/precompile/Voucher.js +125 -0
  311. package/dist/tempo/session/precompile/Voucher.js.map +1 -0
  312. package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
  313. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
  314. package/dist/tempo/session/precompile/escrow.abi.js +224 -0
  315. package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
  316. package/dist/tempo/session/precompile/index.d.ts +24 -0
  317. package/dist/tempo/session/precompile/index.d.ts.map +1 -0
  318. package/dist/tempo/session/precompile/index.js +22 -0
  319. package/dist/tempo/session/precompile/index.js.map +1 -0
  320. package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
  321. package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
  322. package/dist/tempo/session/server/ChannelOps.js +91 -0
  323. package/dist/tempo/session/server/ChannelOps.js.map +1 -0
  324. package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
  325. package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
  326. package/dist/tempo/session/server/ChannelStore.js +404 -0
  327. package/dist/tempo/session/server/ChannelStore.js.map +1 -0
  328. package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
  329. package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
  330. package/dist/tempo/session/server/CredentialVerification.js +494 -0
  331. package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
  332. package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
  333. package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
  334. package/dist/tempo/session/server/MeteredStream.js +42 -0
  335. package/dist/tempo/session/server/MeteredStream.js.map +1 -0
  336. package/dist/tempo/session/server/RequestState.d.ts +208 -0
  337. package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
  338. package/dist/tempo/session/server/RequestState.js +252 -0
  339. package/dist/tempo/session/server/RequestState.js.map +1 -0
  340. package/dist/tempo/session/server/Session.d.ts +169 -0
  341. package/dist/tempo/session/server/Session.d.ts.map +1 -0
  342. package/dist/tempo/session/server/Session.js +351 -0
  343. package/dist/tempo/session/server/Session.js.map +1 -0
  344. package/dist/tempo/session/server/Settlement.d.ts +185 -0
  345. package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
  346. package/dist/tempo/session/server/Settlement.js +252 -0
  347. package/dist/tempo/session/server/Settlement.js.map +1 -0
  348. package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
  349. package/dist/tempo/session/server/Sse.d.ts.map +1 -0
  350. package/dist/tempo/session/server/Sse.js +184 -0
  351. package/dist/tempo/session/server/Sse.js.map +1 -0
  352. package/dist/tempo/session/server/Transports.d.ts +89 -0
  353. package/dist/tempo/session/server/Transports.d.ts.map +1 -0
  354. package/dist/tempo/session/server/Transports.js +149 -0
  355. package/dist/tempo/session/server/Transports.js.map +1 -0
  356. package/dist/tempo/session/server/Ws.d.ts +48 -0
  357. package/dist/tempo/session/server/Ws.d.ts.map +1 -0
  358. package/dist/tempo/session/server/Ws.js +244 -0
  359. package/dist/tempo/session/server/Ws.js.map +1 -0
  360. package/dist/tempo/session/server/index.d.ts +4 -0
  361. package/dist/tempo/session/server/index.d.ts.map +1 -0
  362. package/dist/tempo/session/server/index.js +2 -0
  363. package/dist/tempo/session/server/index.js.map +1 -0
  364. package/dist/tempo/subscription/KeyAuthorization.d.ts +712 -1
  365. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
  366. package/dist/tempo/subscription/Store.d.ts +2 -0
  367. package/dist/tempo/subscription/Store.d.ts.map +1 -1
  368. package/dist/tempo/subscription/Store.js +16 -1
  369. package/dist/tempo/subscription/Store.js.map +1 -1
  370. package/dist/x402/index.d.ts +1 -0
  371. package/dist/x402/index.d.ts.map +1 -1
  372. package/dist/x402/index.js +1 -0
  373. package/dist/x402/index.js.map +1 -1
  374. package/package.json +25 -9
  375. package/src/Challenge.test.ts +40 -0
  376. package/src/Challenge.ts +28 -13
  377. package/src/Constants.ts +58 -0
  378. package/src/Credential.ts +5 -4
  379. package/src/Mcp.ts +4 -0
  380. package/src/Method.ts +46 -5
  381. package/src/PaymentRequest.ts +10 -10
  382. package/src/Receipt.ts +3 -2
  383. package/src/cli/cli.test.ts +38 -43
  384. package/src/cli/cli.ts +23 -10
  385. package/src/cli/mcp.test.ts +21 -7
  386. package/src/cli/plugins/tempo.ts +21 -8
  387. package/src/cli/utils.test.ts +25 -1
  388. package/src/cli/utils.ts +10 -0
  389. package/src/client/Methods.ts +5 -2
  390. package/src/client/Mppx.test-d.ts +31 -1
  391. package/src/client/Mppx.test.ts +76 -1
  392. package/src/client/Mppx.ts +2 -2
  393. package/src/client/Transport.test.ts +225 -178
  394. package/src/client/Transport.ts +77 -84
  395. package/src/client/index.ts +25 -1
  396. package/src/client/internal/Fetch.test.ts +236 -6
  397. package/src/client/internal/Fetch.ts +69 -11
  398. package/src/client/internal/protocols/Mcp.test.ts +220 -0
  399. package/src/client/internal/protocols/Mcp.ts +162 -0
  400. package/src/client/internal/protocols/Mpp.ts +21 -0
  401. package/src/client/internal/protocols/Protocol.ts +10 -0
  402. package/src/client/internal/protocols/Shared.ts +25 -0
  403. package/src/client/internal/protocols/X402.ts +42 -0
  404. package/src/discovery/OpenApi.test.ts +1 -1
  405. package/src/env.d.ts +1 -1
  406. package/src/evm/PublicInterface.test-d.ts +1 -1
  407. package/src/evm/client/index.ts +1 -0
  408. package/src/evm/index.ts +2 -0
  409. package/src/evm/server/Charge.test.ts +1 -1
  410. package/src/evm/server/index.ts +1 -0
  411. package/src/index.ts +1 -0
  412. package/src/internal/AcceptPayment.test.ts +61 -0
  413. package/src/internal/AcceptPayment.ts +21 -14
  414. package/src/{mcp-sdk → mcp}/client/McpClient.integration.test.ts +18 -11
  415. package/src/{mcp-sdk → mcp}/client/McpClient.test-d.ts +45 -11
  416. package/src/{mcp-sdk → mcp}/client/McpClient.test.ts +211 -5
  417. package/src/mcp/client/McpClient.ts +307 -0
  418. package/src/mcp/client/McpClient.unit.test.ts +135 -0
  419. package/src/middlewares/elysia.test.ts +9 -5
  420. package/src/middlewares/express.test.ts +9 -5
  421. package/src/middlewares/hono.test.ts +5 -5
  422. package/src/middlewares/internal/mppx.test.ts +1 -1
  423. package/src/middlewares/nextjs.test.ts +9 -5
  424. package/src/proxy/Proxy.test.ts +9 -9
  425. package/src/proxy/services/anthropic.test.ts +1 -1
  426. package/src/proxy/services/openai.test.ts +1 -1
  427. package/src/proxy/services/stripe.test.ts +1 -1
  428. package/src/server/Mppx.authorize.test.ts +1 -1
  429. package/src/server/Mppx.test-d.ts +55 -1
  430. package/src/server/Mppx.test.ts +220 -9
  431. package/src/server/Mppx.ts +501 -407
  432. package/src/server/Response.ts +2 -1
  433. package/src/server/Transport.test.ts +6 -6
  434. package/src/server/Transport.ts +5 -4
  435. package/src/server/index.ts +1 -0
  436. package/src/stripe/Charge.integration.test.ts +1 -1
  437. package/src/stripe/client/Charge.test.ts +21 -6
  438. package/src/stripe/client/Charge.ts +6 -2
  439. package/src/stripe/server/Charge.test.ts +115 -2
  440. package/src/stripe/server/Charge.ts +13 -2
  441. package/src/stripe/server/internal/html/package.json +1 -1
  442. package/src/stripe/server/internal/html.gen.ts +1 -1
  443. package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
  444. package/src/tempo/Methods.test.ts +45 -17
  445. package/src/tempo/Methods.ts +22 -0
  446. package/src/tempo/Proof.conformance.test.ts +146 -0
  447. package/src/tempo/Proof.test-d.ts +15 -0
  448. package/src/tempo/Proof.ts +52 -1
  449. package/src/tempo/PublicExports.test-d.ts +105 -0
  450. package/src/tempo/Subscription.integration.test.ts +1 -1
  451. package/src/tempo/client/Charge.test.ts +258 -0
  452. package/src/tempo/client/Charge.ts +84 -38
  453. package/src/tempo/client/Methods.ts +22 -8
  454. package/src/tempo/client/ResolveAccount.ts +46 -0
  455. package/src/tempo/client/index.ts +15 -4
  456. package/src/tempo/index.ts +1 -0
  457. package/src/tempo/internal/fee-payer.test.ts +296 -17
  458. package/src/tempo/internal/fee-payer.ts +186 -4
  459. package/src/tempo/internal/fee-token.test.ts +14 -9
  460. package/src/tempo/internal/proof.test.ts +12 -4
  461. package/src/tempo/internal/proof.ts +55 -6
  462. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
  463. package/src/tempo/legacy/README.md +9 -0
  464. package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
  465. package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
  466. package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
  467. package/src/tempo/{client → legacy/client}/Session.ts +25 -11
  468. package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
  469. package/src/tempo/{client → legacy/client}/SessionManager.ts +52 -23
  470. package/src/tempo/legacy/client/index.ts +6 -0
  471. package/src/tempo/legacy/index.ts +6 -0
  472. package/src/tempo/{server → legacy/server}/Session.test.ts +136 -71
  473. package/src/tempo/{server → legacy/server}/Session.ts +32 -23
  474. package/src/tempo/legacy/server/index.ts +4 -0
  475. package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
  476. package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
  477. package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
  478. package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
  479. package/src/tempo/legacy/session/ChannelStore.ts +39 -0
  480. package/src/tempo/legacy/session/Types.ts +91 -0
  481. package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
  482. package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
  483. package/src/tempo/legacy/session/index.ts +8 -0
  484. package/src/tempo/server/AtomicStore.test-d.ts +16 -11
  485. package/src/tempo/server/Charge.test.ts +480 -31
  486. package/src/tempo/server/Charge.ts +54 -30
  487. package/src/tempo/server/Methods.ts +58 -10
  488. package/src/tempo/server/Sse.test.ts +2 -2
  489. package/src/tempo/server/Subscription.test.ts +465 -3
  490. package/src/tempo/server/Subscription.ts +174 -19
  491. package/src/tempo/server/index.ts +6 -5
  492. package/src/tempo/server/internal/html/package.json +2 -2
  493. package/src/tempo/server/internal/html.gen.ts +1 -1
  494. package/src/tempo/server/internal/request-body.test.ts +37 -4
  495. package/src/tempo/server/internal/request-body.ts +25 -6
  496. package/src/tempo/server/internal/transport.test.ts +4 -4
  497. package/src/tempo/server/internal/transport.ts +19 -10
  498. package/src/tempo/session/Snapshot.test.ts +41 -0
  499. package/src/tempo/session/Snapshot.ts +74 -0
  500. package/src/tempo/session/client/ChannelOps.test.ts +163 -0
  501. package/src/tempo/session/client/ChannelOps.ts +330 -0
  502. package/src/tempo/session/client/ChannelStore.ts +111 -0
  503. package/src/tempo/session/client/CredentialState.test.ts +789 -0
  504. package/src/tempo/session/client/CredentialState.ts +799 -0
  505. package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
  506. package/src/tempo/session/client/Runtime.test.ts +1092 -0
  507. package/src/tempo/session/client/Runtime.ts +986 -0
  508. package/src/tempo/session/client/Session.test.ts +774 -0
  509. package/src/tempo/session/client/Session.ts +123 -0
  510. package/src/tempo/session/client/SessionManager.test.ts +1397 -0
  511. package/src/tempo/session/client/SessionManager.ts +751 -0
  512. package/src/tempo/session/client/Transports.test.ts +837 -0
  513. package/src/tempo/session/client/Transports.ts +1292 -0
  514. package/src/tempo/session/client/index.ts +40 -0
  515. package/src/tempo/session/index.ts +7 -8
  516. package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
  517. package/src/tempo/session/precompile/Chain.test.ts +1258 -0
  518. package/src/tempo/session/precompile/Chain.ts +979 -0
  519. package/src/tempo/session/precompile/Channel.test.ts +138 -0
  520. package/src/tempo/session/precompile/Channel.ts +103 -0
  521. package/src/tempo/session/precompile/Protocol.test.ts +358 -0
  522. package/src/tempo/session/precompile/Protocol.ts +520 -0
  523. package/src/tempo/session/precompile/Voucher.test.ts +354 -0
  524. package/src/tempo/session/precompile/Voucher.ts +162 -0
  525. package/src/tempo/session/precompile/escrow.abi.ts +226 -0
  526. package/src/tempo/session/precompile/index.ts +33 -0
  527. package/src/tempo/session/server/ChannelOps.test.ts +129 -0
  528. package/src/tempo/session/server/ChannelOps.ts +157 -0
  529. package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
  530. package/src/tempo/session/server/ChannelStore.ts +835 -0
  531. package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
  532. package/src/tempo/session/server/CredentialVerification.ts +710 -0
  533. package/src/tempo/session/server/MeteredStream.ts +88 -0
  534. package/src/tempo/session/server/RequestState.test.ts +531 -0
  535. package/src/tempo/session/server/RequestState.ts +499 -0
  536. package/src/tempo/session/server/Session.integration.test.ts +444 -0
  537. package/src/tempo/session/server/Session.test.ts +3253 -0
  538. package/src/tempo/session/server/Session.ts +543 -0
  539. package/src/tempo/session/server/Settlement.test.ts +329 -0
  540. package/src/tempo/session/server/Settlement.ts +471 -0
  541. package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
  542. package/src/tempo/session/server/Sse.ts +254 -0
  543. package/src/tempo/session/server/Transports.test.ts +346 -0
  544. package/src/tempo/session/server/Transports.ts +255 -0
  545. package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
  546. package/src/tempo/session/server/Ws.ts +380 -0
  547. package/src/tempo/session/server/index.ts +8 -0
  548. package/src/tempo/subscription/Store.ts +27 -9
  549. package/src/x402/Exact.e2e.test.ts +1 -1
  550. package/src/x402/PublicInterface.test-d.ts +1 -1
  551. package/src/x402/index.ts +1 -0
  552. package/dist/mcp-sdk/client/McpClient.d.ts +0 -78
  553. package/dist/mcp-sdk/client/McpClient.d.ts.map +0 -1
  554. package/dist/mcp-sdk/client/McpClient.js +0 -105
  555. package/dist/mcp-sdk/client/McpClient.js.map +0 -1
  556. package/dist/mcp-sdk/client/index.d.ts.map +0 -1
  557. package/dist/mcp-sdk/client/index.js.map +0 -1
  558. package/dist/mcp-sdk/server/Transport.d.ts.map +0 -1
  559. package/dist/mcp-sdk/server/Transport.js.map +0 -1
  560. package/dist/mcp-sdk/server/index.d.ts.map +0 -1
  561. package/dist/mcp-sdk/server/index.js.map +0 -1
  562. package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
  563. package/dist/tempo/client/ChannelOps.js.map +0 -1
  564. package/dist/tempo/client/Session.d.ts.map +0 -1
  565. package/dist/tempo/client/Session.js.map +0 -1
  566. package/dist/tempo/client/SessionManager.d.ts.map +0 -1
  567. package/dist/tempo/client/SessionManager.js.map +0 -1
  568. package/dist/tempo/server/Session.d.ts.map +0 -1
  569. package/dist/tempo/server/Session.js.map +0 -1
  570. package/dist/tempo/session/Chain.d.ts.map +0 -1
  571. package/dist/tempo/session/Chain.js.map +0 -1
  572. package/dist/tempo/session/Channel.d.ts.map +0 -1
  573. package/dist/tempo/session/Channel.js.map +0 -1
  574. package/dist/tempo/session/ChannelStore.d.ts +0 -117
  575. package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
  576. package/dist/tempo/session/ChannelStore.js +0 -172
  577. package/dist/tempo/session/ChannelStore.js.map +0 -1
  578. package/dist/tempo/session/Receipt.d.ts +0 -22
  579. package/dist/tempo/session/Receipt.d.ts.map +0 -1
  580. package/dist/tempo/session/Receipt.js +0 -34
  581. package/dist/tempo/session/Receipt.js.map +0 -1
  582. package/dist/tempo/session/Sse.d.ts.map +0 -1
  583. package/dist/tempo/session/Sse.js +0 -363
  584. package/dist/tempo/session/Sse.js.map +0 -1
  585. package/dist/tempo/session/Types.d.ts +0 -78
  586. package/dist/tempo/session/Types.d.ts.map +0 -1
  587. package/dist/tempo/session/Types.js.map +0 -1
  588. package/dist/tempo/session/Voucher.d.ts.map +0 -1
  589. package/dist/tempo/session/Voucher.js.map +0 -1
  590. package/dist/tempo/session/Ws.d.ts +0 -87
  591. package/dist/tempo/session/Ws.d.ts.map +0 -1
  592. package/dist/tempo/session/Ws.js +0 -443
  593. package/dist/tempo/session/Ws.js.map +0 -1
  594. package/dist/tempo/session/escrow.abi.js.map +0 -1
  595. package/src/mcp-sdk/client/McpClient.ts +0 -196
  596. package/src/tempo/session/ChannelStore.ts +0 -308
  597. package/src/tempo/session/Receipt.test.ts +0 -89
  598. package/src/tempo/session/Receipt.ts +0 -46
  599. package/src/tempo/session/Sse.ts +0 -462
  600. package/src/tempo/session/Types.ts +0 -86
  601. package/src/tempo/session/Ws.ts +0 -576
  602. /package/dist/{mcp-sdk → mcp}/client/index.d.ts +0 -0
  603. /package/dist/{mcp-sdk → mcp}/client/index.js +0 -0
  604. /package/dist/{mcp-sdk → mcp}/server/Transport.d.ts +0 -0
  605. /package/dist/{mcp-sdk → mcp}/server/Transport.js +0 -0
  606. /package/dist/{mcp-sdk → mcp}/server/index.d.ts +0 -0
  607. /package/dist/{mcp-sdk → mcp}/server/index.js +0 -0
  608. /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
  609. /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
  610. /package/src/{mcp-sdk → mcp}/client/index.ts +0 -0
  611. /package/src/{mcp-sdk → mcp}/server/Transport.test.ts +0 -0
  612. /package/src/{mcp-sdk → mcp}/server/Transport.ts +0 -0
  613. /package/src/{mcp-sdk → mcp}/server/index.ts +0 -0
  614. /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
  615. /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
  616. /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
@@ -20,6 +20,7 @@ import {
20
20
  } from 'viem'
21
21
  import { tempo as tempo_chain } from 'viem/tempo/chains'
22
22
 
23
+ import * as Constants from '../../../Constants.js'
23
24
  import {
24
25
  AmountExceedsDepositError,
25
26
  BadRequestError,
@@ -29,18 +30,25 @@ import {
29
30
  InsufficientBalanceError,
30
31
  InvalidSignatureError,
31
32
  VerificationFailedError,
32
- } from '../../Errors.js'
33
- import type { Challenge, Credential } from '../../index.js'
34
- import type { LooseOmit, NoExtraKeys } from '../../internal/types.js'
35
- import * as Method from '../../Method.js'
36
- import * as Store from '../../Store.js'
37
- import * as Client from '../../viem/Client.js'
38
- import type * as z from '../../zod.js'
39
- import * as Account from '../internal/account.js'
40
- import * as defaults from '../internal/defaults.js'
41
- import * as FeePayer from '../internal/fee-payer.js'
42
- import type * as types from '../internal/types.js'
43
- import * as Methods from '../Methods.js'
33
+ } from '../../../Errors.js'
34
+ import type { Challenge, Credential } from '../../../index.js'
35
+ import type { LooseOmit, NoExtraKeys } from '../../../internal/types.js'
36
+ import * as Method from '../../../Method.js'
37
+ import * as Store from '../../../Store.js'
38
+ import * as Client from '../../../viem/Client.js'
39
+ import type * as z from '../../../zod.js'
40
+ import * as Account from '../../internal/account.js'
41
+ import * as defaults from '../../internal/defaults.js'
42
+ import * as FeePayer from '../../internal/fee-payer.js'
43
+ import type * as types from '../../internal/types.js'
44
+ import * as Methods from '../../Methods.js'
45
+ import {
46
+ captureRequestBodyProbe,
47
+ isSessionContentRequest,
48
+ } from '../../server/internal/request-body.js'
49
+ import * as Transport from '../../server/internal/transport.js'
50
+ import { createSessionReceipt } from '../../session/precompile/Protocol.js'
51
+ import type { SessionReceipt } from '../../session/precompile/Protocol.js'
44
52
  import {
45
53
  broadcastOpenTransaction,
46
54
  broadcastTopUpTransaction,
@@ -50,11 +58,8 @@ import {
50
58
  settleOnChain,
51
59
  } from '../session/Chain.js'
52
60
  import * as ChannelStore from '../session/ChannelStore.js'
53
- import { createSessionReceipt } from '../session/Receipt.js'
54
- import type { SessionCredentialPayload, SessionReceipt, SignedVoucher } from '../session/Types.js'
61
+ import type { LegacySessionCredentialPayload, LegacySignedVoucher } from '../session/Types.js'
55
62
  import { parseVoucherFromPayload, verifyVoucher } from '../session/Voucher.js'
56
- import { captureRequestBodyProbe, isSessionContentRequest } from './internal/request-body.js'
57
- import * as Transport from './internal/transport.js'
58
63
 
59
64
  /** Challenge methodDetails shape for session methods. */
60
65
  type SessionMethodDetails = {
@@ -63,6 +68,7 @@ type SessionMethodDetails = {
63
68
  channelId?: Hex | undefined
64
69
  minVoucherDelta?: string | undefined
65
70
  feePayer?: boolean | undefined
71
+ sessionProtocol?: Constants.SessionProtocol | undefined
66
72
  }
67
73
 
68
74
  /**
@@ -183,11 +189,13 @@ export function session<const parameters extends session.Parameters>(
183
189
  chainId,
184
190
  escrowContract: resolvedEscrow,
185
191
  feePayer: resolvedFeePayer,
192
+ sessionProtocol: Constants.SessionProtocols.v1,
186
193
  }
187
194
  },
188
195
 
189
196
  async verify({ credential, envelope, request }) {
190
- const { challenge, payload } = credential as Credential.Credential<SessionCredentialPayload>
197
+ const { challenge, payload } =
198
+ credential as Credential.Credential<LegacySessionCredentialPayload>
191
199
 
192
200
  const resolvedRequest = (() => {
193
201
  const parsed = Methods.session.schema.request.safeParse(request)
@@ -315,7 +323,7 @@ export function session<const parameters extends session.Parameters>(
315
323
  // during verification. Non-billable requests are treated as management
316
324
  // updates; billable requests fall through to the application handler.
317
325
  respond({ credential, envelope, input }) {
318
- const { payload } = credential as Credential.Credential<SessionCredentialPayload>
326
+ const { payload } = credential as Credential.Credential<LegacySessionCredentialPayload>
319
327
  const request = envelope?.capturedRequest ?? captureRequestBodyProbe(input)
320
328
 
321
329
  if (payload.action === 'close') return new Response(null, { status: 204 })
@@ -333,6 +341,7 @@ function isSseNegotiationRequest(input: Pick<Method.CapturedRequest, 'headers'>)
333
341
  return input.headers.get('Accept')?.includes('text/event-stream') ?? false
334
342
  }
335
343
 
344
+ /** Type helpers for the legacy contract-backed session server method. */
336
345
  export declare namespace session {
337
346
  type Defaults = LooseOmit<
338
347
  Method.RequestDefaults<typeof Methods.session>,
@@ -537,7 +546,7 @@ async function verifyAndAcceptVoucher(parameters: {
537
546
  challenge: Challenge.Challenge
538
547
  channel: ChannelStore.State
539
548
  channelId: Hex
540
- voucher: SignedVoucher
549
+ voucher: LegacySignedVoucher
541
550
  onChain: OnChainChannel
542
551
  }): Promise<SessionReceipt> {
543
552
  const { store, minVoucherDelta, challenge, channel, channelId, voucher, onChain } = parameters
@@ -635,7 +644,7 @@ async function handleOpen(
635
644
  store: ChannelStore.ChannelStore,
636
645
  client: viem_Client,
637
646
  challenge: Challenge.Challenge,
638
- payload: SessionCredentialPayload & { action: 'open' },
647
+ payload: LegacySessionCredentialPayload & { action: 'open' },
639
648
  methodDetails: SessionMethodDetails,
640
649
  feePayer: viem_Account | undefined,
641
650
  isSponsored: boolean,
@@ -774,7 +783,7 @@ async function handleTopUp(
774
783
  store: ChannelStore.ChannelStore,
775
784
  client: viem_Client,
776
785
  challenge: Challenge.Challenge,
777
- payload: SessionCredentialPayload & { action: 'topUp' },
786
+ payload: LegacySessionCredentialPayload & { action: 'topUp' },
778
787
  methodDetails: SessionMethodDetails,
779
788
  feePayer: viem_Account | undefined,
780
789
  isSponsored: boolean,
@@ -824,7 +833,7 @@ async function handleVoucher(
824
833
  client: viem_Client,
825
834
  minVoucherDelta: bigint,
826
835
  challenge: Challenge.Challenge,
827
- payload: SessionCredentialPayload & { action: 'voucher' },
836
+ payload: LegacySessionCredentialPayload & { action: 'voucher' },
828
837
  methodDetails: SessionMethodDetails,
829
838
  channelStateTtl: number,
830
839
  lastOnChainVerified: Map<Hex, number>,
@@ -896,7 +905,7 @@ async function handleClose(
896
905
  store: ChannelStore.ChannelStore,
897
906
  client: viem_Client,
898
907
  challenge: Challenge.Challenge,
899
- payload: SessionCredentialPayload & { action: 'close' },
908
+ payload: LegacySessionCredentialPayload & { action: 'close' },
900
909
  methodDetails: SessionMethodDetails,
901
910
  account?: viem_Account,
902
911
  feePayer?: viem_Account,
@@ -0,0 +1,4 @@
1
+ /** Legacy contract-backed session server method. */
2
+ export { session } from './Session.js'
3
+ /** Legacy contract-backed one-shot settle helper. */
4
+ export { settle } from './Session.js'
@@ -10,7 +10,7 @@ import {
10
10
  import { prepareTransactionRequest, signTransaction, waitForTransactionReceipt } from 'viem/actions'
11
11
  import { Addresses, Transaction } from 'viem/tempo'
12
12
  import { beforeAll, describe, expect, test } from 'vp/test'
13
- import { nodeEnv } from '~test/config.js'
13
+ import { tempoNetwork } from '~test/config.js'
14
14
  import {
15
15
  closeChannelOnChain,
16
16
  deployEscrow,
@@ -18,7 +18,7 @@ import {
18
18
  signOpenChannel,
19
19
  signTopUpChannel,
20
20
  topUpChannel,
21
- } from '~test/tempo/session.js'
21
+ } from '~test/tempo/legacy/session.js'
22
22
  import { accounts, asset, chain, client, fundAccount } from '~test/tempo/viem.js'
23
23
 
24
24
  import {
@@ -33,9 +33,8 @@ import {
33
33
  import * as Channel from './Channel.js'
34
34
  import { signVoucher } from './Voucher.js'
35
35
 
36
- const isLocalnet = nodeEnv === 'localnet'
37
-
38
36
  const UINT128_MAX = 2n ** 128n - 1n
37
+ const isLocalnet = tempoNetwork === 'localnet'
39
38
 
40
39
  describe('assertUint128 (via settleOnChain / closeOnChain)', () => {
41
40
  const mockClient = { chain: { id: 42431 } } as any
@@ -20,23 +20,28 @@ import {
20
20
  } from 'viem/actions'
21
21
  import { Transaction } from 'viem/tempo'
22
22
 
23
- import { BadRequestError, ChannelClosedError, VerificationFailedError } from '../../Errors.js'
24
- import * as TempoAddress from '../internal/address.js'
25
- import * as defaults from '../internal/defaults.js'
26
- import * as FeePayer from '../internal/fee-payer.js'
27
- import { resolveFeeToken } from '../internal/fee-token.js'
23
+ import { BadRequestError, ChannelClosedError, VerificationFailedError } from '../../../Errors.js'
24
+ import * as TempoAddress from '../../internal/address.js'
25
+ import * as defaults from '../../internal/defaults.js'
26
+ import * as FeePayer from '../../internal/fee-payer.js'
27
+ import { resolveFeeToken } from '../../internal/fee-token.js'
28
28
  import * as Channel from './Channel.js'
29
29
  import { escrowAbi } from './escrow.abi.js'
30
- import type { SignedVoucher } from './Types.js'
30
+ import type { LegacySignedVoucher } from './Types.js'
31
31
 
32
32
  export { escrowAbi }
33
33
 
34
+ type SenderSignedTransaction = {
35
+ from?: Address | undefined
36
+ signature?: unknown
37
+ }
38
+
34
39
  /**
35
40
  * Asserts that a deserialized transaction has an existing sender signature —
36
41
  * required before fee payer co-signing to prevent the fee payer from becoming
37
42
  * the sender.
38
43
  */
39
- function assertSenderSigned(transaction: any): void {
44
+ function assertSenderSigned(transaction: SenderSignedTransaction): void {
40
45
  if (!transaction.signature || !transaction.from)
41
46
  throw new BadRequestError({
42
47
  reason: 'Transaction must be signed by the sender before fee payer co-signing',
@@ -109,7 +114,7 @@ export type SettleOptions =
109
114
  export async function settleOnChain(
110
115
  client: Client,
111
116
  escrowContract: Address,
112
- voucher: SignedVoucher,
117
+ voucher: LegacySignedVoucher,
113
118
  options?: SettleOptions,
114
119
  ): Promise<Hex> {
115
120
  assertUint128(voucher.cumulativeAmount)
@@ -160,7 +165,7 @@ export type CloseOptions =
160
165
  export async function closeOnChain(
161
166
  client: Client,
162
167
  escrowContract: Address,
163
- voucher: SignedVoucher,
168
+ voucher: LegacySignedVoucher,
164
169
  options?: CloseOptions,
165
170
  ): Promise<Hex> {
166
171
  assertUint128(voucher.cumulativeAmount)
@@ -298,11 +303,75 @@ const erc20ApproveSelector = /*#__PURE__*/ toFunctionSelector(
298
303
  'function approve(address spender, uint256 amount)',
299
304
  )
300
305
 
306
+ /** Result returned after a legacy open transaction is broadcast or recovered from on-chain state. */
301
307
  export type BroadcastResult = {
302
308
  txHash: Hex | undefined
303
309
  onChain: OnChainChannel
304
310
  }
305
311
 
312
+ /** Inputs for validating an ERC-20 approve call inside a fee-sponsored legacy channel transaction. */
313
+ type SponsoredApproveCallParameters = {
314
+ action: 'open' | 'topUp'
315
+ call: TempoCall
316
+ currency: Address
317
+ escrowContract: Address
318
+ expectedAmount: bigint
319
+ }
320
+
321
+ /** Inputs for extracting the escrow open call from a fee-sponsored legacy channel transaction. */
322
+ type SponsoredOpenCallsParameters = {
323
+ calls: readonly TempoCall[]
324
+ currency: Address
325
+ deposit: bigint
326
+ escrowContract: Address
327
+ }
328
+
329
+ /** Inputs for extracting the escrow top-up call from a fee-sponsored legacy channel transaction. */
330
+ type SponsoredTopUpCallsParameters = {
331
+ calls: readonly TempoCall[]
332
+ currency: Address
333
+ escrowContract: Address
334
+ topUpAmount: bigint
335
+ }
336
+
337
+ /** Inputs for broadcasting and validating a legacy contract-backed open transaction. */
338
+ export type BroadcastOpenTransactionParameters = {
339
+ beforeBroadcast?: ((onChain: OnChainChannel) => Promise<void> | void) | undefined
340
+ challengeExpires?: string | undefined
341
+ channelId: Hex
342
+ client: Client
343
+ currency: Address
344
+ escrowContract: Address
345
+ feePayer?: Account | undefined
346
+ feePayerPolicy?: Partial<FeePayer.Policy> | undefined
347
+ isSponsored?: boolean | undefined
348
+ recipient: Address
349
+ serializedTransaction: Hex
350
+ /** When false, simulates instead of waiting for confirmation and returns derived on-chain state. @default true */
351
+ waitForConfirmation?: boolean | undefined
352
+ }
353
+
354
+ /** Inputs for broadcasting and validating a legacy contract-backed top-up transaction. */
355
+ export type BroadcastTopUpTransactionParameters = {
356
+ challengeExpires?: string | undefined
357
+ channelId: Hex
358
+ client: Client
359
+ currency: Address
360
+ declaredDeposit: bigint
361
+ escrowContract: Address
362
+ feePayer?: Account | undefined
363
+ feePayerPolicy?: Partial<FeePayer.Policy> | undefined
364
+ isSponsored?: boolean | undefined
365
+ previousDeposit: bigint
366
+ serializedTransaction: Hex
367
+ }
368
+
369
+ /** Result returned after a legacy top-up transaction is broadcast and verified. */
370
+ export type BroadcastTopUpTransactionResult = {
371
+ newDeposit: bigint
372
+ txHash: Hex
373
+ }
374
+
306
375
  type TempoCall = NonNullable<ReturnType<(typeof Transaction)['deserialize']>['calls']>[number]
307
376
 
308
377
  function assertCallHasTargetAndData(call: TempoCall): { to: Address; data: Hex } {
@@ -314,13 +383,7 @@ function assertCallHasTargetAndData(call: TempoCall): { to: Address; data: Hex }
314
383
  return { to: call.to, data: call.data }
315
384
  }
316
385
 
317
- function validateSponsoredApproveCall(parameters: {
318
- action: 'open' | 'topUp'
319
- call: TempoCall
320
- currency: Address
321
- escrowContract: Address
322
- expectedAmount: bigint
323
- }) {
386
+ function validateSponsoredApproveCall(parameters: SponsoredApproveCallParameters) {
324
387
  const { action, call, currency, escrowContract, expectedAmount } = parameters
325
388
  const { to, data } = assertCallHasTargetAndData(call)
326
389
 
@@ -346,12 +409,7 @@ function validateSponsoredApproveCall(parameters: {
346
409
  }
347
410
  }
348
411
 
349
- function validateSponsoredOpenCalls(parameters: {
350
- calls: readonly TempoCall[]
351
- currency: Address
352
- escrowContract: Address
353
- deposit: bigint
354
- }) {
412
+ function validateSponsoredOpenCalls(parameters: SponsoredOpenCallsParameters) {
355
413
  const { calls, currency, escrowContract, deposit } = parameters
356
414
 
357
415
  let openCall: TempoCall | undefined
@@ -401,12 +459,7 @@ function validateSponsoredOpenCalls(parameters: {
401
459
  return openCall
402
460
  }
403
461
 
404
- function validateSponsoredTopUpCalls(parameters: {
405
- calls: readonly TempoCall[]
406
- currency: Address
407
- escrowContract: Address
408
- topUpAmount: bigint
409
- }) {
462
+ function validateSponsoredTopUpCalls(parameters: SponsoredTopUpCallsParameters) {
410
463
  const { calls, currency, escrowContract, topUpAmount } = parameters
411
464
 
412
465
  let topUpCall: TempoCall | undefined
@@ -456,21 +509,9 @@ function validateSponsoredTopUpCalls(parameters: {
456
509
  return topUpCall
457
510
  }
458
511
 
459
- export async function broadcastOpenTransaction(parameters: {
460
- client: Client
461
- serializedTransaction: Hex
462
- escrowContract: Address
463
- channelId: Hex
464
- recipient: Address
465
- currency: Address
466
- challengeExpires?: string | undefined
467
- feePayerPolicy?: Partial<FeePayer.Policy> | undefined
468
- feePayer?: Account | undefined
469
- isSponsored?: boolean | undefined
470
- beforeBroadcast?: ((onChain: OnChainChannel) => Promise<void> | void) | undefined
471
- /** When false, simulates instead of waiting for confirmation and returns derived on-chain state. @default true */
472
- waitForConfirmation?: boolean | undefined
473
- }): Promise<BroadcastResult> {
512
+ export async function broadcastOpenTransaction(
513
+ parameters: BroadcastOpenTransactionParameters,
514
+ ): Promise<BroadcastResult> {
474
515
  const {
475
516
  client,
476
517
  serializedTransaction,
@@ -569,8 +610,8 @@ export async function broadcastOpenTransaction(parameters: {
569
610
  reason: 'open transaction does not match claimed channelId',
570
611
  })
571
612
 
572
- const resolvedFeeToken =
573
- transaction.feeToken ?? defaults.currency[client.chain?.id as keyof typeof defaults.currency]
613
+ const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
614
+ const resolvedFeeToken = transaction.feeToken ?? defaultFeeToken
574
615
 
575
616
  const pendingOnChain = {
576
617
  finalized: false,
@@ -594,10 +635,10 @@ export async function broadcastOpenTransaction(parameters: {
594
635
 
595
636
  const sponsored = FeePayer.prepareSponsoredTransaction({
596
637
  account: feePayer,
638
+ allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
597
639
  challengeExpires,
598
640
  chainId: client.chain!.id,
599
641
  details: { channelId, currency, recipient },
600
- expectedFeeToken: defaults.currency[client.chain?.id as keyof typeof defaults.currency],
601
642
  policy: feePayerPolicy,
602
643
  transaction: {
603
644
  ...transaction,
@@ -660,19 +701,9 @@ export async function broadcastOpenTransaction(parameters: {
660
701
  return { txHash, onChain }
661
702
  }
662
703
 
663
- export async function broadcastTopUpTransaction(parameters: {
664
- client: Client
665
- serializedTransaction: Hex
666
- escrowContract: Address
667
- channelId: Hex
668
- currency: Address
669
- declaredDeposit: bigint
670
- previousDeposit: bigint
671
- challengeExpires?: string | undefined
672
- feePayerPolicy?: Partial<FeePayer.Policy> | undefined
673
- feePayer?: Account | undefined
674
- isSponsored?: boolean | undefined
675
- }): Promise<{ txHash: Hex; newDeposit: bigint }> {
704
+ export async function broadcastTopUpTransaction(
705
+ parameters: BroadcastTopUpTransactionParameters,
706
+ ): Promise<BroadcastTopUpTransactionResult> {
676
707
  const {
677
708
  client,
678
709
  serializedTransaction,
@@ -743,9 +774,10 @@ export async function broadcastTopUpTransaction(parameters: {
743
774
  reason: 'transaction does not contain a valid escrow topUp call',
744
775
  })
745
776
 
746
- const expectedFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
777
+ const defaultFeeToken = defaults.currency[client.chain?.id as keyof typeof defaults.currency]
747
778
  const sponsored = FeePayer.prepareSponsoredTransaction({
748
779
  account: feePayer,
780
+ allowedFeeTokens: defaultFeeToken ? [defaultFeeToken] : undefined,
749
781
  challengeExpires,
750
782
  chainId: client.chain!.id,
751
783
  details: {
@@ -753,12 +785,11 @@ export async function broadcastTopUpTransaction(parameters: {
753
785
  channelId,
754
786
  currency,
755
787
  },
756
- expectedFeeToken,
757
788
  policy: feePayerPolicy,
758
789
  transaction: {
759
790
  ...transaction,
760
- ...((transaction.feeToken ?? expectedFeeToken)
761
- ? { feeToken: transaction.feeToken ?? expectedFeeToken }
791
+ ...((transaction.feeToken ?? defaultFeeToken)
792
+ ? { feeToken: transaction.feeToken ?? defaultFeeToken }
762
793
  : {}),
763
794
  },
764
795
  })
@@ -30,6 +30,7 @@ export function computeId(parameters: computeId.Parameters): Hex.Hex {
30
30
  return Hash.keccak256(encoded)
31
31
  }
32
32
 
33
+ /** Type helpers for {@link computeId}. */
33
34
  export declare namespace computeId {
34
35
  type Parameters = {
35
36
  /** Address authorized to sign vouchers on behalf of the payer. */
@@ -0,0 +1,58 @@
1
+ import type { Address, Hex } from 'viem'
2
+ import { describe, expect, test } from 'vp/test'
3
+
4
+ import * as Store from '../../../Store.js'
5
+ import { chainId, escrowContract as escrowContractDefaults } from '../../internal/defaults.js'
6
+ import * as ChannelStore from './ChannelStore.js'
7
+
8
+ const channelId = '0x0000000000000000000000000000000000000000000000000000000000000001' as Hex
9
+
10
+ function legacyChannel(
11
+ overrides: Partial<ChannelStore.LegacyState> = {},
12
+ ): ChannelStore.LegacyState {
13
+ return {
14
+ channelId,
15
+ payer: '0x0000000000000000000000000000000000000001' as Address,
16
+ payee: '0x0000000000000000000000000000000000000002' as Address,
17
+ token: '0x0000000000000000000000000000000000000003' as Address,
18
+ authorizedSigner: '0x0000000000000000000000000000000000000004' as Address,
19
+ chainId: 42431,
20
+ escrowContract: escrowContractDefaults[chainId.testnet] as Address,
21
+ deposit: 10_000_000n,
22
+ settledOnChain: 0n,
23
+ highestVoucherAmount: 10_000_000n,
24
+ highestVoucher: null,
25
+ spent: 0n,
26
+ units: 0,
27
+ closeRequestedAt: 0n,
28
+ finalized: false,
29
+ createdAt: '2025-01-01T00:00:00.000Z',
30
+ ...overrides,
31
+ }
32
+ }
33
+
34
+ describe('legacy ChannelStore', () => {
35
+ test('keeps existing contract-backed channels compatible when backend fields are absent', async () => {
36
+ const store = ChannelStore.fromStore(Store.memory())
37
+ await store.updateChannel(channelId, () => legacyChannel())
38
+
39
+ const loaded = await store.getChannel(channelId)
40
+ expect(loaded).not.toBeNull()
41
+ expect(ChannelStore.isContractState(loaded!)).toBe(true)
42
+ expect(loaded!.backend).toBeUndefined()
43
+ expect('operator' in loaded!).toBe(false)
44
+ expect('salt' in loaded!).toBe(false)
45
+ expect('expiringNonceHash' in loaded!).toBe(false)
46
+ expect('descriptor' in loaded!).toBe(false)
47
+ })
48
+
49
+ test('supports explicit contract-backed channel state', async () => {
50
+ const store = ChannelStore.fromStore(Store.memory())
51
+ await store.updateChannel(channelId, () => legacyChannel({ backend: 'contract' }))
52
+
53
+ const loaded = await store.getChannel(channelId)
54
+ expect(loaded).not.toBeNull()
55
+ expect(ChannelStore.isContractState(loaded!)).toBe(true)
56
+ expect(loaded!.backend).toBe('contract')
57
+ })
58
+ })
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Legacy contract-backed session channel-store facade.
3
+ *
4
+ * Legacy code imports channel-store types and helpers from this module so the
5
+ * contract-backed backend stays rooted under `tempo/legacy`. The underlying
6
+ * store adapter is shared with the TIP-1034 implementation because both
7
+ * backends persist the same accounting counters.
8
+ */
9
+ import type * as SharedChannelStore from '../../session/server/ChannelStore.js'
10
+
11
+ export {
12
+ deductFromChannel,
13
+ fromStore,
14
+ normalizeChannelId,
15
+ type BackendState,
16
+ type BaseState,
17
+ type ChannelStore,
18
+ type DeductResult,
19
+ type State,
20
+ } from '../../session/server/ChannelStore.js'
21
+
22
+ /** State for a legacy smart-contract-backed payment channel. */
23
+ export interface LegacyContractBackendState {
24
+ /** Channel backend. Omitted for existing legacy records. */
25
+ backend?: 'contract' | undefined
26
+ }
27
+
28
+ /** @deprecated Use {@link LegacyContractBackendState}. */
29
+ export type ContractBackendState = LegacyContractBackendState
30
+
31
+ /** Legacy contract-backed channel state persisted by `tempo.sessionLegacy`. */
32
+ export type LegacyState = SharedChannelStore.BaseState & LegacyContractBackendState
33
+
34
+ /** Returns whether a channel is backed by the legacy smart contract escrow. */
35
+ export function isContractState(
36
+ state: SharedChannelStore.State,
37
+ ): state is SharedChannelStore.BaseState & LegacyContractBackendState {
38
+ return state.backend === undefined || state.backend === 'contract'
39
+ }
@@ -0,0 +1,91 @@
1
+ import type { Address, Hex } from 'viem'
2
+
3
+ import type { SessionSignedVoucher, SessionVoucher } from '../../session/precompile/Protocol.js'
4
+
5
+ /**
6
+ * Legacy credential payload that opens a smart-contract-backed channel and authorizes initial spend.
7
+ */
8
+ export type LegacyOpenCredentialPayload = {
9
+ action: 'open'
10
+ type: 'transaction'
11
+ /** Session channel ID. */
12
+ channelId: Hex
13
+ /** Signed transaction containing the channel-open call. */
14
+ transaction: Hex
15
+ /** Voucher signature for `cumulativeAmount`. */
16
+ signature: Hex
17
+ /** Voucher signer selected for the opened channel. */
18
+ authorizedSigner?: Address | undefined
19
+ /** Initial cumulative spend authorized by the opening voucher, as raw units. */
20
+ cumulativeAmount: string
21
+ }
22
+
23
+ /** Legacy credential payload that adds deposit to an existing smart-contract-backed channel. */
24
+ export type LegacyTopUpCredentialPayload = {
25
+ action: 'topUp'
26
+ type: 'transaction'
27
+ /** Session channel ID being topped up. */
28
+ channelId: Hex
29
+ /** Signed transaction containing the channel top-up call. */
30
+ transaction: Hex
31
+ /** Additional deposit to add, as raw units. */
32
+ additionalDeposit: string
33
+ }
34
+
35
+ /** Legacy credential payload that increases cumulative spend authorization. */
36
+ export type LegacyVoucherCredentialPayload = {
37
+ action: 'voucher'
38
+ /** Session channel ID the voucher applies to. */
39
+ channelId: Hex
40
+ /** Highest cumulative spend authorized by this voucher, as raw units. */
41
+ cumulativeAmount: string
42
+ /** Voucher signature for `cumulativeAmount`. */
43
+ signature: Hex
44
+ }
45
+
46
+ /** Legacy credential payload that cooperatively closes a channel at final cumulative spend. */
47
+ export type LegacyCloseCredentialPayload = {
48
+ action: 'close'
49
+ /** Session channel ID being closed. */
50
+ channelId: Hex
51
+ /** Final cumulative spend authorized at close, as raw units. */
52
+ cumulativeAmount: string
53
+ /** Voucher signature for `cumulativeAmount`. */
54
+ signature: Hex
55
+ }
56
+
57
+ /**
58
+ * Legacy smart-contract-backed session credential payload.
59
+ */
60
+ export type LegacySessionCredentialPayload =
61
+ | LegacyOpenCredentialPayload
62
+ | LegacyTopUpCredentialPayload
63
+ | LegacyVoucherCredentialPayload
64
+ | LegacyCloseCredentialPayload
65
+
66
+ /** Legacy smart-contract-backed voucher for cumulative payment. */
67
+ export type LegacyVoucher = SessionVoucher
68
+
69
+ /** Legacy smart-contract-backed voucher with EIP-712 signature. */
70
+ export type LegacySignedVoucher = SessionSignedVoucher
71
+
72
+ /** @deprecated Use {@link LegacyVoucher}. */
73
+ export type Voucher = LegacyVoucher
74
+
75
+ /** @deprecated Use {@link LegacySignedVoucher}. */
76
+ export type SignedVoucher = LegacySignedVoucher
77
+
78
+ /** @deprecated Use {@link LegacyOpenCredentialPayload}. */
79
+ export type OpenCredentialPayload = LegacyOpenCredentialPayload
80
+
81
+ /** @deprecated Use {@link LegacyTopUpCredentialPayload}. */
82
+ export type TopUpCredentialPayload = LegacyTopUpCredentialPayload
83
+
84
+ /** @deprecated Use {@link LegacyVoucherCredentialPayload}. */
85
+ export type VoucherCredentialPayload = LegacyVoucherCredentialPayload
86
+
87
+ /** @deprecated Use {@link LegacyCloseCredentialPayload}. */
88
+ export type CloseCredentialPayload = LegacyCloseCredentialPayload
89
+
90
+ /** @deprecated Use {@link LegacySessionCredentialPayload}. */
91
+ export type SessionCredentialPayload = LegacySessionCredentialPayload