zklicensing 0.1.0-beta.2 → 0.1.0-beta.21

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 (317) hide show
  1. package/README.md +417 -201
  2. package/build/agent.d.ts +371 -0
  3. package/build/agent.d.ts.map +1 -0
  4. package/build/agent.js +553 -0
  5. package/build/agent.js.map +1 -0
  6. package/build/agentActions.d.ts +841 -0
  7. package/build/agentActions.d.ts.map +1 -0
  8. package/build/agentActions.js +581 -0
  9. package/build/agentActions.js.map +1 -0
  10. package/build/agentRecord.d.ts +83 -0
  11. package/build/agentRecord.d.ts.map +1 -0
  12. package/build/agentRecord.js +69 -0
  13. package/build/agentRecord.js.map +1 -0
  14. package/build/agentVendor.d.ts +220 -0
  15. package/build/agentVendor.d.ts.map +1 -0
  16. package/build/agentVendor.js +306 -0
  17. package/build/agentVendor.js.map +1 -0
  18. package/build/appsLookup.d.ts +14 -0
  19. package/build/appsLookup.d.ts.map +1 -0
  20. package/build/appsLookup.js +12 -0
  21. package/build/appsLookup.js.map +1 -0
  22. package/build/archiveBootstrap.d.ts +31 -5
  23. package/build/archiveBootstrap.d.ts.map +1 -0
  24. package/build/archiveBootstrap.js +140 -47
  25. package/build/archiveBootstrap.js.map +1 -0
  26. package/build/atomicJson.d.ts +5 -0
  27. package/build/atomicJson.d.ts.map +1 -0
  28. package/build/atomicJson.js +55 -0
  29. package/build/atomicJson.js.map +1 -0
  30. package/build/bindClient.d.ts +85 -0
  31. package/build/bindClient.d.ts.map +1 -0
  32. package/build/bindClient.js +187 -0
  33. package/build/bindClient.js.map +1 -0
  34. package/build/buyClient.d.ts +27 -4
  35. package/build/buyClient.d.ts.map +1 -0
  36. package/build/buyClient.js +72 -26
  37. package/build/buyClient.js.map +1 -0
  38. package/build/chainHead.d.ts +61 -0
  39. package/build/chainHead.d.ts.map +1 -0
  40. package/build/chainHead.js +88 -0
  41. package/build/chainHead.js.map +1 -0
  42. package/build/compactMerkleMap.d.ts +72 -0
  43. package/build/compactMerkleMap.d.ts.map +1 -0
  44. package/build/compactMerkleMap.js +224 -0
  45. package/build/compactMerkleMap.js.map +1 -0
  46. package/build/contractInterface.d.ts +191 -51
  47. package/build/contractInterface.d.ts.map +1 -0
  48. package/build/contractInterface.js +234 -43
  49. package/build/contractInterface.js.map +1 -0
  50. package/build/contractTypes.d.ts +9 -0
  51. package/build/contractTypes.d.ts.map +1 -0
  52. package/build/contractTypes.js +28 -0
  53. package/build/contractTypes.js.map +1 -0
  54. package/build/countryStats.d.ts +12 -3
  55. package/build/countryStats.d.ts.map +1 -0
  56. package/build/countryStats.js +87 -23
  57. package/build/countryStats.js.map +1 -0
  58. package/build/deployClient.d.ts +138 -24
  59. package/build/deployClient.d.ts.map +1 -0
  60. package/build/deployClient.js +91 -31
  61. package/build/deployClient.js.map +1 -0
  62. package/build/deviceIdentity.d.ts +68 -0
  63. package/build/deviceIdentity.d.ts.map +1 -0
  64. package/build/deviceIdentity.js +209 -0
  65. package/build/deviceIdentity.js.map +1 -0
  66. package/build/freezeClient.d.ts +26 -6
  67. package/build/freezeClient.d.ts.map +1 -0
  68. package/build/freezeClient.js +30 -6
  69. package/build/freezeClient.js.map +1 -0
  70. package/build/generationClient.d.ts +6 -3
  71. package/build/generationClient.d.ts.map +1 -0
  72. package/build/generationClient.js +25 -38
  73. package/build/generationClient.js.map +1 -0
  74. package/build/holderSecret.d.ts +70 -0
  75. package/build/holderSecret.d.ts.map +1 -0
  76. package/build/holderSecret.js +76 -0
  77. package/build/holderSecret.js.map +1 -0
  78. package/build/index.d.ts +38 -38
  79. package/build/index.d.ts.map +1 -0
  80. package/build/index.js +97 -121
  81. package/build/index.js.map +1 -0
  82. package/build/keysClient.d.ts +142 -0
  83. package/build/keysClient.d.ts.map +1 -0
  84. package/build/keysClient.js +109 -0
  85. package/build/keysClient.js.map +1 -0
  86. package/build/licenseLeaf.d.ts +76 -0
  87. package/build/licenseLeaf.d.ts.map +1 -0
  88. package/build/licenseLeaf.js +189 -0
  89. package/build/licenseLeaf.js.map +1 -0
  90. package/build/licenseRecord.d.ts +68 -5
  91. package/build/licenseRecord.d.ts.map +1 -0
  92. package/build/licenseRecord.js +26 -1
  93. package/build/licenseRecord.js.map +1 -0
  94. package/build/licenseStore.d.ts +81 -4
  95. package/build/licenseStore.d.ts.map +1 -0
  96. package/build/licenseStore.js +400 -30
  97. package/build/licenseStore.js.map +1 -0
  98. package/build/licenseTrustless.d.ts +43 -0
  99. package/build/licenseTrustless.d.ts.map +1 -0
  100. package/build/licenseTrustless.js +180 -0
  101. package/build/licenseTrustless.js.map +1 -0
  102. package/build/manifestVerify.d.ts +29 -1
  103. package/build/manifestVerify.d.ts.map +1 -0
  104. package/build/manifestVerify.js +46 -4
  105. package/build/manifestVerify.js.map +1 -0
  106. package/build/minaPriceHistory.d.ts +9 -0
  107. package/build/minaPriceHistory.d.ts.map +1 -0
  108. package/build/minaPriceHistory.js +152 -0
  109. package/build/minaPriceHistory.js.map +1 -0
  110. package/build/onChainRoot.d.ts +60 -0
  111. package/build/onChainRoot.d.ts.map +1 -0
  112. package/build/onChainRoot.js +74 -0
  113. package/build/onChainRoot.js.map +1 -0
  114. package/build/ownershipLicenseHash.d.ts +25 -0
  115. package/build/ownershipLicenseHash.d.ts.map +1 -0
  116. package/build/ownershipLicenseHash.js +29 -0
  117. package/build/ownershipLicenseHash.js.map +1 -0
  118. package/build/ownershipSignature.d.ts +153 -0
  119. package/build/ownershipSignature.d.ts.map +1 -0
  120. package/build/ownershipSignature.js +297 -0
  121. package/build/ownershipSignature.js.map +1 -0
  122. package/build/permitCheckFlow.d.ts +155 -0
  123. package/build/permitCheckFlow.d.ts.map +1 -0
  124. package/build/permitCheckFlow.js +196 -0
  125. package/build/permitCheckFlow.js.map +1 -0
  126. package/build/permitDescribe.d.ts +124 -0
  127. package/build/permitDescribe.d.ts.map +1 -0
  128. package/build/permitDescribe.js +324 -0
  129. package/build/permitDescribe.js.map +1 -0
  130. package/build/permitInterface.d.ts +85 -0
  131. package/build/permitInterface.d.ts.map +1 -0
  132. package/build/permitInterface.js +121 -0
  133. package/build/permitInterface.js.map +1 -0
  134. package/build/permitMessages.d.ts +313 -0
  135. package/build/permitMessages.d.ts.map +1 -0
  136. package/build/permitMessages.js +462 -0
  137. package/build/permitMessages.js.map +1 -0
  138. package/build/permitProof.d.ts +108 -0
  139. package/build/permitProof.d.ts.map +1 -0
  140. package/build/permitProof.js +202 -0
  141. package/build/permitProof.js.map +1 -0
  142. package/build/permitRegistryRebuild.d.ts +166 -0
  143. package/build/permitRegistryRebuild.d.ts.map +1 -0
  144. package/build/permitRegistryRebuild.js +347 -0
  145. package/build/permitRegistryRebuild.js.map +1 -0
  146. package/build/permitTree.d.ts +88 -0
  147. package/build/permitTree.d.ts.map +1 -0
  148. package/build/permitTree.js +230 -0
  149. package/build/permitTree.js.map +1 -0
  150. package/build/permitsClient.d.ts +680 -0
  151. package/build/permitsClient.d.ts.map +1 -0
  152. package/build/permitsClient.js +597 -0
  153. package/build/permitsClient.js.map +1 -0
  154. package/build/proveErrors.d.ts +50 -0
  155. package/build/proveErrors.d.ts.map +1 -0
  156. package/build/proveErrors.js +76 -0
  157. package/build/proveErrors.js.map +1 -0
  158. package/build/receipt.d.ts +95 -0
  159. package/build/receipt.d.ts.map +1 -0
  160. package/build/receipt.js +84 -0
  161. package/build/receipt.js.map +1 -0
  162. package/build/refundClient.d.ts +7 -12
  163. package/build/refundClient.d.ts.map +1 -0
  164. package/build/refundClient.js +52 -21
  165. package/build/refundClient.js.map +1 -0
  166. package/build/registryTrustVerify.d.ts +78 -0
  167. package/build/registryTrustVerify.d.ts.map +1 -0
  168. package/build/registryTrustVerify.js +129 -0
  169. package/build/registryTrustVerify.js.map +1 -0
  170. package/build/releaseClient.d.ts +26 -0
  171. package/build/releaseClient.d.ts.map +1 -0
  172. package/build/releaseClient.js +65 -0
  173. package/build/releaseClient.js.map +1 -0
  174. package/build/renewClient.d.ts +28 -2
  175. package/build/renewClient.d.ts.map +1 -0
  176. package/build/renewClient.js +31 -27
  177. package/build/renewClient.js.map +1 -0
  178. package/build/seatName.d.ts +8 -0
  179. package/build/seatName.d.ts.map +1 -0
  180. package/build/seatName.js +136 -0
  181. package/build/seatName.js.map +1 -0
  182. package/build/slotConstants.d.ts +15 -0
  183. package/build/slotConstants.d.ts.map +1 -0
  184. package/build/slotConstants.js +17 -0
  185. package/build/slotConstants.js.map +1 -0
  186. package/build/statsClient.d.ts +61 -7
  187. package/build/statsClient.d.ts.map +1 -0
  188. package/build/statsClient.js +44 -5
  189. package/build/statsClient.js.map +1 -0
  190. package/build/successorChain.d.ts +35 -0
  191. package/build/successorChain.d.ts.map +1 -0
  192. package/build/successorChain.js +69 -0
  193. package/build/successorChain.js.map +1 -0
  194. package/build/taxId.d.ts +44 -0
  195. package/build/taxId.d.ts.map +1 -0
  196. package/build/taxId.js +212 -0
  197. package/build/taxId.js.map +1 -0
  198. package/build/trustAnchorVerify.d.ts +49 -0
  199. package/build/trustAnchorVerify.d.ts.map +1 -0
  200. package/build/trustAnchorVerify.js +432 -0
  201. package/build/trustAnchorVerify.js.map +1 -0
  202. package/build/trustAnchorVerifyCli.d.ts +45 -0
  203. package/build/trustAnchorVerifyCli.d.ts.map +1 -0
  204. package/build/trustAnchorVerifyCli.js +235 -0
  205. package/build/trustAnchorVerifyCli.js.map +1 -0
  206. package/build/txBroadcastClient.d.ts +26 -0
  207. package/build/txBroadcastClient.d.ts.map +1 -0
  208. package/build/txBroadcastClient.js +20 -0
  209. package/build/txBroadcastClient.js.map +1 -0
  210. package/build/unbindClient.d.ts +77 -0
  211. package/build/unbindClient.d.ts.map +1 -0
  212. package/build/unbindClient.js +169 -0
  213. package/build/unbindClient.js.map +1 -0
  214. package/build/units.d.ts +28 -0
  215. package/build/units.d.ts.map +1 -0
  216. package/build/units.js +65 -0
  217. package/build/units.js.map +1 -0
  218. package/build/vatRates.d.ts +54 -0
  219. package/build/vatRates.d.ts.map +1 -0
  220. package/build/vatRates.js +82 -0
  221. package/build/vatRates.js.map +1 -0
  222. package/build/vatRatesData.d.ts +5 -0
  223. package/build/vatRatesData.d.ts.map +1 -0
  224. package/build/vatRatesData.js +42 -0
  225. package/build/vatRatesData.js.map +1 -0
  226. package/build/vendorAccountClient.d.ts +66 -0
  227. package/build/vendorAccountClient.d.ts.map +1 -0
  228. package/build/vendorAccountClient.js +47 -0
  229. package/build/vendorAccountClient.js.map +1 -0
  230. package/build/verifyCore.d.ts +4 -1
  231. package/build/verifyCore.d.ts.map +1 -0
  232. package/build/verifyCore.js +21 -10
  233. package/build/verifyCore.js.map +1 -0
  234. package/build/verifyOffline.d.ts +85 -0
  235. package/build/verifyOffline.d.ts.map +1 -0
  236. package/build/verifyOffline.js +139 -0
  237. package/build/verifyOffline.js.map +1 -0
  238. package/build/verifyService.d.ts.map +1 -0
  239. package/build/verifyService.js +571 -501
  240. package/build/verifyService.js.map +1 -0
  241. package/build/verifyWithAncestors.d.ts +19 -0
  242. package/build/verifyWithAncestors.d.ts.map +1 -0
  243. package/build/verifyWithAncestors.js +127 -0
  244. package/build/verifyWithAncestors.js.map +1 -0
  245. package/build/zipToState.d.ts +2 -0
  246. package/build/zipToState.d.ts.map +1 -0
  247. package/build/zipToState.js +94 -0
  248. package/build/zipToState.js.map +1 -0
  249. package/package.json +141 -16
  250. package/src/agent.ts +682 -0
  251. package/src/agentActions.ts +637 -0
  252. package/src/agentRecord.ts +121 -0
  253. package/src/agentVendor.ts +356 -0
  254. package/src/appsLookup.ts +48 -0
  255. package/src/archiveBootstrap.ts +386 -0
  256. package/src/atomicJson.ts +53 -0
  257. package/src/bindClient.ts +297 -0
  258. package/src/buyClient.ts +344 -0
  259. package/src/chainHead.ts +106 -0
  260. package/src/compactMerkleMap.ts +222 -0
  261. package/src/contractInterface.ts +465 -0
  262. package/src/contractTypes.ts +31 -0
  263. package/src/countryStats.ts +200 -0
  264. package/src/deployClient.ts +517 -0
  265. package/src/deviceIdentity.ts +249 -0
  266. package/src/freezeClient.ts +162 -0
  267. package/src/generationClient.ts +145 -0
  268. package/src/holderSecret.ts +91 -0
  269. package/src/index.ts +362 -0
  270. package/src/keysClient.ts +135 -0
  271. package/src/licenseLeaf.ts +221 -0
  272. package/src/licenseRecord.ts +190 -0
  273. package/src/licenseStore.ts +767 -0
  274. package/src/licenseTrustless.ts +207 -0
  275. package/src/manifestVerify.ts +164 -0
  276. package/src/minaPriceHistory.ts +166 -0
  277. package/src/onChainRoot.ts +90 -0
  278. package/src/ownershipLicenseHash.ts +31 -0
  279. package/src/ownershipSignature.ts +421 -0
  280. package/src/permitCheckFlow.ts +227 -0
  281. package/src/permitDescribe.ts +362 -0
  282. package/src/permitInterface.ts +146 -0
  283. package/src/permitMessages.ts +572 -0
  284. package/src/permitProof.ts +230 -0
  285. package/src/permitRegistryRebuild.ts +423 -0
  286. package/src/permitTree.ts +232 -0
  287. package/src/permitsClient.ts +746 -0
  288. package/src/proveErrors.ts +98 -0
  289. package/src/receipt.ts +156 -0
  290. package/src/refundClient.ts +177 -0
  291. package/src/registryTrustVerify.ts +192 -0
  292. package/src/releaseClient.ts +101 -0
  293. package/src/renewClient.ts +234 -0
  294. package/src/seatName.ts +165 -0
  295. package/src/slotConstants.ts +18 -0
  296. package/src/statsClient.ts +249 -0
  297. package/src/successorChain.ts +87 -0
  298. package/src/taxId.ts +227 -0
  299. package/src/trustAnchorVerify.ts +550 -0
  300. package/src/trustAnchorVerifyCli.ts +234 -0
  301. package/src/txBroadcastClient.ts +48 -0
  302. package/src/unbindClient.ts +233 -0
  303. package/src/units.ts +74 -0
  304. package/src/vatRates.ts +100 -0
  305. package/src/vatRatesData.ts +43 -0
  306. package/src/vendorAccountClient.ts +120 -0
  307. package/src/verifyCore.ts +100 -0
  308. package/src/verifyOffline.ts +212 -0
  309. package/src/verifyService.ts +982 -0
  310. package/src/verifyWithAncestors.ts +163 -0
  311. package/src/zipToState.ts +94 -0
  312. package/build/licenseProof.d.ts +0 -26
  313. package/build/licenseProof.js +0 -41
  314. package/build/migrateClient.d.ts +0 -43
  315. package/build/migrateClient.js +0 -47
  316. package/build/ownership.d.ts +0 -34
  317. package/build/ownership.js +0 -147
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permitsClient.js","sourceRoot":"","sources":["../src/permitsClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * proveErrors.ts
3
+ *
4
+ * Shared typed error for the "proving queue busy" 409 surface returned by
5
+ * /prove/buy, /prove/buy-no-escrow, /prove/renew, and
6
+ * /prove/refund. The backend serializes all five endpoints on a per-app
7
+ * in-flight slot: while a proof is out with a buyer waiting to be signed
8
+ * (or a signed tx is waiting to land), further requests against the same
9
+ * app get an immediate 409 with a `retryAfterMs` hint. Callers should catch
10
+ * this and wait+retry rather than surfacing the failure — the wallet popup
11
+ * never opens for a proof with no live chance of landing.
12
+ *
13
+ * `queueDepth` is 1 in v1 (single slot per app); the field exists so that a
14
+ * future Tier-1 optimistic-chaining pass can widen it without breaking
15
+ * clients written today.
16
+ */
17
+ export declare class ProveQueueBusyError extends Error {
18
+ readonly status = 409;
19
+ readonly retryAfterMs: number;
20
+ readonly queueDepth: number;
21
+ constructor(message: string, retryAfterMs: number, queueDepth: number);
22
+ }
23
+ export type ProveQueueBusyBody = {
24
+ error: 'proving queue busy';
25
+ retryAfterMs: number;
26
+ queueDepth?: number;
27
+ };
28
+ export type ParsedErrorBody = {
29
+ status: number;
30
+ body: Record<string, unknown>;
31
+ message: string;
32
+ };
33
+ export declare function readErrorBody(resp: Response): Promise<ParsedErrorBody>;
34
+ /**
35
+ * A keeper error with its stable `code` and `retryable` (e.g.
36
+ * FEE_PAYER_MISSING, REFUND_WINDOW_CLOSED), so callers and the MCP server can
37
+ * act on the code rather than the wording.
38
+ */
39
+ export declare class KeeperError extends Error {
40
+ readonly code: string;
41
+ readonly retryable: boolean;
42
+ readonly status: number;
43
+ /** How long to wait before retrying, when the keeper says. */
44
+ readonly retryAfterMs?: number;
45
+ constructor(message: string, code: string, retryable: boolean, status: number, retryAfterMs?: number);
46
+ }
47
+ /** The error a failed keeper response stands for. */
48
+ export declare function keeperError(parsed: ParsedErrorBody): KeeperError;
49
+ export declare function tryQueueBusyFromBody(parsed: ParsedErrorBody): ProveQueueBusyError | null;
50
+ //# sourceMappingURL=proveErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proveErrors.d.ts","sourceRoot":"","sources":["../src/proveErrors.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAI,MAAM,CAAC;gBAClB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAMtE;AAGD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAS,oBAAoB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAG,MAAM,CAAC;CACtB,CAAC;AAKF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAO5E;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBACnB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAQrG;AAED,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAIhE;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,GAAG,IAAI,CASxF"}
@@ -0,0 +1,76 @@
1
+ // Copyright (c) 2025-2026 zkLicensing project developers
2
+ // SPDX-License-Identifier: BUSL-1.1
3
+ /**
4
+ * proveErrors.ts
5
+ *
6
+ * Shared typed error for the "proving queue busy" 409 surface returned by
7
+ * /prove/buy, /prove/buy-no-escrow, /prove/renew, and
8
+ * /prove/refund. The backend serializes all five endpoints on a per-app
9
+ * in-flight slot: while a proof is out with a buyer waiting to be signed
10
+ * (or a signed tx is waiting to land), further requests against the same
11
+ * app get an immediate 409 with a `retryAfterMs` hint. Callers should catch
12
+ * this and wait+retry rather than surfacing the failure — the wallet popup
13
+ * never opens for a proof with no live chance of landing.
14
+ *
15
+ * `queueDepth` is 1 in v1 (single slot per app); the field exists so that a
16
+ * future Tier-1 optimistic-chaining pass can widen it without breaking
17
+ * clients written today.
18
+ */
19
+ export class ProveQueueBusyError extends Error {
20
+ status = 409;
21
+ retryAfterMs;
22
+ queueDepth;
23
+ constructor(message, retryAfterMs, queueDepth) {
24
+ super(message);
25
+ this.name = 'ProveQueueBusyError';
26
+ this.retryAfterMs = retryAfterMs;
27
+ this.queueDepth = queueDepth;
28
+ }
29
+ }
30
+ export async function readErrorBody(resp) {
31
+ let body = {};
32
+ try {
33
+ body = await resp.json();
34
+ }
35
+ catch { /* body wasn't JSON */ }
36
+ const message = typeof body.error === 'string' ? body.error : `HTTP ${resp.status}`;
37
+ return { status: resp.status, body, message };
38
+ }
39
+ /**
40
+ * A keeper error with its stable `code` and `retryable` (e.g.
41
+ * FEE_PAYER_MISSING, REFUND_WINDOW_CLOSED), so callers and the MCP server can
42
+ * act on the code rather than the wording.
43
+ */
44
+ export class KeeperError extends Error {
45
+ code;
46
+ retryable;
47
+ status;
48
+ /** How long to wait before retrying, when the keeper says. */
49
+ retryAfterMs;
50
+ constructor(message, code, retryable, status, retryAfterMs) {
51
+ super(message);
52
+ this.name = 'KeeperError';
53
+ this.code = code;
54
+ this.retryable = retryable;
55
+ this.status = status;
56
+ if (retryAfterMs !== undefined)
57
+ this.retryAfterMs = retryAfterMs;
58
+ }
59
+ }
60
+ /** The error a failed keeper response stands for. */
61
+ export function keeperError(parsed) {
62
+ const { body } = parsed;
63
+ const code = typeof body.code === 'string' && body.code ? body.code : parsed.status >= 500 ? 'INTERNAL' : 'INVALID_REQUEST';
64
+ return new KeeperError(parsed.message, code, body.retryable === true, parsed.status, typeof body.retryAfterMs === 'number' ? body.retryAfterMs : undefined);
65
+ }
66
+ // Returns a ProveQueueBusyError if the parsed body matches the queue-busy
67
+ // shape; otherwise null. Cheap to call — no I/O.
68
+ export function tryQueueBusyFromBody(parsed) {
69
+ if (parsed.status !== 409)
70
+ return null;
71
+ const { body } = parsed;
72
+ if (body.error !== 'proving queue busy' || typeof body.retryAfterMs !== 'number')
73
+ return null;
74
+ return new ProveQueueBusyError(body.error, body.retryAfterMs, typeof body.queueDepth === 'number' ? body.queueDepth : 1);
75
+ }
76
+ //# sourceMappingURL=proveErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proveErrors.js","sourceRoot":"","sources":["../src/proveErrors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ export type ReceiptKind = 'license-purchase' | 'license-renewal' | 'permit-grant' | 'permit-renewal' | 'permit-processing' | 'license-refund';
2
+ export type PurchaseReceipt = {
3
+ type: 'zklicensing-receipt';
4
+ version: 1;
5
+ /** The seller's series: <SERIES>-<YYYY>-<NNNNNN>, sequential per seller and year. */
6
+ number: string;
7
+ issuedAt: string;
8
+ network: 'devnet' | 'mainnet';
9
+ kind: ReceiptKind;
10
+ /** The seller of record: the vendor (licenses) or the permit authority. */
11
+ seller: {
12
+ legalName: string;
13
+ address: string;
14
+ country: string;
15
+ /** VAT number; empty when the seller has none on record. */
16
+ vatId: string;
17
+ /** Organisation number (permit authorities). */
18
+ registrationNumber?: string;
19
+ website?: string;
20
+ wallet: string;
21
+ };
22
+ /** Who issued the document for the seller. */
23
+ issuedBy: {
24
+ name: string;
25
+ site: string;
26
+ };
27
+ buyer: {
28
+ wallet: string;
29
+ country?: string;
30
+ };
31
+ item: {
32
+ description: string;
33
+ /** License: the app; permit: the registry. */
34
+ productId: string;
35
+ productName: string;
36
+ /** License tier or permit term, in words. */
37
+ term?: string;
38
+ /** License hash or permit subject: what the payment bought. */
39
+ reference: string;
40
+ };
41
+ amount: {
42
+ /** 'tMINA' on devnet (test MINA, no value); receipts from before carry 'MINA'. */
43
+ currency: 'MINA' | 'tMINA';
44
+ total: string;
45
+ /** null: VAT not itemised (see `vatNote`). */
46
+ vatRatePct: number | null;
47
+ vat: string | null;
48
+ net: string | null;
49
+ vatCountry?: string;
50
+ vatNote?: string;
51
+ /** For reference: MINA→EUR on the day, and (mainnet only) the total in euros. */
52
+ eurRate?: number;
53
+ totalEur?: string;
54
+ /**
55
+ * The total in euros, dollars and pounds at the day's MINA rates (and the
56
+ * rates). On devnet (`basis: 'mainnet-reference'`) it is what the same
57
+ * amount of mainnet MINA would have been worth: tMINA has no value.
58
+ */
59
+ fiat?: {
60
+ basis: 'paid' | 'mainnet-reference';
61
+ rates: {
62
+ eur: number;
63
+ usd: number;
64
+ gbp: number;
65
+ };
66
+ totals: {
67
+ eur: string;
68
+ usd: string;
69
+ gbp: string;
70
+ };
71
+ };
72
+ };
73
+ payment: {
74
+ txHash: string;
75
+ method: 'Mina blockchain';
76
+ };
77
+ /** Set when the transaction failed on chain or never landed: nothing was paid, and the document is void. */
78
+ voided?: {
79
+ at: string;
80
+ reason: string;
81
+ };
82
+ /** Withdrawal waiver, refund window and similar terms that apply to this purchase. */
83
+ terms: string[];
84
+ /** Credit notes: the receipt this one cancels. */
85
+ creditFor?: {
86
+ number: string;
87
+ txHash: string;
88
+ };
89
+ };
90
+ export declare const isCreditNote: (r: PurchaseReceipt) => boolean;
91
+ /** The download name for one receipt or credit note (or several: `receipts-<first number>.html`). */
92
+ export declare function receiptFileName(receipts: PurchaseReceipt | PurchaseReceipt[]): string;
93
+ /** A self-contained printable page (no scripts) for one or more receipts. */
94
+ export declare function receiptHtml(receipts: PurchaseReceipt | PurchaseReceipt[]): string;
95
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../src/receipt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ // Copyright (c) 2025-2026 zkLicensing project developers
2
+ // SPDX-License-Identifier: BUSL-1.1
3
+ /**
4
+ * receipt.ts — `zklicensing/receipt`
5
+ *
6
+ * The purchase receipt: the durable confirmation a buyer keeps (Vendor Terms
7
+ * §7.1). The keeper issues it when a purchase, renewal or permit payment is
8
+ * confirmed, with a number in the seller's own series; a refund gets a
9
+ * credit note (kind 'license-refund', negative amounts, `creditFor` naming
10
+ * the receipt it cancels) in the seller's credit-note series. It is a
11
+ * document of its own, next to the license or permit file:
12
+ * `receiptHtml` renders it as a self-contained page the buyer downloads
13
+ * (receiptFileName), prints or saves as PDF.
14
+ */
15
+ import { fiatCurrencies, formatFiatList } from './units.js';
16
+ export const isCreditNote = (r) => r.kind === 'license-refund';
17
+ /** The download name for one receipt or credit note (or several: `receipts-<first number>.html`). */
18
+ export function receiptFileName(receipts) {
19
+ const list = Array.isArray(receipts) ? receipts : [receipts];
20
+ const safe = (s) => s.replace(/[^A-Za-z0-9-]+/g, '-');
21
+ if (list.length === 1)
22
+ return `${isCreditNote(list[0]) ? 'credit-note' : 'receipt'}-${safe(list[0].number)}.html`;
23
+ return `receipts-${safe(list[0]?.number ?? 'none')}.html`;
24
+ }
25
+ const esc = (s) => String(s ?? '').replace(/[&<>"']/g, c => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]));
26
+ /** A self-contained printable page (no scripts) for one or more receipts. */
27
+ export function receiptHtml(receipts) {
28
+ const list = Array.isArray(receipts) ? receipts : [receipts];
29
+ const one = (r) => {
30
+ const a = r.amount;
31
+ // Devnet: test MINA (tMINA), whatever an older receipt's currency says.
32
+ const unit = r.network === 'mainnet' ? a.currency : 'tMINA';
33
+ const test = r.network !== 'mainnet' ? `<div class="banner">TEST (${esc(r.network)}): amounts in tMINA, test MINA with no value; not a tax document</div>` : '';
34
+ const rows = [
35
+ ['Net', a.net !== null ? `${esc(a.net)} ${unit}` : '—'],
36
+ [a.vatRatePct !== null ? `VAT ${esc(a.vatCountry ?? '')} ${esc(a.vatRatePct)}%` : 'VAT', a.vat !== null ? `${esc(a.vat)} ${unit}` : esc(a.vatNote ?? 'not itemised')],
37
+ ];
38
+ // Money in the buyer's currencies: euros in the EU, pounds and euros in
39
+ // the UK, dollars in the US, euros and dollars elsewhere (fiatCurrencies).
40
+ const f = a.fiat;
41
+ const cur = fiatCurrencies(r.buyer.country);
42
+ const money = esc(f ? formatFiatList(f.totals, cur) : '');
43
+ const rates = f ? esc(`1 MINA = ${formatFiatList(f.rates, cur, 4)}`) : '';
44
+ const paidWord = isCreditNote(r) ? 'refunded' : 'paid';
45
+ const eur = unit === 'tMINA'
46
+ ? (f
47
+ ? `In real MINA this would be ≈ ${money} (${rates} on mainnet that day). tMINA has no value: nothing was ${paidWord} in money.`
48
+ : a.eurRate ? `tMINA has no value. For reference, 1 MINA on mainnet ≈ €${esc(a.eurRate)}.` : '')
49
+ : (f
50
+ ? `≈ ${money} at the day's rate${cur.length > 1 ? 's' : ''} (${rates}).`
51
+ : a.totalEur ? `≈ €${esc(a.totalEur)} at ${esc(a.eurRate)} €/MINA.` : '');
52
+ return `<section class="receipt">${test}
53
+ <h1>${isCreditNote(r) ? 'Credit note' : 'Receipt'} ${esc(r.number)}</h1>
54
+ <div class="dim">${esc(r.issuedAt.slice(0, 10))} · ${esc(r.kind.replace('-', ' '))} · ${esc(r.network)}</div>
55
+ ${r.voided ? `<p><strong>VOID</strong>: ${esc(r.voided.reason)} Nothing was paid.</p>` : ''}
56
+ ${r.creditFor ? `<p>Cancels receipt <strong>${esc(r.creditFor.number)}</strong> (transaction <span class="mono">${esc(r.creditFor.txHash)}</span>).</p>` : ''}
57
+ <div class="cols">
58
+ <div><strong>Seller</strong><br>${esc(r.seller.legalName)}<br>${esc(r.seller.address)}<br>${r.seller.vatId ? `VAT ${esc(r.seller.vatId)}` : 'Not VAT-registered'}${r.seller.registrationNumber ? `<br>Organisation number ${esc(r.seller.registrationNumber)}` : ''}${r.seller.website ? `<br>${esc(r.seller.website)}` : ''}<br><span class="dim">wallet ${esc(r.seller.wallet)}</span></div>
59
+ <div><strong>Buyer</strong><br><span class="dim">wallet</span> ${esc(r.buyer.wallet)}${r.buyer.country ? `<br>Country ${esc(r.buyer.country)}` : ''}</div>
60
+ </div>
61
+ <table>
62
+ <tr><th>Item</th><th class="r">Total</th></tr>
63
+ <tr><td>${esc(r.item.description)}<br><span class="dim">${esc(r.item.productName)} (${esc(r.item.productId)})${r.item.term ? ` · ${esc(r.item.term)}` : ''}<br>ref ${esc(r.item.reference)}</span></td><td class="r">${esc(a.total)} ${unit}</td></tr>
64
+ ${rows.map(([k, v]) => `<tr class="sub"><td>${k}</td><td class="r">${v}</td></tr>`).join('')}
65
+ <tr class="tot"><td>${isCreditNote(r) ? 'Total refunded' : 'Total paid'}</td><td class="r">${esc(a.total)} ${unit}</td></tr>
66
+ </table>
67
+ ${eur ? `<p class="dim fiat">${eur}</p>` : ''}
68
+ <p>${isCreditNote(r) ? 'Refunded' : 'Paid'} on the ${esc(r.payment.method)}, transaction <span class="mono">${esc(r.payment.txHash)}</span>.</p>
69
+ ${r.terms.length ? `<ul>${r.terms.map(t => `<li>${esc(t)}</li>`).join('')}</ul>` : ''}
70
+ <p class="dim">Issued by ${esc(r.issuedBy.name)} (${esc(r.issuedBy.site)}) on behalf of the seller.</p>
71
+ </section>`;
72
+ };
73
+ return `<!doctype html><html lang="en"><head><meta charset="utf-8"><title>${esc(list.length === 1 ? `${isCreditNote(list[0]) ? 'Credit note' : 'Receipt'} ${list[0].number}` : 'Receipts')}</title>
74
+ <style>
75
+ body { font: 13px/1.45 system-ui, sans-serif; color: #111; margin: 32px; max-width: 760px; }
76
+ h1 { font-size: 20px; margin: 0 0 4px; } .dim { color: #666; font-size: 11px; } .mono { font-family: ui-monospace, monospace; font-size: 11px; word-break: break-all; }
77
+ .cols { display: flex; gap: 48px; margin: 20px 0; } .cols div { flex: 1; word-break: break-word; }
78
+ table { width: 100%; border-collapse: collapse; margin-top: 12px; } th, td { padding: 6px 8px; border-bottom: 1px solid #ddd; vertical-align: top; text-align: left; }
79
+ th { font-size: 11px; color: #555; } .r { text-align: right; white-space: nowrap; } .sub td { color: #444; } .tot td { font-weight: 700; border-top: 2px solid #111; }
80
+ .banner { padding: 8px 12px; background: #fff3cd; border: 1px solid #e0c060; margin-bottom: 16px; }
81
+ .receipt + .receipt { page-break-before: always; margin-top: 48px; }
82
+ </style></head><body>${list.map(one).join('\n')}</body></html>`;
83
+ }
84
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../src/receipt.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,10 @@
1
- /**
2
- * refundClient.ts
3
- *
4
- * Browser-safe client for the refund flow. Mirrors `buyClient.ts` in shape:
5
- * the caller drives the wallet step between `proveRefund` and
6
- * `confirmRefund` so the SDK stays wallet-agnostic.
7
- *
8
- * The 14-day refund window is enforced on the keeper side (returns HTTP 409
9
- * when closed) and cross-checked in the circuit; the SDK doesn't second-guess
10
- * it locally so a single source of truth stays authoritative.
11
- */
1
+ import type { PurchaseReceipt } from './receipt.js';
12
2
  export type ProveRefundRequest = {
13
3
  keeperUrl: string;
14
4
  licenseHash: string;
15
5
  buyerAddress: string;
16
6
  zkAppAddress: string;
7
+ network: 'devnet' | 'mainnet';
17
8
  fetcher?: typeof fetch;
18
9
  signal?: AbortSignal;
19
10
  };
@@ -30,16 +21,20 @@ export type ConfirmRefundRequest = {
30
21
  signal?: AbortSignal;
31
22
  };
32
23
  export declare function proveRefund(req: ProveRefundRequest): Promise<ProveRefundResponse>;
24
+ /** Returns the credit note cancelling the purchase receipt (zklicensing/receipt), when the keeper issued one: offer it as a download. */
33
25
  export declare function confirmRefund(req: ConfirmRefundRequest): Promise<{
34
26
  ok: true;
27
+ creditNote?: PurchaseReceipt;
35
28
  }>;
36
29
  export type RefundStatus = {
37
- status: 'confirmed' | 'pending' | 'unknown';
30
+ status: 'confirmed' | 'pending' | 'unknown' | 'failed';
31
+ failureReason?: string;
38
32
  txHash?: string | null;
39
33
  elapsedMs?: number;
40
34
  };
41
35
  export type PollRefundStatusOptions = {
42
36
  keeperUrl: string;
37
+ network: 'devnet' | 'mainnet';
43
38
  zkAppAddress: string;
44
39
  licenseHash: string;
45
40
  fetcher?: typeof fetch;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refundClient.d.ts","sourceRoot":"","sources":["../src/refundClient.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAK,MAAM,CAAC;IACrB,WAAW,EAAG,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,OAAO,EAAO,QAAQ,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAM,OAAO,KAAK,CAAC;IAC3B,MAAM,CAAC,EAAO,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAG,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAK,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAG,MAAM,CAAC;IACrB,MAAM,EAAQ,MAAM,CAAC;IACrB,OAAO,CAAC,EAAM,OAAO,KAAK,CAAC;IAC3B,MAAM,CAAC,EAAO,WAAW,CAAC;CAC3B,CAAC;AAWF,wBAAsB,WAAW,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoBvF;AAMD,yIAAyI;AACzI,wBAAsB,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,eAAe,CAAA;CAAE,CAAC,CAkBlH;AAED,MAAM,MAAM,YAAY,GAAG;IASzB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAK,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAK,MAAM,CAAC;IACrB,OAAO,EAAO,QAAQ,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAG,MAAM,CAAC;IACrB,OAAO,CAAC,EAAM,OAAO,KAAK,CAAC;IAC3B,UAAU,CAAC,EAAG,MAAM,CAAC;IACrB,SAAS,CAAC,EAAI,MAAM,CAAC;IACrB,MAAM,CAAC,EAAO,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAO,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC9C,CAAC;AAKF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC3F"}
@@ -1,20 +1,30 @@
1
1
  // Copyright (c) 2025-2026 zkLicensing project developers
2
- // All rights reserved.
2
+ // SPDX-License-Identifier: BUSL-1.1
3
+ /**
4
+ * refundClient.ts
5
+ *
6
+ * Browser-safe client for the refund flow. Mirrors `buyClient.ts` in shape:
7
+ * the caller drives the wallet step between `proveRefund` and
8
+ * `confirmRefund` so the SDK stays wallet-agnostic.
9
+ *
10
+ * The 14-day refund window is enforced by the backend (returns HTTP 409
11
+ * when closed) and cross-checked in the circuit; the SDK doesn't second-guess
12
+ * it locally so a single source of truth stays authoritative.
13
+ *
14
+ * `/prove/refund` shares the per-app in-flight slot with buy/renew:
15
+ * a concurrent request for the same app receives 409 { error: "proving queue
16
+ * busy", retryAfterMs, queueDepth }, which this client classifies into a
17
+ * `ProveQueueBusyError` so callers can wait+retry without opening a wallet.
18
+ */
19
+ import { readErrorBody, tryQueueBusyFromBody, keeperError } from './proveErrors.js';
3
20
  function baseUrl(url) {
4
21
  return url.replace(/\/+$/, '');
5
22
  }
6
- async function readJsonError(resp) {
7
- try {
8
- const body = await resp.json();
9
- if (typeof body.error === 'string')
10
- return body.error;
11
- }
12
- catch { /* body wasn't JSON */ }
13
- return `HTTP ${resp.status}`;
14
- }
15
- // POST /prove/refund — keeper compiles + proves the refund tx.
16
- // The keeper 409s when the 14-day window has closed; that error surfaces
17
- // through the thrown `Error` message.
23
+ // POST /prove/refund — backend compiles + proves the refund tx.
24
+ // The backend 409s when the 14-day window has closed (surfaces through the
25
+ // thrown `Error` message) and also when the shared per-app in-flight slot
26
+ // is held by a concurrent buy/renew/refund (surfaces as a typed
27
+ // `ProveQueueBusyError` — caller waits `retryAfterMs` and retries).
18
28
  export async function proveRefund(req) {
19
29
  const fetcher = req.fetcher ?? fetch;
20
30
  const resp = await fetcher(`${baseUrl(req.keeperUrl)}/prove/refund`, {
@@ -25,16 +35,23 @@ export async function proveRefund(req) {
25
35
  licenseHash: req.licenseHash,
26
36
  buyerAddress: req.buyerAddress,
27
37
  zkAppAddress: req.zkAppAddress,
38
+ network: req.network,
28
39
  }),
29
40
  });
30
- if (!resp.ok)
31
- throw new Error(await readJsonError(resp));
41
+ if (!resp.ok) {
42
+ const parsed = await readErrorBody(resp);
43
+ const queueBusy = tryQueueBusyFromBody(parsed);
44
+ if (queueBusy)
45
+ throw queueBusy;
46
+ throw keeperError(parsed);
47
+ }
32
48
  return await resp.json();
33
49
  }
34
50
  // POST /confirm/refund — promotes the in-memory refund intent to a
35
51
  // pending (refunded: true) LicenseRecord. Best-effort: if the caller
36
52
  // swallows the failure, eventSyncLoop will still pick up the on-chain
37
53
  // refund event.
54
+ /** Returns the credit note cancelling the purchase receipt (zklicensing/receipt), when the keeper issued one: offer it as a download. */
38
55
  export async function confirmRefund(req) {
39
56
  const fetcher = req.fetcher ?? fetch;
40
57
  const resp = await fetcher(`${baseUrl(req.keeperUrl)}/confirm/refund`, {
@@ -47,9 +64,12 @@ export async function confirmRefund(req) {
47
64
  txHash: req.txHash,
48
65
  }),
49
66
  });
50
- if (!resp.ok)
51
- throw new Error(await readJsonError(resp));
52
- return { ok: true };
67
+ if (!resp.ok) {
68
+ const parsed = await readErrorBody(resp);
69
+ throw keeperError(parsed);
70
+ }
71
+ const body = await resp.json().catch(() => ({}));
72
+ return { ok: true, ...(body?.creditNote ? { creditNote: body.creditNote } : {}) };
53
73
  }
54
74
  // Polls GET /license/:zkAppAddress/:licenseHash until the refund has landed
55
75
  // on-chain (record.status === 'refunded') or the timeout fires. Mirrors
@@ -60,7 +80,7 @@ export async function pollRefundStatus(opts) {
60
80
  const timeout = opts.timeoutMs ?? 20 * 60 * 1000;
61
81
  const startedAt = Date.now();
62
82
  const deadline = startedAt + timeout;
63
- const url = `${baseUrl(opts.keeperUrl)}/license/${encodeURIComponent(opts.zkAppAddress)}/${encodeURIComponent(opts.licenseHash)}`;
83
+ const url = `${baseUrl(opts.keeperUrl)}/license/${encodeURIComponent(opts.zkAppAddress)}/${encodeURIComponent(opts.licenseHash)}?network=${opts.network}`;
64
84
  while (true) {
65
85
  if (opts.signal?.aborted)
66
86
  throw new Error('pollRefundStatus aborted');
@@ -72,7 +92,7 @@ export async function pollRefundStatus(opts) {
72
92
  if (!body.found) {
73
93
  status = { status: 'unknown', elapsedMs: Date.now() - startedAt };
74
94
  }
75
- else if (body.status === 'refunded') {
95
+ else if (body.status === 'refunded' && body.pending === false) {
76
96
  status = { status: 'confirmed', txHash: body.txHash ?? null, elapsedMs: Date.now() - startedAt };
77
97
  }
78
98
  else {
@@ -81,8 +101,19 @@ export async function pollRefundStatus(opts) {
81
101
  }
82
102
  }
83
103
  catch { /* transient network — try again on next tick */ }
104
+ // Not confirmed yet: the keeper's landing watch says whether the
105
+ // transaction failed on chain (a keeper without the route: 404, ignored).
106
+ if (status.status !== 'confirmed') {
107
+ try {
108
+ const w = await fetcher(`${baseUrl(opts.keeperUrl)}/refund/status?licenseHash=${encodeURIComponent(opts.licenseHash)}`, { signal: opts.signal });
109
+ const watch = w.ok ? await w.json() : null;
110
+ if (watch?.status === 'failed')
111
+ status = { ...status, status: 'failed', ...(watch.failureReason ? { failureReason: watch.failureReason } : {}) };
112
+ }
113
+ catch { /* transient — try again on next tick */ }
114
+ }
84
115
  opts.onTick?.(status);
85
- if (status.status === 'confirmed')
116
+ if (status.status === 'confirmed' || status.status === 'failed')
86
117
  return status;
87
118
  if (Date.now() >= deadline)
88
119
  return status;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refundClient.js","sourceRoot":"","sources":["../src/refundClient.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,oCAAoC;AAEpC;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA6BpF,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,gEAAgE;AAChE,2EAA2E;AAC3E,0EAA0E;AAC1E,gEAAgE;AAChE,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAuB;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE;QACnE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAG,GAAG,CAAC,WAAW;YAC7B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,OAAO,EAAO,GAAG,CAAC,OAAO;SAC1B,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS;YAAE,MAAM,SAAS,CAAC;QAC/B,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,IAAI,CAAC,IAAI,EAAyB,CAAC;AAClD,CAAC;AAED,mEAAmE;AACnE,qEAAqE;AACrE,sEAAsE;AACtE,gBAAgB;AAChB,yIAAyI;AACzI,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAyB;IAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE;QACrE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAG,GAAG,CAAC,WAAW;YAC7B,MAAM,EAAQ,GAAG,CAAC,MAAM;SACzB,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAqC,CAAC;IACrF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC;AA6BD,4EAA4E;AAC5E,wEAAwE;AACxE,mCAAmC;AACnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;IAC3C,MAAM,OAAO,GAAI,IAAI,CAAC,SAAS,IAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAI,SAAS,GAAG,OAAO,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;IAE1J,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACtE,IAAI,MAAM,GAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;QACpF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAG3B,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChB,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;gBACpE,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBAChE,MAAM,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;gBACnG,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;gBACjG,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QAC5D,iEAAiE;QACjE,0EAA0E;QAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjJ,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAiD,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1F,IAAI,KAAK,EAAE,MAAM,KAAK,QAAQ;oBAAE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACnJ,CAAC;YAAC,MAAM,CAAC,CAAC,wCAAwC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC/E,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,MAAM,CAAC;QAC1C,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}