/**
 * JAF ADK Layer - Agent System
 *
 * Functional agent creation and management utilities
 */
import { Agent, AgentConfig, DelegationStrategy, Tool, ValidationResult, createAgentError, Model } from '../types';
export declare const generateAgentId: () => string;
export declare const createAgent: (config: AgentConfig) => Agent;
export declare const createSimpleAgent: (name: string, model: Model | string, instruction: string, tools?: Tool[]) => Agent;
export declare const createMultiAgent: (name: string, model: Model | string, instruction: string, subAgents: AgentConfig[], delegationStrategy?: DelegationStrategy) => Agent;
export declare const validateAgentConfig: (config: AgentConfig) => ValidationResult<AgentConfig>;
export declare const validateAgent: (agent: Agent) => ValidationResult<Agent>;
export declare const cloneAgent: (agent: Agent, overrides?: Partial<AgentConfig>) => Agent;
export declare const updateAgent: (agent: Agent, updates: Partial<AgentConfig>) => Agent;
export declare const addToolToAgent: (agent: Agent, tool: Tool) => Agent;
export declare const removeToolFromAgent: (agent: Agent, toolName: string) => Agent;
export declare const addSubAgent: (agent: Agent, subAgent: AgentConfig) => Agent;
export declare const removeSubAgent: (agent: Agent, subAgentName: string) => Agent;
export declare const getAgentTool: (agent: Agent, toolName: string) => Tool | null;
export declare const hasAgentTool: (agent: Agent, toolName: string) => boolean;
export declare const getAgentSubAgent: (agent: Agent, subAgentName: string) => AgentConfig | null;
export declare const hasSubAgent: (agent: Agent, subAgentName: string) => boolean;
export declare const isMultiAgent: (agent: Agent) => boolean;
export declare const getAgentToolNames: (agent: Agent) => string[];
export declare const getSubAgentNames: (agent: Agent) => string[];
export declare const getAgentStats: (agent: Agent) => {
    id: string;
    name: string;
    model: string;
    toolCount: number;
    subAgentCount: number;
    hasGuardrails: boolean;
    hasInputSchema: boolean;
    hasOutputSchema: boolean;
    hasExamples: boolean;
    isMultiAgent: boolean;
    created: Date;
    lastModified: Date | undefined;
};
export declare const createWeatherAgent: () => Agent;
export declare const createChatAgent: () => Agent;
export declare const createCodeAgent: () => Agent;
export declare const agentToJSON: (agent: Agent) => string;
export declare const agentFromJSON: (json: string) => Agent;
export declare const compareAgents: (agent1: Agent, agent2: Agent) => boolean;
export { createAgentError };
export declare const withAgentErrorHandling: <T extends unknown[], R>(fn: (...args: T) => R, agentId?: string) => (...args: T) => R;
//# sourceMappingURL=index.d.ts.map