import { Point } from "../utils/point";
import { LinkPointEndpointState } from "./linkPointEndpointState";
import { LinkPortEndpointState, ILinkPortEndpoint } from "./linkPortEndpointState";
import { RootStore } from "./rootStore";
export declare class LinkState implements ILinkInteractionState {
    private _id;
    private _type;
    private _source?;
    private _sourceEndpoint;
    private _target?;
    private _targetEndpoint;
    private _segments;
    private _selected;
    private _hovered;
    private _data;
    private _isSelectionEnabled;
    private _rootStore;
    constructor(rootStore: RootStore, id: string, state: ILinkStateWithoutId);
    import: (state: ILinkStateWithoutId) => void;
    export: () => ILinkStateWithId;
    get id(): string;
    get type(): string;
    setType: (value: string | null | undefined) => void;
    get segments(): ILinkSegment[];
    setSegments: (value: ILinkSegment[] | null | undefined) => void;
    get path(): ILinkPath | undefined;
    get componentDefinition(): import("./visualComponentState").VisualComponentState<import("./linksSettings").ILinkVisualComponentProps<any>, any>;
    get selected(): boolean;
    set selected(value: boolean);
    get hovered(): boolean;
    set hovered(value: boolean);
    get data(): any;
    get source(): LinkPortEndpointState | undefined;
    get sourceEndpoint(): ILinkPortEndpoint;
    get target(): LinkPortEndpointState | undefined;
    get targetEndpoint(): ILinkPortEndpoint;
    swapEndpoints: () => void;
    setData: (value: any) => void;
    get isSelectionEnabled(): boolean;
    setIsSelectionEnabled: (value: boolean | null | undefined) => void;
    private _createEndpointState;
}
export declare function createLinkPath(rootStore: RootStore, source: LinkPortEndpointState, target: LinkPortEndpointState | LinkPointEndpointState): ILinkPath | undefined;
export interface ILinkInteractionState {
    selected: boolean;
    hovered: boolean;
}
export interface ILinkStateWithoutId {
    type?: string;
    source: ILinkPortEndpoint;
    target: ILinkPortEndpoint;
    segments?: ILinkSegment[];
    data?: any;
    isSelectionEnabled?: boolean;
}
export interface ILinkStateWithId extends ILinkStateWithoutId {
    id: string;
}
export interface ILinkState extends ILinkStateWithoutId {
    id?: string;
}
export interface ILinkSegment {
    position: Point;
}
export interface ILinkPath {
    svgPath: string;
    source: Point;
    target: Point;
}
//# sourceMappingURL=linkState.d.ts.map