{"version":3,"sources":["../src/schema.ts","../src/schema_elements.ts"],"sourcesContent":["import type { GPCIdentifier } from \"@pcd/gpc\";\nimport * as v from \"valibot\";\nimport type { ParcnetRPC } from \"./rpc_interfaces.js\";\nimport {\n  PODEntriesSchema,\n  PODSchemaSchema,\n  PodspecProofRequestSchema,\n  ProveResultSchema\n} from \"./schema_elements.js\";\n\nconst CollectionIdSchema = v.string();\n\nconst CircuitIdentifierSchema = v.pipe(\n  v.string(),\n  v.check((s): s is GPCIdentifier => {\n    return s.includes(\"_\") && s.split(\"_\").length === 2;\n  }),\n  v.transform<string, GPCIdentifier>((s) => s as GPCIdentifier)\n);\n\nconst ProveArgsSchema = v.object({\n  request: PodspecProofRequestSchema,\n  circuitIdentifier: v.optional(CircuitIdentifierSchema),\n  collectionIds: v.optional(v.array(CollectionIdSchema))\n});\n\nexport const PODDataSchema = v.object({\n  entries: PODEntriesSchema,\n  signature: v.string(),\n  signerPublicKey: v.string()\n});\n\nexport type RPCFunction<\n  I extends v.TupleSchema<\n    v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>[],\n    v.ErrorMessage<v.TupleIssue> | undefined\n  > = v.TupleSchema<\n    v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>[],\n    v.ErrorMessage<v.TupleIssue> | undefined\n  >,\n  O extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>> = v.BaseSchema<\n    unknown,\n    unknown,\n    v.BaseIssue<unknown>\n  >\n> = {\n  input: I;\n  output: O;\n};\n\ntype InferredRPCFunction<\n  I extends v.TupleSchema<\n    v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>[],\n    v.ErrorMessage<v.TupleIssue> | undefined\n  >,\n  O extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>\n> = (...args: v.InferInput<I>) => Promise<v.InferOutput<O>>;\n\ntype RPCSchema = Record<string, Record<string, RPCFunction>>;\n\nexport const ParcnetRPCSchema = {\n  gpc: {\n    prove: {\n      input: v.tuple([ProveArgsSchema]),\n      output: ProveResultSchema\n    },\n    canProve: {\n      input: v.tuple([ProveArgsSchema]),\n      output: v.boolean()\n    },\n    verify: {\n      input: v.tuple([v.any(), v.any(), v.any()]),\n      output: v.boolean()\n    },\n    verifyWithProofRequest: {\n      input: v.tuple([v.any(), v.any(), v.any(), v.any()]),\n      output: v.boolean()\n    }\n  },\n  identity: {\n    getSemaphoreV3Commitment: {\n      input: v.tuple([]),\n      output: v.bigint()\n    },\n    getSemaphoreV4Commitment: {\n      input: v.tuple([]),\n      output: v.bigint()\n    },\n    getPublicKey: {\n      input: v.tuple([]),\n      output: v.string()\n    }\n  },\n  pod: {\n    query: {\n      input: v.tuple([v.string(), PODSchemaSchema] as [\n        collectionId: ReturnType<typeof v.string>,\n        query: typeof PODSchemaSchema\n      ]),\n      output: v.array(PODDataSchema)\n    },\n    insert: {\n      input: v.tuple([v.string(), PODDataSchema] as [\n        collectionId: ReturnType<typeof v.string>,\n        podData: typeof PODDataSchema\n      ]),\n      output: v.void()\n    },\n    delete: {\n      input: v.tuple([v.string(), v.string()] as [\n        collectionId: ReturnType<typeof v.string>,\n        signature: ReturnType<typeof v.string>\n      ]),\n      output: v.void()\n    },\n    subscribe: {\n      input: v.tuple([v.string(), PODSchemaSchema] as [\n        collectionId: ReturnType<typeof v.string>,\n        query: typeof PODSchemaSchema\n      ]),\n      output: v.string()\n    },\n    unsubscribe: {\n      input: v.tuple([v.string()] as [\n        subscriptionId: ReturnType<typeof v.string>\n      ]),\n      output: v.void()\n    },\n    sign: {\n      input: v.tuple([PODEntriesSchema] as [entries: typeof PODEntriesSchema]),\n      output: PODDataSchema\n    },\n    signPrefixed: {\n      input: v.tuple([PODEntriesSchema] as [entries: typeof PODEntriesSchema]),\n      output: PODDataSchema\n    }\n  }\n} as const satisfies RPCSchema;\n\ntype InferredRPCSchema<T extends RPCSchema> = {\n  [K in keyof T]: {\n    [M in keyof T[K]]: T[K][M] extends RPCFunction<infer I, infer O>\n      ? InferredRPCFunction<I, O>\n      : never;\n  };\n};\n\ntype InferredNewSchema = InferredRPCSchema<typeof ParcnetRPCSchema>;\nconst _schemaTypeCheck = {} as InferredNewSchema satisfies Omit<\n  ParcnetRPC,\n  \"_version\"\n>;\n","import type { GPCBoundConfig, GPCRevealedClaims } from \"@pcd/gpc\";\nimport type { Groth16Proof } from \"snarkjs\";\nimport * as v from \"valibot\";\n\nexport const PODValueSchema = v.variant(\"type\", [\n  v.object({\n    type: v.literal(\"string\"),\n    value: v.string()\n  }),\n  v.object({\n    type: v.literal(\"int\"),\n    value: v.bigint()\n  }),\n  v.object({\n    type: v.literal(\"cryptographic\"),\n    value: v.bigint()\n  }),\n  v.object({\n    type: v.literal(\"eddsa_pubkey\"),\n    value: v.string()\n  }),\n  v.object({\n    type: v.literal(\"boolean\"),\n    value: v.boolean()\n  }),\n  v.object({\n    type: v.literal(\"date\"),\n    value: v.date()\n  }),\n  v.object({\n    type: v.literal(\"bytes\"),\n    value: v.instance(Uint8Array)\n  }),\n  v.object({\n    type: v.literal(\"null\"),\n    value: v.null()\n  })\n]);\n\nexport const PODEntriesSchema = v.record(v.string(), PODValueSchema);\n\nexport const DefinedEntrySchema = v.variant(\"type\", [\n  v.object({\n    type: v.literal(\"string\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema)),\n    isRevealed: v.optional(v.boolean()),\n    equalsEntry: v.optional(v.string())\n  }),\n  v.object({\n    type: v.literal(\"int\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema)),\n    isRevealed: v.optional(v.boolean()),\n    equalsEntry: v.optional(v.string()),\n    inRange: v.optional(\n      v.object({\n        min: v.bigint(),\n        max: v.bigint()\n      })\n    )\n  }),\n  v.object({\n    type: v.literal(\"cryptographic\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema)),\n    isRevealed: v.optional(v.boolean()),\n    equalsEntry: v.optional(v.string())\n  }),\n  v.object({\n    type: v.literal(\"eddsa_pubkey\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema)),\n    isRevealed: v.optional(v.boolean()),\n    equalsEntry: v.optional(v.string())\n  }),\n  v.object({\n    type: v.literal(\"null\")\n  }),\n  v.object({\n    type: v.literal(\"bytes\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema))\n  }),\n  v.object({\n    type: v.literal(\"date\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema)),\n    inRange: v.optional(\n      v.object({\n        min: v.bigint(),\n        max: v.bigint()\n      })\n    )\n  }),\n  v.object({\n    type: v.literal(\"boolean\"),\n    isMemberOf: v.optional(v.array(PODValueSchema)),\n    isNotMemberOf: v.optional(v.array(PODValueSchema))\n  })\n]);\n\nexport const OptionalEntrySchema = v.object({\n  type: v.literal(\"optional\"),\n  innerType: DefinedEntrySchema\n});\n\nexport const EntrySchema = v.variant(\"type\", [\n  DefinedEntrySchema,\n  OptionalEntrySchema\n]);\n\nexport const PODTupleSchema = v.object({\n  entries: v.array(v.string()),\n  isMemberOf: v.optional(v.array(v.array(PODValueSchema))),\n  isNotMemberOf: v.optional(v.array(v.array(PODValueSchema)))\n});\n\nexport const SignerPublicKeySchema = v.object({\n  isMemberOf: v.optional(v.array(v.string())),\n  isNotMemberOf: v.optional(v.array(v.string()))\n});\n\nexport const SignatureSchema = v.object({\n  isMemberOf: v.optional(v.array(v.string())),\n  isNotMemberOf: v.optional(v.array(v.string()))\n});\n\nexport const PODSchemaSchema = v.object({\n  entries: v.record(v.string(), EntrySchema),\n  tuples: v.optional(v.array(PODTupleSchema)),\n  signerPublicKey: v.optional(SignerPublicKeySchema),\n  signature: v.optional(SignatureSchema),\n  meta: v.optional(\n    v.object({\n      labelEntry: v.string()\n    })\n  )\n});\n\nexport const ProofConfigPODSchemaSchema = v.object({\n  pod: PODSchemaSchema,\n  revealed: v.optional(v.record(v.string(), v.optional(v.boolean()))),\n  owner: v.optional(\n    v.object({\n      entry: v.string(),\n      protocol: v.union([v.literal(\"SemaphoreV3\"), v.literal(\"SemaphoreV4\")])\n    })\n  )\n});\n\nexport const PodspecProofRequestSchema = v.object({\n  pods: v.record(v.string(), ProofConfigPODSchemaSchema),\n  externalNullifier: v.optional(PODValueSchema),\n  watermark: v.optional(PODValueSchema)\n});\n\nexport const ProveResultSchema = v.variant(\"success\", [\n  v.object({\n    success: v.literal(true),\n    // TODO: More specific schemas for these\n    proof: v.custom<Groth16Proof>(() => true),\n    boundConfig: v.custom<GPCBoundConfig>(() => true),\n    revealedClaims: v.custom<GPCRevealedClaims>(() => true)\n  }),\n  v.object({\n    success: v.literal(false),\n    error: v.string()\n  })\n]);\n"],"mappings":"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","names":["v"]}