import { SVGTemplateResult } from 'lit';
import { IEdgeDirections, IWorkspaceEdge } from './types.js';
import { IAssociationLabelShape, AssociationShapeType, IAssociationTip } from './VisualizationTypes.js';
import { Point } from './Point.js';
/**
 * A class that builds templates for lines, tips, and labels.
 */
export declare class ShapeArtist {
    /**
     * @param info The definition of the line to visualize
     * @param debug Whether debugging is enabled.
     * @return The template for an association line
     */
    static line(info: IWorkspaceEdge, debug?: boolean): SVGTemplateResult | string;
    /**
     * @param info The line to visualize
     * @param debug Whether debugging is enabled.
     * @returns The template for an association line
     */
    static rectilinearLine(info: IWorkspaceEdge, debug: boolean): SVGTemplateResult;
    /**
     * @param tip The parent line to visualize
     * @returns The template for the parent line tip
     */
    static edgeTipTemplate(tip: IAssociationTip): SVGTemplateResult;
    /**
     * @param id The key of the association.
     * @returns The template for the association drag handlers on the tips.
     */
    static associationDraggable(id: string, start: Point, end: Point, directions: IEdgeDirections): SVGTemplateResult;
    /**
     * @param parentId The association key
     * @returns The template for a text label for an association
     */
    static edgeLabelTemplate(label: IAssociationLabelShape, parentId: string): SVGTemplateResult | string;
    /**
     * Draws a debug control points positions for the given line type.
     * @param start The start of the line
     * @param end The end of the line
     * @param cp Control points on the line
     */
    static controlPointsDebugTemplate(type: AssociationShapeType, start: Point, end: Point, cp: Point[]): SVGTemplateResult | string;
    static rectilinearPathDebugTemplate(start: Point, end: Point, controlPoints: Point[]): SVGTemplateResult | string;
}
//# sourceMappingURL=ShapeArtist.d.ts.map