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 SystemPromptV1 {
  corePrompt: string;
  prompt?: string;
  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, SystemPromptV1, ToolData, VersionConfig };