@absol-labs/agent 0.11.0 → 0.12.0-rc.1

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 (350) hide show
  1. package/README.md +42 -50
  2. package/dist/capability/invocation-capability.d.ts +2 -2
  3. package/dist/capability/probe-capability.d.ts +225 -0
  4. package/dist/capability/probe-capability.d.ts.map +1 -0
  5. package/dist/capability/probe-capability.js +248 -0
  6. package/dist/capability/probe-capability.js.map +1 -0
  7. package/dist/cli/args.d.ts +11 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +23 -0
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/commands/claim.js +1 -1
  12. package/dist/cli/commands/claim.js.map +1 -1
  13. package/dist/cli/commands/close.d.ts.map +1 -1
  14. package/dist/cli/commands/close.js +35 -3
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/invoke.d.ts +2 -0
  17. package/dist/cli/commands/invoke.d.ts.map +1 -1
  18. package/dist/cli/commands/invoke.js +2 -2
  19. package/dist/cli/commands/invoke.js.map +1 -1
  20. package/dist/cli/commands/mcp.d.ts.map +1 -1
  21. package/dist/cli/commands/mcp.js +15 -2
  22. package/dist/cli/commands/mcp.js.map +1 -1
  23. package/dist/cli/commands/open.d.ts.map +1 -1
  24. package/dist/cli/commands/open.js +58 -4
  25. package/dist/cli/commands/open.js.map +1 -1
  26. package/dist/cli/commands/pay.d.ts +19 -0
  27. package/dist/cli/commands/pay.d.ts.map +1 -0
  28. package/dist/cli/commands/pay.js +355 -0
  29. package/dist/cli/commands/pay.js.map +1 -0
  30. package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
  31. package/dist/cli/commands/reclaim-unverified.js +3 -2
  32. package/dist/cli/commands/reclaim-unverified.js.map +1 -1
  33. package/dist/cli/commands/reclaim.d.ts +23 -2
  34. package/dist/cli/commands/reclaim.d.ts.map +1 -1
  35. package/dist/cli/commands/reclaim.js +184 -16
  36. package/dist/cli/commands/reclaim.js.map +1 -1
  37. package/dist/cli/commands/refund.d.ts +13 -0
  38. package/dist/cli/commands/refund.d.ts.map +1 -0
  39. package/dist/cli/commands/refund.js +224 -0
  40. package/dist/cli/commands/refund.js.map +1 -0
  41. package/dist/cli/commands/status.d.ts.map +1 -1
  42. package/dist/cli/commands/status.js +10 -1
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/commands/streams.js +8 -12
  45. package/dist/cli/commands/streams.js.map +1 -1
  46. package/dist/cli/commands/watch.d.ts.map +1 -1
  47. package/dist/cli/commands/watch.js +2 -1
  48. package/dist/cli/commands/watch.js.map +1 -1
  49. package/dist/cli/config.d.ts +44 -26
  50. package/dist/cli/config.d.ts.map +1 -1
  51. package/dist/cli/config.js +88 -38
  52. package/dist/cli/config.js.map +1 -1
  53. package/dist/cli/deps.d.ts +33 -0
  54. package/dist/cli/deps.d.ts.map +1 -1
  55. package/dist/cli/deps.js +37 -1
  56. package/dist/cli/deps.js.map +1 -1
  57. package/dist/cli/errors.d.ts.map +1 -1
  58. package/dist/cli/errors.js +21 -1
  59. package/dist/cli/errors.js.map +1 -1
  60. package/dist/cli/escape-hatch.d.ts +6 -4
  61. package/dist/cli/escape-hatch.d.ts.map +1 -1
  62. package/dist/cli/escape-hatch.js +6 -2
  63. package/dist/cli/escape-hatch.js.map +1 -1
  64. package/dist/cli/listings.d.ts +18 -0
  65. package/dist/cli/listings.d.ts.map +1 -1
  66. package/dist/cli/listings.js +22 -12
  67. package/dist/cli/listings.js.map +1 -1
  68. package/dist/cli/preflight.d.ts +20 -14
  69. package/dist/cli/preflight.d.ts.map +1 -1
  70. package/dist/cli/preflight.js +34 -20
  71. package/dist/cli/preflight.js.map +1 -1
  72. package/dist/cli/privy.d.ts.map +1 -1
  73. package/dist/cli/privy.js +4 -2
  74. package/dist/cli/privy.js.map +1 -1
  75. package/dist/cli/reclaimability.d.ts +82 -0
  76. package/dist/cli/reclaimability.d.ts.map +1 -0
  77. package/dist/cli/reclaimability.js +80 -0
  78. package/dist/cli/reclaimability.js.map +1 -0
  79. package/dist/cli/run.d.ts +2 -1
  80. package/dist/cli/run.d.ts.map +1 -1
  81. package/dist/cli/run.js +40 -11
  82. package/dist/cli/run.js.map +1 -1
  83. package/dist/cli/scan-range.d.ts +2 -2
  84. package/dist/cli/scan-range.js +2 -2
  85. package/dist/cli/status.d.ts +3 -1
  86. package/dist/cli/status.d.ts.map +1 -1
  87. package/dist/cli/status.js +15 -3
  88. package/dist/cli/status.js.map +1 -1
  89. package/dist/cli/wallet.d.ts +1 -1
  90. package/dist/cli/wallet.js +2 -2
  91. package/dist/cli/wallet.js.map +1 -1
  92. package/dist/discovery/rate-band.d.ts +74 -0
  93. package/dist/discovery/rate-band.d.ts.map +1 -0
  94. package/dist/discovery/rate-band.js +114 -0
  95. package/dist/discovery/rate-band.js.map +1 -0
  96. package/dist/escrow-generation.d.ts +81 -0
  97. package/dist/escrow-generation.d.ts.map +1 -0
  98. package/dist/escrow-generation.js +76 -0
  99. package/dist/escrow-generation.js.map +1 -0
  100. package/dist/frameworks/agentkit.d.ts +8 -4
  101. package/dist/frameworks/agentkit.d.ts.map +1 -1
  102. package/dist/frameworks/agentkit.js +27 -10
  103. package/dist/frameworks/agentkit.js.map +1 -1
  104. package/dist/frameworks/eliza.d.ts +3 -3
  105. package/dist/frameworks/eliza.d.ts.map +1 -1
  106. package/dist/frameworks/eliza.js +15 -6
  107. package/dist/frameworks/eliza.js.map +1 -1
  108. package/dist/frameworks/langchain.d.ts.map +1 -1
  109. package/dist/frameworks/langchain.js +8 -0
  110. package/dist/frameworks/langchain.js.map +1 -1
  111. package/dist/gateway/caller-auth-gateway.d.ts +83 -31
  112. package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
  113. package/dist/gateway/caller-auth-gateway.js +180 -27
  114. package/dist/gateway/caller-auth-gateway.js.map +1 -1
  115. package/dist/gateway/http-server.d.ts +111 -44
  116. package/dist/gateway/http-server.d.ts.map +1 -1
  117. package/dist/gateway/http-server.js +439 -155
  118. package/dist/gateway/http-server.js.map +1 -1
  119. package/dist/gateway/probe-auth.d.ts +112 -0
  120. package/dist/gateway/probe-auth.d.ts.map +1 -0
  121. package/dist/gateway/probe-auth.js +127 -0
  122. package/dist/gateway/probe-auth.js.map +1 -0
  123. package/dist/gateway/signed-rate-bounds.d.ts +51 -0
  124. package/dist/gateway/signed-rate-bounds.d.ts.map +1 -0
  125. package/dist/gateway/signed-rate-bounds.js +94 -0
  126. package/dist/gateway/signed-rate-bounds.js.map +1 -0
  127. package/dist/gateway/x402-opener-mode.d.ts +215 -0
  128. package/dist/gateway/x402-opener-mode.d.ts.map +1 -0
  129. package/dist/gateway/x402-opener-mode.js +639 -0
  130. package/dist/gateway/x402-opener-mode.js.map +1 -0
  131. package/dist/index.d.ts +6 -2
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +10 -5
  134. package/dist/index.js.map +1 -1
  135. package/dist/mcp/server.d.ts +52 -1
  136. package/dist/mcp/server.d.ts.map +1 -1
  137. package/dist/mcp/server.js +228 -37
  138. package/dist/mcp/server.js.map +1 -1
  139. package/dist/mcp/x402-tools.d.ts +104 -0
  140. package/dist/mcp/x402-tools.d.ts.map +1 -0
  141. package/dist/mcp/x402-tools.js +434 -0
  142. package/dist/mcp/x402-tools.js.map +1 -0
  143. package/dist/network.d.ts +119 -0
  144. package/dist/network.d.ts.map +1 -0
  145. package/dist/network.js +199 -0
  146. package/dist/network.js.map +1 -0
  147. package/dist/sdk/invoke.d.ts +4 -0
  148. package/dist/sdk/invoke.d.ts.map +1 -1
  149. package/dist/sdk/invoke.js +2 -5
  150. package/dist/sdk/invoke.js.map +1 -1
  151. package/dist/wallet/autonomous-wallet-broker.d.ts +3 -0
  152. package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
  153. package/dist/wallet/autonomous-wallet-broker.js +27 -23
  154. package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
  155. package/dist/wallet/autonomous-wallet-protocol.d.ts +8 -2
  156. package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
  157. package/dist/wallet/autonomous-wallet-protocol.js +9 -2
  158. package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
  159. package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
  160. package/dist/wallet/autonomous-wallet.js +3 -2
  161. package/dist/wallet/autonomous-wallet.js.map +1 -1
  162. package/dist/wallet/broker-escrows.d.ts +222 -0
  163. package/dist/wallet/broker-escrows.d.ts.map +1 -0
  164. package/dist/wallet/broker-escrows.js +36 -0
  165. package/dist/wallet/broker-escrows.js.map +1 -0
  166. package/dist/wallet/lifecycle.d.ts +21 -5
  167. package/dist/wallet/lifecycle.d.ts.map +1 -1
  168. package/dist/wallet/lifecycle.js +32 -12
  169. package/dist/wallet/lifecycle.js.map +1 -1
  170. package/dist/wallet/privy-broker-server.d.ts.map +1 -1
  171. package/dist/wallet/privy-broker-server.js +31 -26
  172. package/dist/wallet/privy-broker-server.js.map +1 -1
  173. package/dist/wallet/privy-session-broker.d.ts +14 -5
  174. package/dist/wallet/privy-session-broker.d.ts.map +1 -1
  175. package/dist/wallet/privy-session-broker.js +29 -17
  176. package/dist/wallet/privy-session-broker.js.map +1 -1
  177. package/dist/wallet/privy-session-provider.d.ts +3 -1
  178. package/dist/wallet/privy-session-provider.d.ts.map +1 -1
  179. package/dist/wallet/privy-session-provider.js +5 -3
  180. package/dist/wallet/privy-session-provider.js.map +1 -1
  181. package/dist/wallet/provider.d.ts.map +1 -1
  182. package/dist/wallet/provider.js +15 -8
  183. package/dist/wallet/provider.js.map +1 -1
  184. package/dist/x402/facilitator.d.ts +3 -30
  185. package/dist/x402/facilitator.d.ts.map +1 -1
  186. package/dist/x402/facilitator.js +0 -27
  187. package/dist/x402/facilitator.js.map +1 -1
  188. package/dist/x402-buyer/guarded-fetch.d.ts +51 -0
  189. package/dist/x402-buyer/guarded-fetch.d.ts.map +1 -0
  190. package/dist/x402-buyer/guarded-fetch.js +147 -0
  191. package/dist/x402-buyer/guarded-fetch.js.map +1 -0
  192. package/dist/x402-buyer/index.d.ts +10 -0
  193. package/dist/x402-buyer/index.d.ts.map +1 -0
  194. package/dist/x402-buyer/index.js +10 -0
  195. package/dist/x402-buyer/index.js.map +1 -0
  196. package/dist/x402-buyer/pay.d.ts +135 -0
  197. package/dist/x402-buyer/pay.d.ts.map +1 -0
  198. package/dist/x402-buyer/pay.js +336 -0
  199. package/dist/x402-buyer/pay.js.map +1 -0
  200. package/dist/x402-opener/abi.d.ts +684 -0
  201. package/dist/x402-opener/abi.d.ts.map +1 -0
  202. package/dist/x402-opener/abi.js +880 -0
  203. package/dist/x402-opener/abi.js.map +1 -0
  204. package/dist/x402-opener/facilitator-entry.d.ts +3 -0
  205. package/dist/x402-opener/facilitator-entry.d.ts.map +1 -0
  206. package/dist/x402-opener/facilitator-entry.js +37 -0
  207. package/dist/x402-opener/facilitator-entry.js.map +1 -0
  208. package/dist/x402-opener/facilitator-server.d.ts +180 -0
  209. package/dist/x402-opener/facilitator-server.d.ts.map +1 -0
  210. package/dist/x402-opener/facilitator-server.js +696 -0
  211. package/dist/x402-opener/facilitator-server.js.map +1 -0
  212. package/dist/x402-opener/index.d.ts +14 -0
  213. package/dist/x402-opener/index.d.ts.map +1 -0
  214. package/dist/x402-opener/index.js +14 -0
  215. package/dist/x402-opener/index.js.map +1 -0
  216. package/dist/x402-opener/listing-resolver.d.ts +55 -0
  217. package/dist/x402-opener/listing-resolver.d.ts.map +1 -0
  218. package/dist/x402-opener/listing-resolver.js +125 -0
  219. package/dist/x402-opener/listing-resolver.js.map +1 -0
  220. package/dist/x402-opener/refund-relay.d.ts +240 -0
  221. package/dist/x402-opener/refund-relay.d.ts.map +1 -0
  222. package/dist/x402-opener/refund-relay.js +1240 -0
  223. package/dist/x402-opener/refund-relay.js.map +1 -0
  224. package/dist/x402-opener/relayer-queue.d.ts +14 -0
  225. package/dist/x402-opener/relayer-queue.d.ts.map +1 -0
  226. package/dist/x402-opener/relayer-queue.js +18 -0
  227. package/dist/x402-opener/relayer-queue.js.map +1 -0
  228. package/dist/x402-opener/scheme.d.ts +217 -0
  229. package/dist/x402-opener/scheme.d.ts.map +1 -0
  230. package/dist/x402-opener/scheme.js +749 -0
  231. package/dist/x402-opener/scheme.js.map +1 -0
  232. package/dist/x402-opener/terms.d.ts +105 -0
  233. package/dist/x402-opener/terms.d.ts.map +1 -0
  234. package/dist/x402-opener/terms.js +212 -0
  235. package/dist/x402-opener/terms.js.map +1 -0
  236. package/dist/zktls/reclaim.d.ts +2 -2
  237. package/dist/zktls/t2-delivery-proof.d.ts +6 -6
  238. package/docs/agent-layer.md +3 -2
  239. package/docs/autonomous-privy-wallet.md +188 -0
  240. package/docs/cli.md +184 -31
  241. package/docs/langchain.md +5 -0
  242. package/docs/mcp-reference.md +75 -5
  243. package/docs/probe-capability.md +191 -0
  244. package/docs/quickstart.md +36 -1
  245. package/docs/threat-model.md +20 -0
  246. package/docs/x402.md +628 -595
  247. package/package.json +19 -17
  248. package/src/capability/probe-capability.ts +355 -0
  249. package/src/cli/args.ts +29 -0
  250. package/src/cli/commands/claim.ts +1 -1
  251. package/src/cli/commands/close.ts +36 -3
  252. package/src/cli/commands/invoke.ts +5 -2
  253. package/src/cli/commands/mcp.ts +18 -2
  254. package/src/cli/commands/open.ts +75 -4
  255. package/src/cli/commands/pay.ts +442 -0
  256. package/src/cli/commands/reclaim-unverified.ts +8 -2
  257. package/src/cli/commands/reclaim.ts +252 -14
  258. package/src/cli/commands/refund.ts +277 -0
  259. package/src/cli/commands/status.ts +17 -1
  260. package/src/cli/commands/streams.ts +10 -14
  261. package/src/cli/commands/watch.ts +7 -1
  262. package/src/cli/config.ts +139 -52
  263. package/src/cli/deps.ts +74 -1
  264. package/src/cli/errors.ts +24 -1
  265. package/src/cli/escape-hatch.ts +19 -5
  266. package/src/cli/listings.ts +43 -10
  267. package/src/cli/preflight.ts +36 -21
  268. package/src/cli/privy.ts +4 -2
  269. package/src/cli/reclaimability.ts +154 -0
  270. package/src/cli/run.ts +54 -11
  271. package/src/cli/scan-range.ts +2 -2
  272. package/src/cli/status.ts +14 -1
  273. package/src/cli/wallet.ts +2 -2
  274. package/src/discovery/rate-band.ts +172 -0
  275. package/src/escrow-generation.ts +135 -0
  276. package/src/frameworks/agentkit.ts +45 -11
  277. package/src/frameworks/eliza.ts +27 -5
  278. package/src/frameworks/langchain.ts +14 -0
  279. package/src/gateway/caller-auth-gateway.ts +320 -68
  280. package/src/gateway/http-server.ts +629 -220
  281. package/src/gateway/probe-auth.ts +191 -0
  282. package/src/gateway/signed-rate-bounds.ts +164 -0
  283. package/src/gateway/x402-opener-mode.ts +974 -0
  284. package/src/index.ts +82 -19
  285. package/src/mcp/server.ts +319 -42
  286. package/src/mcp/x402-tools.ts +621 -0
  287. package/src/network.ts +302 -0
  288. package/src/sdk/invoke.ts +6 -5
  289. package/src/wallet/autonomous-wallet-broker.ts +46 -20
  290. package/src/wallet/autonomous-wallet-protocol.ts +11 -2
  291. package/src/wallet/autonomous-wallet.ts +4 -2
  292. package/src/wallet/broker-escrows.ts +66 -0
  293. package/src/wallet/lifecycle.ts +53 -18
  294. package/src/wallet/privy-broker-server.ts +35 -25
  295. package/src/wallet/privy-session-broker.ts +58 -25
  296. package/src/wallet/privy-session-provider.ts +7 -3
  297. package/src/wallet/provider.ts +20 -15
  298. package/src/x402/facilitator.ts +3 -43
  299. package/src/x402-buyer/guarded-fetch.ts +213 -0
  300. package/src/x402-buyer/index.ts +9 -0
  301. package/src/x402-buyer/pay.ts +517 -0
  302. package/src/x402-opener/abi.ts +881 -0
  303. package/src/x402-opener/facilitator-entry.ts +45 -0
  304. package/src/x402-opener/facilitator-server.ts +1014 -0
  305. package/src/x402-opener/index.ts +13 -0
  306. package/src/x402-opener/listing-resolver.ts +202 -0
  307. package/src/x402-opener/refund-relay.ts +1743 -0
  308. package/src/x402-opener/relayer-queue.ts +18 -0
  309. package/src/x402-opener/scheme.ts +1133 -0
  310. package/src/x402-opener/terms.ts +300 -0
  311. package/dist/gateway/x402-mode.d.ts +0 -123
  312. package/dist/gateway/x402-mode.d.ts.map +0 -1
  313. package/dist/gateway/x402-mode.js +0 -212
  314. package/dist/gateway/x402-mode.js.map +0 -1
  315. package/dist/x402/delivery-oracle.d.ts +0 -108
  316. package/dist/x402/delivery-oracle.d.ts.map +0 -1
  317. package/dist/x402/delivery-oracle.js +0 -174
  318. package/dist/x402/delivery-oracle.js.map +0 -1
  319. package/dist/x402/facilitator-server-entry.d.ts +0 -3
  320. package/dist/x402/facilitator-server-entry.d.ts.map +0 -1
  321. package/dist/x402/facilitator-server-entry.js +0 -27
  322. package/dist/x402/facilitator-server-entry.js.map +0 -1
  323. package/dist/x402/facilitator-server.d.ts +0 -73
  324. package/dist/x402/facilitator-server.d.ts.map +0 -1
  325. package/dist/x402/facilitator-server.js +0 -305
  326. package/dist/x402/facilitator-server.js.map +0 -1
  327. package/dist/x402/payment-requirements.d.ts +0 -106
  328. package/dist/x402/payment-requirements.d.ts.map +0 -1
  329. package/dist/x402/payment-requirements.js +0 -138
  330. package/dist/x402/payment-requirements.js.map +0 -1
  331. package/dist/x402/relayer.d.ts +0 -41
  332. package/dist/x402/relayer.d.ts.map +0 -1
  333. package/dist/x402/relayer.js +0 -64
  334. package/dist/x402/relayer.js.map +0 -1
  335. package/dist/x402/resource-index.d.ts +0 -75
  336. package/dist/x402/resource-index.d.ts.map +0 -1
  337. package/dist/x402/resource-index.js +0 -126
  338. package/dist/x402/resource-index.js.map +0 -1
  339. package/dist/x402/verified-delivery-facilitator.d.ts +0 -285
  340. package/dist/x402/verified-delivery-facilitator.d.ts.map +0 -1
  341. package/dist/x402/verified-delivery-facilitator.js +0 -423
  342. package/dist/x402/verified-delivery-facilitator.js.map +0 -1
  343. package/src/gateway/x402-mode.ts +0 -350
  344. package/src/x402/delivery-oracle.ts +0 -285
  345. package/src/x402/facilitator-server-entry.ts +0 -35
  346. package/src/x402/facilitator-server.ts +0 -445
  347. package/src/x402/payment-requirements.ts +0 -231
  348. package/src/x402/relayer.ts +0 -122
  349. package/src/x402/resource-index.ts +0 -228
  350. package/src/x402/verified-delivery-facilitator.ts +0 -744
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facilitator-server.js","sourceRoot":"","sources":["../../src/x402-opener/facilitator-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@absol-labs/agent/x402-opener` — x402 v2 `exact` payments settled into a
3
+ * `StreamEscrowV2` stream through the ownerless `X402StreamOpenerFactory`
4
+ * (metrik-agent#116). Kept out of the root barrel so consumers that never use
5
+ * x402 do not load `@x402/*`. See docs/x402.md.
6
+ */
7
+ export * from "./abi.js";
8
+ export * from "./terms.js";
9
+ export * from "./listing-resolver.js";
10
+ export * from "./scheme.js";
11
+ export * from "./facilitator-server.js";
12
+ export * from "./refund-relay.js";
13
+ export * from "./relayer-queue.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402-opener/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@absol-labs/agent/x402-opener` — x402 v2 `exact` payments settled into a
3
+ * `StreamEscrowV2` stream through the ownerless `X402StreamOpenerFactory`
4
+ * (metrik-agent#116). Kept out of the root barrel so consumers that never use
5
+ * x402 do not load `@x402/*`. See docs/x402.md.
6
+ */
7
+ export * from "./abi.js";
8
+ export * from "./terms.js";
9
+ export * from "./listing-resolver.js";
10
+ export * from "./scheme.js";
11
+ export * from "./facilitator-server.js";
12
+ export * from "./refund-relay.js";
13
+ export * from "./relayer-queue.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402-opener/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { type DiscoveredService } from "../discovery/registry.js";
2
+ import type { OpenerTerms } from "./terms.js";
3
+ /**
4
+ * Resolves opener terms to exactly ONE operator-signed Metrik listing.
5
+ *
6
+ * The trust decision is the existing discovery verification, reused verbatim
7
+ * ({@link discoverServicesDetailed} → `@absol-labs/sdk`): every registry row is
8
+ * schema-validated, its `serviceRef` is re-derived from the signed content, and
9
+ * its operator EIP-712 signature is recovered and matched. Only then is it
10
+ * compared with the terms. An unsigned registry column, or anything a request
11
+ * carries, is never consulted — `serviceRef` and `operator` come out of the
12
+ * verified signed record.
13
+ *
14
+ * Fail closed: an unreachable registry, zero matches, or more than one match is
15
+ * a refusal, never a pass.
16
+ */
17
+ export type ListingResolution = {
18
+ readonly ok: true;
19
+ readonly listing: DiscoveredService;
20
+ } | {
21
+ readonly ok: false;
22
+ readonly reason: "listing-registry-unavailable" | "listing-not-found" | "listing-ambiguous" | "listing-rate-out-of-bounds";
23
+ readonly message: string;
24
+ };
25
+ export interface OperatorSignedListingResolver {
26
+ resolve(terms: Pick<OpenerTerms, "operator" | "serviceRef" | "ratePerSecond">): Promise<ListingResolution>;
27
+ }
28
+ export interface RegistryListingResolverOptions {
29
+ /** Default {@link DEFAULT_METRIK_PUBLIC_REGISTRY_URL}. */
30
+ readonly registryUrl?: string;
31
+ /**
32
+ * How long a SUCCESSFUL registry read is reused, in seconds. Failures are
33
+ * never cached. Default 60. `0` disables caching.
34
+ */
35
+ readonly cacheSeconds?: number;
36
+ readonly timeoutMs?: number;
37
+ readonly fetch?: typeof fetch;
38
+ readonly now?: () => number;
39
+ readonly logger?: {
40
+ warn: (...args: unknown[]) => void;
41
+ };
42
+ }
43
+ export declare const DEFAULT_LISTING_CACHE_SECONDS = 60;
44
+ export declare class RegistryListingResolver implements OperatorSignedListingResolver {
45
+ private readonly options;
46
+ private readonly registryUrl;
47
+ private readonly cacheSeconds;
48
+ private readonly now;
49
+ private cache;
50
+ private inFlight;
51
+ constructor(options?: RegistryListingResolverOptions);
52
+ resolve(terms: Pick<OpenerTerms, "operator" | "serviceRef" | "ratePerSecond">): Promise<ListingResolution>;
53
+ private services;
54
+ }
55
+ //# sourceMappingURL=listing-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listing-resolver.d.ts","sourceRoot":"","sources":["../../src/x402-opener/listing-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EACX,8BAA8B,GAC9B,mBAAmB,GACnB,mBAAmB,GACnB,4BAA4B,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC,GACpE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,8BAA8B;IAC7C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;CAC1D;AAED,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,qBAAa,uBAAwB,YAAW,6BAA6B;IAS/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IARpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,KAAK,CAEC;IACd,OAAO,CAAC,QAAQ,CAAoD;gBAEvC,OAAO,GAAE,8BAAmC;IAanE,OAAO,CACX,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC,GACpE,OAAO,CAAC,iBAAiB,CAAC;YA+Cf,QAAQ;CAwCvB"}
@@ -0,0 +1,125 @@
1
+ import { DEFAULT_METRIK_PUBLIC_REGISTRY_URL, discoverServicesDetailed, } from "../discovery/registry.js";
2
+ export const DEFAULT_LISTING_CACHE_SECONDS = 60;
3
+ export class RegistryListingResolver {
4
+ options;
5
+ registryUrl;
6
+ cacheSeconds;
7
+ now;
8
+ cache;
9
+ inFlight;
10
+ constructor(options = {}) {
11
+ this.options = options;
12
+ this.registryUrl =
13
+ options.registryUrl ?? DEFAULT_METRIK_PUBLIC_REGISTRY_URL;
14
+ // eslint-disable-next-line no-new -- validates the URL is well-formed.
15
+ new URL(this.registryUrl);
16
+ const cacheSeconds = options.cacheSeconds ?? DEFAULT_LISTING_CACHE_SECONDS;
17
+ if (!Number.isFinite(cacheSeconds) || cacheSeconds < 0) {
18
+ throw new Error("cacheSeconds must be a non-negative number");
19
+ }
20
+ this.cacheSeconds = cacheSeconds;
21
+ this.now = options.now ?? (() => Math.floor(Date.now() / 1000));
22
+ }
23
+ async resolve(terms) {
24
+ let services;
25
+ try {
26
+ services = await this.services();
27
+ }
28
+ catch (error) {
29
+ return {
30
+ ok: false,
31
+ reason: "listing-registry-unavailable",
32
+ message: error instanceof Error ? error.message : String(error),
33
+ };
34
+ }
35
+ const serviceRef = terms.serviceRef.toLowerCase();
36
+ const operator = terms.operator.toLowerCase();
37
+ const matches = services.filter((service) => service.serviceRef.toLowerCase() === serviceRef &&
38
+ service.operator.toLowerCase() === operator);
39
+ if (matches.length === 0) {
40
+ return {
41
+ ok: false,
42
+ reason: "listing-not-found",
43
+ message: `no operator-signed listing for serviceRef ${terms.serviceRef} signed by ${terms.operator}`,
44
+ };
45
+ }
46
+ if (matches.length > 1) {
47
+ return {
48
+ ok: false,
49
+ reason: "listing-ambiguous",
50
+ message: `${matches.length} listings match serviceRef ${terms.serviceRef}`,
51
+ };
52
+ }
53
+ const listing = matches[0];
54
+ const bounds = signedRateBounds(listing);
55
+ if ((bounds.min !== undefined && terms.ratePerSecond < bounds.min) ||
56
+ (bounds.max !== undefined && terms.ratePerSecond > bounds.max)) {
57
+ return {
58
+ ok: false,
59
+ reason: "listing-rate-out-of-bounds",
60
+ message: `ratePerSecond ${terms.ratePerSecond} is outside the listing's signed bounds [${bounds.min ?? "-"}, ${bounds.max ?? "-"}]`,
61
+ };
62
+ }
63
+ return { ok: true, listing };
64
+ }
65
+ async services() {
66
+ const nowSeconds = this.now();
67
+ if (this.cache !== undefined &&
68
+ this.cacheSeconds > 0 &&
69
+ nowSeconds - this.cache.at < this.cacheSeconds) {
70
+ return this.cache.services;
71
+ }
72
+ if (this.inFlight !== undefined) {
73
+ return this.inFlight;
74
+ }
75
+ const read = discoverServicesDetailed({
76
+ registryUrl: this.registryUrl,
77
+ // An explicit empty key pins the credential-free public read: the
78
+ // METRIK_AGENT_REGISTRY_APIKEY env override must not switch transports.
79
+ apiKey: "",
80
+ ...(this.options.fetch === undefined
81
+ ? {}
82
+ : { fetch: this.options.fetch }),
83
+ ...(this.options.timeoutMs === undefined
84
+ ? {}
85
+ : { timeoutMs: this.options.timeoutMs }),
86
+ ...(this.options.logger === undefined
87
+ ? {}
88
+ : { logger: this.options.logger }),
89
+ }).then((result) => {
90
+ if (!result.registryAvailable) {
91
+ throw new Error("registry reported itself unavailable");
92
+ }
93
+ this.cache = { at: this.now(), services: result.services };
94
+ return result.services;
95
+ });
96
+ this.inFlight = read;
97
+ try {
98
+ return await read;
99
+ }
100
+ finally {
101
+ this.inFlight = undefined;
102
+ }
103
+ }
104
+ }
105
+ /**
106
+ * Rate bounds from the SIGNED descriptor's `commercial` block, when present.
107
+ * A legacy binding carries none.
108
+ */
109
+ function signedRateBounds(listing) {
110
+ const signed = listing.signed;
111
+ const descriptor = signed.descriptor;
112
+ const commercial = descriptor?.commercial;
113
+ if (commercial === undefined) {
114
+ return {};
115
+ }
116
+ return {
117
+ ...(commercial.minRatePerSecond === undefined
118
+ ? {}
119
+ : { min: BigInt(commercial.minRatePerSecond) }),
120
+ ...(commercial.maxRatePerSecond === undefined
121
+ ? {}
122
+ : { max: BigInt(commercial.maxRatePerSecond) }),
123
+ };
124
+ }
125
+ //# sourceMappingURL=listing-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listing-resolver.js","sourceRoot":"","sources":["../../src/x402-opener/listing-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ import { type Account, type Address, type Chain, type Hex, type PublicClient, type Transport, type WalletClient } from "viem";
2
+ import { RelayerQueue } from "./relayer-queue.js";
3
+ /**
4
+ * The gasless refund relay of the Metrik x402 opener facilitator
5
+ * (metrik-agent#119).
6
+ *
7
+ * A typical x402 payer holds only USDC. Paying through the opener is gasless
8
+ * (the facilitator's relayer submits `deployAndSettle`), but getting unearned
9
+ * money back needs two transactions: `close` (payer-only, because anyone else
10
+ * could cut a payer's service) and `reclaim`. This relay submits them from the
11
+ * same relayer, which pays the gas:
12
+ *
13
+ * - `close`: ONLY with the payer's EIP-712 `Close` signature, relayed as
14
+ * `opener.closeWithSig`. Verified off-chain against `payerOf(streamId)`, the
15
+ * payer's current opener nonce and the opener's own EIP-712 domain (read from
16
+ * the opener, ERC-5267) before anything is simulated.
17
+ * - `reclaim`: permissionless, because the contract fixes both the amount (a
18
+ * Merkle proof against the escrow's LATEST checkpoint root) and the
19
+ * destination (`payerOf(streamId)`). The relay fetches the proof from the
20
+ * oracle itself and checks it against the on-chain root before simulating.
21
+ * - `reclaimUnverified` (the no-proof escape hatch, which forfeits the
22
+ * operator's earned-but-unclaimed revenue): ONLY with the payer's EIP-712
23
+ * `ReclaimUnverified` signature, as `reclaimUnverifiedWithSig`. The unsigned
24
+ * `reclaimUnverified` entrypoint is payer-only on-chain and is never called.
25
+ *
26
+ * There is no automatic refund and no keeper: nothing here runs unless someone
27
+ * calls an endpoint.
28
+ *
29
+ * ## Bounded against gas abuse
30
+ *
31
+ * - Only streams whose escrow buyer is an opener of the configured factory
32
+ * (`factory.isOpener(stream.buyer)`, on-chain) are served; everything else is
33
+ * `404` before any signature check, oracle call or simulation.
34
+ * - Every precondition the contract would check is read first (status, expiry,
35
+ * settlement window, reclaimed flag, non-zero refund). A request that would
36
+ * have no real effect never reaches the relayer.
37
+ * - Nothing is broadcast without a successful simulation from the relayer, and
38
+ * a reclaim's simulation must return exactly the non-zero amount
39
+ * `reclaimableFor` predicted.
40
+ * - At most ONE successful close and ONE successful reclaim (proof or escape
41
+ * hatch — the escrow allows one) per stream from this instance. Concurrent
42
+ * duplicates are refused synchronously; a repeat after success is refused
43
+ * without an RPC write.
44
+ * - Submission attempts are capped per stream and globally per minute; refused
45
+ * requests (bad signature, no effect) do not consume the per-stream budget,
46
+ * so nobody can lock a payer out by spamming forged requests.
47
+ * - Success is reported ONLY from a mined receipt that carries the expected
48
+ * escrow and opener events for exactly this stream, payer and amount.
49
+ * - Submissions go through the relayer's shared, serialized queue.
50
+ */
51
+ /** EIP-712 domain name/version of `X402StreamOpener`. Checked against the opener's ERC-5267 domain. */
52
+ export declare const OPENER_EIP712_NAME = "Metrik X402StreamOpener";
53
+ export declare const OPENER_EIP712_VERSION = "1";
54
+ /** The two payer-signed opener actions. */
55
+ export type OpenerSignedAction = "Close" | "ReclaimUnverified";
56
+ declare const ACTION_FIELDS: readonly [{
57
+ readonly name: "streamId";
58
+ readonly type: "bytes32";
59
+ }, {
60
+ readonly name: "nonce";
61
+ readonly type: "uint256";
62
+ }, {
63
+ readonly name: "deadline";
64
+ readonly type: "uint256";
65
+ }];
66
+ /** Default per-stream relayed submission attempts per minute. */
67
+ export declare const DEFAULT_REFUND_SUBMISSIONS_PER_STREAM_PER_MINUTE = 3;
68
+ /** Default relayed refund submission attempts per minute, all streams. */
69
+ export declare const DEFAULT_REFUND_SUBMISSIONS_PER_MINUTE = 30;
70
+ /** A signed deadline must leave at least this long for the tx to be mined. */
71
+ export declare const MIN_SIGNATURE_DEADLINE_HEADROOM_SECONDS = 60n;
72
+ /**
73
+ * EIP-712 typed data for a payer-signed opener action (`Close` or
74
+ * `ReclaimUnverified`), domain-bound to one opener. `nonce` is the payer's
75
+ * current `opener.nonces(payer)`.
76
+ */
77
+ export declare function openerActionTypedData(input: {
78
+ readonly action: OpenerSignedAction;
79
+ readonly opener: Address;
80
+ readonly chainId: number;
81
+ readonly streamId: Hex;
82
+ readonly nonce: bigint;
83
+ readonly deadline: bigint;
84
+ }): {
85
+ readonly domain: {
86
+ readonly name: "Metrik X402StreamOpener";
87
+ readonly version: "1";
88
+ readonly chainId: number;
89
+ readonly verifyingContract: `0x${string}`;
90
+ };
91
+ readonly types: Record<OpenerSignedAction, typeof ACTION_FIELDS>;
92
+ readonly primaryType: OpenerSignedAction;
93
+ readonly message: {
94
+ readonly streamId: `0x${string}`;
95
+ readonly nonce: bigint;
96
+ readonly deadline: bigint;
97
+ };
98
+ };
99
+ /**
100
+ * The escrow's canonical checkpoint leaf,
101
+ * `keccak256(bytes.concat(keccak256(abi.encode(streamId, cumulative))))` —
102
+ * double-hashed, OpenZeppelin `StandardMerkleTree`-compatible.
103
+ */
104
+ export declare function checkpointLeaf(streamId: Hex, cumulativeAmount: bigint): Hex;
105
+ /** OpenZeppelin `MerkleProof.processProof` (commutative, sorted-pair keccak). */
106
+ export declare function processMerkleProof(leaf: Hex, proof: readonly Hex[]): Hex;
107
+ export interface OpenerRefundRelayConfig {
108
+ /** CAIP-2 network (`eip155:<chainId>`), as the registry gives it. Must match the RPC's chain id. */
109
+ readonly network: string;
110
+ readonly factoryAddress: Address;
111
+ /** The `StreamEscrowV2` the factory settles into (checked by {@link OpenerRefundRelay.init}). */
112
+ readonly escrowAddress: Address;
113
+ /** Base URL of the Metrik oracle that serves `GET /checkpoint/proof?streamId=`. */
114
+ readonly oracleUrl: string;
115
+ readonly publicClient: PublicClient<Transport, Chain | undefined>;
116
+ /** The relayer. Pays gas only; never receives or holds a refund. */
117
+ readonly walletClient: WalletClient<Transport, Chain | undefined, Account>;
118
+ /** Share with the opener scheme when both use one relayer key. */
119
+ readonly relayerQueue?: RelayerQueue;
120
+ /** How long to wait for a receipt before answering `202 pending`. Default 60 s. */
121
+ readonly receiptTimeoutMs?: number;
122
+ /** Oracle proof request timeout. Default 10 s. */
123
+ readonly oracleTimeoutMs?: number;
124
+ readonly maxSubmissionsPerStreamPerMinute?: number;
125
+ readonly maxSubmissionsPerMinute?: number;
126
+ /** Public origin of this service, used for absolute links in `next`. */
127
+ readonly publicBaseUrl?: string;
128
+ readonly fetch?: typeof fetch;
129
+ /** Injectable clock (ms) for the rate windows, for tests. Chain time drives every contract precondition. */
130
+ readonly nowMs?: () => number;
131
+ /**
132
+ * How long a stream's status and its oracle proof are reused, seconds, so
133
+ * repeated requests for the same stream do not re-hit the RPC or the oracle.
134
+ * Default {@link DEFAULT_REFUND_READ_CACHE_SECONDS}; 0 disables. Dropped for
135
+ * a stream as soon as a relayed transaction for it is mined. Never used to
136
+ * decide a broadcast on its own: the simulation re-checks on-chain state.
137
+ */
138
+ readonly readCacheSeconds?: number;
139
+ /** Where failure details go (server-side only; never sent to clients). */
140
+ readonly logger?: Pick<Console, "error">;
141
+ /**
142
+ * The escrow's generation, which decides when the no-proof escape hatch
143
+ * opens (V2: `expiresAt + grace`; V3: `min(expiresAt, closedAt) + grace`,
144
+ * read from `escapeHatchReadyAt`). Default: the SDK registry's
145
+ * `escrow.generation` for (chain, escrow), else `v2`.
146
+ */
147
+ readonly escrowGeneration?: string;
148
+ }
149
+ /** Default reuse window for a stream's status and oracle proof. */
150
+ export declare const DEFAULT_REFUND_READ_CACHE_SECONDS = 5;
151
+ /** HTTP-shaped outcome of one relay call. `body` is JSON-safe. */
152
+ export interface RefundRelayResponse {
153
+ readonly status: number;
154
+ readonly body: Record<string, unknown>;
155
+ /** Suggested `Retry-After`, seconds. */
156
+ readonly retryAfterSeconds?: number;
157
+ }
158
+ /** What the facilitator HTTP server needs from a refund relay. */
159
+ export interface RefundRelayHandler {
160
+ status(streamId: string): Promise<RefundRelayResponse>;
161
+ close(streamId: string, body: unknown): Promise<RefundRelayResponse>;
162
+ reclaim(streamId: string): Promise<RefundRelayResponse>;
163
+ reclaimUnverified(streamId: string, body: unknown): Promise<RefundRelayResponse>;
164
+ }
165
+ export declare class OpenerRefundRelay implements RefundRelayHandler {
166
+ private readonly config;
167
+ private readonly chainId;
168
+ private readonly factory;
169
+ private readonly escrow;
170
+ private readonly oracleUrl;
171
+ private readonly queue;
172
+ private readonly receiptTimeoutMs;
173
+ private readonly oracleTimeoutMs;
174
+ private readonly fetchImpl;
175
+ private readonly perStream;
176
+ private readonly global;
177
+ private readonly publicBaseUrl;
178
+ private readonly ledger;
179
+ private escapeGraceSeconds;
180
+ private readonly generation;
181
+ private readonly nowMs;
182
+ private readonly cacheMs;
183
+ private readonly logger;
184
+ private readonly statusCache;
185
+ private readonly proofCache;
186
+ constructor(config: OpenerRefundRelayConfig);
187
+ /**
188
+ * Proves the wiring before serving: the RPC is on the configured chain and
189
+ * the factory settles into the configured escrow. Caches the escrow's
190
+ * immutable `escapeGraceSeconds`. Throws otherwise (refuse to start).
191
+ */
192
+ init(): Promise<void>;
193
+ status(rawStreamId: string): Promise<RefundRelayResponse>;
194
+ private computeStatus;
195
+ close(rawStreamId: string, body: unknown): Promise<RefundRelayResponse>;
196
+ reclaim(rawStreamId: string): Promise<RefundRelayResponse>;
197
+ reclaimUnverified(rawStreamId: string, body: unknown): Promise<RefundRelayResponse>;
198
+ private fresh;
199
+ private remember;
200
+ private forget;
201
+ /** Logs a failure server-side; clients only ever get a generic code. */
202
+ private log;
203
+ private logged;
204
+ private unavailable;
205
+ /** When the no-proof escape hatch opens for this stream, per generation. */
206
+ private escapeHatchAt;
207
+ private grace;
208
+ private link;
209
+ /**
210
+ * Ledger state that answers a request before any chain read: a delivered
211
+ * success, a blocked (unknown-outcome) tx, a concurrent in-flight request,
212
+ * or a pending tx to reconcile (never re-broadcast).
213
+ */
214
+ private precheck;
215
+ /**
216
+ * Claims the one submission slot for `key` (synchronously), then simulates
217
+ * and broadcasts through the shared relayer queue. `expectedResult`, when
218
+ * set, is the exact non-zero amount the simulation must return.
219
+ */
220
+ private submit;
221
+ private awaitOutcome;
222
+ /** Streams whose escrow buyer is an opener of the configured factory, or a 404. */
223
+ private resolve;
224
+ /** Off-chain check of a payer-signed opener action. `undefined` = valid. */
225
+ private verifyPayerSignature;
226
+ private chainNow;
227
+ private readNonce;
228
+ private readLatestCheckedAt;
229
+ private readReclaimable;
230
+ /**
231
+ * The oracle's proof for `streamId`, accepted ONLY if it is well-formed, is
232
+ * for this stream, verifies under the escrow's double-hashed leaf, and its
233
+ * root is the escrow's on-chain `latestCheckpointRoot` (the only root the
234
+ * buyer's reclaim settles against).
235
+ */
236
+ private fetchProof;
237
+ private loadProof;
238
+ }
239
+ export {};
240
+ //# sourceMappingURL=refund-relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund-relay.d.ts","sourceRoot":"","sources":["../../src/x402-opener/refund-relay.ts"],"names":[],"mappings":"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"}