import { ProjectScopeConfig } from "../../db/manage/scope-definitions.js";
import { PaginationConfig } from "../../types/utility.js";
import "../../types/index.js";
import { AgentsManageDatabaseClient } from "../../db/manage/manage-client.js";
import { ExternalAgentInsert, ExternalAgentSelect, ExternalAgentUpdate } from "../../types/entities.js";

//#region src/data-access/manage/externalAgents.d.ts
/**
 * Create a new external agent
 */
declare const createExternalAgent: (db: AgentsManageDatabaseClient) => (params: ExternalAgentInsert) => Promise<ExternalAgentSelect>;
/**
 * Get external agent by ID
 */
declare const getExternalAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  externalAgentId: string;
}) => Promise<ExternalAgentSelect | null>;
/**
 * Get external agent by base URL
 */
declare const getExternalAgentByUrl: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  baseUrl: string;
}) => Promise<ExternalAgentSelect | null>;
/**
 * List external agents for a project
 */
declare const listExternalAgents: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
}) => Promise<ExternalAgentSelect[]>;
/**
 * List external agents with pagination
 */
declare const listExternalAgentsPaginated: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  pagination?: PaginationConfig;
}) => Promise<{
  data: ExternalAgentSelect[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}>;
/**
 * Update an existing external agent
 */
declare const updateExternalAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  externalAgentId: string;
  data: Partial<ExternalAgentUpdate>;
}) => Promise<ExternalAgentSelect | null>;
/**
 * Upsert external agent (create if it doesn't exist, update if it does)
 */
declare const upsertExternalAgent: (db: AgentsManageDatabaseClient) => (params: {
  data: ExternalAgentInsert;
}) => Promise<ExternalAgentSelect>;
/**
 * Delete an external agent
 */
declare const deleteExternalAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  externalAgentId: string;
}) => Promise<boolean>;
/**
 * Check if an external agent exists
 */
declare const externalAgentExists: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  externalAgentId: string;
}) => Promise<boolean>;
/**
 * Check if an external agent exists by URL
 */
declare const externalAgentUrlExists: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
  baseUrl: string;
}) => Promise<boolean>;
/**
 * Count external agents for a project
 */
declare const countExternalAgents: (db: AgentsManageDatabaseClient) => (params: {
  scopes: ProjectScopeConfig;
}) => Promise<number>;
//#endregion
export { countExternalAgents, createExternalAgent, deleteExternalAgent, externalAgentExists, externalAgentUrlExists, getExternalAgent, getExternalAgentByUrl, listExternalAgents, listExternalAgentsPaginated, updateExternalAgent, upsertExternalAgent };