import type { StrokeStyle } from '../../consts.js';
import type { IVec } from '../../utils/vec.js';
import type { CanvasElementType } from '../edgeless-element.js';
import type { ISurfaceElement } from '../surface-element.js';
export declare enum ConnectorMode {
    Straight = 0,
    Orthogonal = 1,
    Curve = 2
}
export declare enum ConnectorEndpoint {
    Front = "Front",
    Rear = "Rear"
}
export declare enum ConnectorEndpointStyle {
    None = "None",
    Arrow = "Arrow",
    Triangle = "Triangle",
    Circle = "Circle",
    Diamond = "Diamond"
}
export declare const DEFAULT_FRONT_END_POINT_STYLE = ConnectorEndpointStyle.None;
export declare const DEFAULT_REAR_END_POINT_STYLE = ConnectorEndpointStyle.Arrow;
export declare const DEFAULT_ARROW_SIZE = 15;
export type Connection = {
    id?: string;
    position?: IVec;
};
export interface Controller {
    x: number;
    y: number;
    customized?: boolean;
}
export interface IConnector extends ISurfaceElement {
    type: CanvasElementType.CONNECTOR;
    mode: ConnectorMode;
    stroke: string;
    strokeWidth: number;
    strokeStyle: StrokeStyle;
    roughness?: number;
    rough?: boolean;
    source: Connection;
    target: Connection;
    controllers: Controller[];
    path: IVec[];
    absolutePath: IVec[];
    frontEndpointStyle?: ConnectorEndpointStyle;
    rearEndpointStyle?: ConnectorEndpointStyle;
}
//# sourceMappingURL=types.d.ts.map