import { EventEmitter } from '../../stencil-public-runtime';
import { GetReplyTokenInfoResponse } from '../../api/type';
export declare class MessageBox {
    hostElement: HTMLElement;
    private disposeListener;
    private disposeReadsMapListener;
    private replyTokenTimer?;
    focusRequested: EventEmitter;
    handleClick(): void;
    onSyncMessageComplete(event: CustomEvent): void;
    isInitial: boolean;
    isLoadingTop: boolean;
    isLoadingBottom: boolean;
    isAtBottom: boolean;
    replyTokenInfo: GetReplyTokenInfoResponse | null;
    showReplyTokenBanner: boolean;
    numberOfNewMessages: number;
    private scrollContainer?;
    private prevSelectedChat;
    private replyTokenSpan?;
    private lastScrollTop;
    private scrollDirection;
    private isProgrammaticScroll;
    private chatSwitchedAt;
    private cachedFlatList;
    private cachedMessagesLength;
    private cachedMessageIds;
    /**
     * Memoized message flattening - only recalculates when messages actually change
     * Performance: O(N) only on content update, O(1) on re-render.
     */
    private getFlattenedMessages;
    componentDidLoad(): void;
    private handleReadMessage;
    private scrollToBottom;
    private fetchReplyTokenInfo;
    private handleSocketEvents;
    private onMessageEvent;
    private onReadEvent;
    private onTypingUpdateEvent;
    private handleResetMessageCache;
    componentWillLoad(): Promise<void>;
    disconnectedCallback(): void;
    private updateReplyTokenRemainingDOM;
    private startReplyTokenTimer;
    private loadMessages;
    private handleScroll;
    private goToLastMessage;
    componentDidUpdate(): void;
    render(): any;
}
