export interface OptimizableFunctionsResponse {
  [uri: string]: string[];
}

export interface OptimizationRequest {
  textDocument: { uri: string };
  functionName: string;
}

export interface OptimizationResponse {
  functionName: string;
  status?: string;
  discovered_tests?: number;
  generated_tests?: number;
  generated_optimizations?: number;
  message?: string;
  optimization?: string; // the source code for the best candidate
  functions?: string[];
  files_inside_context: string[];
  [key: string]: unknown;
  optimizationReview?: string;
}

export interface OptimizationStepUpdate {
  functionName: string;
  step: number;
  status: "success" | "failure";
  details?: OptimizationResponse;
}

export interface GetOptimizableFunctionsRequest {
  textDocument: { uri: string };
}
