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
@@ -0,0 +1,185 @@
1
+ import { type Account as viem_Account, type Address, type Hex } from 'viem';
2
+ import type * as Credential from '../../../Credential.js';
3
+ import type * as Method from '../../../Method.js';
4
+ import * as Store from '../../../Store.js';
5
+ import type * as FeePayer from '../../internal/fee-payer.js';
6
+ import * as Chain from '../precompile/Chain.js';
7
+ import { type SessionCredentialPayload, type SessionReceipt } from '../precompile/Protocol.js';
8
+ import * as ChannelStore from './ChannelStore.js';
9
+ /** Fee-payer parameter accepted by the server session method. */
10
+ export type ParameterFeePayer = viem_Account | string | true | undefined;
11
+ /** Minimum method details needed to decide credential-time fee sponsorship. */
12
+ export type CredentialFeePayerMethodDetails = {
13
+ /** Whether the challenge advertised fee-payer support. */
14
+ feePayer?: boolean | undefined;
15
+ };
16
+ /** Inputs used to resolve request-time fee sponsorship policy. */
17
+ export type ResolveRequestFeePayerParameters = {
18
+ /** Incoming credential, present for verification/management requests. */
19
+ credential: Credential.Credential | null | undefined;
20
+ /** Default fee-payer account resolved from server parameters. */
21
+ defaultFeePayer?: viem_Account | undefined;
22
+ /** Server-level fee-payer parameter. */
23
+ parameterFeePayer?: ParameterFeePayer;
24
+ /** Per-request fee-payer override. */
25
+ requestFeePayer?: boolean | viem_Account | undefined;
26
+ };
27
+ /** Inputs used to resolve credential-time fee sponsorship account. */
28
+ export type ResolveCredentialFeePayerParameters = {
29
+ /** Request object being verified. */
30
+ request: unknown;
31
+ /** Challenge method details echoed by the credential. */
32
+ methodDetails: CredentialFeePayerMethodDetails;
33
+ /** Default fee-payer account resolved from server parameters. */
34
+ feePayer?: viem_Account | undefined;
35
+ };
36
+ /** Fee-payer value read from an untrusted credential challenge request. */
37
+ export type RequestFeePayerValue = boolean | viem_Account | undefined;
38
+ /** Reads the optional `feePayer` field from an untrusted request object. */
39
+ export declare function readRequestFeePayer(value: unknown): RequestFeePayerValue;
40
+ /** Resolves whether a challenge should advertise fee sponsorship or a credential can use it. */
41
+ export declare function resolveRequestFeePayer(parameters: ResolveRequestFeePayerParameters): boolean | viem_Account | undefined;
42
+ /** Resolves the fee-payer account allowed for an incoming credential. */
43
+ export declare function resolveCredentialFeePayer(parameters: ResolveCredentialFeePayerParameters): viem_Account | undefined;
44
+ /** Declarative server-side settlement cadence for automatic session settlement. */
45
+ export type SettlementSchedule = {
46
+ /** Settle after this many additional paid units since the previous scheduled settlement. */
47
+ units?: number | undefined;
48
+ /** Settle after this much additional settlement amount since the previous scheduled settlement. */
49
+ amount?: string | bigint | undefined;
50
+ /** Settle after this many milliseconds since the previous scheduled settlement. */
51
+ intervalMs?: number | undefined;
52
+ };
53
+ /** Settlement schedule normalized into raw token units. */
54
+ export type ResolvedSettlementSchedule = {
55
+ /** Raw token amount threshold. */
56
+ amount?: bigint | undefined;
57
+ /** Elapsed-time threshold since previous settlement. */
58
+ intervalMs?: number | undefined;
59
+ /** Paid unit threshold. */
60
+ units?: number | undefined;
61
+ };
62
+ /** Progress counters compared against a server-owned settlement schedule. */
63
+ export type SettlementProgress = {
64
+ /** Additional raw spend since the previous scheduled settlement boundary. */
65
+ amount: bigint;
66
+ /** Milliseconds elapsed since the previous scheduled settlement boundary. */
67
+ elapsedMs?: number | undefined;
68
+ /** Additional paid units since the previous scheduled settlement boundary. */
69
+ units: number;
70
+ };
71
+ /** Inputs used to mark a channel after automatic scheduled settlement succeeds. */
72
+ export type MarkSettlementCompleteParameters = {
73
+ channelId: ChannelStore.State['channelId'];
74
+ settledAt?: string | undefined;
75
+ store: ChannelStore.ChannelStore;
76
+ };
77
+ /** Converts a public settlement schedule into raw-unit thresholds. */
78
+ export declare function resolveSettlementSchedule(schedule: SettlementSchedule | undefined, decimals: number): ResolvedSettlementSchedule | undefined;
79
+ /**
80
+ * Computes the schedule progress for an unsettled precompile-backed channel.
81
+ *
82
+ * Returns `undefined` for channels that cannot be scheduled: non-precompile
83
+ * records, channels without an accepted voucher, or channels with no unsettled
84
+ * voucher amount.
85
+ */
86
+ export declare function resolveSettlementProgress(channel: ChannelStore.State): SettlementProgress | undefined;
87
+ /** Returns whether the precompile channel has crossed any configured settlement threshold. */
88
+ export declare function isSettlementDue(channel: ChannelStore.State, schedule: ResolvedSettlementSchedule | undefined): boolean;
89
+ /** Records the channel spend/unit counters that a scheduled settlement captured. */
90
+ export declare function markSettlementComplete(parameters: MarkSettlementCompleteParameters): Promise<void>;
91
+ /** Callback used by post-verification accounting to deduct spend from a channel. */
92
+ export type ChargeSessionChannel = (channelId: Hex, amount: bigint) => Promise<ChannelStore.State>;
93
+ /** Callback used by post-verification accounting to run server-owned settlement policy. */
94
+ export type SettleChargedSessionChannel = (channel: ChannelStore.State) => Promise<Hex | undefined>;
95
+ /** Inputs for charging a precompile-backed session channel. */
96
+ export type ChargeParameters = {
97
+ /** Server-side channel store. */
98
+ store: ChannelStore.ChannelStore;
99
+ /** Channel ID to deduct from. */
100
+ channelId: Hex;
101
+ /** Raw token amount to charge. */
102
+ amount: bigint;
103
+ };
104
+ /** Inputs used to apply default HTTP request/response accounting after credential verification. */
105
+ export type ApplyVerifiedHttpAccountingParameters = {
106
+ /** Captured request metadata from the verified envelope, when this is a request-backed flow. */
107
+ capturedRequest?: Method.CapturedRequest | undefined;
108
+ /** Deducts the configured request amount from channel spend. */
109
+ charge: ChargeSessionChannel;
110
+ /** Returns the raw request amount to deduct for one content response. Called only when charging. */
111
+ getRequestAmount: () => bigint;
112
+ /** Credential action that produced the receipt. Only open/voucher can pay for content. */
113
+ payloadAction: SessionCredentialPayload['action'];
114
+ /** Receipt returned by credential verification before content accounting. */
115
+ receipt: SessionReceipt;
116
+ /** Marks an SSE receipt whose first content unit was charged during verification. */
117
+ markPrepaidReceipt?: ((receipt: SessionReceipt) => SessionReceipt) | undefined;
118
+ /** Whether SSE transport is enabled. SSE accounting is stream-driven, not HTTP-response-driven. */
119
+ sseEnabled: boolean;
120
+ /** Runs optional server settlement policy after a successful content charge. */
121
+ settleCharged: SettleChargedSessionChannel;
122
+ };
123
+ /** Applies the default HTTP content charge after a session credential has been accepted. */
124
+ export declare function applyVerifiedHttpAccounting(parameters: ApplyVerifiedHttpAccountingParameters): Promise<SessionReceipt>;
125
+ /** Atomically deducts spend from a channel and maps store failures to typed session errors. */
126
+ export declare function chargeSessionChannel(parameters: ChargeParameters): Promise<ChannelStore.State>;
127
+ /** Store accepted by public settlement controls. */
128
+ export type SessionStoreInput = Store.Store | ChannelStore.ChannelStore;
129
+ /** Inputs used to validate who may submit payee-side settlement transactions. */
130
+ export type SettlementSenderParameters = {
131
+ channelId: Hex;
132
+ operation: 'close' | 'settle';
133
+ operator: Address;
134
+ payee: Address;
135
+ sender: Address | undefined;
136
+ };
137
+ /** Options for server-driven precompile settlement transactions. */
138
+ export type SettlementTransactionOptions = {
139
+ /** Account used to send the settlement transaction. Defaults to the viem client account. */
140
+ account?: viem_Account | undefined;
141
+ /** Candidate fee tokens for sponsored settlement. Defaults to the channel token. */
142
+ candidateFeeTokens?: readonly Address[] | undefined;
143
+ /** TIP20EscrowChannel precompile address override. */
144
+ escrowContract?: Address | undefined;
145
+ /** Optional fee-payer account for sponsored settlement. */
146
+ feePayer?: viem_Account | undefined;
147
+ /** Optional policy for sponsored settlement. */
148
+ feePayerPolicy?: Partial<FeePayer.Policy> | undefined;
149
+ /** Optional fee token override for settlement. */
150
+ feeToken?: Address | undefined;
151
+ };
152
+ /** Inputs for applying a server-owned automatic settlement schedule. */
153
+ export type MaybeSettleScheduledParameters = {
154
+ /** Account used to send the settlement transaction. */
155
+ account?: viem_Account | undefined;
156
+ /** Channel that was just charged. */
157
+ channel: ChannelStore.State;
158
+ /** viem client used to settle on-chain. */
159
+ client: Chain.TransactionClient;
160
+ /** Optional fee-payer account for sponsored settlement. */
161
+ feePayer?: viem_Account | undefined;
162
+ /** Optional policy for sponsored settlement. */
163
+ feePayerPolicy?: Partial<FeePayer.Policy> | undefined;
164
+ /** Optional fee token override for settlement. */
165
+ feeToken?: Address | undefined;
166
+ /** Resolved server-owned settlement cadence. */
167
+ schedule: ResolvedSettlementSchedule | undefined;
168
+ /** Server-side channel store. */
169
+ store: ChannelStore.ChannelStore;
170
+ };
171
+ /** Resolves either a generic mppx store or an already-wrapped channel store. */
172
+ export declare function resolveChannelStore(store: SessionStoreInput): ChannelStore.ChannelStore;
173
+ /** Returns the account attached to a viem client, when one exists. */
174
+ export declare function getClientAccount(client: {
175
+ account?: viem_Account | undefined;
176
+ }): viem_Account | undefined;
177
+ /** Validates that the transaction sender is the channel payee or nonzero operator. */
178
+ export declare function assertSettlementSender(parameters: SettlementSenderParameters): void;
179
+ /** Applies automatic settlement when the server-owned schedule is due. */
180
+ export declare function maybeSettleScheduled(parameters: MaybeSettleScheduledParameters): Promise<Hex | undefined>;
181
+ /** Settles the highest accepted voucher for a precompile-backed session channel. */
182
+ export declare function settle(store_: SessionStoreInput, client: Chain.TransactionClient, channelId_: Hex, options?: SettlementTransactionOptions): Promise<Hex>;
183
+ /** Settles multiple precompile-backed session channels with the same validation as {@link settle}. */
184
+ export declare function settleBatch(store: SessionStoreInput, client: Chain.TransactionClient, channelIds: readonly Hex[], options?: SettlementTransactionOptions): Promise<Hex[]>;
185
+ //# sourceMappingURL=Settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settlement.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/server/Settlement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,252 @@
1
+ import { isAddress, isAddressEqual, parseUnits, zeroAddress, } from 'viem';
2
+ import { BadRequestError, ChannelClosedError, ChannelNotFoundError, InsufficientBalanceError, VerificationFailedError, } from '../../../Errors.js';
3
+ import { isSessionContentRequest } from '../../server/internal/request-body.js';
4
+ import * as Chain from '../precompile/Chain.js';
5
+ import { readSettledReceiptFields } from '../precompile/Chain.js';
6
+ import { uint96, } from '../precompile/Protocol.js';
7
+ import * as ChannelStore from './ChannelStore.js';
8
+ function isObject(value) {
9
+ return typeof value === 'object' && value !== null;
10
+ }
11
+ function isAccount(value) {
12
+ return isObject(value) && typeof value.address === 'string' && isAddress(value.address);
13
+ }
14
+ /** Reads the optional `feePayer` field from an untrusted request object. */
15
+ export function readRequestFeePayer(value) {
16
+ if (!isObject(value))
17
+ return undefined;
18
+ const feePayer = value.feePayer;
19
+ if (feePayer === undefined || typeof feePayer === 'boolean')
20
+ return feePayer;
21
+ if (isAccount(feePayer))
22
+ return feePayer;
23
+ return undefined;
24
+ }
25
+ /** Resolves whether a challenge should advertise fee sponsorship or a credential can use it. */
26
+ export function resolveRequestFeePayer(parameters) {
27
+ const { credential, defaultFeePayer, parameterFeePayer, requestFeePayer } = parameters;
28
+ if (requestFeePayer === false)
29
+ return credential ? false : undefined;
30
+ const account = typeof requestFeePayer === 'object' ? requestFeePayer : defaultFeePayer;
31
+ if (credential)
32
+ return account ?? undefined;
33
+ if (account || defaultFeePayer || parameterFeePayer === true)
34
+ return true;
35
+ return undefined;
36
+ }
37
+ /** Resolves the fee-payer account allowed for an incoming credential. */
38
+ export function resolveCredentialFeePayer(parameters) {
39
+ const { feePayer, methodDetails, request } = parameters;
40
+ const requestFeePayer = readRequestFeePayer(request);
41
+ const requestAllowsFeePayer = requestFeePayer === undefined || requestFeePayer === true || typeof requestFeePayer === 'object';
42
+ if (methodDetails.feePayer !== true || !requestAllowsFeePayer)
43
+ return undefined;
44
+ return typeof requestFeePayer === 'object' ? requestFeePayer : feePayer;
45
+ }
46
+ /** Converts a public settlement schedule into raw-unit thresholds. */
47
+ export function resolveSettlementSchedule(schedule, decimals) {
48
+ if (!schedule)
49
+ return undefined;
50
+ return {
51
+ ...(schedule.amount !== undefined && {
52
+ amount: typeof schedule.amount === 'bigint'
53
+ ? schedule.amount
54
+ : parseUnits(schedule.amount, decimals),
55
+ }),
56
+ ...(schedule.intervalMs !== undefined && { intervalMs: schedule.intervalMs }),
57
+ ...(schedule.units !== undefined && { units: schedule.units }),
58
+ };
59
+ }
60
+ /**
61
+ * Computes the schedule progress for an unsettled precompile-backed channel.
62
+ *
63
+ * Returns `undefined` for channels that cannot be scheduled: non-precompile
64
+ * records, channels without an accepted voucher, or channels with no unsettled
65
+ * voucher amount.
66
+ */
67
+ export function resolveSettlementProgress(channel) {
68
+ if (!ChannelStore.isPrecompileState(channel))
69
+ return undefined;
70
+ if (!channel.highestVoucher)
71
+ return undefined;
72
+ if (channel.highestVoucher.cumulativeAmount <= channel.settledOnChain)
73
+ return undefined;
74
+ const amountBoundary = channel.lastSettlementSpent ?? channel.settledOnChain;
75
+ const timestampBoundary = Date.parse(channel.lastSettlementAt ?? channel.createdAt);
76
+ return {
77
+ amount: channel.spent - amountBoundary,
78
+ ...(Number.isFinite(timestampBoundary) && {
79
+ elapsedMs: Date.now() - timestampBoundary,
80
+ }),
81
+ units: channel.units - (channel.lastSettlementUnits ?? 0),
82
+ };
83
+ }
84
+ /** Returns whether the precompile channel has crossed any configured settlement threshold. */
85
+ export function isSettlementDue(channel, schedule) {
86
+ if (!schedule)
87
+ return false;
88
+ const progress = resolveSettlementProgress(channel);
89
+ if (!progress)
90
+ return false;
91
+ if (schedule.units !== undefined && progress.units >= schedule.units)
92
+ return true;
93
+ if (schedule.amount !== undefined && progress.amount >= schedule.amount)
94
+ return true;
95
+ if (schedule.intervalMs !== undefined && (progress.elapsedMs ?? 0) >= schedule.intervalMs)
96
+ return true;
97
+ return false;
98
+ }
99
+ /** Records the channel spend/unit counters that a scheduled settlement captured. */
100
+ export async function markSettlementComplete(parameters) {
101
+ const { channelId, store, settledAt = new Date().toISOString() } = parameters;
102
+ await store.updateChannel(channelId, (current) => current
103
+ ? {
104
+ ...current,
105
+ lastSettlementAt: settledAt,
106
+ lastSettlementSpent: current.spent,
107
+ lastSettlementUnits: current.units,
108
+ }
109
+ : current);
110
+ }
111
+ /** Applies the default HTTP content charge after a session credential has been accepted. */
112
+ export async function applyVerifiedHttpAccounting(parameters) {
113
+ const { capturedRequest, payloadAction, receipt, sseEnabled } = parameters;
114
+ if (!capturedRequest)
115
+ return receipt;
116
+ if (payloadAction !== 'open' && payloadAction !== 'voucher')
117
+ return receipt;
118
+ if (sseEnabled && capturedRequest.method === 'POST')
119
+ return receipt;
120
+ if (!isSessionContentRequest(capturedRequest))
121
+ return receipt;
122
+ const requestAmount = parameters.getRequestAmount();
123
+ const charged = await parameters.charge(receipt.channelId, requestAmount);
124
+ const settlementTxHash = await parameters.settleCharged(charged);
125
+ const chargedReceipt = {
126
+ ...receipt,
127
+ spent: charged.spent.toString(),
128
+ units: charged.units,
129
+ ...(settlementTxHash ? { txHash: settlementTxHash } : {}),
130
+ };
131
+ return sseEnabled
132
+ ? (parameters.markPrepaidReceipt?.(chargedReceipt) ?? chargedReceipt)
133
+ : chargedReceipt;
134
+ }
135
+ /** Atomically deducts spend from a channel and maps store failures to typed session errors. */
136
+ export async function chargeSessionChannel(parameters) {
137
+ const { store, channelId, amount } = parameters;
138
+ let result;
139
+ try {
140
+ result = await ChannelStore.deductFromChannel(store, channelId, amount);
141
+ }
142
+ catch {
143
+ throw new ChannelClosedError({ reason: 'channel not found' });
144
+ }
145
+ if (!result.ok) {
146
+ if (result.channel.finalized)
147
+ throw new ChannelClosedError({ reason: 'channel is finalized' });
148
+ if (result.channel.closeRequestedAt !== 0n)
149
+ throw new ChannelClosedError({ reason: 'channel has a pending close request' });
150
+ const available = result.channel.highestVoucherAmount - result.channel.spent;
151
+ throw new InsufficientBalanceError({
152
+ reason: `requested ${amount}, available ${available}`,
153
+ });
154
+ }
155
+ return result.channel;
156
+ }
157
+ /** Resolves either a generic mppx store or an already-wrapped channel store. */
158
+ export function resolveChannelStore(store) {
159
+ return 'getChannel' in store ? store : ChannelStore.fromStore(store);
160
+ }
161
+ /** Returns the account attached to a viem client, when one exists. */
162
+ export function getClientAccount(client) {
163
+ return client.account;
164
+ }
165
+ /** Validates that the transaction sender is the channel payee or nonzero operator. */
166
+ export function assertSettlementSender(parameters) {
167
+ const { operation, channelId, operator, payee, sender } = parameters;
168
+ if (!sender)
169
+ throw new Error(`Cannot ${operation} precompile channel ${channelId}: no account available. Pass an account override, or provide a getClient() that returns an account-bearing client.`);
170
+ if (isAddressEqual(sender, payee))
171
+ return;
172
+ if (!isAddressEqual(operator, zeroAddress) && isAddressEqual(sender, operator))
173
+ return;
174
+ throw new BadRequestError({
175
+ reason: `Cannot ${operation} precompile channel ${channelId}: tx sender ${sender} is not the channel payee ${payee}` +
176
+ (isAddressEqual(operator, zeroAddress) ? '.' : ` or operator ${operator}.`) +
177
+ ' If using an access key, pass a Tempo access-key account whose address is the payee/operator wallet, not the raw delegated key address.',
178
+ });
179
+ }
180
+ /** Applies automatic settlement when the server-owned schedule is due. */
181
+ export async function maybeSettleScheduled(parameters) {
182
+ const { channel, schedule, store } = parameters;
183
+ if (!isSettlementDue(channel, schedule))
184
+ return undefined;
185
+ const txHash = await settle(store, parameters.client, channel.channelId, {
186
+ account: parameters.account,
187
+ ...(parameters.feePayer ? { feePayer: parameters.feePayer } : {}),
188
+ ...(parameters.feePayerPolicy ? { feePayerPolicy: parameters.feePayerPolicy } : {}),
189
+ ...(parameters.feeToken ? { feeToken: parameters.feeToken } : {}),
190
+ });
191
+ await markSettlementComplete({ channelId: channel.channelId, store });
192
+ return txHash;
193
+ }
194
+ /** Settles the highest accepted voucher for a precompile-backed session channel. */
195
+ export async function settle(store_, client, channelId_, options) {
196
+ const store = resolveChannelStore(store_);
197
+ const channelId = ChannelStore.normalizeChannelId(channelId_);
198
+ const channel = await store.getChannel(channelId);
199
+ if (!channel)
200
+ throw new ChannelNotFoundError({ reason: 'channel not found' });
201
+ if (!ChannelStore.isPrecompileState(channel))
202
+ throw new VerificationFailedError({ reason: 'channel is not precompile-backed' });
203
+ if (!channel.highestVoucher)
204
+ throw new VerificationFailedError({ reason: 'no voucher to settle' });
205
+ const escrow = options?.escrowContract ?? channel.escrowContract;
206
+ const account = options?.account ?? getClientAccount(client);
207
+ assertSettlementSender({
208
+ operation: 'settle',
209
+ channelId,
210
+ operator: channel.operator,
211
+ payee: channel.payee,
212
+ sender: account?.address,
213
+ });
214
+ const amount = uint96(channel.highestVoucher.cumulativeAmount);
215
+ const txHash = await Chain.settleOnChain(client, channel.descriptor, amount, channel.highestVoucher.signature, escrow, account
216
+ ? {
217
+ account,
218
+ ...(options?.feePayer ? { feePayer: options.feePayer } : {}),
219
+ ...(options?.feePayerPolicy ? { feePayerPolicy: options.feePayerPolicy } : {}),
220
+ ...(options?.feeToken ? { feeToken: options.feeToken } : {}),
221
+ candidateFeeTokens: options?.candidateFeeTokens ?? [channel.token],
222
+ }
223
+ : undefined);
224
+ const receipt = await Chain.waitForSuccessfulReceipt(client, txHash);
225
+ const settled = readSettledReceiptFields(Chain.getChannelEvent(receipt, 'Settled', channelId));
226
+ const { newSettled } = settled;
227
+ if (newSettled < amount)
228
+ throw new VerificationFailedError({ reason: 'Settled event is below voucher amount' });
229
+ const state = await Chain.getChannelState(client, channelId, escrow);
230
+ if (state.settled !== newSettled)
231
+ throw new VerificationFailedError({
232
+ reason: 'on-chain channel state does not match settle receipt',
233
+ });
234
+ await store.updateChannel(channelId, (current) => current
235
+ ? {
236
+ ...current,
237
+ settledOnChain: newSettled > current.settledOnChain ? newSettled : current.settledOnChain,
238
+ lastSettlementAt: new Date().toISOString(),
239
+ lastSettlementSpent: current.spent,
240
+ lastSettlementUnits: current.units,
241
+ }
242
+ : current);
243
+ return txHash;
244
+ }
245
+ /** Settles multiple precompile-backed session channels with the same validation as {@link settle}. */
246
+ export async function settleBatch(store, client, channelIds, options) {
247
+ const hashes = [];
248
+ for (const channelId of channelIds)
249
+ hashes.push(await settle(store, client, channelId, options));
250
+ return hashes;
251
+ }
252
+ //# sourceMappingURL=Settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Settlement.js","sourceRoot":"","sources":["../../../../src/tempo/session/server/Settlement.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import type { Hex } from 'viem';
2
+ import * as ChannelStore from './ChannelStore.js';
3
+ import { type SessionController } from './MeteredStream.js';
1
4
  /**
2
5
  * SSE (Server-Sent Events) utilities for metered streaming payments.
3
6
  *
@@ -6,62 +9,9 @@
6
9
  * of SSE events, and helpers (`toResponse`, `fromRequest`) for
7
10
  * building HTTP responses from the stream.
8
11
  */
9
- import type { Hex } from 'viem';
10
- import * as ChannelStore from './ChannelStore.js';
11
- import type { NeedVoucherEvent, SessionReceipt } from './Types.js';
12
- /**
13
- * Format a session receipt as a Server-Sent Event.
14
- *
15
- * Produces a valid SSE event string with `event: payment-receipt`
16
- * and the receipt JSON as the `data` field.
17
- */
18
- export declare function formatReceiptEvent(receipt: SessionReceipt): string;
19
- /**
20
- * Format a need-voucher event as a Server-Sent Event.
21
- *
22
- * Emitted when the channel balance is exhausted mid-stream.
23
- * The client responds by sending a new voucher credential to
24
- * any mppx-protected endpoint.
25
- */
26
- export declare function formatNeedVoucherEvent(params: NeedVoucherEvent): string;
27
- /**
28
- * Format an application message as SSE, preserving embedded newlines.
29
- *
30
- * SSE requires multi-line payloads to be emitted as separate `data:` fields.
31
- */
32
- export declare function formatMessageEvent(value: string): string;
33
- /**
34
- * Parsed SSE event (discriminated union by `type`).
35
- */
36
- export type SseEvent = {
37
- type: 'message';
38
- data: string;
39
- } | {
40
- type: 'payment-need-voucher';
41
- data: NeedVoucherEvent;
42
- } | {
43
- type: 'payment-receipt';
44
- data: SessionReceipt;
45
- };
46
- /**
47
- * Parse a raw SSE event string into a typed event.
48
- *
49
- * Handles the three event types used by mppx streaming:
50
- * - `message` (default / no event field) — application data
51
- * - `payment-need-voucher` — balance exhausted, client should send voucher
52
- * - `payment-receipt` — final receipt
53
- */
54
- export declare function parseEvent(raw: string): SseEvent | null;
55
- export type SessionController = {
56
- /**
57
- * Reserve voucher coverage for the next emitted chunk.
58
- *
59
- * The reservation blocks until sufficient voucher headroom exists, but the
60
- * charge is only committed once a chunk is actually emitted. If the stream
61
- * ends or aborts before that emission, the reservation is dropped.
62
- */
63
- charge(): Promise<void>;
64
- };
12
+ export { extractData, formatMessageEvent, formatNeedVoucherEvent, formatReceiptEvent, parseEvent, readSessionChallengeAmount, requireSessionCredentialContext, type SseEvent, } from '../precompile/Protocol.js';
13
+ /** Controller passed to manual-charge SSE generators. */
14
+ export type { SessionController } from './MeteredStream.js';
65
15
  /**
66
16
  * Wrap an async iterable with payment metering, producing an SSE stream.
67
17
  *
@@ -83,6 +33,7 @@ export type SessionController = {
83
33
  * Returns a `ReadableStream<Uint8Array>` suitable for use as an HTTP response body.
84
34
  */
85
35
  export declare function serve(options: serve.Options): ReadableStream<Uint8Array>;
36
+ /** Type helpers for {@link serve}. */
86
37
  export declare namespace serve {
87
38
  type Options = {
88
39
  store: ChannelStore.ChannelStore;
@@ -108,6 +59,7 @@ export declare function toResponse(body: ReadableStream<Uint8Array>): Response;
108
59
  * the parameters required by {@link serve}.
109
60
  */
110
61
  export declare function fromRequest(request: Request): fromRequest.Context;
62
+ /** Type helpers for {@link fromRequest}. */
111
63
  export declare namespace fromRequest {
112
64
  type Context = {
113
65
  challengeId: string;
@@ -141,6 +93,7 @@ export declare function isEventStream(response: Response): boolean;
141
93
  * ```
142
94
  */
143
95
  export declare function iterateData(response: Response, options?: iterateData.Options): AsyncGenerator<string>;
96
+ /** Type helpers for {@link iterateData}. */
144
97
  export declare namespace iterateData {
145
98
  type Options = {
146
99
  /** Predicate to skip specific data payloads (e.g. `d => d === '[DONE]'`). */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sse.d.ts","sourceRoot":"","sources":["../../../../src/tempo/session/server/Sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAa/B,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE1E;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,QAAQ,GACd,MAAM,2BAA2B,CAAA;AAElC,yDAAyD;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAsDxE;AAED,sCAAsC;AACtC,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,OAAO,GAAG;QACb,KAAK,EAAE,YAAY,CAAC,YAAY,CAAA;QAChC,SAAS,EAAE,GAAG,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,iBAAiB,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;QACxF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACnC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;KACjC,CAAA;CACF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,QAAQ,CAQrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAcjE;AAED,4CAA4C;AAC5C,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAK,OAAO,GAAG;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,GAAG,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAGzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAuB,WAAW,CAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,GAC5B,cAAc,CAAC,MAAM,CAAC,CAsCxB;AAED,4CAA4C;AAC5C,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAK,OAAO,GAAG;QACb,6EAA6E;QAC7E,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;KAC/C,CAAA;CACF"}