{"path":"oracle/src/utils.ts","size":1045,"locked":false,"binary":false,"truncated":false,"content":"import { PublicKey } from \"@solana/web3.js\";\nimport { ModelVerdict, Verdict } from \"./types\";\n\n/**\n * Parsed JSON shape returned by both AI models.\n */\nexport interface ParsedModelResponse {\n  verdict: string;\n  confidence: number;\n  reasoning: string;\n  criteria_met: string[];\n  criteria_failed: string[];\n}\n\n/**\n * Converts a parsed AI response into a typed ModelVerdict.\n */\nexport function toModelVerdict(\n  modelName: string,\n  parsed: ParsedModelResponse\n): ModelVerdict {\n  return {\n    model: modelName,\n    verdict: parsed.verdict as Verdict,\n    confidence: parsed.confidence,\n    reasoning: parsed.reasoning,\n    criteriaMet: parsed.criteria_met,\n    criteriaFailed: parsed.criteria_failed,\n  };\n}\n\n/**\n * Derives the Vault PDA for a given client and job ID.\n */\nexport function deriveVaultPda(\n  client: PublicKey,\n  jobId: string,\n  programId: PublicKey\n): PublicKey {\n  const [vaultPda] = PublicKey.findProgramAddressSync(\n    [Buffer.from(\"vault\"), client.toBuffer(), Buffer.from(jobId)],\n    programId\n  );\n  return vaultPda;\n}\n"}