@zkproofport-ai/sdk 0.1.0

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 (58) hide show
  1. package/README.md +437 -0
  2. package/dist/attestation.d.ts +60 -0
  3. package/dist/attestation.d.ts.map +1 -0
  4. package/dist/attestation.js +220 -0
  5. package/dist/attestation.js.map +1 -0
  6. package/dist/cdp.d.ts +44 -0
  7. package/dist/cdp.d.ts.map +1 -0
  8. package/dist/cdp.js +89 -0
  9. package/dist/cdp.js.map +1 -0
  10. package/dist/config.d.ts +19 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +25 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/constants.d.ts +18 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +29 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/flow.d.ts +19 -0
  19. package/dist/flow.d.ts.map +1 -0
  20. package/dist/flow.js +82 -0
  21. package/dist/flow.js.map +1 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +22 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/inputs.d.ts +56 -0
  27. package/dist/inputs.d.ts.map +1 -0
  28. package/dist/inputs.js +204 -0
  29. package/dist/inputs.js.map +1 -0
  30. package/dist/merkle.d.ts +34 -0
  31. package/dist/merkle.d.ts.map +1 -0
  32. package/dist/merkle.js +95 -0
  33. package/dist/merkle.js.map +1 -0
  34. package/dist/payment.d.ts +15 -0
  35. package/dist/payment.d.ts.map +1 -0
  36. package/dist/payment.js +114 -0
  37. package/dist/payment.js.map +1 -0
  38. package/dist/prove.d.ts +12 -0
  39. package/dist/prove.d.ts.map +1 -0
  40. package/dist/prove.js +25 -0
  41. package/dist/prove.js.map +1 -0
  42. package/dist/session.d.ts +8 -0
  43. package/dist/session.d.ts.map +1 -0
  44. package/dist/session.js +20 -0
  45. package/dist/session.js.map +1 -0
  46. package/dist/signer.d.ts +69 -0
  47. package/dist/signer.d.ts.map +1 -0
  48. package/dist/signer.js +51 -0
  49. package/dist/signer.js.map +1 -0
  50. package/dist/types.d.ts +136 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +12 -0
  53. package/dist/types.js.map +1 -0
  54. package/dist/verify.d.ts +29 -0
  55. package/dist/verify.d.ts.map +1 -0
  56. package/dist/verify.js +56 -0
  57. package/dist/verify.js.map +1 -0
  58. package/package.json +34 -0
@@ -0,0 +1,69 @@
1
+ import { ethers } from 'ethers';
2
+ /**
3
+ * Abstract signer interface for ProofPort proof generation.
4
+ * Enables different wallet providers (ethers.Wallet, CDP MPC, viem, etc.)
5
+ */
6
+ export interface ProofportSigner {
7
+ getAddress(): string | Promise<string>;
8
+ signMessage(message: Uint8Array): Promise<string>;
9
+ signTypedData(domain: {
10
+ name: string;
11
+ version: string;
12
+ chainId: number;
13
+ verifyingContract: string;
14
+ }, types: Record<string, Array<{
15
+ name: string;
16
+ type: string;
17
+ }>>, message: Record<string, unknown>): Promise<string>;
18
+ sendTransaction(tx: {
19
+ to: string;
20
+ data: string;
21
+ value?: bigint;
22
+ }): Promise<{
23
+ hash: string;
24
+ wait(): Promise<{
25
+ status: number | null;
26
+ }>;
27
+ }>;
28
+ }
29
+ /**
30
+ * Adapter wrapping ethers.Wallet to implement ProofportSigner.
31
+ */
32
+ export declare class EthersWalletSigner implements ProofportSigner {
33
+ private wallet;
34
+ constructor(wallet: ethers.Wallet);
35
+ getAddress(): string;
36
+ signMessage(message: Uint8Array): Promise<string>;
37
+ signTypedData(domain: {
38
+ name: string;
39
+ version: string;
40
+ chainId: number;
41
+ verifyingContract: string;
42
+ }, types: Record<string, Array<{
43
+ name: string;
44
+ type: string;
45
+ }>>, message: Record<string, unknown>): Promise<string>;
46
+ sendTransaction(tx: {
47
+ to: string;
48
+ data: string;
49
+ value?: bigint;
50
+ }): Promise<{
51
+ hash: string;
52
+ wait(): Promise<{
53
+ status: number | null;
54
+ }>;
55
+ }>;
56
+ /** Get the underlying ethers.Wallet (for cases needing direct access) */
57
+ getWallet(): ethers.Wallet;
58
+ }
59
+ /**
60
+ * Create a ProofportSigner from an ethers.Wallet.
61
+ * Convenience factory for the most common case.
62
+ */
63
+ export declare function fromEthersWallet(wallet: ethers.Wallet): ProofportSigner;
64
+ /**
65
+ * Create a ProofportSigner from a private key string.
66
+ * Optionally connects to a provider for transaction sending.
67
+ */
68
+ export declare function fromPrivateKey(privateKey: string, provider?: ethers.Provider): ProofportSigner;
69
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,CACX,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,EAC5D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,eAAe,CAAC,EAAE,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,IAAI,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,MAAM,CAAC,MAAM;IAIjC,UAAU,IAAI,MAAM;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD,aAAa,CACjB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,EACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,EAC5D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC;IAIZ,eAAe,CAAC,EAAE,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,IAAI,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAWzE,yEAAyE;IACzE,SAAS,IAAI,MAAM,CAAC,MAAM;CAG3B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,eAAe,CAEvE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,eAAe,CAK9F"}
package/dist/signer.js ADDED
@@ -0,0 +1,51 @@
1
+ import { ethers } from 'ethers';
2
+ /**
3
+ * Adapter wrapping ethers.Wallet to implement ProofportSigner.
4
+ */
5
+ export class EthersWalletSigner {
6
+ wallet;
7
+ constructor(wallet) {
8
+ this.wallet = wallet;
9
+ }
10
+ getAddress() {
11
+ return this.wallet.address;
12
+ }
13
+ async signMessage(message) {
14
+ return this.wallet.signMessage(message);
15
+ }
16
+ async signTypedData(domain, types, message) {
17
+ return this.wallet.signTypedData(domain, types, message);
18
+ }
19
+ async sendTransaction(tx) {
20
+ const response = await this.wallet.sendTransaction(tx);
21
+ return {
22
+ hash: response.hash,
23
+ wait: async () => {
24
+ const receipt = await response.wait();
25
+ return { status: receipt?.status ?? null };
26
+ },
27
+ };
28
+ }
29
+ /** Get the underlying ethers.Wallet (for cases needing direct access) */
30
+ getWallet() {
31
+ return this.wallet;
32
+ }
33
+ }
34
+ /**
35
+ * Create a ProofportSigner from an ethers.Wallet.
36
+ * Convenience factory for the most common case.
37
+ */
38
+ export function fromEthersWallet(wallet) {
39
+ return new EthersWalletSigner(wallet);
40
+ }
41
+ /**
42
+ * Create a ProofportSigner from a private key string.
43
+ * Optionally connects to a provider for transaction sending.
44
+ */
45
+ export function fromPrivateKey(privateKey, provider) {
46
+ const wallet = provider
47
+ ? new ethers.Wallet(privateKey, provider)
48
+ : new ethers.Wallet(privateKey);
49
+ return new EthersWalletSigner(wallet);
50
+ }
51
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA0BhC;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAgB;IAE9B,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,MAKC,EACD,KAA4D,EAC5D,OAAgC;QAEhC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAIrB;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;YAC7C,CAAC;SACF,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,QAA0B;IAC3E,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;QACzC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,136 @@
1
+ /** Client-friendly circuit aliases. */
2
+ export type CircuitName = 'coinbase_kyc' | 'coinbase_country';
3
+ /** Canonical circuit IDs matching Nargo.toml names. */
4
+ export type CircuitId = 'coinbase_attestation' | 'coinbase_country_attestation';
5
+ /** Map client-friendly names to canonical circuit IDs. */
6
+ export declare const CIRCUIT_NAME_MAP: Record<CircuitName, CircuitId>;
7
+ /** Map canonical circuit IDs back to client-friendly names. */
8
+ export declare const CIRCUIT_ID_MAP: Record<CircuitId, CircuitName>;
9
+ export interface ClientConfig {
10
+ /** proofport-ai server URL (e.g. https://stg-ai.zkproofport.app) */
11
+ baseUrl: string;
12
+ /** Base Mainnet RPC for EAS attestation fetching */
13
+ easRpcUrl?: string;
14
+ /** EAS GraphQL endpoint */
15
+ easGraphqlUrl?: string;
16
+ }
17
+ export interface PaymentInfo {
18
+ nonce: string;
19
+ recipient: string;
20
+ amount: number;
21
+ asset: string;
22
+ network: string;
23
+ instruction: string;
24
+ }
25
+ export interface PaymentRequirements {
26
+ scheme: string;
27
+ network: string;
28
+ maxAmountRequired: string;
29
+ resource: string;
30
+ description: string;
31
+ mimeType: string;
32
+ payTo: string;
33
+ extra: {
34
+ name: string;
35
+ version: string;
36
+ nonce: string;
37
+ };
38
+ }
39
+ export interface ChallengeResponse {
40
+ error: string;
41
+ message: string;
42
+ nonce: string;
43
+ payment: PaymentRequirements;
44
+ }
45
+ export interface ProveInputs {
46
+ signal_hash: string;
47
+ nullifier: string;
48
+ scope_bytes: string;
49
+ merkle_root: string;
50
+ user_address: string;
51
+ signature: string;
52
+ user_pubkey_x: string;
53
+ user_pubkey_y: string;
54
+ raw_transaction: string;
55
+ tx_length: number;
56
+ coinbase_attester_pubkey_x: string;
57
+ coinbase_attester_pubkey_y: string;
58
+ merkle_proof: string[];
59
+ leaf_index: number;
60
+ depth: number;
61
+ country_list?: string[];
62
+ is_included?: boolean;
63
+ }
64
+ export interface ProveRequest {
65
+ circuit: CircuitName;
66
+ inputs: ProveInputs;
67
+ }
68
+ export interface ProveResponse {
69
+ proof: string;
70
+ publicInputs: string;
71
+ proofWithInputs: string;
72
+ attestation: {
73
+ document: string;
74
+ proof_hash: string;
75
+ verification: {
76
+ rootCaValid: boolean;
77
+ chainValid: boolean;
78
+ signatureValid: boolean;
79
+ pcrs: Record<number, string>;
80
+ };
81
+ } | null;
82
+ timing: {
83
+ totalMs: number;
84
+ paymentVerifyMs?: number;
85
+ inputBuildMs?: number;
86
+ proveMs?: number;
87
+ };
88
+ verification: {
89
+ chainId: number;
90
+ verifierAddress: string;
91
+ rpcUrl: string;
92
+ } | null;
93
+ }
94
+ export interface VerifyResult {
95
+ valid: boolean;
96
+ transactionHash?: string;
97
+ error?: string;
98
+ }
99
+ export interface EASAttestation {
100
+ id: string;
101
+ txid: string;
102
+ recipient: string;
103
+ attester: string;
104
+ time: number;
105
+ expirationTime: number;
106
+ schemaId: string;
107
+ }
108
+ export interface AttestationData {
109
+ attestation: EASAttestation;
110
+ rawTransaction: string;
111
+ }
112
+ export interface ProofParams {
113
+ circuit: CircuitName;
114
+ /** Scope string for the proof (defaults to "proofport") */
115
+ scope?: string;
116
+ /** Country codes for the country circuit (e.g. ["US", "KR"]) */
117
+ countryList?: string[];
118
+ /** Whether the country list is an inclusion or exclusion list */
119
+ isIncluded?: boolean;
120
+ }
121
+ export interface ProofResult {
122
+ proof: string;
123
+ publicInputs: string;
124
+ proofWithInputs: string;
125
+ paymentTxHash: string;
126
+ attestation: ProveResponse['attestation'];
127
+ timing: ProveResponse['timing'];
128
+ verification: ProveResponse['verification'];
129
+ }
130
+ export interface StepResult<T = unknown> {
131
+ step: number;
132
+ name: string;
133
+ data: T;
134
+ durationMs: number;
135
+ }
136
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,12 @@
1
+ // ─── Circuit name mappings ──────────────────────────────────────────────
2
+ /** Map client-friendly names to canonical circuit IDs. */
3
+ export const CIRCUIT_NAME_MAP = {
4
+ coinbase_kyc: 'coinbase_attestation',
5
+ coinbase_country: 'coinbase_country_attestation',
6
+ };
7
+ /** Map canonical circuit IDs back to client-friendly names. */
8
+ export const CIRCUIT_ID_MAP = {
9
+ coinbase_attestation: 'coinbase_kyc',
10
+ coinbase_country_attestation: 'coinbase_country',
11
+ };
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAQ3E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,YAAY,EAAE,sBAAsB;IACpC,gBAAgB,EAAE,8BAA8B;CACjD,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC5D,oBAAoB,EAAE,cAAc;IACpC,4BAA4B,EAAE,kBAAkB;CACjD,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { VerifyResult, ProveResponse } from './types.js';
2
+ /**
3
+ * Verify a ZK proof on-chain using server-provided verification info.
4
+ *
5
+ * @param verification - Chain info from ProveResponse (chainId, verifierAddress, rpcUrl)
6
+ * @param proof - Raw proof hex
7
+ * @param publicInputs - Concatenated public inputs hex
8
+ */
9
+ export declare function verifyOnChain(verification: {
10
+ chainId: number;
11
+ verifierAddress: string;
12
+ rpcUrl: string;
13
+ }, proof: string, publicInputs: string): Promise<VerifyResult>;
14
+ /**
15
+ * Verify a proof using the verification info from a ProveResponse.
16
+ * Convenience wrapper that extracts verification data from the prove result.
17
+ *
18
+ * @param result - The full ProveResponse from generateProof()
19
+ * @returns VerifyResult
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const result = await generateProof(config, signers, params);
24
+ * const verified = await verifyProof(result);
25
+ * console.log(verified.valid); // true
26
+ * ```
27
+ */
28
+ export declare function verifyProof(result: ProveResponse): Promise<VerifyResult>;
29
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkB9D;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC1E,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9E"}
package/dist/verify.js ADDED
@@ -0,0 +1,56 @@
1
+ import { ethers } from 'ethers';
2
+ const VERIFIER_ABI = [
3
+ 'function verify(bytes calldata _proof, bytes32[] calldata _publicInputs) external view returns (bool)',
4
+ ];
5
+ /**
6
+ * Split concatenated public inputs hex into array of bytes32 values.
7
+ */
8
+ function splitPublicInputs(publicInputsHex) {
9
+ const hex = publicInputsHex.startsWith('0x') ? publicInputsHex.slice(2) : publicInputsHex;
10
+ const chunks = [];
11
+ for (let i = 0; i < hex.length; i += 64) {
12
+ chunks.push('0x' + hex.slice(i, i + 64));
13
+ }
14
+ return chunks;
15
+ }
16
+ /**
17
+ * Verify a ZK proof on-chain using server-provided verification info.
18
+ *
19
+ * @param verification - Chain info from ProveResponse (chainId, verifierAddress, rpcUrl)
20
+ * @param proof - Raw proof hex
21
+ * @param publicInputs - Concatenated public inputs hex
22
+ */
23
+ export async function verifyOnChain(verification, proof, publicInputs) {
24
+ const provider = new ethers.JsonRpcProvider(verification.rpcUrl);
25
+ const verifier = new ethers.Contract(verification.verifierAddress, VERIFIER_ABI, provider);
26
+ const publicInputsArray = splitPublicInputs(publicInputs);
27
+ try {
28
+ const result = await verifier.verify(proof, publicInputsArray);
29
+ return { valid: result === true };
30
+ }
31
+ catch (error) {
32
+ const message = error instanceof Error ? error.message : String(error);
33
+ return { valid: false, error: `On-chain verification failed: ${message}` };
34
+ }
35
+ }
36
+ /**
37
+ * Verify a proof using the verification info from a ProveResponse.
38
+ * Convenience wrapper that extracts verification data from the prove result.
39
+ *
40
+ * @param result - The full ProveResponse from generateProof()
41
+ * @returns VerifyResult
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const result = await generateProof(config, signers, params);
46
+ * const verified = await verifyProof(result);
47
+ * console.log(verified.valid); // true
48
+ * ```
49
+ */
50
+ export async function verifyProof(result) {
51
+ if (!result.verification) {
52
+ return { valid: false, error: 'No verification info in response (verifier not deployed on this network)' };
53
+ }
54
+ return verifyOnChain(result.verification, result.proof, result.publicInputs);
55
+ }
56
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,YAAY,GAAG;IACnB,uGAAuG;CACxG,CAAC;AAEF;;GAEG;AACH,SAAS,iBAAiB,CAAC,eAAuB;IAChD,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,YAA0E,EAC1E,KAAa,EACb,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3F,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,OAAO,EAAE,EAAE,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAqB;IACrD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0EAA0E,EAAE,CAAC;IAC7G,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/E,CAAC"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@zkproofport-ai/sdk",
3
+ "version": "0.1.0",
4
+ "description": "Client SDK for ZKProofport proof generation",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "typecheck": "tsc --noEmit"
17
+ },
18
+ "dependencies": {
19
+ "ethers": "^6.13.0"
20
+ },
21
+ "devDependencies": {
22
+ "typescript": "^5.6.0"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md"
27
+ ],
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/zkproofport/proofport-ai",
32
+ "directory": "packages/sdk"
33
+ }
34
+ }