import { InputData } from '../types/input/index';
import { OutputData } from '../types/output/index';
import { Language } from '../types';
import { LangChainRAGConfig } from '../rag/LangChainRAGManager';
export interface ChatSupporterConfig {
    provider: 'ollama';
    providerConfig: {
        model?: string;
        baseUrl?: string;
        temperature?: number;
        maxTokens?: number;
    };
    defaultPersona?: string;
    defaultLanguage?: Language;
    enableLogging?: boolean;
    maxChatRetries?: number;
    defaultChatLength?: number;
    ragConfig?: LangChainRAGConfig;
}
export interface ProcessOptions {
    persona?: string;
    outputType?: 'chat' | 'analysis';
    language?: Language;
    chatLength?: number;
    useRAG?: boolean;
}
export interface HealthStatus {
    status: 'healthy' | 'unhealthy';
    provider: string;
    model: string;
    personas: number;
    chatRetryEnabled: boolean;
    maxChatRetries: number;
    defaultChatLength: number;
    langchain: boolean;
    rag?: boolean;
}
export declare class ChatSupporter {
    private config;
    private provider?;
    private ragManager?;
    private isInitialized;
    constructor(config: ChatSupporterConfig);
    private setupPersonas;
    initialize(): Promise<void>;
    process(input: InputData, options?: ProcessOptions): Promise<OutputData>;
    private processChatWithRetry;
    private processDefault;
    private buildRAGContext;
    private createOutputData;
    addRAGDocument(filePath: string): Promise<void>;
    healthCheck(): Promise<HealthStatus>;
    getAvailablePersonas(): import("../personas/base").IPersona[];
    private log;
    private calculateMaxTokens;
}
export declare class ChatSupporterFactory {
    static createInitialized(config?: Partial<ChatSupporterConfig>): Promise<ChatSupporter>;
    static createWithRAGInitialized(config?: Partial<ChatSupporterConfig>): Promise<ChatSupporter>;
}
//# sourceMappingURL=ChatSupporter.d.ts.map