import { ChatService, Message, ChatType, ChatResponseLength, ToolUseBlock, ToolResultBlock } from '@aituber-onair/chat';
import { MemoryManager } from './MemoryManager';
import { EventEmitter } from './EventEmitter';
type ToolCallback = (blocks: ToolUseBlock[]) => Promise<ToolResultBlock[]>;
/**
 * ChatProcessor options
 */
export interface ChatProcessorOptions {
    /** System prompt */
    systemPrompt: string;
    /** System prompt for vision mode */
    visionSystemPrompt?: string;
    /** Vision prompt for describing the image */
    visionPrompt?: string;
    /** Whether to summarize memory during processing */
    useMemory: boolean;
    /** Memory note (instructions for AI) */
    memoryNote?: string;
    /** Maximum number of tool call iterations allowed (default: 6) */
    maxHops?: number;
    /** Maximum tokens for chat responses (takes precedence over responseLength) */
    maxTokens?: number;
    /** Response length preset for chat (used if maxTokens is not specified) */
    responseLength?: ChatResponseLength;
    /** Maximum tokens for vision responses (takes precedence over visionResponseLength) */
    visionMaxTokens?: number;
    /** Response length preset for vision (used if visionMaxTokens is not specified) */
    visionResponseLength?: ChatResponseLength;
}
/**
 * Core logic for chat processing
 * Combines ChatService and MemoryManager to execute
 * AITuber's main processing (text chat, vision chat)
 */
export declare class ChatProcessor extends EventEmitter {
    private chatService;
    private memoryManager?;
    private options;
    private chatLog;
    private chatStartTime;
    private processingChat;
    private toolCallback?;
    private maxHops;
    /**
     * Constructor
     * @param chatService Chat service
     * @param options Configuration options
     * @param memoryManager Memory manager (optional)
     */
    constructor(chatService: ChatService, options: ChatProcessorOptions, memoryManager?: MemoryManager, toolCallback?: ToolCallback);
    /**
     * Add message to chat log
     * @param message Message to add
     */
    addToChatLog(message: Message): void;
    /**
     * Get chat log
     */
    getChatLog(): Message[];
    /**
     * Clear chat log
     */
    clearChatLog(): void;
    /**
     * Set chat start time
     * @param time Timestamp
     */
    setChatStartTime(time: number): void;
    /**
     * Get chat start time
     */
    getChatStartTime(): number;
    /**
     * Get processing status
     */
    isProcessing(): boolean;
    /**
     * Update options
     * @param newOptions New options to merge with existing ones
     */
    updateOptions(newOptions: Partial<ChatProcessorOptions>): void;
    /**
     * Process text chat
     * @param text User input text
     * @param chatType Chat type
     */
    processTextChat(text: string, chatType?: ChatType): Promise<void>;
    /**
     * Process vision chat
     * @param imageDataUrl Image data URL
     */
    processVisionChat(imageDataUrl: string): Promise<void>;
    /**
     * Prepare messages to send to AI
     * Create an array of messages with system prompt and memory
     */
    private prepareMessagesForAI;
    /**
     * Set chat log from external source
     * @param messages Message array to set as chat log
     */
    setChatLog(messages: Message[]): void;
    /**
     * Get max tokens for chat responses
     * @returns Maximum tokens for chat
     */
    private getExplicitMaxTokensForChat;
    /**
     * Get max tokens for vision responses
     * @returns Maximum tokens for vision
     */
    private getExplicitMaxTokensForVision;
    private isClaudeProvider;
    private getToolUseBlocks;
    private getToolResultBlocks;
    private isEmptyClaudeAssistantMessage;
    private buildAssistantToolCall;
    private buildToolMessages;
    private buildNextMessages;
    private runToolLoop;
}
export {};
