import { StrokeStyle } from '../../consts.js';
import type { RoughCanvas } from '../../rough/canvas.js';
import { Bound } from '../../utils/bound.js';
import { type BezierCurveParameters } from '../../utils/curve.js';
import { PointLocation } from '../../utils/point-location.js';
import { type IVec } from '../../utils/vec.js';
import type { SerializedXYWH } from '../../utils/xywh.js';
import type { HitTestOptions } from '../edgeless-element.js';
import { SurfaceElement } from '../surface-element.js';
import { ConnectorEndpointStyle, ConnectorMode, type IConnector } from './types.js';
export declare class ConnectorElement extends SurfaceElement<IConnector> {
    private _path;
    private _xywh;
    protected _connectable: boolean;
    get path(): PointLocation[];
    set path(p: PointLocation[]);
    get xywh(): SerializedXYWH;
    set xywh(xywh: SerializedXYWH);
    get mode(): ConnectorMode;
    get strokeWidth(): number;
    get stroke(): string;
    get strokeStyle(): StrokeStyle;
    get roughness(): number;
    get rough(): boolean;
    get target(): import("./types.js").Connection;
    get source(): import("./types.js").Connection;
    get controllers(): import("./types.js").Controller[];
    get frontEndpointStyle(): ConnectorEndpointStyle;
    get rearEndpointStyle(): ConnectorEndpointStyle;
    get absolutePath(): PointLocation[];
    hitTest(x: number, y: number, options?: HitTestOptions | undefined): boolean;
    containedByBounds(bounds: Bound): boolean;
    getNearestPoint(point: IVec): IVec;
    intersectWithLine(start: IVec, end: IVec): PointLocation[] | null;
    get bezierParameters(): BezierCurveParameters;
    render(ctx: CanvasRenderingContext2D, matrix: DOMMatrix, rc: RoughCanvas): void;
    private _renderPoints;
    private _getArrowOptions;
    private _renderEndpoint;
    getRelativePointLocation(point: IVec): PointLocation;
}
//# sourceMappingURL=connector-element.d.ts.map