import { ChaosConfig, RecordConfig } from "./types.js";
import { A2AAgentDefinition, A2AArtifact, A2APart, A2AStreamEvent } from "./a2a-types.js";
import { AGUIEvent } from "./agui-types.js";
import { LLMock } from "./llmock.js";
import { MCPPromptDefinition, MCPToolDefinition } from "./mcp-types.js";
import { QueryResult } from "./vector-types.js";

//#region src/config-loader.d.ts
interface MCPConfigTool extends MCPToolDefinition {
  result?: string;
}
interface MCPConfigResource {
  uri: string;
  name: string;
  mimeType?: string;
  description?: string;
  text?: string;
  blob?: string;
}
interface MCPConfigPrompt extends MCPPromptDefinition {
  result?: {
    messages: Array<{
      role: string;
      content: {
        type: string;
        text: string;
      };
    }>;
  };
}
interface MCPConfig {
  path?: string;
  serverInfo?: {
    name: string;
    version: string;
  };
  tools?: MCPConfigTool[];
  resources?: MCPConfigResource[];
  prompts?: MCPConfigPrompt[];
}
interface A2AConfigPattern {
  pattern: string;
  parts?: A2APart[];
  artifacts?: A2AArtifact[];
  events?: A2AStreamEvent[];
  delayMs?: number;
}
interface A2AConfigAgent extends A2AAgentDefinition {
  messages?: A2AConfigPattern[];
  tasks?: A2AConfigPattern[];
  streamingTasks?: A2AConfigPattern[];
}
interface A2AConfig {
  path?: string;
  agents?: A2AConfigAgent[];
}
interface AGUIConfigFixture {
  match: {
    message?: string;
    toolCallId?: string;
    toolName?: string;
    stateKey?: string;
  };
  text?: string;
  events?: AGUIEvent[];
  delayMs?: number;
}
interface AGUIConfig {
  path?: string;
  fixtures?: AGUIConfigFixture[];
}
interface VectorConfigCollection {
  name: string;
  dimension: number;
  vectors?: Array<{
    id: string;
    values: number[];
    metadata?: Record<string, unknown>;
  }>;
  queryResults?: QueryResult[];
}
interface VectorConfig {
  path?: string;
  collections?: VectorConfigCollection[];
}
interface AimockConfig {
  llm?: {
    fixtures?: string;
    latency?: number;
    chunkSize?: number;
    replaySpeed?: number;
    logLevel?: "silent" | "warn" | "info" | "debug";
    chaos?: ChaosConfig;
    record?: RecordConfig;
  };
  mcp?: MCPConfig;
  a2a?: A2AConfig;
  agui?: AGUIConfig;
  vector?: VectorConfig;
  services?: {
    search?: boolean;
    rerank?: boolean;
    moderate?: boolean;
  };
  metrics?: boolean;
  strict?: boolean;
  port?: number;
  host?: string;
}
declare function loadConfig(configPath: string): AimockConfig;
declare function startFromConfig(config: AimockConfig, overrides?: {
  port?: number;
  host?: string;
}): Promise<{
  llmock: LLMock;
  url: string;
}>;
//# sourceMappingURL=config-loader.d.ts.map
//#endregion
export { AimockConfig, loadConfig, startFromConfig };
//# sourceMappingURL=config-loader.d.ts.map