import { TemplateRef } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { AttachmentContext, AttachmentListContext, AttachmentPreviewListContext, AvatarContext, ChannelActionsContext, ChannelHeaderInfoContext, ChannelPreviewContext, ChannelPreviewInfoContext, CommandAutocompleteListItemContext, CustomAttachmentListContext, CustomAttachmentPreviewListContext, CustomAttachmentUploadContext, CustomMetadataContext, DateSeparatorContext, DeliveredStatusContext, EmojiPickerContext, GalleryAttachmentContext, IconContext, MentionAutcompleteListItemContext, MentionTemplateContext, MessageActionBoxItemContext, MessageActionsBoxContext, MessageBlockedContext, MessageContext, MessageReactionsContext, MessageReactionsSelectorContext, MessageTextContext, ModalContext, NotificationContext, ReadStatusContext, SendingStatusContext, SystemMessageContext, ThreadHeaderContext, ThreadReplyButtonContext, TypingIndicatorContext, UnreadMessagesIndicatorContext, UnreadMessagesNotificationContext } from './types';
import * as i0 from "@angular/core";
/**
 * A central location for registering your custom templates to override parts of the chat application.
 *
 * For code examples to the different customizations see our [customizations example application](https://github.com/GetStream/stream-chat-angular/tree/master/projects/customizations-example), specifically the [AppComponent](https://github.com/GetStream/stream-chat-angular/tree/master/projects/customizations-example/src/app) (see [README](https://github.com/GetStream/stream-chat-angular/blob/master/README.md#customization-examples) for instructions on how to start the application).
 *
 * You can find the type definitions of the context that is provided for each template [on GitHub](https://github.com/GetStream/stream-chat-angular/blob/master/projects/stream-chat-angular/src/lib/types.ts)
 */
export declare class CustomTemplatesService {
    /**
     * The autocomplete list item template for mentioning users (used in the [`AutocompleteTextareaComponent`](/chat/docs/sdk/angular/components/AutocompleteTextareaComponent/))
     */
    mentionAutocompleteItemTemplate$: BehaviorSubject<TemplateRef<MentionAutcompleteListItemContext> | undefined>;
    /**
     * The autocomplete list item template for commands (used in the [`AutocompleteTextareaComponent`](/chat/docs/sdk/angular/components/AutocompleteTextareaComponent/))
     */
    commandAutocompleteItemTemplate$: BehaviorSubject<TemplateRef<CommandAutocompleteListItemContext> | undefined>;
    /**
     * Template used to display an item in the [channel list](/chat/docs/sdk/angular/components/ChannelListComponent/) (instead of the default [channal list item](/chat/docs/sdk/angular/components/ChannelPreviewComponent/))
     *
     */
    channelPreviewTemplate$: BehaviorSubject<TemplateRef<ChannelPreviewContext> | undefined>;
    /**
     * The template used for displaying a [mention inside a message](/chat/docs/sdk/angular/code-examples/mention-actions/)
     *
     */
    mentionTemplate$: BehaviorSubject<TemplateRef<MentionTemplateContext> | undefined>;
    /**
     * The template for [emoji picker](/chat/docs/sdk/angular/code-examples/emoji-picker)
     *
     */
    emojiPickerTemplate$: BehaviorSubject<TemplateRef<EmojiPickerContext> | undefined>;
    /**
     * The typing indicator template used in the [message list](/chat/docs/sdk/angular/components/MessageListComponent/)
     *
     */
    typingIndicatorTemplate$: BehaviorSubject<TemplateRef<TypingIndicatorContext> | undefined>;
    /**
     * The template used to display a message in the [message list](/chat/docs/sdk/angular/components/MessageListComponent/) (instead of the [default message component](/chat/docs/sdk/angular/components/MessageComponent/))
     *
     */
    messageTemplate$: BehaviorSubject<TemplateRef<MessageContext> | undefined>;
    /**
     * The template for channel actions displayed in the [channel header](/chat/docs/sdk/angular/components/ChannelHeaderComponent/) (by default no channel action is displayed)
     *
     */
    channelActionsTemplate$: BehaviorSubject<TemplateRef<ChannelActionsContext> | undefined>;
    /**
     * The template used to display attachments of a [message](/chat/docs/sdk/angular/components/MessageComponent/) (instead of the [default attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/))
     *
     */
    attachmentListTemplate$: BehaviorSubject<TemplateRef<AttachmentListContext> | undefined>;
    /**
     * The template used to display attachments in the [message input](/chat/docs/sdk/angular/components/MessageInputComponent) component (instead of the [default attachment preview](/chat/docs/sdk/angular/components/AttachmentPreviewListComponent))
     *
     */
    attachmentPreviewListTemplate$: BehaviorSubject<TemplateRef<AttachmentPreviewListContext> | undefined>;
    /**
     * The template used to display avatars for channels and users (instead of the [default avatar](/chat/docs/sdk/angular/components/AvatarComponent/))
     *
     */
    avatarTemplate$: BehaviorSubject<TemplateRef<AvatarContext> | undefined>;
    /**
     * Template for displaying icons (instead of the [default icon component](/chat/docs/sdk/angular/components/IconComponent/))
     *
     */
    iconTemplate$: BehaviorSubject<TemplateRef<IconContext> | undefined>;
    /**
     * Template for displaying the loading indicator (instead of the [default loading indicator](/chat/docs/sdk/angular/components/LoadingIndicatorComponent/))
     *
     */
    loadingIndicatorTemplate$: BehaviorSubject<TemplateRef<void> | undefined>;
    /**
     * Template for displaying the message actions box (instead of the [default message actions box](/chat/docs/sdk/angular/components/MessageActionsBoxComponent/))
     *
     */
    messageActionsBoxTemplate$: BehaviorSubject<TemplateRef<MessageActionsBoxContext> | undefined>;
    /**
     * The template used for displaying an item in the [message actions box](/chat/docs/sdk/angular/components/MessageActionsBoxComponent/)
     *
     */
    messageActionsBoxItemTemplate$: BehaviorSubject<TemplateRef<MessageActionBoxItemContext> | undefined>;
    /**
     * The template used to display the reactions of a [message](/chat/docs/sdk/angular/components/MessageComponent/), and the selector to add a reaction to a message (instead of the [default message reactions component](/chat/docs/sdk/angular/components/MessageReactionsComponent/))
     *
     */
    messageReactionsTemplate$: BehaviorSubject<TemplateRef<MessageReactionsContext> | undefined>;
    /**
     * The template used to display the reactions of a [message](/chat/docs/sdk/angular/components/MessageComponent/), and the selector to add a reaction to a message (instead of the [default message reactions component](/chat/docs/sdk/angular/components/MessageReactionsComponent/))
     *
     */
    messageReactionsSelectorTemplate$: BehaviorSubject<TemplateRef<MessageReactionsSelectorContext> | undefined>;
    /**
     * The template used to display a modal window (instead of the [default modal](/chat/docs/sdk/angular/components/ModalComponent/))
     *
     */
    modalTemplate$: BehaviorSubject<TemplateRef<ModalContext> | undefined>;
    /**
     * The template used to override the [default notification component](/chat/docs/sdk/angular/components/NotificationComponent/)
     *
     */
    notificationTemplate$: BehaviorSubject<TemplateRef<NotificationContext> | undefined>;
    /**
     * The template used for header of a [thread](/chat/docs/sdk/angular/components/ThreadComponent/)
     *
     */
    threadHeaderTemplate$: BehaviorSubject<TemplateRef<ThreadHeaderContext> | undefined>;
    /**
     * The template used for displaying the delivered state of the message inside the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     *
     * Displayed for the last message sent by the current user, if the message isn't yet read by anyone
     *
     */
    deliveredStatusTemplate$: BehaviorSubject<TemplateRef<DeliveredStatusContext> | undefined>;
    /**
     * The template used for displaying the sending state of the message inside the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     *
     * Displayed for the last message sent by the current user, if the message is currently being sent
     *
     */
    sendingStatusTemplate$: BehaviorSubject<TemplateRef<SendingStatusContext> | undefined>;
    /**
     * The template used for displaying the sent state of the message inside the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     *
     * Displayed for the last message sent by the current user, if the message is read at least by one user
     *
     */
    readStatusTemplate$: BehaviorSubject<TemplateRef<ReadStatusContext> | undefined>;
    /**
     * Template to display custom metadata inside [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     *
     */
    customMessageMetadataTemplate$: BehaviorSubject<TemplateRef<CustomMetadataContext> | undefined>;
    /**
     * The template used to display additional information about a channel under the channel name inside the [channel header component](/chat/docs/sdk/angular/components/ChannelHeaderComponent/)
     *
     */
    channelHeaderInfoTemplate$: BehaviorSubject<TemplateRef<ChannelHeaderInfoContext> | undefined>;
    /**
     * The template used for displaying file upload/attachment selector inside the [message input](/chat/docs/sdk/angular/components/MessageInputComponent/)
     *
     */
    customAttachmentUploadTemplate$: BehaviorSubject<TemplateRef<CustomAttachmentUploadContext> | undefined>;
    /**
     * The template that can be used to override how a single image attachment is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    imageAttachmentTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template that can be used to override how a voice recording attachment is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/), by default the [voice recording component](/chat/docs/sdk/angular/components/VoiceRecordingComponent/) is used
     */
    voiceRecordingAttachmentTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template that can be used to override how a video attachment is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    videoAttachmentTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template that can be used to override how image gallery is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    galleryAttachmentTemplate$: BehaviorSubject<TemplateRef<GalleryAttachmentContext> | undefined>;
    /**
     * The template that can be used to override how a file attachment is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    fileAttachmentTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template that can be used to override how a card attachment is displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    cardAttachmentTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template that can be used to override how attachment actions are displayed inside the [attachment list](/chat/docs/sdk/angular/components/AttachmentListComponent/)
     */
    attachmentActionsTemplate$: BehaviorSubject<TemplateRef<AttachmentContext> | undefined>;
    /**
     * The template used to display [system messages](/chat/docs/javascript/silent_messages/) indise the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     */
    systemMessageTemplate$: BehaviorSubject<TemplateRef<SystemMessageContext> | undefined>;
    /**
     * The template used to display the date separator inside the [message list](/chat/docs/sdk/angular/components/MessageListComponent/)
     */
    dateSeparatorTemplate$: BehaviorSubject<TemplateRef<DateSeparatorContext> | undefined>;
    /**
     * The template used to display unread messages indicator inside the [message list](/chat/docs/sdk/angular/components/MessageListComponent/) when the channel is opened
     *
     * This UI element is used to separate unread messages from read messages
     */
    newMessagesIndicatorTemplate$: BehaviorSubject<TemplateRef<UnreadMessagesIndicatorContext> | undefined>;
    /**
     * The template used to display unread messages notification inside the [message list](/chat/docs/sdk/angular/components/MessageListComponent/) when the channel is opened
     *
     * Users can use this notification to jump to the first unread message when it's clicked
     */
    newMessagesNotificationTemplate$: BehaviorSubject<TemplateRef<UnreadMessagesNotificationContext> | undefined>;
    /**
     * The template to show if the main message list is empty
     */
    emptyMainMessageListPlaceholder$: BehaviorSubject<TemplateRef<void> | undefined>;
    /**
     * The template to show if the thread message list is empty
     */
    emptyThreadMessageListPlaceholder$: BehaviorSubject<TemplateRef<void> | undefined>;
    /**
     * The template used to display the [message bounce prompt](/chat/docs/sdk/angular/components/MessageBouncePromptComponent/)
     */
    messageBouncePromptTemplate$: BehaviorSubject<TemplateRef<void> | undefined>;
    /**
     * Template used to display the channel information inside the [channel list item](/chat/docs/sdk/angular/components/ChannelPreviewComponent/)
     *
     */
    channelPreviewInfoTemplate$: BehaviorSubject<TemplateRef<ChannelPreviewInfoContext> | undefined>;
    /**
     * The template used to display custom attachment previews in the [message input component](/chat/docs/sdk/angular/components/MessageInputComponent/)
     */
    customAttachmentPreviewListTemplate$: BehaviorSubject<TemplateRef<CustomAttachmentPreviewListContext> | undefined>;
    /**
     * The template used to display custom attachments in the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     */
    customAttachmentListTemplate$: BehaviorSubject<TemplateRef<CustomAttachmentListContext> | undefined>;
    /**
     * The template used to display the number of thread replies inside the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     */
    threadLinkButton$: BehaviorSubject<TemplateRef<ThreadReplyButtonContext> | undefined>;
    /**
     * Template to display custom metadata inside the message bubble of the [message component](/chat/docs/sdk/angular/components/MessageComponent/)
     *
     * To properly position your template you should override the `grid-template-areas` of the `.str-chat__message-inner` selector
     */
    customMessageMetadataInsideBubbleTemplate$: BehaviorSubject<TemplateRef<CustomMetadataContext> | undefined>;
    /**
     * Template to display the text content inside the [message component](/chat/docs/sdk/angular/components/MessageComponent/). The default component is [stream-message-text](/chat/docs/sdk/angular/components/MessageTextComponent/)
     */
    messageTextTemplate$: BehaviorSubject<TemplateRef<MessageTextContext> | undefined>;
    /**
     * The template used to display blocked messages that have been removed by moderation policies instead of the default [message blocked component](/chat/docs/sdk/angular/components/MessageBlockedComponent/)
     *
     * The template has no effect if you're using a custom `messageTemplate$`
     */
    messageBlockedTemplate$: BehaviorSubject<TemplateRef<MessageBlockedContext> | undefined>;
    /**
     * Template to display polls inside [message component](/chat/docs/sdk/angular/components/MessageComponent/). There is no default template, but the `PollsModule` contains default components.
     */
    pollTemplate$: BehaviorSubject<TemplateRef<{
        pollId: string;
        messageId: string;
    }> | undefined>;
    /**
     * Template to display poll composer inside [message input component](/chat/docs/sdk/angular/components/MessageInputComponent/). There is no default template, but the `PollsModule` contains default components.
     */
    pollComposerTemplate$: BehaviorSubject<TemplateRef<{
        pollCompose: (pollId: string) => void;
        cancel: () => void;
    }> | undefined>;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<CustomTemplatesService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CustomTemplatesService>;
}
