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.
- package/README.md +417 -201
- package/build/agent.d.ts +371 -0
- package/build/agent.d.ts.map +1 -0
- package/build/agent.js +553 -0
- package/build/agent.js.map +1 -0
- package/build/agentActions.d.ts +841 -0
- package/build/agentActions.d.ts.map +1 -0
- package/build/agentActions.js +581 -0
- package/build/agentActions.js.map +1 -0
- package/build/agentRecord.d.ts +83 -0
- package/build/agentRecord.d.ts.map +1 -0
- package/build/agentRecord.js +69 -0
- package/build/agentRecord.js.map +1 -0
- package/build/agentVendor.d.ts +220 -0
- package/build/agentVendor.d.ts.map +1 -0
- package/build/agentVendor.js +306 -0
- package/build/agentVendor.js.map +1 -0
- package/build/appsLookup.d.ts +14 -0
- package/build/appsLookup.d.ts.map +1 -0
- package/build/appsLookup.js +12 -0
- package/build/appsLookup.js.map +1 -0
- package/build/archiveBootstrap.d.ts +31 -5
- package/build/archiveBootstrap.d.ts.map +1 -0
- package/build/archiveBootstrap.js +140 -47
- package/build/archiveBootstrap.js.map +1 -0
- package/build/atomicJson.d.ts +5 -0
- package/build/atomicJson.d.ts.map +1 -0
- package/build/atomicJson.js +55 -0
- package/build/atomicJson.js.map +1 -0
- package/build/bindClient.d.ts +85 -0
- package/build/bindClient.d.ts.map +1 -0
- package/build/bindClient.js +187 -0
- package/build/bindClient.js.map +1 -0
- package/build/buyClient.d.ts +27 -4
- package/build/buyClient.d.ts.map +1 -0
- package/build/buyClient.js +72 -26
- package/build/buyClient.js.map +1 -0
- package/build/chainHead.d.ts +61 -0
- package/build/chainHead.d.ts.map +1 -0
- package/build/chainHead.js +88 -0
- package/build/chainHead.js.map +1 -0
- package/build/compactMerkleMap.d.ts +72 -0
- package/build/compactMerkleMap.d.ts.map +1 -0
- package/build/compactMerkleMap.js +224 -0
- package/build/compactMerkleMap.js.map +1 -0
- package/build/contractInterface.d.ts +191 -51
- package/build/contractInterface.d.ts.map +1 -0
- package/build/contractInterface.js +234 -43
- package/build/contractInterface.js.map +1 -0
- package/build/contractTypes.d.ts +9 -0
- package/build/contractTypes.d.ts.map +1 -0
- package/build/contractTypes.js +28 -0
- package/build/contractTypes.js.map +1 -0
- package/build/countryStats.d.ts +12 -3
- package/build/countryStats.d.ts.map +1 -0
- package/build/countryStats.js +87 -23
- package/build/countryStats.js.map +1 -0
- package/build/deployClient.d.ts +138 -24
- package/build/deployClient.d.ts.map +1 -0
- package/build/deployClient.js +91 -31
- package/build/deployClient.js.map +1 -0
- package/build/deviceIdentity.d.ts +68 -0
- package/build/deviceIdentity.d.ts.map +1 -0
- package/build/deviceIdentity.js +209 -0
- package/build/deviceIdentity.js.map +1 -0
- package/build/freezeClient.d.ts +26 -6
- package/build/freezeClient.d.ts.map +1 -0
- package/build/freezeClient.js +30 -6
- package/build/freezeClient.js.map +1 -0
- package/build/generationClient.d.ts +6 -3
- package/build/generationClient.d.ts.map +1 -0
- package/build/generationClient.js +25 -38
- package/build/generationClient.js.map +1 -0
- package/build/holderSecret.d.ts +70 -0
- package/build/holderSecret.d.ts.map +1 -0
- package/build/holderSecret.js +76 -0
- package/build/holderSecret.js.map +1 -0
- package/build/index.d.ts +38 -38
- package/build/index.d.ts.map +1 -0
- package/build/index.js +97 -121
- package/build/index.js.map +1 -0
- package/build/keysClient.d.ts +142 -0
- package/build/keysClient.d.ts.map +1 -0
- package/build/keysClient.js +109 -0
- package/build/keysClient.js.map +1 -0
- package/build/licenseLeaf.d.ts +76 -0
- package/build/licenseLeaf.d.ts.map +1 -0
- package/build/licenseLeaf.js +189 -0
- package/build/licenseLeaf.js.map +1 -0
- package/build/licenseRecord.d.ts +68 -5
- package/build/licenseRecord.d.ts.map +1 -0
- package/build/licenseRecord.js +26 -1
- package/build/licenseRecord.js.map +1 -0
- package/build/licenseStore.d.ts +81 -4
- package/build/licenseStore.d.ts.map +1 -0
- package/build/licenseStore.js +400 -30
- package/build/licenseStore.js.map +1 -0
- package/build/licenseTrustless.d.ts +43 -0
- package/build/licenseTrustless.d.ts.map +1 -0
- package/build/licenseTrustless.js +180 -0
- package/build/licenseTrustless.js.map +1 -0
- package/build/manifestVerify.d.ts +29 -1
- package/build/manifestVerify.d.ts.map +1 -0
- package/build/manifestVerify.js +46 -4
- package/build/manifestVerify.js.map +1 -0
- package/build/minaPriceHistory.d.ts +9 -0
- package/build/minaPriceHistory.d.ts.map +1 -0
- package/build/minaPriceHistory.js +152 -0
- package/build/minaPriceHistory.js.map +1 -0
- package/build/onChainRoot.d.ts +60 -0
- package/build/onChainRoot.d.ts.map +1 -0
- package/build/onChainRoot.js +74 -0
- package/build/onChainRoot.js.map +1 -0
- package/build/ownershipLicenseHash.d.ts +25 -0
- package/build/ownershipLicenseHash.d.ts.map +1 -0
- package/build/ownershipLicenseHash.js +29 -0
- package/build/ownershipLicenseHash.js.map +1 -0
- package/build/ownershipSignature.d.ts +153 -0
- package/build/ownershipSignature.d.ts.map +1 -0
- package/build/ownershipSignature.js +297 -0
- package/build/ownershipSignature.js.map +1 -0
- package/build/permitCheckFlow.d.ts +155 -0
- package/build/permitCheckFlow.d.ts.map +1 -0
- package/build/permitCheckFlow.js +196 -0
- package/build/permitCheckFlow.js.map +1 -0
- package/build/permitDescribe.d.ts +124 -0
- package/build/permitDescribe.d.ts.map +1 -0
- package/build/permitDescribe.js +324 -0
- package/build/permitDescribe.js.map +1 -0
- package/build/permitInterface.d.ts +85 -0
- package/build/permitInterface.d.ts.map +1 -0
- package/build/permitInterface.js +121 -0
- package/build/permitInterface.js.map +1 -0
- package/build/permitMessages.d.ts +313 -0
- package/build/permitMessages.d.ts.map +1 -0
- package/build/permitMessages.js +462 -0
- package/build/permitMessages.js.map +1 -0
- package/build/permitProof.d.ts +108 -0
- package/build/permitProof.d.ts.map +1 -0
- package/build/permitProof.js +202 -0
- package/build/permitProof.js.map +1 -0
- package/build/permitRegistryRebuild.d.ts +166 -0
- package/build/permitRegistryRebuild.d.ts.map +1 -0
- package/build/permitRegistryRebuild.js +347 -0
- package/build/permitRegistryRebuild.js.map +1 -0
- package/build/permitTree.d.ts +88 -0
- package/build/permitTree.d.ts.map +1 -0
- package/build/permitTree.js +230 -0
- package/build/permitTree.js.map +1 -0
- package/build/permitsClient.d.ts +680 -0
- package/build/permitsClient.d.ts.map +1 -0
- package/build/permitsClient.js +597 -0
- package/build/permitsClient.js.map +1 -0
- package/build/proveErrors.d.ts +50 -0
- package/build/proveErrors.d.ts.map +1 -0
- package/build/proveErrors.js +76 -0
- package/build/proveErrors.js.map +1 -0
- package/build/receipt.d.ts +95 -0
- package/build/receipt.d.ts.map +1 -0
- package/build/receipt.js +84 -0
- package/build/receipt.js.map +1 -0
- package/build/refundClient.d.ts +7 -12
- package/build/refundClient.d.ts.map +1 -0
- package/build/refundClient.js +52 -21
- package/build/refundClient.js.map +1 -0
- package/build/registryTrustVerify.d.ts +78 -0
- package/build/registryTrustVerify.d.ts.map +1 -0
- package/build/registryTrustVerify.js +129 -0
- package/build/registryTrustVerify.js.map +1 -0
- package/build/releaseClient.d.ts +26 -0
- package/build/releaseClient.d.ts.map +1 -0
- package/build/releaseClient.js +65 -0
- package/build/releaseClient.js.map +1 -0
- package/build/renewClient.d.ts +28 -2
- package/build/renewClient.d.ts.map +1 -0
- package/build/renewClient.js +31 -27
- package/build/renewClient.js.map +1 -0
- package/build/seatName.d.ts +8 -0
- package/build/seatName.d.ts.map +1 -0
- package/build/seatName.js +136 -0
- package/build/seatName.js.map +1 -0
- package/build/slotConstants.d.ts +15 -0
- package/build/slotConstants.d.ts.map +1 -0
- package/build/slotConstants.js +17 -0
- package/build/slotConstants.js.map +1 -0
- package/build/statsClient.d.ts +61 -7
- package/build/statsClient.d.ts.map +1 -0
- package/build/statsClient.js +44 -5
- package/build/statsClient.js.map +1 -0
- package/build/successorChain.d.ts +35 -0
- package/build/successorChain.d.ts.map +1 -0
- package/build/successorChain.js +69 -0
- package/build/successorChain.js.map +1 -0
- package/build/taxId.d.ts +44 -0
- package/build/taxId.d.ts.map +1 -0
- package/build/taxId.js +212 -0
- package/build/taxId.js.map +1 -0
- package/build/trustAnchorVerify.d.ts +49 -0
- package/build/trustAnchorVerify.d.ts.map +1 -0
- package/build/trustAnchorVerify.js +432 -0
- package/build/trustAnchorVerify.js.map +1 -0
- package/build/trustAnchorVerifyCli.d.ts +45 -0
- package/build/trustAnchorVerifyCli.d.ts.map +1 -0
- package/build/trustAnchorVerifyCli.js +235 -0
- package/build/trustAnchorVerifyCli.js.map +1 -0
- package/build/txBroadcastClient.d.ts +26 -0
- package/build/txBroadcastClient.d.ts.map +1 -0
- package/build/txBroadcastClient.js +20 -0
- package/build/txBroadcastClient.js.map +1 -0
- package/build/unbindClient.d.ts +77 -0
- package/build/unbindClient.d.ts.map +1 -0
- package/build/unbindClient.js +169 -0
- package/build/unbindClient.js.map +1 -0
- package/build/units.d.ts +28 -0
- package/build/units.d.ts.map +1 -0
- package/build/units.js +65 -0
- package/build/units.js.map +1 -0
- package/build/vatRates.d.ts +54 -0
- package/build/vatRates.d.ts.map +1 -0
- package/build/vatRates.js +82 -0
- package/build/vatRates.js.map +1 -0
- package/build/vatRatesData.d.ts +5 -0
- package/build/vatRatesData.d.ts.map +1 -0
- package/build/vatRatesData.js +42 -0
- package/build/vatRatesData.js.map +1 -0
- package/build/vendorAccountClient.d.ts +66 -0
- package/build/vendorAccountClient.d.ts.map +1 -0
- package/build/vendorAccountClient.js +47 -0
- package/build/vendorAccountClient.js.map +1 -0
- package/build/verifyCore.d.ts +4 -1
- package/build/verifyCore.d.ts.map +1 -0
- package/build/verifyCore.js +21 -10
- package/build/verifyCore.js.map +1 -0
- package/build/verifyOffline.d.ts +85 -0
- package/build/verifyOffline.d.ts.map +1 -0
- package/build/verifyOffline.js +139 -0
- package/build/verifyOffline.js.map +1 -0
- package/build/verifyService.d.ts.map +1 -0
- package/build/verifyService.js +571 -501
- package/build/verifyService.js.map +1 -0
- package/build/verifyWithAncestors.d.ts +19 -0
- package/build/verifyWithAncestors.d.ts.map +1 -0
- package/build/verifyWithAncestors.js +127 -0
- package/build/verifyWithAncestors.js.map +1 -0
- package/build/zipToState.d.ts +2 -0
- package/build/zipToState.d.ts.map +1 -0
- package/build/zipToState.js +94 -0
- package/build/zipToState.js.map +1 -0
- package/package.json +141 -16
- package/src/agent.ts +682 -0
- package/src/agentActions.ts +637 -0
- package/src/agentRecord.ts +121 -0
- package/src/agentVendor.ts +356 -0
- package/src/appsLookup.ts +48 -0
- package/src/archiveBootstrap.ts +386 -0
- package/src/atomicJson.ts +53 -0
- package/src/bindClient.ts +297 -0
- package/src/buyClient.ts +344 -0
- package/src/chainHead.ts +106 -0
- package/src/compactMerkleMap.ts +222 -0
- package/src/contractInterface.ts +465 -0
- package/src/contractTypes.ts +31 -0
- package/src/countryStats.ts +200 -0
- package/src/deployClient.ts +517 -0
- package/src/deviceIdentity.ts +249 -0
- package/src/freezeClient.ts +162 -0
- package/src/generationClient.ts +145 -0
- package/src/holderSecret.ts +91 -0
- package/src/index.ts +362 -0
- package/src/keysClient.ts +135 -0
- package/src/licenseLeaf.ts +221 -0
- package/src/licenseRecord.ts +190 -0
- package/src/licenseStore.ts +767 -0
- package/src/licenseTrustless.ts +207 -0
- package/src/manifestVerify.ts +164 -0
- package/src/minaPriceHistory.ts +166 -0
- package/src/onChainRoot.ts +90 -0
- package/src/ownershipLicenseHash.ts +31 -0
- package/src/ownershipSignature.ts +421 -0
- package/src/permitCheckFlow.ts +227 -0
- package/src/permitDescribe.ts +362 -0
- package/src/permitInterface.ts +146 -0
- package/src/permitMessages.ts +572 -0
- package/src/permitProof.ts +230 -0
- package/src/permitRegistryRebuild.ts +423 -0
- package/src/permitTree.ts +232 -0
- package/src/permitsClient.ts +746 -0
- package/src/proveErrors.ts +98 -0
- package/src/receipt.ts +156 -0
- package/src/refundClient.ts +177 -0
- package/src/registryTrustVerify.ts +192 -0
- package/src/releaseClient.ts +101 -0
- package/src/renewClient.ts +234 -0
- package/src/seatName.ts +165 -0
- package/src/slotConstants.ts +18 -0
- package/src/statsClient.ts +249 -0
- package/src/successorChain.ts +87 -0
- package/src/taxId.ts +227 -0
- package/src/trustAnchorVerify.ts +550 -0
- package/src/trustAnchorVerifyCli.ts +234 -0
- package/src/txBroadcastClient.ts +48 -0
- package/src/unbindClient.ts +233 -0
- package/src/units.ts +74 -0
- package/src/vatRates.ts +100 -0
- package/src/vatRatesData.ts +43 -0
- package/src/vendorAccountClient.ts +120 -0
- package/src/verifyCore.ts +100 -0
- package/src/verifyOffline.ts +212 -0
- package/src/verifyService.ts +982 -0
- package/src/verifyWithAncestors.ts +163 -0
- package/src/zipToState.ts +94 -0
- package/build/licenseProof.d.ts +0 -26
- package/build/licenseProof.js +0 -41
- package/build/migrateClient.d.ts +0 -43
- package/build/migrateClient.js +0 -47
- package/build/ownership.d.ts +0 -34
- 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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"}
|
package/build/receipt.js
ADDED
|
@@ -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 => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[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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"}
|
package/build/refundClient.d.ts
CHANGED
|
@@ -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"}
|
package/build/refundClient.js
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 zkLicensing project developers
|
|
2
|
-
//
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
52
|
-
|
|
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"}
|