@zkproofport-ai/sdk 0.2.1 → 0.2.3

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 CHANGED
@@ -390,6 +390,52 @@ const result = await generateProof(
390
390
 
391
391
  > **Note:** For OIDC circuits, the `attestation` signer field is only used as a payment fallback. Pass your payment wallet — no EAS-attested wallet needed.
392
392
 
393
+ ## Extracting Data from Proofs
394
+
395
+ For OIDC domain proofs, use helper functions to extract the domain and nullifier from public inputs:
396
+
397
+ ```typescript
398
+ import { generateProof, createConfig, fromPrivateKey, extractDomainFromPublicInputs, extractNullifierFromPublicInputs } from '@zkproofport-ai/sdk';
399
+
400
+ const config = createConfig();
401
+ const paymentSigner = fromPrivateKey(process.env.PAYMENT_KEY);
402
+
403
+ const result = await generateProof(
404
+ config,
405
+ { attestation: paymentSigner },
406
+ {
407
+ circuit: 'oidc_domain',
408
+ jwt: googleIdToken,
409
+ scope: 'myapp:verify-domain',
410
+ },
411
+ );
412
+
413
+ // Extract domain and nullifier from proof
414
+ const domain = extractDomainFromPublicInputs(result.publicInputs);
415
+ const nullifier = extractNullifierFromPublicInputs(result.publicInputs);
416
+
417
+ console.log('Verified domain:', domain);
418
+ console.log('Nullifier:', nullifier);
419
+ ```
420
+
421
+ **Public Input Layout (oidc_domain_attestation):**
422
+
423
+ The proof contains 148 public input fields (32 bytes each):
424
+
425
+ | Fields | Description |
426
+ |--------|-------------|
427
+ | 0-17 | RSA pubkey modulus limbs (18 x u128) |
428
+ | 18-81 | Domain storage (BoundedVec<u8, 64>) |
429
+ | 82 | Domain length |
430
+ | 83-114 | Scope (32 bytes) |
431
+ | 115-146 | Nullifier (32 bytes) |
432
+ | 147 | Provider identifier (u8) |
433
+
434
+ **Functions:**
435
+
436
+ - `extractDomainFromPublicInputs(publicInputs: string): string | null` — Extracts the email domain (e.g., "google.com") from public inputs. Returns null if extraction fails.
437
+ - `extractNullifierFromPublicInputs(publicInputs: string): string | null` — Extracts the 32-byte nullifier as a 0x-prefixed hex string. Returns null if extraction fails.
438
+
393
439
  ## Types Reference
394
440
 
395
441
  **Circuit Types:**
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Extract structured data from ZK proof publicInputs.
3
+ *
4
+ * Supports all circuit types:
5
+ *
6
+ * coinbase_attestation (128 fields):
7
+ * Index 0-31: signal_hash (32 bytes)
8
+ * Index 32-63: merkle_root (32 bytes)
9
+ * Index 64-95: scope (32 bytes)
10
+ * Index 96-127: nullifier (32 bytes)
11
+ *
12
+ * coinbase_country_attestation (150 fields):
13
+ * Index 0-63: attestation fields
14
+ * Index 64-83: country_list (20 bytes)
15
+ * Index 84: country_list_length
16
+ * Index 85: is_included
17
+ * Index 86-117: scope (32 bytes)
18
+ * Index 118-149: nullifier (32 bytes)
19
+ *
20
+ * oidc_domain_attestation (148 fields):
21
+ * Index 0-17: pubkey_modulus_limbs (18 x u128)
22
+ * Index 18-81: domain storage (BoundedVec<u8, 64>)
23
+ * Index 82: domain len
24
+ * Index 83-114: scope (32 bytes)
25
+ * Index 115-146: nullifier (32 bytes)
26
+ * Index 147: provider (u8)
27
+ */
28
+ /**
29
+ * Extract scope from proof publicInputs.
30
+ * Auto-detects circuit from field count.
31
+ *
32
+ * @param publicInputs - Single hex string of concatenated public inputs
33
+ * @param circuit - Optional circuit type override
34
+ * @returns The scope as a 0x-prefixed hex string, or null if extraction fails
35
+ */
36
+ export declare function extractScopeFromPublicInputs(publicInputs: string, circuit?: string): string | null;
37
+ /**
38
+ * Extract nullifier from proof publicInputs.
39
+ * Auto-detects circuit from field count.
40
+ *
41
+ * @param publicInputs - Single hex string of concatenated public inputs
42
+ * @param circuit - Optional circuit type override
43
+ * @returns The nullifier as a 0x-prefixed hex string, or null if extraction fails
44
+ */
45
+ export declare function extractNullifierFromPublicInputs(publicInputs: string, circuit?: string): string | null;
46
+ /**
47
+ * Extract domain from oidc_domain_attestation proof publicInputs.
48
+ *
49
+ * @param publicInputs - Single hex string of concatenated public inputs
50
+ * @returns The domain string, or null if not OIDC circuit or extraction fails
51
+ */
52
+ export declare function extractDomainFromPublicInputs(publicInputs: string): string | null;
53
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA4CH;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWlG;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWtG;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBjF"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Extract structured data from ZK proof publicInputs.
3
+ *
4
+ * Supports all circuit types:
5
+ *
6
+ * coinbase_attestation (128 fields):
7
+ * Index 0-31: signal_hash (32 bytes)
8
+ * Index 32-63: merkle_root (32 bytes)
9
+ * Index 64-95: scope (32 bytes)
10
+ * Index 96-127: nullifier (32 bytes)
11
+ *
12
+ * coinbase_country_attestation (150 fields):
13
+ * Index 0-63: attestation fields
14
+ * Index 64-83: country_list (20 bytes)
15
+ * Index 84: country_list_length
16
+ * Index 85: is_included
17
+ * Index 86-117: scope (32 bytes)
18
+ * Index 118-149: nullifier (32 bytes)
19
+ *
20
+ * oidc_domain_attestation (148 fields):
21
+ * Index 0-17: pubkey_modulus_limbs (18 x u128)
22
+ * Index 18-81: domain storage (BoundedVec<u8, 64>)
23
+ * Index 82: domain len
24
+ * Index 83-114: scope (32 bytes)
25
+ * Index 115-146: nullifier (32 bytes)
26
+ * Index 147: provider (u8)
27
+ */
28
+ // Circuit layouts
29
+ const LAYOUTS = {
30
+ coinbase_attestation: { scope: [64, 95], nullifier: [96, 127] },
31
+ coinbase_country_attestation: { scope: [86, 117], nullifier: [118, 149] },
32
+ oidc_domain_attestation: { scope: [83, 114], nullifier: [115, 146], domainStorage: 18, domainLen: 82 },
33
+ };
34
+ /**
35
+ * Detect circuit type from field count.
36
+ */
37
+ function detectCircuit(fieldCount) {
38
+ if (fieldCount === 148)
39
+ return 'oidc_domain_attestation';
40
+ if (fieldCount === 150)
41
+ return 'coinbase_country_attestation';
42
+ return 'coinbase_attestation';
43
+ }
44
+ /**
45
+ * Split a concatenated hex string into 32-byte (64 hex char) fields.
46
+ */
47
+ function splitFields(publicInputsHex) {
48
+ const hex = publicInputsHex.startsWith('0x') ? publicInputsHex.slice(2) : publicInputsHex;
49
+ const fields = [];
50
+ for (let i = 0; i < hex.length; i += 64) {
51
+ fields.push('0x' + hex.slice(i, i + 64));
52
+ }
53
+ return fields;
54
+ }
55
+ /**
56
+ * Extract 32 bytes from consecutive fields (each field = 1 byte in lower bits).
57
+ */
58
+ function extractBytes32(fields, start, end) {
59
+ const bytes = [];
60
+ for (let i = start; i <= end; i++) {
61
+ const byte = (BigInt(fields[i]) & 0xffn).toString(16).padStart(2, '0');
62
+ bytes.push(byte);
63
+ }
64
+ return '0x' + bytes.join('');
65
+ }
66
+ /**
67
+ * Extract scope from proof publicInputs.
68
+ * Auto-detects circuit from field count.
69
+ *
70
+ * @param publicInputs - Single hex string of concatenated public inputs
71
+ * @param circuit - Optional circuit type override
72
+ * @returns The scope as a 0x-prefixed hex string, or null if extraction fails
73
+ */
74
+ export function extractScopeFromPublicInputs(publicInputs, circuit) {
75
+ try {
76
+ const fields = splitFields(publicInputs);
77
+ const ct = circuit || detectCircuit(fields.length);
78
+ const layout = LAYOUTS[ct] || LAYOUTS.coinbase_attestation;
79
+ const [start, end] = layout.scope;
80
+ if (fields.length <= end)
81
+ return null;
82
+ return extractBytes32(fields, start, end);
83
+ }
84
+ catch {
85
+ return null;
86
+ }
87
+ }
88
+ /**
89
+ * Extract nullifier from proof publicInputs.
90
+ * Auto-detects circuit from field count.
91
+ *
92
+ * @param publicInputs - Single hex string of concatenated public inputs
93
+ * @param circuit - Optional circuit type override
94
+ * @returns The nullifier as a 0x-prefixed hex string, or null if extraction fails
95
+ */
96
+ export function extractNullifierFromPublicInputs(publicInputs, circuit) {
97
+ try {
98
+ const fields = splitFields(publicInputs);
99
+ const ct = circuit || detectCircuit(fields.length);
100
+ const layout = LAYOUTS[ct] || LAYOUTS.coinbase_attestation;
101
+ const [start, end] = layout.nullifier;
102
+ if (fields.length <= end)
103
+ return null;
104
+ return extractBytes32(fields, start, end);
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ /**
111
+ * Extract domain from oidc_domain_attestation proof publicInputs.
112
+ *
113
+ * @param publicInputs - Single hex string of concatenated public inputs
114
+ * @returns The domain string, or null if not OIDC circuit or extraction fails
115
+ */
116
+ export function extractDomainFromPublicInputs(publicInputs) {
117
+ try {
118
+ const fields = splitFields(publicInputs);
119
+ if (fields.length < 83)
120
+ return null;
121
+ const domainLen = Number(BigInt(fields[82]));
122
+ if (domainLen <= 0 || domainLen > 64)
123
+ return null;
124
+ const chars = [];
125
+ for (let i = 0; i < domainLen; i++) {
126
+ const byte = Number(BigInt(fields[18 + i]) & 0xffn);
127
+ chars.push(String.fromCharCode(byte));
128
+ }
129
+ return chars.join('');
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,5 +15,6 @@ export type { ProofportSigner } from './signer.js';
15
15
  export { EthersWalletSigner, fromEthersWallet, fromPrivateKey } from './signer.js';
16
16
  export { CdpWalletSigner, fromExternalWallet } from './cdp.js';
17
17
  export type { ExternalWallet } from './cdp.js';
18
+ export { extractDomainFromPublicInputs, extractScopeFromPublicInputs, extractNullifierFromPublicInputs, } from './extract.js';
18
19
  export { fetchAttestation, getSignerAddress, } from './attestation.js';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG/F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,WAAW,EACX,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG/F,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,8 @@ export { prepareOidcInputs, prepareOidcPayload } from './oidc-inputs.js';
17
17
  export { EthersWalletSigner, fromEthersWallet, fromPrivateKey } from './signer.js';
18
18
  // CDP (Coinbase Developer Platform) signer
19
19
  export { CdpWalletSigner, fromExternalWallet } from './cdp.js';
20
+ // Extraction helpers (parse publicInputs from proof results)
21
+ export { extractDomainFromPublicInputs, extractScopeFromPublicInputs, extractNullifierFromPublicInputs, } from './extract.js';
20
22
  // Attestation (customer-facing helpers)
21
23
  export { fetchAttestation, getSignerAddress, } from './attestation.js';
22
24
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,4CAA4C;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,8CAA8C;AAC9C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,oEAAoE;AACpE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKzE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG/D,wCAAwC;AACxC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,4CAA4C;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,8CAA8C;AAC9C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,oEAAoE;AACpE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKzE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEnF,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG/D,6DAA6D;AAC7D,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,cAAc,CAAC;AAEtB,wCAAwC;AACxC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAenD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAuGjB"}
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAenD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,CA6GjB"}
package/dist/payment.js CHANGED
@@ -108,9 +108,13 @@ export async function makePayment(signer, payment, facilitatorUrl, facilitatorHe
108
108
  throw new Error(`x402 facilitator settle failed: ${error}`);
109
109
  }
110
110
  const settleResult = (await settleResponse.json());
111
+ // Check for error reason FIRST — facilitator may return a dummy txHash alongside an error
112
+ if (settleResult.errorReason) {
113
+ throw new Error(`x402 settle failed: ${settleResult.errorReason}`);
114
+ }
111
115
  const txHash = settleResult.txHash || settleResult.transaction?.hash || settleResult.transaction;
112
116
  if (!txHash) {
113
- throw new Error(`x402 settle failed: ${settleResult.errorReason || 'no transaction hash'}`);
117
+ throw new Error(`x402 settle failed: no transaction hash`);
114
118
  }
115
119
  return txHash;
116
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"payment.js","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment.js","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zkproofport-ai/sdk",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Client SDK for ZKProofport proof generation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",