import { Label } from "../../../Store/Label";
import { TopContextUser } from "../Line/TopContext/TopContextUser";
import { TopContext } from "../Line/TopContext/TopContext";
import { View } from "../../View";
import { Line } from "../Line/Line";
import { Base } from "../../../Infrastructure/Repository";
export declare namespace LabelView {
    interface Config {
        readonly labelPadding: number;
        readonly bracketWidth: number;
        readonly labelWidthCalcMethod: "max" | "label";
        readonly labelClasses: Array<string>;
    }
    class Entity extends TopContextUser {
        readonly store: Label.Entity;
        private contextIn;
        private config;
        layer: number;
        private svgElement;
        constructor(store: Label.Entity, contextIn: TopContext, config: Config);
        get id(): number;
        get lineIn(): Line.ValueObject;
        get view(): View;
        get highLightWidth(): number;
        get highLightLeft(): number;
        get middle(): number;
        get labelLeft(): number;
        get labelRight(): number;
        get labelWidth(): number;
        get left(): number;
        get width(): number;
        get annotationY(): number;
        get globalY(): number;
        render(): SVGGElement;
        update(): void;
        remove(): void;
        private createHighLightElement;
        /**
         * Thanks to Alex Hornbake (function for generate curly bracket path)
         * @see http://bl.ocks.org/alexhornbake/6005176
         */
        private createBracketElement;
        private createAnnotationElement;
    }
    class Repository extends Base.Repository<Entity> {
        get(key: number): LabelView.Entity;
    }
}
