import { Store } from "../Store/Store";
import { Line } from "./Entities/Line/Line";
import { Font } from "./Font";
import { LabelCategoryElement } from "./Entities/LabelView/LabelCategoryElement";
import { LabelView } from "./Entities/LabelView/LabelView";
import { ConnectionView } from "./Entities/ConnectionView/ConnectionView";
import { ConnectionCategoryElement } from "./Entities/ConnectionView/ConnectionCategoryElement";
import { Annotator } from "../Annotator";
import { ContentEditor } from "./Entities/ContentEditor/ContentEditor";
export interface Config extends LabelView.Config, ConnectionView.Config {
    readonly contentClasses: Array<string>;
    readonly lineHeight: number;
    readonly topContextMargin: number;
    readonly labelOpacity: number;
    readonly contentEditable: boolean;
}
export declare class View {
    readonly root: Annotator;
    readonly svgElement: SVGSVGElement;
    readonly config: Config;
    readonly contentFont: Font.ValueObject;
    readonly labelFont: Font.ValueObject;
    readonly connectionFont: Font.ValueObject;
    readonly topContextLayerHeight: number;
    readonly textElement: SVGTextElement;
    readonly lines: Array<Line.ValueObject>;
    readonly lineMaxWidth: number;
    readonly labelCategoryElementFactoryRepository: LabelCategoryElement.FactoryRepository;
    readonly connectionCategoryElementFactoryRepository: ConnectionCategoryElement.FactoryRepository;
    readonly labelViewRepository: LabelView.Repository;
    readonly connectionViewRepository: ConnectionView.Repository;
    readonly markerElement: SVGMarkerElement;
    readonly store: Store;
    readonly contentEditor: ContentEditor;
    constructor(root: Annotator, svgElement: SVGSVGElement, config: Config);
    private static layoutTopContextsAfter;
    private constructLabelViewsForLine;
    private constructConnectionsForLine;
    private get height();
    static createMarkerElement(): SVGMarkerElement;
    contentWidth(startIndex: number, endIndex: number): number;
    private removeLine;
    private registerEventHandlers;
    private rerenderLines;
    private onLabelCreated;
    private findRangeInLines;
    private onConnectionCreated;
    private onContentSpliced;
    private onRemoved;
    private onInserted;
    private findHardLineEndsInIndex;
    private collectStyle;
    get paddingLeft(): number;
}
