import { PODSchema, EntriesSchema, PODData, PodspecProofRequest } from '@parcnet-js/podspec'; import { GPCProof, GPCBoundConfig, GPCRevealedClaims, GPCIdentifier } from '@pcd/gpc'; import { PODEntries } from '@pcd/pod'; /** * @file This file contains the RPC interfaces for the Parcnet client. * * These interfaces are implemented in rpc_client.ts. */ type PODQuery = PODSchema; interface SubscriptionUpdateResult { subscriptionId: string; update: PODData[]; } interface GPCProofReturn { proof: GPCProof; boundConfig: GPCBoundConfig; revealedClaims: GPCRevealedClaims; } type ProveResult = ({ success: true; } & GPCProofReturn) | { success: false; error: string; }; interface ParcnetGPCRPC { prove: ({ request, collectionIds }: { request: PodspecProofRequest; circuitIdentifier?: GPCIdentifier; collectionIds?: string[]; }) => Promise; canProve: ({ request, circuitIdentifier, collectionIds }: { request: PodspecProofRequest; circuitIdentifier?: GPCIdentifier; collectionIds?: string[]; }) => Promise; verify: (proof: GPCProof, boundConfig: GPCBoundConfig, revealedClaims: GPCRevealedClaims) => Promise; verifyWithProofRequest: (proof: GPCProof, boundConfig: GPCBoundConfig, revealedClaims: GPCRevealedClaims, proofRequest: PodspecProofRequest) => Promise; } interface ParcnetIdentityRPC { getSemaphoreV3Commitment: () => Promise; getSemaphoreV4Commitment: () => Promise; getPublicKey: () => Promise; } interface ParcnetPODRPC { query: (collectionId: string, query: PODQuery) => Promise; insert: (collectionId: string, podData: PODData) => Promise; delete: (collectionId: string, signature: string) => Promise; subscribe: (collectionId: string, query: PODQuery) => Promise; unsubscribe: (subscriptionId: string) => Promise; sign: (entries: PODEntries) => Promise; signPrefixed: (entries: PODEntries) => Promise; } interface ParcnetRPC { _version: "1"; gpc: ParcnetGPCRPC; identity: ParcnetIdentityRPC; pod: ParcnetPODRPC; } interface ParcnetEvents { on: (event: "subscription-update", callback: (result: SubscriptionUpdateResult) => void) => () => void; } export type { GPCProofReturn, PODQuery, ParcnetEvents, ParcnetGPCRPC, ParcnetIdentityRPC, ParcnetPODRPC, ParcnetRPC, ProveResult, SubscriptionUpdateResult };