import { AfterViewInit, ChangeDetectorRef, ElementRef, OnChanges, OnDestroy, OnInit, QueryList, EventEmitter, SimpleChanges } from '@angular/core';
import { Subject } from 'rxjs';
import { Direction, Message } from '../../core/message';
import { Recipient } from '../../core/recipient';
import { BlockPlugin } from '../../services/adapters/xmpp/plugins/block.plugin';
import { RoomMessage } from '../../services/adapters/xmpp/plugins/multi-user-chat.plugin';
import { ChatListStateService } from '../../services/chat-list-state.service';
import { ChatMessageListRegistryService } from '../../services/chat-message-list-registry.service';
import { ChatService } from '../../services/chat-service';
import { ContactFactoryService } from '../../services/contact-factory.service';
import { ReportUserService } from '../../services/report-user-service';
import { ChatMessageComponent } from '../chat-message/chat-message.component';
declare enum SubscriptionAction {
    PENDING_REQUEST = 0,
    SHOW_BLOCK_ACTIONS = 1,
    NO_PENDING_REQUEST = 2
}
export declare class ChatMessageListComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {
    chatListService: ChatListStateService;
    chatService: ChatService;
    private chatMessageListRegistry;
    reportUserService: ReportUserService;
    private changeDetectorRef;
    private contactFactory;
    Reply: EventEmitter<void>;
    recipient: Recipient;
    showAvatars: boolean;
    chatMessageAreaElement: ElementRef<HTMLElement>;
    chatMessageViewChildrenList: QueryList<ChatMessageComponent>;
    Direction: typeof Direction;
    SubscriptionAction: typeof SubscriptionAction;
    blockPlugin: BlockPlugin;
    subscriptionAction: SubscriptionAction;
    onTop$: Subject<IntersectionObserverEntry>;
    private ngDestroy;
    private isAtBottom;
    private bottomLeftAt;
    private oldestVisibleMessageBeforeLoading;
    constructor(chatListService: ChatListStateService, chatService: ChatService, chatMessageListRegistry: ChatMessageListRegistryService, reportUserService: ReportUserService, changeDetectorRef: ChangeDetectorRef, contactFactory: ContactFactoryService);
    ngOnInit(): Promise<void>;
    ngAfterViewInit(): Promise<void>;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    acceptSubscriptionRequest(event: Event): void;
    denySubscriptionRequest(event: Event): void;
    scheduleScrollToLastMessage(): void;
    private scrollToLastMessage;
    private scrollToMessage;
    blockContact($event: MouseEvent): void;
    blockContactAndReport($event: MouseEvent): void;
    dismissBlockOptions($event: MouseEvent): void;
    subscriptionActionShown(): boolean;
    loadOlderMessagesBeforeViewport(): Promise<void>;
    private loadMessages;
    onBottom(event: IntersectionObserverEntry): void;
    private isNearBottom;
    private isLoadingHistory;
    getOrCreateContactWithFullJid(message: Message | RoomMessage): Recipient;
    sendReply(event: any): void;
}
export {};
