import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';
import { MentionConfig } from 'angular-mentions';
import { MentionAutcompleteListItemContext, MentionAutcompleteListItem, CommandAutocompleteListItemContext } from '../../types';
import { UserResponse } from 'stream-chat';
import { ChannelService } from '../../channel.service';
import { TextareaInterface } from '../textarea.interface';
import { ChatClientService } from '../../chat-client.service';
import { TransliterationService } from '../../transliteration.service';
import { EmojiInputService } from '../emoji-input.service';
import { CustomTemplatesService } from '../../custom-templates.service';
import { MessageInputConfigService } from '../message-input-config.service';
import * as i0 from "@angular/core";
/**
 * The `AutocompleteTextarea` component is used by the [`MessageInput`](/chat/docs/sdk/angular/components/MessageInputComponent/) component to display the input HTML element where users can type their message.
 */
export declare class AutocompleteTextareaComponent implements TextareaInterface, OnChanges, AfterViewInit {
    private channelService;
    private chatClientService;
    private transliterationService;
    private emojiInputService;
    private customTemplatesService;
    private cdRef;
    private messageInputConfigService;
    class: string;
    /**
     * The value of the input HTML element.
     */
    value: string;
    /**
     * Placeholder of the textarea
     */
    placeholder: string;
    /**
     * If true, users can mention other users in messages. You can also set this input on the [`MessageInput`](/chat/docs/sdk/angular/components/MessageInputComponent/#inputs-and-outputs/) component.
     */
    areMentionsEnabled: boolean | undefined;
    /**
     * See [`MessageInputConfigService`](/chat/docs/sdk/angular/services/MessageInputConfigService) for more information
     */
    inputMode: 'desktop' | 'mobile';
    /**
     * The scope for user mentions, either members of the current channel of members of the application. You can also set this input on the [`MessageInput`](/chat/docs/sdk/angular/components/MessageInputComponent/#inputs-and-outputs) component.
     */
    mentionScope: 'channel' | 'application';
    /**
     * Enables or disables auto focus on the textarea element
     */
    autoFocus: boolean;
    /**
     * Emits the current value of the input element when a user types.
     */
    readonly valueChange: EventEmitter<string>;
    /**
     * Emits when a user triggers a message send event (this happens when they hit the `Enter` key).
     */
    readonly send: EventEmitter<void>;
    /**
     * Emits the array of users that are mentioned in the message, it is updated when a user mentions a new user or deletes a mention.
     */
    readonly userMentions: EventEmitter<UserResponse[]>;
    /**
     * Emits any paste event that occured inside the textarea
     */
    readonly pasteFromClipboard: EventEmitter<ClipboardEvent>;
    mentionAutocompleteItemTemplate: TemplateRef<MentionAutcompleteListItemContext> | undefined;
    commandAutocompleteItemTemplate: TemplateRef<CommandAutocompleteListItemContext> | undefined;
    private readonly autocompleteKey;
    private readonly mentionTriggerChar;
    private readonly commandTriggerChar;
    autocompleteConfig: MentionConfig;
    private messageInput;
    private subscriptions;
    private mentionedUsers;
    private userMentionConfig;
    private slashCommandConfig;
    private searchTerm$;
    private isViewInited;
    constructor(channelService: ChannelService, chatClientService: ChatClientService, transliterationService: TransliterationService, emojiInputService: EmojiInputService, customTemplatesService: CustomTemplatesService, cdRef: ChangeDetectorRef, messageInputConfigService: MessageInputConfigService);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    filter(searchString: string, items: {
        autocompleteLabel: string;
    }[]): {
        autocompleteLabel: string;
    }[];
    itemSelectedFromAutocompleteList(item: MentionAutcompleteListItem, triggerChar?: string): string;
    autcompleteSearchTermChanged(searchTerm: string): void;
    inputChanged(): void;
    inputLeft(): void;
    enterHit(event: Event): void;
    private adjustTextareaHeight;
    private transliterate;
    private updateMentionOptions;
    private updateMentionedUsersFromText;
    private updateCustomAutocompleteOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteTextareaComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteTextareaComponent, "stream-autocomplete-textarea", never, { "value": "value"; "placeholder": "placeholder"; "areMentionsEnabled": "areMentionsEnabled"; "inputMode": "inputMode"; "mentionScope": "mentionScope"; "autoFocus": "autoFocus"; }, { "valueChange": "valueChange"; "send": "send"; "userMentions": "userMentions"; "pasteFromClipboard": "pasteFromClipboard"; }, never, never, false, never>;
}
