import { IRenderable } from './IRenderable';
import { IStackeable } from './IStackeable';
import { ISpecification } from './ISpecification';
/**
 * Classes which implement this interface can render incoming elements
 */
export interface IRenderer {
    /**
     * Renders an element
     *
     * @param message the message which was received
     * @param containerType the parent container of the given message
     */
    render(message: ISpecification | IRenderable, containerType?: IStackeable): HTMLElement[];
    init(channelId?: string): void;
    /**
     * Appends the incoming {@link HTMLElement} to the content div which is specified in the used renderer
     *
     * @param element the element which will be appended
     */
    appendContent(element: HTMLElement): void;
    /**
     * Appends the incoming {@link HTMLElement} to the suggestion div which is specified in the used renderer
     *
     * @param element the element which will be appended
     */
    appendSuggest(element: HTMLElement): void;
}
