import { AfterContentInit, ElementRef } from '@angular/core';
import { MatSnackBar } from '@angular/material';
import { Store } from '@ngrx/store';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
import { IProject, ProjectService } from '../redux/project';
import { ConsoleService, IFilter, IMessageEntry } from './console.service';
import { IMessage, Message } from './messages/message';
/**
 * The host component holds the arrangement of macroscopic editor components.
 */
export declare class ConsoleComponent implements AfterContentInit {
    readonly console: ConsoleService;
    private readonly snackRef;
    private readonly store;
    private readonly project;
    /**
     * Filter currently in use in the console display.
     */
    readonly filter: Observable<IFilter>;
    /**
     * An observable of console messages to display.
     */
    readonly messages: Observable<IMessageEntry[]>;
    /**
     * Returns the number of messages omitted by the filter.
     */
    readonly omitted: Observable<number>;
    /**
     * Template hoist for the Message enum.
     */
    Message: typeof Message;
    /**
     * An observable that contains the ID of the message that the user has
     * expanded, if any.
     */
    expandedId: BehaviorSubject<string | null>;
    /**
     * The ID of the message that's a pair to the one currently being hovered.
     */
    hoveredPair: BehaviorSubject<string | null>;
    /**
     * repl input to be sent to the controls.
     */
    commandInput: BehaviorSubject<string>;
    /**
     * Whether to show the search filter.
     */
    showFilter: BehaviorSubject<boolean>;
    /**
     * Reference to the container containing the console messages.
     */
    readonly container: ElementRef;
    /**
     * Reference to the filter input text field.
     */
    readonly filterInput: ElementRef;
    constructor(console: ConsoleService, snackRef: MatSnackBar, store: Store<IProject>, project: ProjectService);
    ngAfterContentInit(): void;
    /**
     * Updates the filter pattern for the console.
     */
    setPattern(pattern: string): void;
    /**
     * Toggles whether one kind of message is show in the console, or not.
     */
    toggleFilterKind(kind: Message): void;
    /**
     * Returns whether the filter of the given kind is turned on.
     */
    hasFilterKind(kind: Message): Observable<boolean>;
    /**
     * Called when the user clicks on a message. If they click on a message
     * that's already expanded, it's closed, otherwise it toggles to that one.
     */
    toggleExpansion(messageId: string): void;
    /**
     * Called when the mouse hovers over a message. We'll try to find the
     * appropriate response/reply and show it as hovered, too.
     */
    hoveredMessage(message: IMessage): void;
    /**
     * Called when the user wants to send a command to the frame.
     */
    sendCommand(): void;
    /**
     * Opens a toast with the provided error message.
     */
    private showCommandError(message);
    /**
     * Scrolls the console to the bottom of the screen, if it's near it.
     */
    private rescroll();
}
