mppx 0.6.27 → 0.6.29

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 (295) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/Challenge.d.ts.map +1 -1
  3. package/dist/Challenge.js +16 -10
  4. package/dist/Challenge.js.map +1 -1
  5. package/dist/Method.d.ts +1 -1
  6. package/dist/Method.d.ts.map +1 -1
  7. package/dist/Store.d.ts +32 -9
  8. package/dist/Store.d.ts.map +1 -1
  9. package/dist/Store.js +42 -10
  10. package/dist/Store.js.map +1 -1
  11. package/dist/client/Methods.d.ts +1 -0
  12. package/dist/client/Methods.d.ts.map +1 -1
  13. package/dist/client/Methods.js +1 -0
  14. package/dist/client/Methods.js.map +1 -1
  15. package/dist/client/Mppx.d.ts +3 -3
  16. package/dist/client/Mppx.d.ts.map +1 -1
  17. package/dist/client/Mppx.js +1 -0
  18. package/dist/client/Mppx.js.map +1 -1
  19. package/dist/client/Transport.d.ts +10 -3
  20. package/dist/client/Transport.d.ts.map +1 -1
  21. package/dist/client/Transport.js +60 -7
  22. package/dist/client/Transport.js.map +1 -1
  23. package/dist/client/index.d.ts +1 -1
  24. package/dist/client/index.d.ts.map +1 -1
  25. package/dist/client/index.js +1 -1
  26. package/dist/client/index.js.map +1 -1
  27. package/dist/client/internal/Fetch.d.ts +3 -0
  28. package/dist/client/internal/Fetch.d.ts.map +1 -1
  29. package/dist/client/internal/Fetch.js +12 -20
  30. package/dist/client/internal/Fetch.js.map +1 -1
  31. package/dist/evm/Assets.d.ts +2 -0
  32. package/dist/evm/Assets.d.ts.map +1 -0
  33. package/dist/evm/Assets.js +2 -0
  34. package/dist/evm/Assets.js.map +1 -0
  35. package/dist/evm/Chains.d.ts +5 -0
  36. package/dist/evm/Chains.d.ts.map +1 -0
  37. package/dist/evm/Chains.js +5 -0
  38. package/dist/evm/Chains.js.map +1 -0
  39. package/dist/evm/Methods.d.ts +68 -0
  40. package/dist/evm/Methods.d.ts.map +1 -0
  41. package/dist/evm/Methods.js +28 -0
  42. package/dist/evm/Methods.js.map +1 -0
  43. package/dist/evm/Types.d.ts +143 -0
  44. package/dist/evm/Types.d.ts.map +1 -0
  45. package/dist/evm/Types.js +102 -0
  46. package/dist/evm/Types.js.map +1 -0
  47. package/dist/evm/client/Charge.d.ts +102 -0
  48. package/dist/evm/client/Charge.d.ts.map +1 -0
  49. package/dist/evm/client/Charge.js +141 -0
  50. package/dist/evm/client/Charge.js.map +1 -0
  51. package/dist/evm/client/Methods.d.ts +81 -0
  52. package/dist/evm/client/Methods.d.ts.map +1 -0
  53. package/dist/evm/client/Methods.js +16 -0
  54. package/dist/evm/client/Methods.js.map +1 -0
  55. package/dist/evm/client/index.d.ts +6 -0
  56. package/dist/evm/client/index.d.ts.map +1 -0
  57. package/dist/evm/client/index.js +6 -0
  58. package/dist/evm/client/index.js.map +1 -0
  59. package/dist/evm/index.d.ts +9 -0
  60. package/dist/evm/index.d.ts.map +1 -0
  61. package/dist/evm/index.js +8 -0
  62. package/dist/evm/index.js.map +1 -0
  63. package/dist/evm/server/Charge.d.ts +62 -0
  64. package/dist/evm/server/Charge.d.ts.map +1 -0
  65. package/dist/evm/server/Charge.js +172 -0
  66. package/dist/evm/server/Charge.js.map +1 -0
  67. package/dist/evm/server/Methods.d.ts +80 -0
  68. package/dist/evm/server/Methods.d.ts.map +1 -0
  69. package/dist/evm/server/Methods.js +16 -0
  70. package/dist/evm/server/Methods.js.map +1 -0
  71. package/dist/evm/server/index.d.ts +6 -0
  72. package/dist/evm/server/index.d.ts.map +1 -0
  73. package/dist/evm/server/index.js +6 -0
  74. package/dist/evm/server/index.js.map +1 -0
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -0
  78. package/dist/index.js.map +1 -1
  79. package/dist/internal/HeaderCodec.d.ts +18 -0
  80. package/dist/internal/HeaderCodec.d.ts.map +1 -0
  81. package/dist/internal/HeaderCodec.js +31 -0
  82. package/dist/internal/HeaderCodec.js.map +1 -0
  83. package/dist/middlewares/elysia.d.ts.map +1 -1
  84. package/dist/middlewares/elysia.js +2 -3
  85. package/dist/middlewares/elysia.js.map +1 -1
  86. package/dist/middlewares/express.js +2 -1
  87. package/dist/middlewares/express.js.map +1 -1
  88. package/dist/proxy/internal/Headers.d.ts +13 -1
  89. package/dist/proxy/internal/Headers.d.ts.map +1 -1
  90. package/dist/proxy/internal/Headers.js +25 -2
  91. package/dist/proxy/internal/Headers.js.map +1 -1
  92. package/dist/proxy/services/openai.d.ts.map +1 -1
  93. package/dist/proxy/services/openai.js +2 -0
  94. package/dist/proxy/services/openai.js.map +1 -1
  95. package/dist/server/Methods.d.ts +1 -0
  96. package/dist/server/Methods.d.ts.map +1 -1
  97. package/dist/server/Methods.js +1 -0
  98. package/dist/server/Methods.js.map +1 -1
  99. package/dist/server/Mppx.d.ts.map +1 -1
  100. package/dist/server/Mppx.js +90 -12
  101. package/dist/server/Mppx.js.map +1 -1
  102. package/dist/server/Transport.d.ts +10 -0
  103. package/dist/server/Transport.d.ts.map +1 -1
  104. package/dist/server/Transport.js +9 -0
  105. package/dist/server/Transport.js.map +1 -1
  106. package/dist/server/index.d.ts +1 -1
  107. package/dist/server/index.d.ts.map +1 -1
  108. package/dist/server/index.js +1 -1
  109. package/dist/server/index.js.map +1 -1
  110. package/dist/stripe/server/Charge.d.ts +31 -1
  111. package/dist/stripe/server/Charge.d.ts.map +1 -1
  112. package/dist/stripe/server/Charge.js +88 -11
  113. package/dist/stripe/server/Charge.js.map +1 -1
  114. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  115. package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
  116. package/dist/stripe/server/internal/html.gen.js +1 -1
  117. package/dist/stripe/server/internal/html.gen.js.map +1 -1
  118. package/dist/tempo/client/ChannelOps.d.ts +3 -3
  119. package/dist/tempo/client/ChannelOps.d.ts.map +1 -1
  120. package/dist/tempo/client/ChannelOps.js +13 -6
  121. package/dist/tempo/client/ChannelOps.js.map +1 -1
  122. package/dist/tempo/client/Charge.d.ts.map +1 -1
  123. package/dist/tempo/client/Charge.js +8 -5
  124. package/dist/tempo/client/Charge.js.map +1 -1
  125. package/dist/tempo/client/Methods.d.ts +0 -1
  126. package/dist/tempo/client/Methods.d.ts.map +1 -1
  127. package/dist/tempo/client/Session.d.ts +2 -4
  128. package/dist/tempo/client/Session.d.ts.map +1 -1
  129. package/dist/tempo/client/Session.js +10 -12
  130. package/dist/tempo/client/Session.js.map +1 -1
  131. package/dist/tempo/client/SessionManager.d.ts +3 -3
  132. package/dist/tempo/client/SessionManager.d.ts.map +1 -1
  133. package/dist/tempo/client/SessionManager.js +1 -1
  134. package/dist/tempo/client/SessionManager.js.map +1 -1
  135. package/dist/tempo/internal/account.d.ts +5 -0
  136. package/dist/tempo/internal/account.d.ts.map +1 -1
  137. package/dist/tempo/internal/account.js +8 -0
  138. package/dist/tempo/internal/account.js.map +1 -1
  139. package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
  140. package/dist/tempo/internal/fee-payer.js +5 -2
  141. package/dist/tempo/internal/fee-payer.js.map +1 -1
  142. package/dist/tempo/server/Charge.d.ts +6 -0
  143. package/dist/tempo/server/Charge.d.ts.map +1 -1
  144. package/dist/tempo/server/Charge.js +30 -3
  145. package/dist/tempo/server/Charge.js.map +1 -1
  146. package/dist/tempo/server/Session.d.ts +6 -0
  147. package/dist/tempo/server/Session.d.ts.map +1 -1
  148. package/dist/tempo/server/Session.js +14 -13
  149. package/dist/tempo/server/Session.js.map +1 -1
  150. package/dist/tempo/server/Subscription.d.ts +6 -0
  151. package/dist/tempo/server/Subscription.d.ts.map +1 -1
  152. package/dist/tempo/server/Subscription.js +1 -1
  153. package/dist/tempo/server/Subscription.js.map +1 -1
  154. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  155. package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
  156. package/dist/tempo/server/internal/html.gen.js +1 -1
  157. package/dist/tempo/server/internal/html.gen.js.map +1 -1
  158. package/dist/tempo/session/Chain.d.ts +2 -0
  159. package/dist/tempo/session/Chain.d.ts.map +1 -1
  160. package/dist/tempo/session/Chain.js +8 -8
  161. package/dist/tempo/session/Chain.js.map +1 -1
  162. package/dist/tempo/session/Voucher.d.ts +4 -3
  163. package/dist/tempo/session/Voucher.d.ts.map +1 -1
  164. package/dist/tempo/session/Voucher.js +71 -44
  165. package/dist/tempo/session/Voucher.js.map +1 -1
  166. package/dist/tempo/session/Ws.d.ts.map +1 -1
  167. package/dist/tempo/session/Ws.js +15 -0
  168. package/dist/tempo/session/Ws.js.map +1 -1
  169. package/dist/tempo/subscription/KeyAuthorization.d.ts +2 -2
  170. package/dist/x402/Assets.d.ts +29 -0
  171. package/dist/x402/Assets.d.ts.map +1 -0
  172. package/dist/x402/Assets.js +46 -0
  173. package/dist/x402/Assets.js.map +1 -0
  174. package/dist/x402/Header.d.ts +14 -0
  175. package/dist/x402/Header.d.ts.map +1 -0
  176. package/dist/x402/Header.js +18 -0
  177. package/dist/x402/Header.js.map +1 -0
  178. package/dist/x402/Types.d.ts +289 -0
  179. package/dist/x402/Types.d.ts.map +1 -0
  180. package/dist/x402/Types.js +139 -0
  181. package/dist/x402/Types.js.map +1 -0
  182. package/dist/x402/client/Exact.d.ts +38 -0
  183. package/dist/x402/client/Exact.d.ts.map +1 -0
  184. package/dist/x402/client/Exact.js +141 -0
  185. package/dist/x402/client/Exact.js.map +1 -0
  186. package/dist/x402/index.d.ts +6 -0
  187. package/dist/x402/index.d.ts.map +1 -0
  188. package/dist/x402/index.js +6 -0
  189. package/dist/x402/index.js.map +1 -0
  190. package/dist/x402/internal/ChallengeBrand.d.ts +5 -0
  191. package/dist/x402/internal/ChallengeBrand.d.ts.map +1 -0
  192. package/dist/x402/internal/ChallengeBrand.js +13 -0
  193. package/dist/x402/internal/ChallengeBrand.js.map +1 -0
  194. package/dist/x402/internal/RouteBinding.d.ts +8 -0
  195. package/dist/x402/internal/RouteBinding.d.ts.map +1 -0
  196. package/dist/x402/internal/RouteBinding.js +12 -0
  197. package/dist/x402/internal/RouteBinding.js.map +1 -0
  198. package/dist/x402/server/EvmCharge.d.ts +50 -0
  199. package/dist/x402/server/EvmCharge.d.ts.map +1 -0
  200. package/dist/x402/server/EvmCharge.js +301 -0
  201. package/dist/x402/server/EvmCharge.js.map +1 -0
  202. package/dist/x402/server/Facilitator.d.ts +12 -0
  203. package/dist/x402/server/Facilitator.d.ts.map +1 -0
  204. package/dist/x402/server/Facilitator.js +42 -0
  205. package/dist/x402/server/Facilitator.js.map +1 -0
  206. package/package.json +41 -21
  207. package/src/Challenge.test.ts +28 -0
  208. package/src/Challenge.ts +17 -10
  209. package/src/Method.ts +1 -1
  210. package/src/Store.test-d.ts +58 -0
  211. package/src/Store.test.ts +77 -0
  212. package/src/Store.ts +155 -74
  213. package/src/client/Methods.ts +1 -0
  214. package/src/client/Mppx.ts +4 -3
  215. package/src/client/Transport.test.ts +165 -30
  216. package/src/client/Transport.ts +76 -8
  217. package/src/client/index.ts +1 -1
  218. package/src/client/internal/Fetch.test.ts +31 -2
  219. package/src/client/internal/Fetch.ts +26 -19
  220. package/src/evm/Assets.ts +1 -0
  221. package/src/evm/Chains.ts +5 -0
  222. package/src/evm/Methods.ts +44 -0
  223. package/src/evm/PublicInterface.test-d.ts +109 -0
  224. package/src/evm/Types.ts +140 -0
  225. package/src/evm/client/Charge.test.ts +99 -0
  226. package/src/evm/client/Charge.ts +198 -0
  227. package/src/evm/client/Methods.ts +19 -0
  228. package/src/evm/client/index.ts +5 -0
  229. package/src/evm/index.ts +13 -0
  230. package/src/evm/server/Charge.test.ts +199 -0
  231. package/src/evm/server/Charge.ts +283 -0
  232. package/src/evm/server/Methods.ts +22 -0
  233. package/src/evm/server/index.ts +5 -0
  234. package/src/index.ts +2 -0
  235. package/src/internal/HeaderCodec.ts +36 -0
  236. package/src/middlewares/elysia.test.ts +25 -0
  237. package/src/middlewares/elysia.ts +1 -2
  238. package/src/middlewares/express.test.ts +28 -0
  239. package/src/middlewares/express.ts +1 -1
  240. package/src/middlewares/hono.test.ts +138 -2
  241. package/src/middlewares/nextjs.test.ts +22 -0
  242. package/src/proxy/internal/Headers.test.ts +38 -0
  243. package/src/proxy/internal/Headers.ts +26 -2
  244. package/src/proxy/services/openai.test.ts +57 -1
  245. package/src/proxy/services/openai.ts +2 -0
  246. package/src/server/Methods.ts +1 -0
  247. package/src/server/Mppx.test.ts +244 -1
  248. package/src/server/Mppx.ts +124 -11
  249. package/src/server/NodeListener.test.ts +28 -1
  250. package/src/server/Transport.test.ts +19 -0
  251. package/src/server/Transport.ts +20 -0
  252. package/src/server/index.ts +1 -1
  253. package/src/stripe/server/Charge.test.ts +215 -1
  254. package/src/stripe/server/Charge.ts +150 -20
  255. package/src/stripe/server/internal/html.gen.ts +1 -1
  256. package/src/tempo/AccessKeyAuthorization.test.ts +231 -0
  257. package/src/tempo/client/ChannelOps.test.ts +61 -7
  258. package/src/tempo/client/ChannelOps.ts +18 -7
  259. package/src/tempo/client/Charge.test.ts +126 -0
  260. package/src/tempo/client/Charge.ts +10 -6
  261. package/src/tempo/client/Session.test.ts +130 -1
  262. package/src/tempo/client/Session.ts +12 -19
  263. package/src/tempo/client/SessionManager.test.ts +69 -2
  264. package/src/tempo/client/SessionManager.ts +4 -4
  265. package/src/tempo/internal/account.ts +13 -0
  266. package/src/tempo/internal/fee-payer.test.ts +32 -2
  267. package/src/tempo/internal/fee-payer.ts +6 -2
  268. package/src/tempo/server/Charge.test.ts +91 -1
  269. package/src/tempo/server/Charge.ts +48 -2
  270. package/src/tempo/server/Session.test.ts +30 -0
  271. package/src/tempo/server/Session.ts +24 -17
  272. package/src/tempo/server/Subscription.ts +7 -1
  273. package/src/tempo/server/internal/html.gen.ts +1 -1
  274. package/src/tempo/session/Chain.test.ts +4 -4
  275. package/src/tempo/session/Chain.ts +10 -6
  276. package/src/tempo/session/ChannelStore.test.ts +21 -0
  277. package/src/tempo/session/Voucher.test.ts +230 -1
  278. package/src/tempo/session/Voucher.ts +96 -48
  279. package/src/tempo/session/Ws.test.ts +71 -0
  280. package/src/tempo/session/Ws.ts +13 -0
  281. package/src/tempo/subscription/Store.test.ts +55 -0
  282. package/src/x402/Assets.ts +65 -0
  283. package/src/x402/Exact.e2e.test.ts +448 -0
  284. package/src/x402/Header.test.ts +73 -0
  285. package/src/x402/Header.ts +34 -0
  286. package/src/x402/PublicInterface.test-d.ts +39 -0
  287. package/src/x402/Types.ts +248 -0
  288. package/src/x402/client/Exact.test.ts +180 -0
  289. package/src/x402/client/Exact.ts +198 -0
  290. package/src/x402/index.ts +5 -0
  291. package/src/x402/internal/ChallengeBrand.ts +14 -0
  292. package/src/x402/internal/RouteBinding.ts +18 -0
  293. package/src/x402/server/EvmCharge.ts +394 -0
  294. package/src/x402/server/Facilitator.test.ts +111 -0
  295. package/src/x402/server/Facilitator.ts +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exact.js","sourceRoot":"","sources":["../../../src/x402/client/Exact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * as Assets from './Assets.js';
2
+ export * as Header from './Header.js';
3
+ export * as Types from './Types.js';
4
+ export * as assets from './Assets.js';
5
+ export * from './Types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * as Assets from './Assets.js';
2
+ export * as Header from './Header.js';
3
+ export * as Types from './Types.js';
4
+ export * as assets from './Assets.js';
5
+ export * from './Types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Marks a synthetic challenge as originating from an x402 `PAYMENT-REQUIRED` response. */
2
+ export declare function mark<const challenge extends object>(challenge: challenge): challenge;
3
+ /** Returns whether a challenge originated from an x402 `PAYMENT-REQUIRED` response. */
4
+ export declare function is(challenge: unknown): boolean;
5
+ //# sourceMappingURL=ChallengeBrand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChallengeBrand.d.ts","sourceRoot":"","sources":["../../../src/x402/internal/ChallengeBrand.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,wBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAKpF;AAED,uFAAuF;AACvF,wBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAE9C"}
@@ -0,0 +1,13 @@
1
+ const x402Challenge = Symbol.for('mppx.x402.challenge');
2
+ /** Marks a synthetic challenge as originating from an x402 `PAYMENT-REQUIRED` response. */
3
+ export function mark(challenge) {
4
+ Object.defineProperty(challenge, x402Challenge, {
5
+ value: true,
6
+ });
7
+ return challenge;
8
+ }
9
+ /** Returns whether a challenge originated from an x402 `PAYMENT-REQUIRED` response. */
10
+ export function is(challenge) {
11
+ return Boolean(challenge?.[x402Challenge]);
12
+ }
13
+ //# sourceMappingURL=ChallengeBrand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChallengeBrand.js","sourceRoot":"","sources":["../../../src/x402/internal/ChallengeBrand.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAEvD,2FAA2F;AAC3F,MAAM,UAAU,IAAI,CAAiC,SAAoB;IACvE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE;QAC9C,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;IACF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,EAAE,CAAC,SAAkB;IACnC,OAAO,OAAO,CAAE,SAAoD,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;AACxF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type * as Types from '../Types.js';
2
+ /** Computes the route-bound EIP-3009 nonce for an x402 exact payment. */
3
+ export declare function nonce(parameters: {
4
+ accepted: Types.PaymentRequirements;
5
+ extensions: Types.Extensions;
6
+ resource: Types.ResourceInfo;
7
+ }): `0x${string}`;
8
+ //# sourceMappingURL=RouteBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteBinding.d.ts","sourceRoot":"","sources":["../../../src/x402/internal/RouteBinding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAEzC,yEAAyE;AACzE,wBAAgB,KAAK,CAAC,UAAU,EAAE;IAChC,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAA;IACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAA;IAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAC7B,GAAG,KAAK,MAAM,EAAE,CAOhB"}
@@ -0,0 +1,12 @@
1
+ import { Bytes, Hash } from 'ox';
2
+ import * as PaymentRequest from '../../PaymentRequest.js';
3
+ /** Computes the route-bound EIP-3009 nonce for an x402 exact payment. */
4
+ export function nonce(parameters) {
5
+ const input = [
6
+ PaymentRequest.serialize(parameters.accepted),
7
+ PaymentRequest.serialize(parameters.resource),
8
+ PaymentRequest.serialize(parameters.extensions),
9
+ ].join('|');
10
+ return Hash.sha256(Bytes.fromString(input), { as: 'Hex' });
11
+ }
12
+ //# sourceMappingURL=RouteBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteBinding.js","sourceRoot":"","sources":["../../../src/x402/internal/RouteBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAA;AAEhC,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AAGzD,yEAAyE;AACzE,MAAM,UAAU,KAAK,CAAC,UAIrB;IACC,MAAM,KAAK,GAAG;QACZ,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC7C,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC7C,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;KAChD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAkB,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type * as Credential from '../../Credential.js';
2
+ import * as Types from '../../evm/Types.js';
3
+ import * as ServerTransport from '../../server/Transport.js';
4
+ import * as x402_Types from '../Types.js';
5
+ export type Options = {
6
+ /** Facilitator client or base URL used for x402-compatible settlement. */
7
+ facilitator?: string | x402_Types.Facilitator | undefined;
8
+ /** Fetch implementation used for facilitator RPCs. */
9
+ fetch?: typeof globalThis.fetch | undefined;
10
+ /** Maximum time in seconds allowed for x402-compatible payment completion. @default 300 */
11
+ maxTimeoutSeconds?: number | undefined;
12
+ };
13
+ export type ResolvedOptions = {
14
+ authorization: Types.AuthorizationConfig;
15
+ facilitator?: x402_Types.Facilitator | undefined;
16
+ maxTimeoutSeconds: number;
17
+ };
18
+ export type Path = {
19
+ bindCredential: NonNullable<ServerTransport.Http['bindCredential']>;
20
+ getCredential: ServerTransport.Http['getCredential'];
21
+ respondChallenge: (options: Parameters<ServerTransport.Http['respondChallenge']>[0], response?: Response | undefined) => Response | Promise<Response>;
22
+ respondReceipt: (options: Parameters<ServerTransport.Http['respondReceipt']>[0], response: Response) => Response;
23
+ };
24
+ /** Resolves optional x402 compatibility options for an EVM charge. */
25
+ export declare function resolveOptions(parameters: {
26
+ authorization: Types.AuthorizationConfig;
27
+ options?: Options | undefined;
28
+ }): ResolvedOptions;
29
+ /** Creates the x402 wire path for an EVM charge method. */
30
+ export declare function createPath(config: ResolvedOptions): Path;
31
+ /** Settles a verified EVM authorization through an x402 facilitator. */
32
+ export declare function settleWithFacilitator(parameters: ResolvedOptions): SettleWithFacilitator;
33
+ export type SettleWithFacilitator = (parameters: {
34
+ credential: Credential.Credential<Types.AuthorizationPayload>;
35
+ payload: Types.AuthorizationPayload;
36
+ request: Types.ChargeRequest;
37
+ source: ReturnType<typeof Types.toSource>;
38
+ }) => Promise<{
39
+ reference: string;
40
+ timestamp?: string | undefined;
41
+ }>;
42
+ /** Returns whether a credential was converted from an x402 payment payload. */
43
+ export declare function isCredential(credential: Credential.Credential): boolean;
44
+ /** Returns whether a credential was parsed from the x402 payment header. */
45
+ export declare function isPendingCredential(credential: Credential.Credential): boolean;
46
+ /** Converts a native EVM charge request to x402 exact payment requirements. */
47
+ export declare function toPaymentRequirements(request: Types.ChargeRequest, config: Pick<ResolvedOptions, 'authorization' | 'maxTimeoutSeconds'>): x402_Types.PaymentRequirements;
48
+ /** Converts an x402 EIP-3009 payment payload to the native EVM authorization payload. */
49
+ export declare function payloadToAuthorization(paymentPayload: x402_Types.PaymentPayload): Types.AuthorizationPayload;
50
+ //# sourceMappingURL=EvmCharge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmCharge.d.ts","sourceRoot":"","sources":["../../../src/x402/server/EvmCharge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,301 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { Bytes, Hash } from 'ox';
3
+ import { getAddress } from 'viem';
4
+ import * as BodyDigest from '../../BodyDigest.js';
5
+ import * as Challenge from '../../Challenge.js';
6
+ import * as Credential_ from '../../Credential.js';
7
+ import { VerificationFailedError } from '../../Errors.js';
8
+ import * as Types from '../../evm/Types.js';
9
+ import * as PaymentRequest from '../../PaymentRequest.js';
10
+ import * as Scope from '../../server/internal/scope.js';
11
+ import * as x402_Header from '../Header.js';
12
+ import * as x402_RouteBinding from '../internal/RouteBinding.js';
13
+ import * as x402_Types from '../Types.js';
14
+ import * as x402_Facilitator from './Facilitator.js';
15
+ const pendingX402Credential = Symbol('mppx.evm.pendingX402Credential');
16
+ const x402Credential = Symbol('mppx.evm.x402Credential');
17
+ const mppxExtensionKey = 'mppx';
18
+ const mppxRouteBindingSchema = {
19
+ additionalProperties: false,
20
+ properties: {
21
+ [Scope.reservedMetaKey]: { type: 'string' },
22
+ digest: { type: 'string' },
23
+ method: { type: 'string' },
24
+ nonce: { type: 'string' },
25
+ opaque: { type: 'string' },
26
+ },
27
+ required: ['method'],
28
+ type: 'object',
29
+ };
30
+ /** Resolves optional x402 compatibility options for an EVM charge. */
31
+ export function resolveOptions(parameters) {
32
+ return {
33
+ authorization: parameters.authorization,
34
+ ...(parameters.options?.facilitator
35
+ ? {
36
+ facilitator: x402_Facilitator.resolve(parameters.options.facilitator, 'EVM authorization x402 requires `facilitator`.', { fetch: parameters.options.fetch }),
37
+ }
38
+ : {}),
39
+ maxTimeoutSeconds: parameters.options?.maxTimeoutSeconds ?? 300,
40
+ };
41
+ }
42
+ /** Creates the x402 wire path for an EVM charge method. */
43
+ export function createPath(config) {
44
+ return {
45
+ getCredential(request) {
46
+ const paymentSignature = request.headers.get(x402_Types.paymentSignatureHeader);
47
+ if (!paymentSignature)
48
+ return null;
49
+ const paymentPayload = x402_Header.decodePaymentSignature(paymentSignature);
50
+ return markPendingCredential(Credential_.from({
51
+ challenge: pendingChallenge(paymentPayload),
52
+ payload: paymentPayload,
53
+ }));
54
+ },
55
+ async bindCredential({ challenge, credential, input }) {
56
+ const paymentPayload = parsePaymentPayload(credential.payload);
57
+ if (!paymentPayload)
58
+ return credential;
59
+ if (!isPendingCredential(credential))
60
+ return credential;
61
+ await assertBodyDigest(challenge, input);
62
+ const request = challenge.request;
63
+ const paymentRequirements = toPaymentRequirements(request, config);
64
+ if (!isDeepStrictEqual(paymentPayload.accepted, paymentRequirements))
65
+ throw new VerificationFailedError({
66
+ reason: 'x402 payment payload does not match route requirements',
67
+ });
68
+ const expectedResource = { url: input.url };
69
+ if (!isDeepStrictEqual(paymentPayload.resource, expectedResource))
70
+ throw new VerificationFailedError({
71
+ reason: 'x402 payment payload resource does not match route resource',
72
+ });
73
+ const expectedExtensions = routeExtensions(challenge, input);
74
+ if (!containsExtensions(paymentPayload.extensions, expectedExtensions))
75
+ throw new VerificationFailedError({
76
+ reason: 'x402 payment payload extensions do not match route binding',
77
+ });
78
+ const payload = payloadToAuthorization(paymentPayload);
79
+ const expectedNonce = x402_RouteBinding.nonce({
80
+ accepted: paymentRequirements,
81
+ extensions: paymentPayload.extensions,
82
+ resource: expectedResource,
83
+ });
84
+ if (payload.nonce !== expectedNonce)
85
+ throw new VerificationFailedError({
86
+ reason: 'x402 authorization nonce does not match route binding',
87
+ });
88
+ return markCredential(Credential_.from({
89
+ challenge,
90
+ payload,
91
+ source: Types.toSource({
92
+ address: getAddress(payload.from),
93
+ chainId: request.methodDetails.chainId,
94
+ }),
95
+ }));
96
+ },
97
+ respondChallenge(options, response) {
98
+ if (!response)
99
+ throw new Error('x402 path requires a base challenge response.');
100
+ if (options.input.body !== null && options.challenge.digest === undefined)
101
+ return response;
102
+ const headers = new Headers(response.headers);
103
+ const request = options.challenge.request;
104
+ headers.set(x402_Types.paymentRequiredHeader, x402_Header.encodePaymentRequired({
105
+ accepts: [toPaymentRequirements(request, config)],
106
+ error: options.error?.message ?? `${x402_Types.paymentSignatureHeader} header is required`,
107
+ extensions: routeExtensions(options.challenge, options.input),
108
+ resource: { url: options.input.url },
109
+ x402Version: 2,
110
+ }));
111
+ return new Response(response.body, {
112
+ headers,
113
+ status: response.status,
114
+ statusText: response.statusText,
115
+ });
116
+ },
117
+ respondReceipt(options, response) {
118
+ if (!options.input.headers.has(x402_Types.paymentSignatureHeader))
119
+ return response;
120
+ const payload = Types.AuthorizationPayloadSchema.parse(options.credential.payload);
121
+ const request = options.credential.challenge.request;
122
+ const headers = new Headers(response.headers);
123
+ headers.set(x402_Types.paymentResponseHeader, x402_Header.encodePaymentResponse({
124
+ network: Types.networkOf(request.methodDetails.chainId),
125
+ payer: payload.from,
126
+ success: true,
127
+ transaction: options.receipt.reference,
128
+ }));
129
+ return new Response(response.body, {
130
+ headers,
131
+ status: response.status,
132
+ statusText: response.statusText,
133
+ });
134
+ },
135
+ };
136
+ }
137
+ /** Settles a verified EVM authorization through an x402 facilitator. */
138
+ export function settleWithFacilitator(parameters) {
139
+ const { facilitator, maxTimeoutSeconds } = parameters;
140
+ if (!facilitator)
141
+ throw new Error('EVM authorization x402 requires `facilitator`.');
142
+ return async ({ payload, request }) => {
143
+ const paymentRequirements = toPaymentRequirements(request, {
144
+ ...parameters,
145
+ maxTimeoutSeconds,
146
+ });
147
+ const paymentPayload = {
148
+ accepted: paymentRequirements,
149
+ payload: {
150
+ authorization: {
151
+ from: payload.from,
152
+ nonce: payload.nonce,
153
+ to: payload.to,
154
+ validAfter: payload.validAfter,
155
+ validBefore: payload.validBefore,
156
+ value: payload.value,
157
+ },
158
+ signature: payload.signature,
159
+ },
160
+ x402Version: 2,
161
+ };
162
+ const verified = await facilitator.verify(paymentPayload, paymentRequirements);
163
+ if (!verified.isValid)
164
+ throw new VerificationFailedError({
165
+ reason: verified.invalidMessage ?? verified.invalidReason ?? 'EVM facilitator verify failed',
166
+ });
167
+ const settled = await facilitator.settle(paymentPayload, paymentRequirements);
168
+ if (!settled.success)
169
+ throw new VerificationFailedError({
170
+ reason: settled.errorMessage ?? settled.errorReason ?? 'EVM facilitator settlement failed',
171
+ });
172
+ return {
173
+ reference: settled.transaction,
174
+ };
175
+ };
176
+ }
177
+ /** Returns whether a credential was converted from an x402 payment payload. */
178
+ export function isCredential(credential) {
179
+ return credential[x402Credential] === true;
180
+ }
181
+ /** Returns whether a credential was parsed from the x402 payment header. */
182
+ export function isPendingCredential(credential) {
183
+ return credential[pendingX402Credential] === true;
184
+ }
185
+ /** Converts a native EVM charge request to x402 exact payment requirements. */
186
+ export function toPaymentRequirements(request, config) {
187
+ return {
188
+ amount: request.amount,
189
+ asset: request.currency,
190
+ extra: {
191
+ assetTransferMethod: Types.eip3009,
192
+ name: config.authorization.name,
193
+ version: config.authorization.version,
194
+ },
195
+ maxTimeoutSeconds: config.maxTimeoutSeconds,
196
+ network: Types.networkOf(request.methodDetails.chainId),
197
+ payTo: request.recipient,
198
+ scheme: 'exact',
199
+ };
200
+ }
201
+ function parsePaymentPayload(payload) {
202
+ const parsed = x402_Types.PaymentPayloadSchema.safeParse(payload);
203
+ return parsed.success ? parsed.data : undefined;
204
+ }
205
+ /** Converts an x402 EIP-3009 payment payload to the native EVM authorization payload. */
206
+ export function payloadToAuthorization(paymentPayload) {
207
+ if (!('authorization' in paymentPayload.payload))
208
+ throw new VerificationFailedError({
209
+ reason: 'EVM charge only supports x402 EIP-3009 authorization payloads',
210
+ });
211
+ return Types.AuthorizationPayloadSchema.parse({
212
+ ...paymentPayload.payload.authorization,
213
+ signature: paymentPayload.payload.signature,
214
+ type: 'authorization',
215
+ });
216
+ }
217
+ function pendingChallenge(paymentPayload) {
218
+ // The route challenge is built after request normalization in bindCredential().
219
+ // Until then, this deterministic local ID only carries the x402 payload through
220
+ // the standard credential pipeline; it is never HMAC-verified.
221
+ return Challenge.from({
222
+ id: pendingChallengeId(paymentPayload),
223
+ intent: Types.chargeIntent,
224
+ method: Types.paymentMethod,
225
+ realm: 'x402',
226
+ request: paymentPayload.accepted,
227
+ });
228
+ }
229
+ function pendingChallengeId(paymentPayload) {
230
+ const hash = Hash.sha256(Bytes.fromString(JSON.stringify(paymentPayload)), { as: 'Hex' });
231
+ return `${x402_Types.syntheticChallengeIdPrefix}${hash}`;
232
+ }
233
+ function routeExtensions(challenge, input) {
234
+ const binding = { method: input.method };
235
+ const scope = Scope.read(challenge.meta);
236
+ if (scope !== undefined)
237
+ binding[Scope.reservedMetaKey] = scope;
238
+ if (challenge.digest !== undefined)
239
+ binding.digest = challenge.digest;
240
+ const opaque = challenge.opaque ?? (challenge.meta ? PaymentRequest.serialize(challenge.meta) : undefined);
241
+ if (opaque !== undefined)
242
+ binding.opaque = opaque;
243
+ return {
244
+ [mppxExtensionKey]: {
245
+ info: binding,
246
+ schema: mppxRouteBindingSchema,
247
+ },
248
+ };
249
+ }
250
+ function containsExtensions(actual, expected) {
251
+ if (!actual)
252
+ return false;
253
+ return Object.entries(expected).every(([key, expectedExtension]) => {
254
+ const actualExtension = actual[key];
255
+ return (actualExtension !== undefined &&
256
+ isDeepStrictEqual(actualExtension.schema, expectedExtension.schema) &&
257
+ isDeepStrictEqual(stripClientNonce(actualExtension.info), expectedExtension.info));
258
+ });
259
+ }
260
+ function stripClientNonce(info) {
261
+ const { nonce, ...rest } = info;
262
+ if (nonce !== undefined && typeof nonce !== 'string')
263
+ return info;
264
+ return rest;
265
+ }
266
+ async function assertBodyDigest(challenge, input) {
267
+ if (input.body === null)
268
+ return;
269
+ if (challenge.digest === undefined)
270
+ throw new VerificationFailedError({
271
+ reason: 'x402 payment requires a body digest for body-bearing requests',
272
+ });
273
+ let body;
274
+ try {
275
+ body = await input.clone().text();
276
+ }
277
+ catch {
278
+ throw new VerificationFailedError({
279
+ reason: 'x402 payment cannot bind streaming request body',
280
+ });
281
+ }
282
+ if (!BodyDigest.verify(challenge.digest, body))
283
+ throw new VerificationFailedError({
284
+ reason: 'x402 payment body digest mismatch',
285
+ });
286
+ }
287
+ function markPendingCredential(credential) {
288
+ Object.defineProperty(credential, pendingX402Credential, {
289
+ enumerable: true,
290
+ value: true,
291
+ });
292
+ return credential;
293
+ }
294
+ function markCredential(credential) {
295
+ Object.defineProperty(credential, x402Credential, {
296
+ enumerable: true,
297
+ value: true,
298
+ });
299
+ return credential;
300
+ }
301
+ //# sourceMappingURL=EvmCharge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmCharge.js","sourceRoot":"","sources":["../../../src/x402/server/EvmCharge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as Types from '../Types.js';
2
+ export type HttpOptions = {
3
+ /** Fetch implementation used for facilitator RPCs. */
4
+ fetch?: typeof globalThis.fetch | undefined;
5
+ };
6
+ /** Resolves an x402 facilitator URL or client into a facilitator client. */
7
+ export declare function resolve(facilitator: string | Types.Facilitator, errorMessage?: string, options?: HttpOptions | undefined): Types.Facilitator;
8
+ /** Creates an x402 facilitator client from an HTTP base URL. */
9
+ export declare function http(url: string, options?: HttpOptions | undefined): Types.Facilitator;
10
+ /** Returns the underlying raw fetch implementation when given an mppx wrapper. */
11
+ export declare function unwrapFetch(fetch: typeof globalThis.fetch): typeof globalThis.fetch;
12
+ //# sourceMappingURL=Facilitator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Facilitator.d.ts","sourceRoot":"","sources":["../../../src/x402/server/Facilitator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAQpC,MAAM,MAAM,WAAW,GAAG;IACxB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,SAAS,CAAA;CAC5C,CAAA;AAED,4EAA4E;AAC5E,wBAAgB,OAAO,CACrB,WAAW,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,EACvC,YAAY,SAAuC,EACnD,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,GAChC,KAAK,CAAC,WAAW,CAInB;AAED,gEAAgE;AAChE,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC,WAAW,CAqBtF;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,CAMnF"}
@@ -0,0 +1,42 @@
1
+ import * as Types from '../Types.js';
2
+ const mppxFetchWrapper = Symbol.for('mppx.fetch.wrapper');
3
+ /** Resolves an x402 facilitator URL or client into a facilitator client. */
4
+ export function resolve(facilitator, errorMessage = 'x402 exact requires `facilitator`.', options) {
5
+ if (typeof facilitator === 'object' && facilitator !== null)
6
+ return facilitator;
7
+ if (typeof facilitator === 'string')
8
+ return http(facilitator, options);
9
+ throw new Error(errorMessage);
10
+ }
11
+ /** Creates an x402 facilitator client from an HTTP base URL. */
12
+ export function http(url, options) {
13
+ const base = url.replace(/\/$/, '');
14
+ const fetch = unwrapFetch(options?.fetch ?? globalThis.fetch);
15
+ return {
16
+ async verify(paymentPayload, paymentRequirements) {
17
+ const response = await fetch(`${base}/verify`, {
18
+ body: JSON.stringify({ paymentPayload, paymentRequirements, x402Version: 2 }),
19
+ headers: { 'Content-Type': 'application/json' },
20
+ method: 'POST',
21
+ });
22
+ return Types.VerifyResponseSchema.parse(await response.json());
23
+ },
24
+ async settle(paymentPayload, paymentRequirements) {
25
+ const response = await fetch(`${base}/settle`, {
26
+ body: JSON.stringify({ paymentPayload, paymentRequirements, x402Version: 2 }),
27
+ headers: { 'Content-Type': 'application/json' },
28
+ method: 'POST',
29
+ });
30
+ return Types.SettleResponseSchema.parse(await response.json());
31
+ },
32
+ };
33
+ }
34
+ /** Returns the underlying raw fetch implementation when given an mppx wrapper. */
35
+ export function unwrapFetch(fetch) {
36
+ let current = fetch;
37
+ while (current[mppxFetchWrapper]) {
38
+ current = current[mppxFetchWrapper];
39
+ }
40
+ return current;
41
+ }
42
+ //# sourceMappingURL=Facilitator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Facilitator.js","sourceRoot":"","sources":["../../../src/x402/server/Facilitator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAWzD,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CACrB,WAAuC,EACvC,YAAY,GAAG,oCAAoC,EACnD,OAAiC;IAEjC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,WAAW,CAAA;IAC/E,IAAI,OAAO,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;AAC/B,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,OAAiC;IACjE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;IAC7D,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB;YAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE;gBAC7C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC7E,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,MAAM;aACf,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB;YAC9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE;gBAC7C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC7E,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,MAAM,EAAE,MAAM;aACf,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,CAAC;KACF,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,KAA8B;IACxD,IAAI,OAAO,GAAG,KAAqB,CAAA;IACnC,OAAO,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAiB,CAAA;IACrD,CAAC;IACD,OAAO,OAAkC,CAAA;AAC3C,CAAC"}