import { OnChanges, SimpleChanges, OnDestroy, OnInit, ChangeDetectorRef, AfterViewInit, ElementRef, NgZone } from '@angular/core';
import { UserResponse } from 'stream-chat';
import { ChannelService } from '../channel.service';
import { ChatClientService } from '../chat-client.service';
import { AttachmentListContext, MessageActionsBoxContext, MessageReactionsContext, DefaultStreamChatGenerics, StreamMessage, DeliveredStatusContext, SendingStatusContext, ReadStatusContext, SystemMessageContext, CustomMetadataContext, MessageTextContext } from '../types';
import { Observable } from 'rxjs';
import { CustomTemplatesService } from '../custom-templates.service';
import { DateParserService } from '../date-parser.service';
import { MessageActionsService } from '../message-actions.service';
import { NgxFloatUiContentComponent, NgxFloatUiLooseDirective } from 'ngx-float-ui';
import { TranslateService } from '@ngx-translate/core';
import * as i0 from "@angular/core";
/**
 * The `Message` component displays a message with additional information such as sender and date, and enables [interaction with the message (i.e. edit or react)](/chat/docs/sdk/angular/concepts/message-interactions/).
 */
export declare class MessageComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {
    private chatClientService;
    private channelService;
    customTemplatesService: CustomTemplatesService;
    private cdRef;
    private dateParser;
    messageActionsService: MessageActionsService;
    private ngZone;
    private translateService;
    /**
     * The message to be displayed
     */
    message: StreamMessage | undefined;
    /**
     * The list of [channel capabilities](/chat/docs/javascript/channel_capabilities/) that are enabled for the current user, the list of [supported interactions](/chat/docs/sdk/angular/concepts/message-interactions/) can be found in our message interaction guide. Unathorized actions won't be displayed on the UI. The [`MessageList`](/chat/docs/sdk/angular/components/MessageListComponent/) component automatically sets this based on [channel capabilities](/chat/docs/javascript/channel_capabilities/).
     */
    enabledMessageActions: string[];
    /**
     * If `true`, the message status (sending, sent, who read the message) is displayed.
     */
    isLastSentMessage: boolean | undefined;
    /**
     * Determines if the message is being dispalyed in a channel or in a [thread](/chat/docs/javascript/threads/).
     */
    mode: 'thread' | 'main';
    /**
     * Highlighting is used to add visual emphasize to a message when jumping to the message
     */
    isHighlighted: boolean;
    /**
     * An Observable that emits when the message list is scrolled, it's used to prevent opening the message menu while scroll is in progress
     */
    scroll$?: Observable<void>;
    canReceiveReadEvents: boolean | undefined;
    canReactToMessage: boolean | undefined;
    isEditedFlagOpened: boolean;
    shouldDisplayTranslationNotice: boolean;
    displayedMessageTextContent: 'original' | 'translation';
    imageAttachmentModalState: 'opened' | 'closed';
    shouldDisplayThreadLink: boolean;
    isSentByCurrentUser: boolean;
    readByText: string;
    lastReadUser: UserResponse<DefaultStreamChatGenerics> | undefined;
    isOnlyReadByMe: boolean;
    isReadByMultipleUsers: boolean;
    isMessageDeliveredAndRead: boolean;
    parsedDate: string;
    pasedEditedDate: string;
    areOptionsVisible: boolean;
    hasAttachment: boolean;
    hasReactions: boolean;
    replyCountParam: {
        replyCount: number | undefined;
    };
    areMessageOptionsOpen: boolean;
    canDisplayReadStatus: boolean;
    hasTouchSupport: boolean;
    private quotedMessageAttachments;
    private subscriptions;
    private isViewInited;
    private userId?;
    messageMenuTrigger: NgxFloatUiLooseDirective;
    messageMenuFloat: NgxFloatUiContentComponent;
    messageTextElement?: ElementRef<HTMLElement>;
    messageBubble?: ElementRef<HTMLElement>;
    private showMessageMenuTimeout?;
    private shouldPreventMessageMenuClose;
    private _visibleMessageActionsCount;
    private channelMemberCount?;
    constructor(chatClientService: ChatClientService, channelService: ChannelService, customTemplatesService: CustomTemplatesService, cdRef: ChangeDetectorRef, dateParser: DateParserService, messageActionsService: MessageActionsService, ngZone: NgZone, translateService: TranslateService);
    get visibleMessageActionsCount(): number;
    set visibleMessageActionsCount(count: number);
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    mousePushedDown(event: MouseEvent): void;
    mouseReleased(): void;
    touchStarted(): void;
    touchEnded(): void;
    messageBubbleClicked(event: Event): void;
    messageOptionsButtonClicked(): void;
    messageActionsBoxClicked(floatingContent: NgxFloatUiContentComponent): void;
    getAttachmentListContext(): AttachmentListContext;
    getMessageContext(): SystemMessageContext;
    getMessageTextContext(): MessageTextContext;
    getQuotedMessageTextContext(): MessageTextContext;
    getQuotedMessageAttachmentListContext(): AttachmentListContext;
    getMessageReactionsContext(): MessageReactionsContext;
    messageClicked(): void;
    resendMessage(): void;
    setAsActiveParentMessage(): void;
    getMessageActionsBoxContext(): MessageActionsBoxContext;
    getDeliveredStatusContext(): DeliveredStatusContext;
    getSendingStatusContext(): SendingStatusContext;
    getReadStatusContext(): ReadStatusContext;
    getMessageMetadataContext(): CustomMetadataContext;
    jumpToMessage(messageId: string, parentMessageId?: string): void;
    openMessageBouncePrompt(): void;
    displayTranslatedMessage(): void;
    displayOriginalMessage(): void;
    private updateReadByText;
    private setIsSentByCurrentUser;
    private setLastReadUser;
    private startMessageMenuShowTimer;
    private registerMenuTriggerEventHandlers;
    private stopMessageMenuShowTimer;
    static ɵfac: i0.ɵɵFactoryDeclaration<MessageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MessageComponent, "stream-message", never, { "message": { "alias": "message"; "required": false; }; "enabledMessageActions": { "alias": "enabledMessageActions"; "required": false; }; "isLastSentMessage": { "alias": "isLastSentMessage"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "isHighlighted": { "alias": "isHighlighted"; "required": false; }; "scroll$": { "alias": "scroll$"; "required": false; }; }, {}, never, never, false, never>;
}
