import { type AgentDefinition } from "@anthropic-ai/claude-agent-sdk";
import { AgentAIClient, AIClientOptions, AgentContext, AgentConfiguration, GenerationResult, WorkflowResult, StreamingOptions, HookCallback, HookEvent, CanUseToolCallback, SettingSource, MCPTool } from "../interfaces/AIClient";
export interface ClaudeAgentOptions {
    model?: string;
    temperature?: number;
    maxTokens?: number;
    systemPrompt?: string;
    allowedTools?: string[];
    disallowedTools?: string[];
    permissionMode?: "strict" | "permissive";
    contextManagement?: boolean;
    agents?: Record<string, AgentDefinition>;
    settingSources?: SettingSource[];
    hooks?: Partial<Record<HookEvent, HookCallback>>;
    canUseTool?: CanUseToolCallback;
    mcpTools?: MCPTool[];
}
export declare class ClaudeAgentClient implements AgentAIClient {
    readonly clientType: "agent-sdk";
    readonly supportsTools = true;
    readonly supportsStreaming = true;
    private queryInstance;
    private apiKey;
    private baseUrl;
    private workingDirectory;
    private options;
    private isGrokMode;
    private grokApiKey;
    private registeredAgents;
    private registeredHooks;
    private mcpServer;
    constructor(workingDirectory?: string);
    hasApiKey(): boolean;
    /**
     * Check if Grok mode is enabled
     */
    get isGrokModeEnabled(): boolean;
    /**
     * Check if we should use Grok 4 (only provider not supported by Claude SDK)
     */
    private checkGrokMode;
    /**
     * Load Grok API key from environment variables
     */
    private loadGrokApiKey;
    /**
     * Load API key from environment variables and project files
     */
    private loadApiKey;
    /**
     * Load token from project-level env files
     * Priority: .mycontext/.env -> .env
     */
    private loadTokenFromEnvFiles;
    /**
     * Initialize the Claude Agent with configuration
     */
    initialize(options?: ClaudeAgentOptions): Promise<void>;
    /**
     * Setup MCP server with custom tools
     */
    private setupMCPServer;
    /**
     * Convert our hook format to SDK hook format
     */
    private convertHooks;
    /**
     * Wrap our CanUseTool callback for SDK compatibility
     */
    private wrapCanUseTool;
    /**
     * Check connection to Claude API
     */
    checkConnection(): Promise<boolean>;
    /**
     * Generate text using Claude Agent SDK or direct provider APIs
     */
    generateText(prompt: string, options?: ClaudeAgentOptions): Promise<string>;
    /**
     * Generate text using Grok 4 via X AI API
     */
    private generateWithGrok;
    /**
     * Generate React component with enhanced context
     */
    generateComponent(prompt: string, context?: AgentContext, options?: ClaudeAgentOptions): Promise<string>;
    /**
     * Generate component using Claude Agent SDK
     */
    private generateWithClaudeSDK;
    /**
     * Refine existing component with Claude Agent SDK
     */
    generateComponentRefinement(componentCode: string, prompt: string, context?: AgentContext, options?: ClaudeAgentOptions): Promise<string>;
    /**
     * Generate text from image using Claude Agent SDK (Multimodal)
     */
    generateVisionText(prompt: string, imagePath: string, options?: AIClientOptions): Promise<string>;
    /**
     * Generate image using Claude Agent (Agentic fulfillment)
     */
    generateImage(prompt: string, outputPath: string, options?: AIClientOptions): Promise<string>;
    /**
     * Run agent workflow with context management
     */
    runAgentWorkflow(workflowPrompt: string, context?: AgentContext, options?: ClaudeAgentOptions): Promise<{
        content: string;
        context: AgentContext;
    }>;
    /**
     * Get available models
     */
    listModels(): Promise<string[]>;
    /**
     * Set API key
     */
    setApiKey(apiKey: string): void;
    /**
     * Get default system prompt for MyContext CLI
     */
    private getDefaultSystemPrompt;
    /**
     * Build comprehensive context prompt for component generation
     */
    private buildComponentContextPrompt;
    /**
     * Build refinement prompt
     */
    private buildRefinementPrompt;
    /**
     * Build workflow context prompt
     */
    private buildWorkflowContextPrompt;
    /**
     * Update context from agent response
     */
    private updateContextFromResponse;
    /**
     * Generate with specific tools enabled
     */
    generateWithTools(prompt: string, tools: string[], context?: AgentContext, options?: AIClientOptions): Promise<GenerationResult>;
    /**
     * Generate with streaming progress (using StreamingHandler)
     */
    generateStream(prompt: string, streamOptions: StreamingOptions, context?: AgentContext, options?: AIClientOptions): Promise<GenerationResult>;
    /**
     * Run agent workflow with enhanced context management
     */
    runWorkflow(workflowPrompt: string, context?: AgentContext, options?: AIClientOptions): Promise<WorkflowResult>;
    /**
     * Configure agent with specific settings
     */
    configureAgent(config: AgentConfiguration): Promise<void>;
    /**
     * Request permission for an operation (placeholder for future implementation)
     */
    requestPermission(operation: string, target: string): Promise<boolean>;
    /**
     * Use a specific agent for generation
     */
    useAgent(agentName: string, prompt: string, context?: AgentContext, options?: AIClientOptions): Promise<GenerationResult>;
    /**
     * Register a custom agent
     */
    registerAgent(name: string, agent: AgentDefinition): void;
    /**
     * Register a hook
     */
    registerHook(event: HookEvent, callback: HookCallback): void;
    /**
     * Get list of available agents
     */
    getAvailableAgents(): string[];
    /**
     * Get agent info
     */
    getAgentInfo(name: string): AgentDefinition | undefined;
    /**
     * Enable/disable specific tools
     */
    setToolPermissions(allowed?: string[], disallowed?: string[]): void;
    /**
     * Get MCP server instance
     */
    getMCPServer(): any;
    /**
     * Check if agent is available
     */
    hasAgent(name: string): boolean;
    /**
     * Cleanup resources
     */
    cleanup(): Promise<void>;
}
//# sourceMappingURL=claudeAgentClient.d.ts.map