import { AssembleResult } from "../utils/token-estimator.js";
import { Artifact, ArtifactComponentApiInsert, BreakdownComponentDef, DataComponentApiInsert } from "@inkeep/agents-core";

//#region src/domains/run/agents/types.d.ts
interface VersionConfig<TConfig> {
  loadTemplates(): Map<string, string>;
  assemble(templates: Map<string, string>, config: TConfig): AssembleResult;
  /** Returns the breakdown schema defining which components this version tracks */
  getBreakdownSchema(): BreakdownComponentDef[];
}
interface SkillData {
  id: string;
  subAgentSkillId: string;
  name: string;
  description: string;
  content: string;
  metadata: Record<string, unknown> | null;
  index: number;
  alwaysLoaded: boolean;
}
interface SystemPromptV1 {
  corePrompt: string;
  prompt?: string;
  skills?: SkillData[];
  artifacts: Artifact[];
  tools: ToolData[];
  dataComponents: DataComponentApiInsert[];
  artifactComponents?: ArtifactComponentApiInsert[];
  hasAgentArtifactComponents?: boolean;
  hasTransferRelations?: boolean;
  hasDelegateRelations?: boolean;
  includeDataComponents?: boolean;
  clientCurrentTime?: string;
  includeSinglePhaseDataComponents?: boolean;
}
interface ToolData {
  name: string;
  description?: string | null;
  inputSchema?: Record<string, unknown>;
  usageGuidelines?: string;
}
//#endregion
export { type BreakdownComponentDef, SkillData, SystemPromptV1, ToolData, VersionConfig };