import { OnModuleInit } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { LangChainProvider } from './providers/langchain.provider';
import { MemoryService } from './memory/memory.service';
import { PIIService } from '../security/pii.service';
import { PromptGuardService } from '../security/prompt-guard.service';
import { OutputFilterService } from '../security/output-filter.service';
import { ChatMessage, ChatOptions, StreamCallbacks } from './interfaces/llm-provider.interface';
export declare class LLMService implements OnModuleInit {
    private readonly configService;
    private readonly langchainProvider;
    private readonly memoryService;
    private readonly piiService;
    private readonly promptGuardService;
    private readonly outputFilterService;
    private readonly logger;
    private consecutiveFailures;
    private readonly MAX_FAILURES;
    private lastAlertTime;
    private readonly ALERT_COOLDOWN;
    private readonly fallbackMessage;
    constructor(configService: ConfigService, langchainProvider: LangChainProvider, memoryService: MemoryService, piiService: PIIService, promptGuardService: PromptGuardService, outputFilterService: OutputFilterService);
    onModuleInit(): Promise<void>;
    getProviderName(): string;
    chat(messages: ChatMessage[], options?: ChatOptions & {
        skipSecurity?: boolean;
    }): Promise<LLMChatResult>;
    chatWithMemory(conversationId: string, systemPrompt: string, userMessage: string, options?: ChatOptions & {
        skipSecurity?: boolean;
        contextSize?: number;
    }): Promise<LLMChatResult>;
    streamChat(messages: ChatMessage[], callbacks: StreamCallbacks, options?: ChatOptions & {
        skipSecurity?: boolean;
    }): Promise<{
        piiWarnings: string[];
    }>;
    streamChatWithMemory(conversationId: string, systemPrompt: string, userMessage: string, callbacks: StreamCallbacks, options?: ChatOptions & {
        skipSecurity?: boolean;
        contextSize?: number;
    }): Promise<{
        piiWarnings: string[];
    }>;
    isAvailable(): Promise<boolean>;
    getFallbackMessage(): string;
    private handleError;
    private handleStreamError;
    private checkAndAlert;
}
export interface LLMChatResult {
    content: string;
    usage: {
        promptTokens: number;
        completionTokens: number;
        totalTokens: number;
    };
    piiWarnings: string[];
    wasFiltered: boolean;
}
