import { OnInit, OnChanges } from '@angular/core';
import { ChatMessage, ChatMessageContent } from '@memberjunction/ai';
import * as i0 from "@angular/core";
interface MessageDisplay {
    message: ChatMessage;
    visible: boolean;
    expanded: boolean;
    sequenceNumber: number;
}
export declare class ChatMessageViewerComponent implements OnInit, OnChanges {
    messages: ChatMessage[];
    displayMessages: MessageDisplay[];
    showSystem: boolean;
    showUser: boolean;
    showAssistant: boolean;
    FullScreenContent: string | null;
    FullScreenLanguage: string;
    FullScreenTitle: string;
    private contentPartStates;
    ngOnInit(): void;
    ngOnChanges(): void;
    private processMessages;
    private isMessageVisible;
    onFilterChange(): void;
    getRoleIcon(role: string): string;
    getRoleColor(role: string): string;
    getRoleLabel(role: string): string;
    toggleMessage(index: number): void;
    getContentString(content: ChatMessageContent): string;
    getContentLanguage(content: ChatMessageContent): string;
    getContentBlockIcon(type: string): string;
    isStringContent(content: ChatMessageContent): boolean;
    getContentJSON(content: ChatMessageContent): string;
    getContentStats(content: ChatMessageContent): {
        chars: number;
        words: number;
        approxTokens: number;
    };
    copyMessageContent(content: ChatMessageContent): void;
    /**
     * Get content parts for multi-part content display
     * Returns an array of {id, key, value, language, expanded} objects for each content part
     */
    getContentParts(content: ChatMessageContent, messageIndex: number): Array<{
        id: string;
        key: string;
        value: string;
        language: string;
        expanded: boolean;
    }>;
    /**
     * Detect language based on key name and content
     */
    private detectLanguageForKey;
    /**
     * Format key name for display label
     */
    private formatKeyLabel;
    /**
     * Check if content has multiple parts (for non-string content)
     */
    hasMultipleParts(content: ChatMessageContent): boolean;
    /**
     * Check if a content part is expanded
     */
    private isPartExpanded;
    /**
     * Toggle the expanded state of a content part
     */
    toggleContentPart(partId: string): void;
    /**
     * Open the full-screen overlay with the given content
     */
    openFullScreen(content: string, language: string, title: string): void;
    /**
     * Close the full-screen overlay
     */
    closeFullScreen(): void;
    /**
     * Copy text to clipboard
     */
    copyToClipboard(text: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ChatMessageViewerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ChatMessageViewerComponent, "mj-chat-message-viewer", never, { "messages": { "alias": "messages"; "required": false; }; }, {}, never, never, false, never>;
}
export {};
//# sourceMappingURL=chat-message-viewer.component.d.ts.map