import { AgentConfig, DelegateRelation } from "./Agent.js";
import { InternalRelation } from "../utils/project.js";
import * as _inkeep_agents_core1 from "@inkeep/agents-core";
import { CredentialStoreRegistry, FullExecutionContext } from "@inkeep/agents-core";
import * as ai0 from "ai";

//#region src/domains/run/agents/relationTools.d.ts
declare const createTransferToAgentTool: ({
  transferConfig,
  callingAgentId,
  streamRequestId
}: {
  transferConfig: AgentConfig;
  callingAgentId: string;
  streamRequestId?: string;
}) => ai0.Tool<Record<string, never>, {
  type: string;
  targetSubAgentId: string;
  fromSubAgentId: string;
}>;
declare function createDelegateToAgentTool({
  delegateConfig,
  callingAgentId,
  executionContext,
  contextId,
  metadata,
  sessionId,
  credentialStoreRegistry
}: {
  delegateConfig: DelegateRelation;
  callingAgentId: string;
  executionContext: FullExecutionContext;
  contextId: string;
  metadata: {
    conversationId: string;
    threadId: string;
    streamRequestId?: string;
    streamBaseUrl?: string;
    apiKey?: string;
  };
  sessionId?: string;
  credentialStoreRegistry?: CredentialStoreRegistry;
}): ai0.Tool<{
  message: string;
}, {
  toolCallId: any;
  result: _inkeep_agents_core1.Message | _inkeep_agents_core1.Task;
}>;
/**
 * Parameters for building a transfer relation config
 */
type BuildTransferRelationConfigParams = {
  relation: InternalRelation;
  executionContext: FullExecutionContext;
  baseUrl: string;
  apiKey?: string;
};
/**
 * Build a transfer relation config for an internal relation.
 * Fetches tools, transfer relations, and external agent relations for the target sub-agent.
 */
declare function buildTransferRelationConfig(params: BuildTransferRelationConfigParams, credentialStoreRegistry?: CredentialStoreRegistry): Promise<AgentConfig>;
//#endregion
export { BuildTransferRelationConfigParams, buildTransferRelationConfig, createDelegateToAgentTool, createTransferToAgentTool };