import { AgentScopeConfig, SubAgentScopeConfig } from "../../db/manage/scope-definitions.js";
import { ConversationHistoryConfig, PaginationConfig } from "../../types/utility.js";
import { AgentsManageDatabaseClient } from "../../db/manage/manage-client.js";
import "../../index.js";
import { SubAgentTeamAgentRelationInsert } from "../../types/entities.js";

//#region src/data-access/manage/subAgentTeamAgentRelations.d.ts
declare const getSubAgentTeamAgentRelationById: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  relationId: string;
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
} | undefined>;
declare const listSubAgentTeamAgentRelations: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  pagination?: PaginationConfig;
}) => Promise<{
  data: {
    createdAt: string;
    updatedAt: string;
    targetAgentId: string;
    headers: Record<string, string> | null;
    subAgentId: string;
    agentId: string;
    projectId: string;
    tenantId: string;
    id: string;
  }[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}>;
declare const getSubAgentTeamAgentRelations: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
}[]>;
declare const getSubAgentTeamAgentRelationsByAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: AgentScopeConfig;
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
}[]>;
declare const getSubAgentTeamAgentRelationsByTeamAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: AgentScopeConfig;
  targetAgentId: string;
  pagination?: PaginationConfig;
}) => Promise<{
  data: {
    createdAt: string;
    updatedAt: string;
    targetAgentId: string;
    headers: Record<string, string> | null;
    subAgentId: string;
    agentId: string;
    projectId: string;
    tenantId: string;
    id: string;
  }[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}>;
declare const getTeamAgentsForSubAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  pagination?: PaginationConfig;
}) => Promise<{
  data: {
    id: string;
    tenantId: string;
    projectId: string;
    agentId: string;
    subAgentId: string;
    targetAgentId: string;
    headers: Record<string, string> | null;
    createdAt: string;
    updatedAt: string;
    targetAgent: {
      id: string;
      name: string;
      description: string | null;
      defaultSubAgentId: string | null;
      contextConfigId: string | null;
      models: {
        base?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
        structuredOutput?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
        summarizer?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
      } | null;
      statusUpdates: {
        enabled?: boolean | undefined;
        numEvents?: number | undefined;
        timeInSeconds?: number | undefined;
        prompt?: string | undefined;
        statusComponents?: {
          type: string;
          description?: string | undefined;
          detailsSchema?: {
            type: "object";
            properties: Record<string, any>;
            required?: string[] | undefined;
          } | undefined;
        }[] | undefined;
      } | null;
      prompt: string | null;
      stopWhen: {
        transferCountIs?: number | undefined;
      } | null;
      createdAt: string;
      updatedAt: string;
    };
  }[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}>;
declare const getSubAgentsForTeamAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: AgentScopeConfig;
  targetAgentId: string;
  pagination?: PaginationConfig;
}) => Promise<{
  data: {
    id: string;
    tenantId: string;
    projectId: string;
    agentId: string;
    subAgentId: string;
    targetAgentId: string;
    createdAt: string;
    updatedAt: string;
    subAgent: {
      id: string;
      name: string;
      description: string | null;
      prompt: string | null;
      conversationHistoryConfig: ConversationHistoryConfig | null;
      models: {
        base?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
        structuredOutput?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
        summarizer?: {
          model?: string | undefined;
          providerOptions?: Record<string, unknown> | undefined;
          fallbackModels?: string[] | undefined;
          allowedProviders?: string[] | undefined;
        } | undefined;
      } | null;
      stopWhen: {
        stepCountIs?: number | undefined;
      } | null;
      createdAt: string;
      updatedAt: string;
    };
  }[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    pages: number;
  };
}>;
declare const createSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  relationId?: string;
  data: {
    targetAgentId: string;
    headers?: Record<string, string> | null;
  };
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
}>;
/**
 * Check if sub-agent team agent relation exists by params
 */
declare const getSubAgentTeamAgentRelationByParams: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  targetAgentId: string;
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
} | undefined>;
/**
 * Upsert sub-agent team agent relation (create if it doesn't exist, update if it does)
 */
declare const upsertSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  relationId?: string;
  data: {
    targetAgentId: string;
    headers?: Record<string, string> | null;
  };
}) => Promise<{
  id: string;
  createdAt: string;
  updatedAt: string;
  tenantId: string;
  projectId: string;
  agentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  targetAgentId: string;
}>;
declare const updateSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  relationId: string;
  data: Partial<SubAgentTeamAgentRelationInsert>;
}) => Promise<{
  createdAt: string;
  updatedAt: string;
  targetAgentId: string;
  headers: Record<string, string> | null;
  subAgentId: string;
  agentId: string;
  projectId: string;
  tenantId: string;
  id: string;
}>;
declare const deleteSubAgentTeamAgentRelation: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
  relationId: string;
}) => Promise<boolean>;
declare const deleteSubAgentTeamAgentRelationsBySubAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: SubAgentScopeConfig;
}) => Promise<boolean>;
declare const deleteSubAgentTeamAgentRelationsByAgent: (db: AgentsManageDatabaseClient) => (params: {
  scopes: AgentScopeConfig;
}) => Promise<boolean>;
//#endregion
export { createSubAgentTeamAgentRelation, deleteSubAgentTeamAgentRelation, deleteSubAgentTeamAgentRelationsByAgent, deleteSubAgentTeamAgentRelationsBySubAgent, getSubAgentTeamAgentRelationById, getSubAgentTeamAgentRelationByParams, getSubAgentTeamAgentRelations, getSubAgentTeamAgentRelationsByAgent, getSubAgentTeamAgentRelationsByTeamAgent, getSubAgentsForTeamAgent, getTeamAgentsForSubAgent, listSubAgentTeamAgentRelations, updateSubAgentTeamAgentRelation, upsertSubAgentTeamAgentRelation };