import { LoreClient, AuthCredentials } from './api';
import { ChatRequest, ChatStreamCallbacks, FeedbackRequest, GraphChatRequest } from './types';
/**
 * Chat stream manager for handling chat streams
 */
export declare class ChatStreamManager {
    private loreClient;
    private readerRef;
    private callbacks;
    private auth;
    /**
     * Create a new chat stream manager
     * @param loreClient Lore client
     * @param auth Authentication credentials
     * @param callbacks Callbacks for stream events
     */
    constructor(loreClient: LoreClient, auth: AuthCredentials, callbacks?: ChatStreamCallbacks);
    /**
     * Set callbacks for stream events
     * @param callbacks Callbacks for stream events
     */
    setCallbacks(callbacks: ChatStreamCallbacks): void;
    /**
     * Process a chat stream
     * @param stream Readable stream
     */
    private processChatStream;
    /**
     * Handle graph validation errors
     * @param response Graph structure error response
     * @returns boolean indicating if validation passed (true) or failed (false)
     */
    private handleGraphValidationErrors;
    /**
     * Process a stream event
     * @param event Stream event
     */
    private processEvent;
    /**
     * Start a chat stream
     * @param request Chat request
     * @param graphId Graph ID
     * @param skipValidation Skip graph validation
     * @deprecated since version 0.1.10 - Use startChatStream instead.
     */
    startGraphChatStream(request: ChatRequest, graphId: string, skipValidation?: boolean): Promise<void>;
    startChatStream(request: GraphChatRequest | ChatRequest, graphId: string, useAdminServer?: boolean): Promise<void>;
    /**
     * Cancel the current stream
     */
    cancelStream(): void;
    /**
     * Send feedback for a chat
     * @param feedback Feedback request
     * @param graphId Graph ID
     */
    sendFeedback(feedback: FeedbackRequest, graphId?: string): Promise<any>;
    /**
     * Validate a graph structure with a test query
     * @param query Test query to validate with
     * @param graphId Graph ID to validate
     * @returns Promise<boolean> True if validation passed, false otherwise
     */
    validateGraph(request: ChatRequest, graphId: string): Promise<boolean>;
}
