import { AgentWithinContextOfProjectSchema } from "./schemas.js";
import { FullAgentDefinition } from "../types/entities.js";
import { z } from "@hono/zod-openapi";

//#region src/validation/agentFull.d.ts
declare function validateAndTypeAgentData(data: unknown): z.infer<typeof AgentWithinContextOfProjectSchema>;
/**
 * Validates that all tool IDs referenced in agents exist in the tools record
 * Note: With scoped architecture, tool validation should be done at the project level
 * This function is kept for backward compatibility but will need project-scoped tool data
 */
declare function validateToolReferences(agentData: FullAgentDefinition, availableToolIds?: Set<string>): void;
/**
 * Validates that all dataComponent IDs referenced in agents exist in the dataComponents record
 * Note: With scoped architecture, dataComponent validation should be done at the project level
 */
declare function validateDataComponentReferences(agentData: FullAgentDefinition, availableDataComponentIds?: Set<string>): void;
/**
 * Validates that all artifactComponent IDs referenced in agents exist in the artifactComponents record.
 * Note: With scoped architecture, artifactComponent validation should be done at the project level
 */
declare function validateArtifactComponentReferences(agentData: FullAgentDefinition, availableArtifactComponentIds?: Set<string>): void;
/**
 * Validates agent relationships (transfer and delegation targets exist, and there is no circular delegation)
 */
declare function validateAgentRelationships(agentData: FullAgentDefinition): void;
declare function validateSubAgentExternalAgentRelations(agentData: FullAgentDefinition, availableExternalAgentIds?: Set<string>): void;
/**
 * Validates the agent structure before creation/update
 * Note: With scoped architecture, project-scoped resource validation should be done at project level
 */
declare function validateAgentStructure(agentData: FullAgentDefinition, projectResources?: {
  toolIds?: Set<string>;
  dataComponentIds?: Set<string>;
  artifactComponentIds?: Set<string>;
  externalAgentIds?: Set<string>;
}): void;
//#endregion
export { validateAgentRelationships, validateAgentStructure, validateAndTypeAgentData, validateArtifactComponentReferences, validateDataComponentReferences, validateSubAgentExternalAgentRelations, validateToolReferences };