//#region src/types/tool-policies.d.ts
/**
 * Tool policy configuration for individual tools within an MCP server
 */
interface ToolPolicy {
  /**
   * Whether this specific tool requires user approval before execution
   * If true, tool execution will pause and wait for explicit user approval
   * If false/undefined, tool executes immediately when called
   */
  needsApproval?: boolean;
}
/**
 * Flexible tool selection format for MCP servers
 * Can be either a simple string (tool name) or an object with policies
 */
type McpToolSelection = string | {
  name: string;
  needsApproval?: boolean;
};
/**
 * Input format for configuring MCP tool usage in agents
 */
interface AgentMcpConfigInput {
  selectedTools?: McpToolSelection[];
  headers?: Record<string, string>;
}
/**
 * Normalized format stored in database and used at runtime
 */
interface AgentMcpConfig {
  server: any;
  selectedTools?: string[];
  headers?: Record<string, string>;
  toolPolicies?: Record<string, ToolPolicy>;
}
/**
 * Helper function to normalize McpToolSelection[] into separate arrays
 */
declare function normalizeToolSelections(selections?: McpToolSelection[]): {
  selectedTools: string[];
  toolPolicies: Record<string, ToolPolicy>;
};
//#endregion
export { AgentMcpConfig, AgentMcpConfigInput, McpToolSelection, ToolPolicy, normalizeToolSelections };