import { LineDefinition } from "../definitions/LineDefinition.js";
import { ILineOptions } from "../options/interfaces/ILineOptions.js";
import { LineOptions } from "../options/LineOptions.js";
import { ILineStyle } from "../styles/interfaces/ILineStyle.js";
import { LineStyle } from "../styles/LineStyle.js";
import { Point } from "../types/Point.js";
import { Shape } from "./Shape.js";
/**
 * Represents a line shape that extends the generic Shape class.
 * It uses LineDefinition for defining the start and end points,
 * LineStyle for styling, and LineOptions for additional options.
 */
export declare class Line extends Shape<LineDefinition, LineStyle, LineOptions> {
    /**
     * @param start - The starting `Point` of the line.
     * @param end - The ending `Point` of the line.
     * @param style - Defines the styling of the line.
     * @param options - The configuration options for the line.
     */
    constructor(start: Point, end: Point, style?: ILineStyle, options?: ILineOptions);
    /**
     * @param startX - The X-coordinate of the starting point.
     * @param startY - The Y-coordinate of the starting point.
     * @param endX - The X-coordinate of the ending point.
     * @param endY - The Y-coordinate of the ending point.
     * @param style - Defines the styling of the line.
     * @param options - The configuration options for the line.
     */
    constructor(startX: number, startY: number, endX: number, endY: number, style?: ILineStyle, options?: ILineOptions);
    /**
     * Gets the starting point of the line.
     *
     * @returns The starting point of the line.
     */
    get start(): Point;
    /**
     * Gets the ending point of the line.
     *
     * @returns The ending point of the line.
     */
    get end(): Point;
    /**
     * Sets the starting point of the line.
     *
     * @param start - The new starting point of the line.
     */
    set start(start: Point);
    /**
     * Sets the ending point of the line.
     *
     * @param end - The new ending point of the line.
     */
    set end(end: Point);
    /**
     * Moves the start point of the line by the specified deltas along the x and y axes.
     *
     * @param deltaX - The amount to move the start point along the x-axis.
     * @param deltaY - The amount to move the start point along the y-axis.
     */
    moveStart(deltaX?: number, deltaY?: number): void;
    /**
     * Moves the end point of the line by the specified deltas along the x and y axes.
     *
     * @param deltaX - The amount to move the end point along the x-axis.
     * @param deltaY - The amount to move the end point along the y-axis.
     */
    moveEnd(deltaX?: number, deltaY?: number): void;
    /**
     * Moves the start & end point of the line by the specified deltas along the x and y axes.
     *
     * @param deltaX - The amount to move the start & end point along the x-axis.
     * @param deltaY - The amount to move the start & end point along the y-axis.
     */
    move(deltaX?: number, deltaY?: number): void;
    /**
     * Renders the line on a canvas context.
     *
     * @param context - The canvas rendering context to draw the line.
     */
    render(context: CanvasRenderingContext2D): void;
    /**
     * Determines if the mouse is currently over the shape.
     *
     * @param mousePosition - The current mouse position.
     * @returns True if the mouse is over the shape, false otherwise.
     */
    isMouseOver(mousePosition: Point): boolean;
    /**
     * Handles the drag operation by applying the given delta to the current position.
     *
     * @param delta - The change in position represented as a `Point`.
     */
    onDrag(delta: Point): void;
}
