import { box, location, xy } from '@synnaxlabs/x';
import { z } from 'zod';
export interface CheckIntegrityProps {
    sourcePos: xy.XY;
    targetPos: xy.XY;
    next: Segment[];
    prev: Segment[];
}
export declare const checkIntegrity: ({ sourcePos, targetPos, next, prev, }: CheckIntegrityProps) => boolean;
export interface ChangeOrientationProps {
    orientation: location.Outer;
    segments: Segment[];
}
export declare const changeSourceOrientation: (props: ChangeOrientationProps) => Segment[];
export declare const changeTargetOrientation: (props: ChangeOrientationProps) => Segment[];
export interface PrepareNodeProps {
    sourceStumpTip: xy.XY;
    sourceOrientation: location.Outer;
    sourceBox: box.Box;
    targetStumpTip: xy.XY;
    targetOrientation: location.Outer;
    targetBox: box.Box;
}
export declare const prepareNode: ({ sourceStumpTip: sourcePos, sourceOrientation, sourceBox, targetStumpTip: targetPos, targetOrientation, targetBox, }: PrepareNodeProps) => Segment | undefined;
export declare const segmentZ: z.ZodObject<{
    direction: z.ZodEnum<{
        x: "x";
        y: "y";
    }>;
    length: z.ZodNumber;
}, z.core.$strip>;
export type Segment = z.infer<typeof segmentZ>;
export declare const travelSegments: (source: xy.XY, ...segments: Segment[]) => xy.XY;
export declare const segmentsToPoints: (source: xy.XY, segments: Segment[], zoom: number, applyTransform: boolean) => xy.XY[];
export interface BuildNew {
    sourceBox: box.Box;
    targetBox: box.Box;
    sourcePos: xy.XY;
    targetPos: xy.XY;
    sourceOrientation: location.Outer;
    targetOrientation: location.Outer;
}
export declare const STUMP_LENGTH = 10;
export interface NeedToGoAroundSourceProps {
    sourcePos: xy.XY;
    targetPos: xy.XY;
    sourceOrientation: location.Outer;
}
export declare const needToGoAround: ({ sourcePos, targetPos, sourceOrientation, }: NeedToGoAroundSourceProps) => boolean;
export declare const stump: (orientation: location.Outer) => Segment;
export declare const compressSegments: (segments: Segment[]) => Segment[];
export declare const buildNew: (props: BuildNew) => Segment[];
export interface MoveConnectorProps {
    segments: Segment[];
    index: number;
    magnitude: number;
}
export declare const dragSegment: (props: MoveConnectorProps) => Segment[];
export interface MoveNodeProps {
    delta: xy.XY;
    segments: Segment[];
}
export declare const moveSourceNode: ({ delta, segments }: MoveNodeProps) => Segment[];
export declare const moveTargetNode: ({ delta, segments }: MoveNodeProps) => Segment[];
//# sourceMappingURL=connector.d.ts.map