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
@@ -1,16 +1,25 @@
1
- import * as Ws_ from '../session/Ws.js';
1
+ import { session as sessionLegacy_, settle as settleLegacy_ } from '../legacy/server/index.js';
2
+ import { charge as sessionCharge_, session as session_, settle as settle_, settleBatch as settleBatch_ } from '../session/server/Session.js';
3
+ import * as Ws_ from '../session/server/Ws.js';
2
4
  import { charge as charge_ } from './Charge.js';
3
- import { session as session_, settle as settle_ } from './Session.js';
4
5
  import { renew as renewSubscription_, subscription as subscription_ } from './Subscription.js';
6
+ declare function createSessionLegacyMethod<const parameters extends NonNullable<Parameters<typeof sessionLegacy_>[0]>>(parameters?: parameters): never;
7
+ /** Creates a legacy contract-backed Tempo `session` server method. */
8
+ export declare const sessionLegacy: typeof createSessionLegacyMethod & {
9
+ settle: typeof settleLegacy_;
10
+ Ws: typeof Ws_;
11
+ };
12
+ /** Settles a legacy contract-backed Tempo session channel. */
13
+ export declare const settleLegacy: typeof settleLegacy_;
5
14
  /**
6
- * Creates both Tempo `charge` and `session` methods from shared parameters.
15
+ * Creates the common Tempo `charge` and `session` methods from shared parameters.
7
16
  *
8
17
  * @example
9
18
  * ```ts
10
19
  * import { Mppx, tempo } from 'mppx/server'
11
20
  *
12
21
  * const mppx = Mppx.create({
13
- * methods: [tempo({ currency: '0x...', recipient: '0x...' })],
22
+ * methods: [tempo.common({ currency: '0x...', recipient: '0x...' })],
14
23
  * })
15
24
  * ```
16
25
  */
@@ -84,7 +93,15 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
84
93
  supportedModes?: ("push" | "pull")[] | undefined;
85
94
  }>>;
86
95
  };
87
- }, never, undefined, {}>, import("../../Method.js").Server<{
96
+ }, charge_.DeriveDefaults<{
97
+ html?: boolean | import("../../Html.js").Config | undefined;
98
+ feePayerPolicy?: charge_.FeePayerPolicy | undefined;
99
+ testnet?: boolean | undefined;
100
+ store?: import("../../Store.js").AtomicStore | undefined;
101
+ validateSender?: charge_.ValidateSender | undefined;
102
+ storeKeyPrefix?: string | undefined;
103
+ waitForConfirmation?: boolean | undefined;
104
+ } & import("../../viem/Client.js").getResolver.Parameters & import("../internal/account.js").resolve.Parameters & charge_.Defaults>, undefined, {}, undefined>, import("../../Method.js").Server<{
88
105
  readonly name: "tempo";
89
106
  readonly intent: "session";
90
107
  readonly schema: {
@@ -94,6 +111,7 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
94
111
  authorizedSigner: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
95
112
  channelId: import("zod/mini").ZodMiniString<string>;
96
113
  cumulativeAmount: import("zod/mini").ZodMiniString<string>;
114
+ descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
97
115
  signature: import("zod/mini").ZodMiniString<string>;
98
116
  transaction: import("zod/mini").ZodMiniString<string>;
99
117
  type: import("zod/mini").ZodMiniLiteral<"transaction">;
@@ -101,17 +119,20 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
101
119
  action: import("zod/mini").ZodMiniLiteral<"topUp">;
102
120
  additionalDeposit: import("zod/mini").ZodMiniString<string>;
103
121
  channelId: import("zod/mini").ZodMiniString<string>;
122
+ descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
104
123
  transaction: import("zod/mini").ZodMiniString<string>;
105
124
  type: import("zod/mini").ZodMiniLiteral<"transaction">;
106
125
  }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
107
126
  action: import("zod/mini").ZodMiniLiteral<"voucher">;
108
127
  channelId: import("zod/mini").ZodMiniString<string>;
109
128
  cumulativeAmount: import("zod/mini").ZodMiniString<string>;
129
+ descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
110
130
  signature: import("zod/mini").ZodMiniString<string>;
111
131
  }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
112
132
  action: import("zod/mini").ZodMiniLiteral<"close">;
113
133
  channelId: import("zod/mini").ZodMiniString<string>;
114
134
  cumulativeAmount: import("zod/mini").ZodMiniString<string>;
135
+ descriptor: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/precompile/Protocol.js").ChannelDescriptor, import("../session/precompile/Protocol.js").ChannelDescriptor>>;
115
136
  signature: import("zod/mini").ZodMiniString<string>;
116
137
  }, import("zod/v4/core").$strip>], "action">;
117
138
  };
@@ -124,11 +145,20 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
124
145
  escrowContract: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
125
146
  feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<import("viem").Account, import("viem").Account>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
126
147
  minVoucherDelta: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
148
+ operator: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
127
149
  recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
150
+ sessionProtocol: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniEnum<{
151
+ v1: "v1";
152
+ v2: "v2";
153
+ }>>;
154
+ sessionSnapshot: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniCustom<import("../session/Snapshot.js").SessionSnapshot, import("../session/Snapshot.js").SessionSnapshot>>;
128
155
  suggestedDeposit: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
129
156
  unitType: import("zod/mini").ZodMiniString<string>;
130
157
  }, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
131
158
  methodDetails: {
159
+ sessionSnapshot?: import("../session/Snapshot.js").SessionSnapshot | undefined;
160
+ sessionProtocol?: "v1" | "v2" | undefined;
161
+ operator?: string | undefined;
132
162
  feePayer?: boolean | undefined;
133
163
  chainId?: number | undefined;
134
164
  minVoucherDelta?: string | undefined;
@@ -150,24 +180,53 @@ export declare function tempo<const parameters extends tempo.Parameters>(paramet
150
180
  escrowContract?: string | undefined;
151
181
  feePayer?: boolean | undefined;
152
182
  minVoucherDelta?: string | undefined;
183
+ operator?: string | undefined;
153
184
  recipient?: string | undefined;
185
+ sessionProtocol?: "v1" | "v2" | undefined;
186
+ sessionSnapshot?: import("../session/Snapshot.js").SessionSnapshot | undefined;
154
187
  suggestedDeposit?: string | undefined;
155
188
  }>>;
156
189
  };
157
- }, never, undefined, {}>];
190
+ }, session_.DeriveDefaults<{
191
+ channelStateTtl?: number | undefined;
192
+ feePayerPolicy?: session_.FeePayerPolicy | undefined;
193
+ minVoucherDelta?: string | undefined;
194
+ resolveChannelId?: import("../session/server/RequestState.js").ResolveSessionChannelId | undefined;
195
+ bootstrap?: boolean | undefined;
196
+ store?: import("../../Store.js").AtomicStore | undefined;
197
+ sse?: boolean | import("./internal/transport.js").sse.Options | undefined;
198
+ chainId?: number | undefined;
199
+ escrowContract?: import("viem").Address | undefined;
200
+ settlementSchedule?: import("../session/server/Settlement.js").SettlementSchedule | undefined;
201
+ feeToken?: import("viem").Address | undefined;
202
+ } & import("../internal/account.js").resolve.Parameters & import("../../viem/Client.js").getResolver.Parameters & session_.Defaults>, import("./internal/transport.js").Sse, {}, undefined>];
158
203
  export declare namespace tempo {
159
204
  type Parameters = charge_.Parameters & session_.Parameters;
160
205
  /** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
161
206
  const charge: typeof charge_;
162
- /** Creates a Tempo `session` method for session-based TIP-20 token payments. */
163
- const session: typeof session_;
207
+ /** Creates the common Tempo `charge` and `session` methods from shared parameters. */
208
+ const common: typeof tempo;
209
+ /** Creates a TIP-1034 Tempo `session` method for session-based TIP-20 token payments. */
210
+ const session: typeof session_ & {
211
+ charge: typeof sessionCharge_;
212
+ settle: typeof settle_;
213
+ settleBatch: typeof settleBatch_;
214
+ };
215
+ /** @deprecated Use `tempo.session()` for the TIP-1034 session server method. */
216
+ const sessionLegacy: typeof createSessionLegacyMethod & {
217
+ settle: typeof settleLegacy_;
218
+ Ws: typeof Ws_;
219
+ };
164
220
  /** Creates a Tempo `subscription` method for recurring TIP-20 token payments. */
165
221
  const subscription: typeof subscription_;
166
222
  /** Renews an overdue Tempo subscription outside of the HTTP request path. */
167
223
  const renewSubscription: typeof renewSubscription_;
168
224
  /** One-shot settle: reads highest voucher from storage and submits on-chain. */
169
225
  const settle: typeof settle_;
226
+ /** Batch-settle precompile-backed session channels. */
227
+ const settleBatch: typeof settleBatch_;
170
228
  /** Experimental websocket helpers for Tempo sessions. */
171
229
  const Ws: typeof Ws_;
172
230
  }
231
+ export {};
173
232
  //# sourceMappingURL=Methods.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE9F;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAKvF;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAEjE,2EAA2E;IACpE,MAAM,MAAM,gBAAU,CAAA;IAC7B,gFAAgF;IACzE,MAAM,OAAO,iBAAW,CAAA;IAC/B,iFAAiF;IAC1E,MAAM,YAAY,sBAAgB,CAAA;IACzC,6EAA6E;IACtE,MAAM,iBAAiB,2BAAqB,CAAA;IACnD,gFAAgF;IACzE,MAAM,MAAM,gBAAU,CAAA;IAC7B,yDAAyD;IAClD,MAAM,EAAE,YAAM,CAAA;CACtB"}
1
+ {"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,MAAM,IAAI,cAAc,EACxB,OAAO,IAAI,QAAQ,EACnB,MAAM,IAAI,OAAO,EACjB,WAAW,IAAI,YAAY,EAC5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ9F,iBAAS,yBAAyB,CAChC,KAAK,CAAC,UAAU,SAAS,WAAW,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1E,UAAU,CAAC,EAAE,UAAU,SAExB;AAOD,sEAAsE;AACtE,eAAO,MAAM,aAAa;;;CAAsB,CAAA;AAEhD,8DAA8D;AAC9D,eAAO,MAAM,YAAY,sBAAgB,CAAA;AAkBzC;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6LAEvF;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IAEjE,2EAA2E;IACpE,MAAM,MAAM,gBAAU,CAAA;IAC7B,sFAAsF;IAC/E,MAAM,MAAM,cAAQ,CAAA;IAC3B,yFAAyF;IAClF,MAAM,OAAO;;;;KAAgB,CAAA;IACpC,gFAAgF;IACzE,MAAM,aAAa;;;KAAsB,CAAA;IAChD,iFAAiF;IAC1E,MAAM,YAAY,sBAAgB,CAAA;IACzC,6EAA6E;IACtE,MAAM,iBAAiB,2BAAqB,CAAA;IACnD,gFAAgF;IACzE,MAAM,MAAM,gBAAU,CAAA;IAC7B,uDAAuD;IAChD,MAAM,WAAW,qBAAe,CAAA;IACvC,yDAAyD;IAClD,MAAM,EAAE,YAAM,CAAA;CACtB"}
@@ -1,36 +1,66 @@
1
- import * as Ws_ from '../session/Ws.js';
1
+ import { session as sessionLegacy_, settle as settleLegacy_ } from '../legacy/server/index.js';
2
+ import { charge as sessionCharge_, session as session_, settle as settle_, settleBatch as settleBatch_, } from '../session/server/Session.js';
3
+ import * as Ws_ from '../session/server/Ws.js';
2
4
  import { charge as charge_ } from './Charge.js';
3
- import { session as session_, settle as settle_ } from './Session.js';
4
5
  import { renew as renewSubscription_, subscription as subscription_ } from './Subscription.js';
6
+ const sessionServer = Object.assign(session_, {
7
+ charge: sessionCharge_,
8
+ settle: settle_,
9
+ settleBatch: settleBatch_,
10
+ });
11
+ function createSessionLegacyMethod(parameters) {
12
+ return Object.assign(sessionLegacy_(parameters), { alias: 'sessionLegacy' });
13
+ }
14
+ const sessionLegacyServer = Object.assign(createSessionLegacyMethod, {
15
+ settle: settleLegacy_,
16
+ Ws: Ws_,
17
+ });
18
+ /** Creates a legacy contract-backed Tempo `session` server method. */
19
+ export const sessionLegacy = sessionLegacyServer;
20
+ /** Settles a legacy contract-backed Tempo session channel. */
21
+ export const settleLegacy = settleLegacy_;
22
+ function createChargeMethod(parameters) {
23
+ // `tempo()` accepts the intersection of charge/session parameters, then
24
+ // forwards only the fields each method understands. Keep the generic bridge
25
+ // out of the public control-flow body.
26
+ return tempo.charge(parameters);
27
+ }
28
+ function createSessionMethod(parameters) {
29
+ // See `createChargeMethod()`: session receives the same shared parameter bag.
30
+ return sessionServer(parameters);
31
+ }
5
32
  /**
6
- * Creates both Tempo `charge` and `session` methods from shared parameters.
33
+ * Creates the common Tempo `charge` and `session` methods from shared parameters.
7
34
  *
8
35
  * @example
9
36
  * ```ts
10
37
  * import { Mppx, tempo } from 'mppx/server'
11
38
  *
12
39
  * const mppx = Mppx.create({
13
- * methods: [tempo({ currency: '0x...', recipient: '0x...' })],
40
+ * methods: [tempo.common({ currency: '0x...', recipient: '0x...' })],
14
41
  * })
15
42
  * ```
16
43
  */
17
44
  export function tempo(parameters) {
18
- return [
19
- tempo.charge(parameters),
20
- tempo.session(parameters),
21
- ];
45
+ return [createChargeMethod(parameters), createSessionMethod(parameters)];
22
46
  }
23
47
  (function (tempo) {
24
48
  /** Creates a Tempo `charge` method for one-time TIP-20 token transfers. */
25
49
  tempo.charge = charge_;
26
- /** Creates a Tempo `session` method for session-based TIP-20 token payments. */
27
- tempo.session = session_;
50
+ /** Creates the common Tempo `charge` and `session` methods from shared parameters. */
51
+ tempo.common = tempo;
52
+ /** Creates a TIP-1034 Tempo `session` method for session-based TIP-20 token payments. */
53
+ tempo.session = sessionServer;
54
+ /** @deprecated Use `tempo.session()` for the TIP-1034 session server method. */
55
+ tempo.sessionLegacy = sessionLegacyServer;
28
56
  /** Creates a Tempo `subscription` method for recurring TIP-20 token payments. */
29
57
  tempo.subscription = subscription_;
30
58
  /** Renews an overdue Tempo subscription outside of the HTTP request path. */
31
59
  tempo.renewSubscription = renewSubscription_;
32
60
  /** One-shot settle: reads highest voucher from storage and submits on-chain. */
33
61
  tempo.settle = settle_;
62
+ /** Batch-settle precompile-backed session channels. */
63
+ tempo.settleBatch = settleBatch_;
34
64
  /** Experimental websocket helpers for Tempo sessions. */
35
65
  tempo.Ws = Ws_;
36
66
  })(tempo || (tempo = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAA4C,UAAuB;IACtF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,UAAyC,CAAC;QACvD,KAAK,CAAC,OAAO,CAAC,UAA0C,CAAC;KACjD,CAAA;AACZ,CAAC;AAED,WAAiB,KAAK;IAGpB,2EAA2E;IAC9D,YAAM,GAAG,OAAO,CAAA;IAC7B,gFAAgF;IACnE,aAAO,GAAG,QAAQ,CAAA;IAC/B,iFAAiF;IACpE,kBAAY,GAAG,aAAa,CAAA;IACzC,6EAA6E;IAChE,uBAAiB,GAAG,kBAAkB,CAAA;IACnD,gFAAgF;IACnE,YAAM,GAAG,OAAO,CAAA;IAC7B,yDAAyD;IAC5C,QAAE,GAAG,GAAG,CAAA;AACvB,CAAC,EAfgB,KAAK,KAAL,KAAK,QAerB"}
1
+ {"version":3,"file":"Methods.js","sourceRoot":"","sources":["../../../src/tempo/server/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9F,OAAO,EACL,MAAM,IAAI,cAAc,EACxB,OAAO,IAAI,QAAQ,EACnB,MAAM,IAAI,OAAO,EACjB,WAAW,IAAI,YAAY,GAC5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,KAAK,IAAI,kBAAkB,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE9F,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,YAAY;CAC1B,CAAC,CAAA;AAEF,SAAS,yBAAyB,CAEhC,UAAuB;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAmB,CAAC,EAAE,EAAE,KAAK,EAAE,eAAwB,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE;IACnE,MAAM,EAAE,aAAa;IACrB,EAAE,EAAE,GAAG;CACR,CAAC,CAAA;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAEhD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAA;AAEzC,SAAS,kBAAkB,CACzB,UAAkC;IAElC,wEAAwE;IACxE,4EAA4E;IAC5E,uCAAuC;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAgC,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAkC;IAElC,8EAA8E;IAC9E,OAAO,aAAa,CAAC,UAAiC,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAA4C,UAAuB;IACtF,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAU,CAAA;AACnF,CAAC;AAED,WAAiB,KAAK;IAGpB,2EAA2E;IAC9D,YAAM,GAAG,OAAO,CAAA;IAC7B,sFAAsF;IACzE,YAAM,GAAG,KAAK,CAAA;IAC3B,yFAAyF;IAC5E,aAAO,GAAG,aAAa,CAAA;IACpC,gFAAgF;IACnE,mBAAa,GAAG,mBAAmB,CAAA;IAChD,iFAAiF;IACpE,kBAAY,GAAG,aAAa,CAAA;IACzC,6EAA6E;IAChE,uBAAiB,GAAG,kBAAkB,CAAA;IACnD,gFAAgF;IACnE,YAAM,GAAG,OAAO,CAAA;IAC7B,uDAAuD;IAC1C,iBAAW,GAAG,YAAY,CAAA;IACvC,yDAAyD;IAC5C,QAAE,GAAG,GAAG,CAAA;AACvB,CAAC,EArBgB,KAAK,KAAL,KAAK,QAqBrB"}
@@ -102,7 +102,7 @@ export declare function subscription<const parameters extends subscription.Param
102
102
  } | undefined;
103
103
  }>>;
104
104
  };
105
- }, subscription.DeriveDefaults<parameters>, undefined, subscription.Extensions>;
105
+ }, subscription.DeriveDefaults<parameters>, undefined, subscription.Extensions, undefined>;
106
106
  /**
107
107
  * Renews an overdue subscription outside of the HTTP request path.
108
108
  * Intended for cron jobs or background workers that bill subscriptions on a schedule.
@@ -181,6 +181,11 @@ export declare namespace subscription {
181
181
  * Keeps concurrent renewal safe while allowing recovery from abandoned attempts.
182
182
  */
183
183
  renewalTimeoutMs?: number | undefined;
184
+ /**
185
+ * Requires a fresh subscription Credential even when a subscription is active.
186
+ * This binds access reuse to the stored payer instead of trusting request metadata alone.
187
+ */
188
+ requireCredential?: boolean | undefined;
184
189
  /**
185
190
  * Override the fee-payer policy for sponsored subscription payments.
186
191
  * Useful when the access key + key authorization tx requires more gas
@@ -223,6 +228,11 @@ export declare namespace subscription {
223
228
  resolve: (parameters: {
224
229
  input: Request;
225
230
  request: SubscriptionRequest;
231
+ /** Verified payer identity recovered from a signed subscription credential. */
232
+ source?: {
233
+ address: Address;
234
+ chainId: number;
235
+ } | undefined;
226
236
  }) => MaybePromise<ResolvedSubscription | null>;
227
237
  renew?: (parameters: {
228
238
  /** Stable idempotency/reconciliation reference persisted before the renewal hook runs. */
@@ -1 +1 @@
1
- {"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Subscription.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,OAAO,EAA6B,MAAM,MAAM,CAAA;AAYlG,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAGnD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAEpD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAQxC,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,IAAI,wBAAwB,EAChD,MAAM,0BAA0B,CAAA;AAEjC,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAGvF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,UAAU,SAAS,YAAY,CAAC,UAAU,EAC3E,CAAC,EAAE,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gFAqQpD;AAolBD;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAYtF;AA4CD,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,gFAAgF;IAChF,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,GAC1C,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG;QAC9B,iCAAiC;QACjC,cAAc,EAAE,MAAM,CAAA;QACtB,sFAAsF;QACtF,KAAK,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACxC,6CAA6C;QAC7C,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACjD;;;WAGG;QACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACrC;;;WAGG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACrD,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,CAAA;IAEH,gDAAgD;IAChD,KAAK,MAAM,GAAG,YAAY,CAAC,aAAa,CAAA;CACzC;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,sEAAsE;IACtE,KAAK,oBAAoB,GAAG,kBAAkB,CAAA;IAE9C,2EAA2E;IAC3E,KAAK,gBAAgB,GAAG;QACtB,OAAO,EAAE,wBAAwB,CAAA;QACjC,YAAY,EAAE,kBAAkB,CAAA;KACjC,CAAA;IAED,uEAAuE;IACvE,KAAK,aAAa,GAAG;QACnB,OAAO,EAAE,wBAAwB,CAAA;QACjC,YAAY,EAAE,kBAAkB,CAAA;KACjC,CAAA;IAED,sFAAsF;IACtF,KAAK,eAAe,GAAG;QACrB,iCAAiC;QACjC,cAAc,EAAE,MAAM,CAAA;QACtB;;;WAGG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACrD,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,CAAA;IAED,gEAAgE;IAChE,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;KACrE,CAAA;IAED,6DAA6D;IAC7D,KAAK,QAAQ,GAAG,SAAS,CACvB,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,YAAY,CAAC,EACnD,WAAW,GAAG,WAAW,CAC1B,CAAA;IAED,8DAA8D;IAC9D,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,GAC1C,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG;QAC9B,SAAS,CAAC,EACN,CAAC,CAAC,UAAU,EAAE;YACZ,KAAK,EAAE,OAAO,CAAA;YACd,OAAO,EAAE,mBAAmB,CAAA;YAC5B,QAAQ,EAAE,oBAAoB,CAAA;SAC/B,KAAK,YAAY,CAAC,qBAAqB,CAAC,CAAC,GAC1C,SAAS,CAAA;QACb;;;WAGG;QACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACxC;;;WAGG;QACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACrC;;;;WAIG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACrD,QAAQ,CAAC,EACL,CAAC,CAAC,UAAU,EAAE;YACZ,uFAAuF;YACvF,SAAS,EAAE,qBAAqB,CAAA;YAChC,UAAU,EAAE;gBACV,OAAO,EAAE,6BAA6B,CAAA;gBACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;aAC5B,CAAA;YACD,KAAK,EAAE,OAAO,CAAA;YACd,OAAO,EAAE,mBAAmB,CAAA;YAC5B,QAAQ,EAAE,oBAAoB,CAAA;YAC9B,MAAM,EAAE;gBAAE,OAAO,EAAE,OAAO,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAA;SACrD,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAChC,SAAS,CAAA;QACb,KAAK,CAAC,EACF;YACE,SAAS,CAAC,EACN,CAAC,CAAC,UAAU,EAAE;gBACZ,OAAO,EAAE,wBAAwB,CAAA;gBACjC,YAAY,EAAE,kBAAkB,CAAA;aACjC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,GACzB,SAAS,CAAA;YACb,OAAO,CAAC,EACJ,CAAC,CAAC,UAAU,EAAE;gBACZ,WAAW,EAAE,MAAM,CAAA;gBACnB,OAAO,EAAE,wBAAwB,CAAA;gBACjC,YAAY,EAAE,kBAAkB,CAAA;aACjC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,GACzB,SAAS,CAAA;SACd,GACD,SAAS,CAAA;QACb,WAAW,CAAC,EAAE,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAA;QAC9D,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAA;QAC/C;;;;WAIG;QACH,OAAO,EAAE,CAAC,UAAU,EAAE;YACpB,KAAK,EAAE,OAAO,CAAA;YACd,OAAO,EAAE,mBAAmB,CAAA;SAC7B,KAAK,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;QAC/C,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE;YACnB,0FAA0F;YAC1F,iBAAiB,EAAE,MAAM,CAAA;YACzB,WAAW,EAAE,MAAM,CAAA;YACnB,sGAAsG;YACtG,YAAY,EAAE,kBAAkB,CAAA;SACjC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;QAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAA;QAC9D;;;;WAIG;QACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,GAAG,QAAQ,CAAA;IAEd,0EAA0E;IAC1E,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF"}
1
+ {"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Subscription.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Base64 } from 'ox';
2
2
  import { KeyAuthorization } from 'ox/tempo';
3
- import { encodeFunctionData, isAddressEqual } from 'viem';
3
+ import { encodeFunctionData, isAddressEqual, parseEventLogs, } from 'viem';
4
4
  import { call as viem_call, prepareTransactionRequest, sendRawTransaction, sendRawTransactionSync, signTransaction, } from 'viem/actions';
5
5
  import { Abis, Account as TempoAccount, Transaction } from 'viem/tempo';
6
6
  import { tempo as tempo_chain } from 'viem/tempo/chains';
@@ -64,6 +64,8 @@ export function subscription(p) {
64
64
  }),
65
65
  },
66
66
  async authorize({ input, request }) {
67
+ if (parameters.requireCredential)
68
+ return undefined;
67
69
  const resolved = await parameters.resolve({ input, request });
68
70
  if (!resolved)
69
71
  return undefined;
@@ -132,15 +134,19 @@ export function subscription(p) {
132
134
  const input = requestFromCaptured(capturedRequest);
133
135
  const resolved = await parameters.resolve({ input, request: parsedRequest });
134
136
  const existing = resolved ? await store.getByKey(resolved.key) : null;
135
- const accessKey = resolved && !credential
136
- ? await resolveChallengeAccessKey({
137
- existing,
138
- input,
139
- parameters,
140
- request: parsedRequest,
141
- resolved,
142
- store,
143
- })
137
+ const accessKey = !credential
138
+ ? resolved
139
+ ? await resolveChallengeAccessKey({
140
+ existing,
141
+ input,
142
+ parameters,
143
+ request: parsedRequest,
144
+ resolved,
145
+ store,
146
+ })
147
+ : parameters.requireCredential && !parameters.activate
148
+ ? await createUnboundChallengeAccessKey({ store })
149
+ : undefined
144
150
  : (credentialRequest?.methodDetails?.accessKey ?? parsedRequest.methodDetails?.accessKey);
145
151
  if (!accessKey) {
146
152
  throw new VerificationFailedError({ reason: 'subscription accessKey is missing' });
@@ -164,14 +170,16 @@ export function subscription(p) {
164
170
  challengeExpires: credential.challenge.expires,
165
171
  request: parsedRequest,
166
172
  });
167
- const resolved = await parameters.resolve({ input, request: parsedRequest });
168
- if (!resolved) {
169
- throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
170
- }
171
173
  const challengeRequest = credential.challenge.request;
172
- const accessKey = challengeRequest.methodDetails?.accessKey ??
173
- parsedRequest.methodDetails?.accessKey ??
174
- (await resolveAccessKey({ input, parameters, request: parsedRequest, resolved }));
174
+ let resolved = null;
175
+ let accessKey = challengeRequest.methodDetails?.accessKey ?? parsedRequest.methodDetails?.accessKey;
176
+ if (!accessKey) {
177
+ resolved = await parameters.resolve({ input, request: parsedRequest });
178
+ if (!resolved) {
179
+ throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
180
+ }
181
+ accessKey = await resolveAccessKey({ input, parameters, request: parsedRequest, resolved });
182
+ }
175
183
  if (!accessKey) {
176
184
  throw new VerificationFailedError({ reason: 'subscription accessKey is missing' });
177
185
  }
@@ -189,9 +197,17 @@ export function subscription(p) {
189
197
  reason: 'credential source does not match signature',
190
198
  });
191
199
  }
200
+ resolved =
201
+ (await parameters.resolve({ input, request: parsedRequest, source: verified.source })) ??
202
+ resolved;
203
+ if (!resolved) {
204
+ throw new VerificationFailedError({ reason: 'subscription could not be resolved' });
205
+ }
192
206
  const activation = await store.activate({
193
207
  challengeId: credential.challenge.id,
194
- isReusable: (subscription) => isReusableSubscription(subscription, parsedRequest),
208
+ isReusable: (subscription) => parameters.requireCredential
209
+ ? isActiveSubscriptionForRequest(subscription, parsedRequest)
210
+ : isReusableSubscription(subscription, parsedRequest),
195
211
  lookupKey: resolved.key,
196
212
  async create() {
197
213
  const activation = withSubscriptionAccessKey(await activateSubscription({
@@ -235,7 +251,46 @@ export function subscription(p) {
235
251
  throw new VerificationFailedError({ reason: 'subscription activation claim mismatch' });
236
252
  }
237
253
  if (activation.status === 'existing') {
238
- return SubscriptionReceipt.fromRecord(activation.subscription);
254
+ const subscription = activation.subscription;
255
+ assertSubscriptionPayer(subscription, verified.source, {
256
+ required: parameters.requireCredential,
257
+ });
258
+ const periodIndex = getPeriodIndex(subscription);
259
+ if (periodIndex > subscription.lastChargedPeriod) {
260
+ const renew = resolveRenewalHandler({
261
+ feePayer,
262
+ feePayerPolicy,
263
+ getClient,
264
+ parameters,
265
+ store,
266
+ subscription,
267
+ waitForConfirmation,
268
+ });
269
+ if (!renew) {
270
+ throw new VerificationFailedError({ reason: 'subscription renewal is required' });
271
+ }
272
+ const renewal = await settleRenewal({
273
+ expectedLookupKey: resolved.key,
274
+ periodIndex,
275
+ renew,
276
+ request: parsedRequest,
277
+ store,
278
+ subscription,
279
+ });
280
+ if (!renewal) {
281
+ throw new VerificationFailedError({ reason: 'subscription renewal failed' });
282
+ }
283
+ if (renewal.status === 'charged' || renewal.status === 'inFlight') {
284
+ return renewal.receipt;
285
+ }
286
+ await parameters.hooks?.renewed?.({
287
+ periodIndex,
288
+ receipt: renewal.result.receipt,
289
+ subscription: renewal.result.subscription,
290
+ });
291
+ return renewal.result.receipt;
292
+ }
293
+ return SubscriptionReceipt.fromRecord(subscription);
239
294
  }
240
295
  await parameters.hooks?.activated?.({
241
296
  receipt: activation.result.receipt,
@@ -285,6 +340,13 @@ async function resolveChallengeAccessKey(parameters) {
285
340
  return ((await resolveAccessKey({ input, parameters: subscriptionParameters, request, resolved })) ??
286
341
  (existing && isActive(existing) ? existing.accessKey : undefined));
287
342
  }
343
+ async function createUnboundChallengeAccessKey(parameters) {
344
+ const accessKey = await parameters.store.getOrCreateAccessKey(`challenge:${createSubscriptionId()}`);
345
+ return {
346
+ accessKeyAddress: accessKey.accessKeyAddress,
347
+ keyType: accessKey.keyType,
348
+ };
349
+ }
288
350
  async function activateSubscription(parameters) {
289
351
  const { accessKey, auto, credential, input, parameters: subscriptionParameters, request, resolved, source, } = parameters;
290
352
  if (subscriptionParameters.activate) {
@@ -414,16 +476,30 @@ function isActive(subscription) {
414
476
  return false;
415
477
  return new Date(subscription.subscriptionExpires).getTime() > Date.now();
416
478
  }
479
+ function isActiveSubscriptionForRequest(subscription, request) {
480
+ return isActive(subscription) && subscriptionMatchesRequest(subscription, request);
481
+ }
417
482
  function isReusableSubscription(subscription, request) {
418
- return (isActive(subscription) &&
419
- getPeriodIndex(subscription) <= subscription.lastChargedPeriod &&
420
- subscriptionMatchesRequest(subscription, request));
483
+ return (isActiveSubscriptionForRequest(subscription, request) &&
484
+ getPeriodIndex(subscription) <= subscription.lastChargedPeriod);
421
485
  }
422
486
  function subscriptionMatchesRequest(subscription, request) {
423
487
  const actual = comparableSubscriptionBinding(subscription);
424
488
  const expected = comparableSubscriptionBinding(request);
425
489
  return Object.keys(expected).every((key) => actual[key] === expected[key]);
426
490
  }
491
+ function assertSubscriptionPayer(subscription, source, options) {
492
+ if (!subscription.payer) {
493
+ if (options?.required) {
494
+ throw new VerificationFailedError({ reason: 'subscription payer is missing' });
495
+ }
496
+ return;
497
+ }
498
+ if (subscription.payer.chainId !== source.chainId ||
499
+ !isAddressEqual(subscription.payer.address, source.address)) {
500
+ throw new VerificationFailedError({ reason: 'subscription payer mismatch' });
501
+ }
502
+ }
427
503
  function comparableSubscriptionBinding(value) {
428
504
  const chainId = 'chainId' in value ? value.chainId : value.methodDetails?.chainId;
429
505
  return {
@@ -558,7 +634,8 @@ function resolveRenewalHandler(parameters) {
558
634
  }
559
635
  async function submitSubscriptionPayment(parameters) {
560
636
  const { accessKey, feePayer, feePayerPolicy, getClient, keyAuthorization, lookupKey, request, settlementReference, source, store, waitForConfirmation, } = parameters;
561
- const stored = await store.getAccessKey(lookupKey);
637
+ const stored = (await store.getAccessKey(lookupKey)) ??
638
+ (await store.getAccessKeyByAddress(accessKey.accessKeyAddress));
562
639
  if (!stored) {
563
640
  throw new VerificationFailedError({ reason: 'subscription access key is missing' });
564
641
  }
@@ -633,6 +710,8 @@ async function submitSubscriptionPayment(parameters) {
633
710
  feePayerSignature: undefined,
634
711
  });
635
712
  if (!waitForConfirmation) {
713
+ // Optimistic mode has no receipt to inspect, so it cannot detect a T6
714
+ // (TIP-1028) held transfer. Use `waitForConfirmation: true` for T6-safe proof.
636
715
  return sendRawTransaction(client, {
637
716
  serializedTransaction: serializedTransaction,
638
717
  });
@@ -645,8 +724,41 @@ async function submitSubscriptionPayment(parameters) {
645
724
  reason: `subscription transaction reverted: ${receipt.transactionHash}`,
646
725
  });
647
726
  }
727
+ assertSubscriptionTransfer(receipt, {
728
+ amount: BigInt(request.amount),
729
+ currency: request.currency,
730
+ memo,
731
+ recipient: request.recipient,
732
+ });
648
733
  return receipt.transactionHash;
649
734
  }
735
+ /**
736
+ * Asserts a confirmed subscription payment credited the recipient.
737
+ *
738
+ * Transaction success alone is not proof: under Tempo T6 (TIP-1028) a recipient
739
+ * receive policy can hold the funds in `ReceivePolicyGuard` while the tx still
740
+ * succeeds. Settlement always emits one `transferWithMemo(recipient, amount,
741
+ * memo)`, so this requires a matching `TransferWithMemo` log on the expected
742
+ * token. A held transfer fails because its `to` is the guard, and the memo
743
+ * binding excludes unrelated transfer effects in the same receipt.
744
+ */
745
+ function assertSubscriptionTransfer(receipt, parameters) {
746
+ const { amount, currency, memo, recipient } = parameters;
747
+ const credited = parseEventLogs({
748
+ abi: Abis.tip20,
749
+ eventName: 'TransferWithMemo',
750
+ logs: receipt.logs,
751
+ }).some((log) => isAddressEqual(log.address, currency) &&
752
+ isAddressEqual(log.args.to, recipient) &&
753
+ log.args.amount === amount &&
754
+ log.args.memo.toLowerCase() === memo.toLowerCase());
755
+ if (!credited) {
756
+ throw new VerificationFailedError({
757
+ reason: `subscription transfer was not credited to the recipient ` +
758
+ `(funds may have been held by a receive policy): ${receipt.transactionHash}`,
759
+ });
760
+ }
761
+ }
650
762
  function createSubscriptionId() {
651
763
  const bytes = new Uint8Array(18);
652
764
  globalThis.crypto.getRandomValues(bytes);