import { BaseApiClient, BaseApiClientConfig, BaseApiError } from "./base-client.js";
import { ResolvedRef } from "../validation/dolt-schemas.js";
import { EvaluationJobConfigEvaluatorRelationSelect, EvaluationJobConfigSelect, EvaluationRunConfigWithSuiteConfigs, EvaluationSuiteConfigEvaluatorRelationSelect, EvaluationSuiteConfigSelect, EvaluatorSelect, FullAgentDefinition, FullProjectSelectWithRelationIds, FunctionToolApiSelect, McpTool } from "../types/entities.js";

//#region src/api-client/manage-api-client.d.ts
declare class ManageApiError extends BaseApiError {
  constructor(message: string, statusCode: number, responseBody: string);
}
declare class ManagementApiClient extends BaseApiClient {
  constructor(config: BaseApiClientConfig);
  /**
   * Override to return ManageApiError
   */
  protected createError(message: string, statusCode: number, responseBody: string): ManageApiError;
  /**
   * Override to extract data from { data: ... } wrapper
   */
  protected extractResponseData<T>(response: Response): Promise<T>;
  getFullProject(): Promise<FullProjectSelectWithRelationIds>;
  getResolvedRef(): Promise<ResolvedRef>;
  getFullAgent(agentId: string): Promise<FullAgentDefinition | null>;
  getMcpTool(toolId: string): Promise<McpTool>;
  getFunctionToolsForSubAgent(agentId: string, subAgentId: string): Promise<FunctionToolApiSelect[]>;
  getEvaluationJobConfigById(evaluationJobConfigId: string): Promise<EvaluationJobConfigSelect | null>;
  getEvaluationJobConfigEvaluatorRelations(evaluationJobConfigId: string): Promise<EvaluationJobConfigEvaluatorRelationSelect[]>;
  getEvaluatorById(evaluatorId: string): Promise<EvaluatorSelect | null>;
  getEvaluatorsByIds(evaluatorIds: string[]): Promise<EvaluatorSelect[]>;
  listEvaluationRunConfigs(): Promise<EvaluationRunConfigWithSuiteConfigs[]>;
  getEvaluationRunConfigById(evaluationRunConfigId: string): Promise<EvaluationRunConfigWithSuiteConfigs | null>;
  getEvaluationSuiteConfigById(evaluationSuiteConfigId: string): Promise<EvaluationSuiteConfigSelect | null>;
  getEvaluationSuiteConfigEvaluatorRelations(evaluationSuiteConfigId: string): Promise<EvaluationSuiteConfigEvaluatorRelationSelect[]>;
}
//#endregion
export { ManageApiError, ManagementApiClient };