import { InteractiveEvent, IRectNode, Point } from "../../common";
import { GraphicNode, OolongLine } from "../../graphics";
import { ExecutorContext } from "../../action";
import { NodeManager } from "../../application";
import { ConnectInfo } from "../../graphics/base/NodeConnectEndType";
import { AppEventContext } from "../../app";
import { IConnectEnd, IPoint } from "../../idl";
import { AbsLineLayoutHandler } from "../../ability/line/handler/AbsLineLayoutHandler";
import { AlignWorker } from "./align/AlignWorker";
export declare class InteractiveUtils {
    static mockPointermoveEvent(pos: IPoint, modifierInit?: EventModifierInit): {
        altKey?: boolean;
        ctrlKey?: boolean;
        metaKey?: boolean;
        modifierAltGraph?: boolean;
        modifierCapsLock?: boolean;
        modifierFn?: boolean;
        modifierFnLock?: boolean;
        modifierHyper?: boolean;
        modifierNumLock?: boolean;
        modifierScrollLock?: boolean;
        modifierSuper?: boolean;
        modifierSymbol?: boolean;
        modifierSymbolLock?: boolean;
        shiftKey?: boolean;
        detail?: number;
        view?: Window | null;
        which?: number;
        bubbles: boolean;
        cancelable: boolean;
        composed: boolean;
        pointerId: number;
        width: number;
        height: number;
        pressure: number;
        tangentialPressure: number;
        tiltX: number;
        tiltY: number;
        twist: number;
        type: string;
        pointerType: string;
        isPrimary: boolean;
        clientX: number;
        clientY: number;
    };
    static getNodePos(node: GraphicNode, { x, y }: IPoint): IPoint;
    static computeConnectInfo(line: OolongLine, end: IConnectEnd | null, ctx: AppEventContext, isEnd?: boolean): ConnectInfo;
    static computeLinePoints(startConnect: ConnectInfo, layoutHandler: AbsLineLayoutHandler, event: InteractiveEvent, ctx: AppEventContext, alignWorker: AlignWorker): IPoint[];
    /**
     * 将角度处理到0-360度范围
     * @param angle
     */
    static trimAngle(angle: number): number;
    static calculateAngle(start: IPoint, end: Point): number;
    static calculateAngle2(start: Point, end: Point): number;
    static trimPoint(p: Point): Point;
    static overlapHorizonVertical(p: Point, q: Point, rect: IRectNode): boolean;
    static overlapHorizon(minX: number, maxX: number, y: number, p: Point, q: Point): boolean;
    static overlapVertical(minY: number, maxY: number, x: number, p: Point, q: Point): boolean;
    static overlapSimpleLine(a: Point, b: Point, rect: IRectNode): boolean;
    static overlapPolyLine(points: Point[], rect: IRectNode): boolean;
    static interactRect(rect1: IRectNode, rect2: IRectNode): IRectNode;
    static needDrawByDelete(ctx: ExecutorContext, bounds: IRectNode, relatedLinks: Set<string>, targetNode: GraphicNode, exclude: boolean): GraphicNode[];
    static layout(start: Point, end: Point): Point[];
    static judgeHorizon(p1: IPoint, p2: IPoint, delta?: number): boolean;
    static judgeVertical(p1: IPoint, p2: IPoint, delta?: number): boolean;
    static getOfflineCanvas(rectNode: IRectNode, nodeManager: NodeManager, resolution: number): HTMLCanvasElement;
}
//# sourceMappingURL=InteractiveUtils.d.ts.map