import { IExecuteFunctions } from 'n8n-workflow';
export type ChunkType = 'begin' | 'item' | 'end' | 'error';
export interface StructuredChunk {
    type: ChunkType;
    content?: string;
    metadata: {
        nodeId: string;
        nodeName: string;
        timestamp: number;
        runIndex: number;
        itemIndex: number;
    };
}
export interface StreamingEventHandlers {
    onBeginMessage: (nodeId: string, runIndex?: number) => void;
    onChunk: (chunk: string, nodeId?: string, runIndex?: number) => void;
    onEndMessage: (nodeId: string, runIndex?: number) => void;
}
export type ChatMessage<T = Record<string, unknown>> = ChatMessageComponent<T> | ChatMessageText;
export interface ChatMessageComponent<T = Record<string, unknown>> extends ChatMessageBase {
    type: 'component';
    key: string;
    arguments: T;
}
export interface ChatMessageText extends ChatMessageBase {
    type?: 'text';
    text: string;
}
interface ChatMessageBase {
    id: string;
    transparent?: boolean;
    sender: 'user' | 'bot';
    files?: File[];
}
export interface NodeRunData {
    content: string;
    isComplete: boolean;
    message: ChatMessageText;
}
export declare function generateStreamingCardMessage(content: string): {
    schema: string;
    config: {
        update_multi: boolean;
        streaming_mode: boolean;
    };
    body: {
        direction: string;
        padding: string;
        elements: {
            tag: string;
            content: string;
            text_align: string;
            text_size: string;
            margin: string;
        }[];
    };
};
export declare function updateStreamingMessage(context: IExecuteFunctions, larkMessageId: string, message: string): Promise<void>;
export declare function handleStreamingChunk(context: IExecuteFunctions, chunk: string, nodeId: string | undefined, streamingManager: StreamingMessageManager, receivedMessage: ChatMessageText | null, messages: ChatMessage[], larkMessageId: string, runIndex?: number): Promise<void>;
export declare function handleNodeStart(nodeId: string, streamingManager: StreamingMessageManager, runIndex?: number): void;
export declare function handleNodeComplete(nodeId: string, streamingManager: StreamingMessageManager, runIndex?: number): void;
export declare function createBotMessage(id?: string): ChatMessageText;
export declare function updateMessageInArray(messages: ChatMessage[], messageId: string, updatedMessage: ChatMessageText): void;
export declare function createLineParser(): TransformStream<Uint8Array, StructuredChunk>;
export declare class StreamingMessageManager {
    private nodeRuns;
    private runOrder;
    private activeRuns;
    constructor();
    private getRunKey;
    initializeRun(nodeId: string, runIndex?: number, id?: string): ChatMessageText;
    registerRunStart(nodeId: string, runIndex?: number): void;
    addRunToActive(nodeId: string, runIndex?: number, id?: string): ChatMessageText;
    removeRunFromActive(nodeId: string, runIndex?: number): void;
    addChunkToRun(nodeId: string, chunk: string, runIndex?: number): ChatMessageText | null;
    getRunMessage(nodeId: string, runIndex?: number): ChatMessageText | null;
    areAllRunsComplete(): boolean;
    getRunCount(): number;
    getActiveRunCount(): number;
    getAllMessages(): ChatMessageText[];
    reset(): void;
}
export {};
