/**
 * LLM Provider Factory
 *
 * Creates appropriate LLM provider instance from configuration.
 * Supports lazy loading of provider SDKs to avoid unnecessary dependencies.
 */
import type { LLMConfig, LLMProvider, LLMProviderType } from './types.js';
import { isClaudeCodeAvailable, getClaudeCodeStatus } from './providers/claude-code-provider.js';
import { Logger } from '../../utils/logger.js';
export { isClaudeCodeAvailable, getClaudeCodeStatus };
/**
 * Provider factory options
 */
export interface ProviderFactoryOptions {
    logger?: Logger;
    /** Project root for consent config lookup (defaults to cwd) */
    projectRoot?: string;
}
/**
 * Load LLM configuration from project
 *
 * @param projectPath - Path to project root
 * @returns LLM config or null if not configured
 */
export declare function loadLLMConfig(projectPath: string): LLMConfig | null;
/**
 * Check if LLM is configured for a project
 */
export declare function hasLLMConfig(projectPath: string): boolean;
/**
 * Create LLM provider from configuration
 *
 * @param config - LLM configuration
 * @param options - Factory options
 * @returns LLM provider instance
 * @throws Error if provider type not supported or SDK not installed
 */
export declare function createProvider(config: LLMConfig, options?: ProviderFactoryOptions): Promise<LLMProvider>;
/**
 * Get list of available providers (based on installed SDKs and env vars)
 */
export declare function getAvailableProviders(): Promise<LLMProviderType[]>;
/**
 * Validate LLM configuration
 */
export declare function validateLLMConfig(config: LLMConfig): {
    valid: boolean;
    errors: string[];
};
//# sourceMappingURL=provider-factory.d.ts.map