import { IScreenWorldConverter } from "../../ScreenWorldConverter";
import { SnapMode } from "../../Types";
import { EndResult, MotionResult, Operation, TouchEndRequest, TouchStartRequest, TouchMotionRequest } from "./Operation";
/** Operation that checks snapping. */
export declare class SnapCheckOperation implements Operation {
    /** The ids of all relevant roots (i.e. roots that are not in componentIds). */
    private relevantRoots;
    /**  The match data of components. */
    private matches;
    /** The operation to be performed before checking for snapping */
    private operation;
    /** The components that are checked for snapping */
    private componentIds;
    /** Converter for converting screen position to world coordinates. Used for Screen based child matches */
    private converter;
    /** Indicates if snap events should be logged. */
    static log: boolean;
    /** If set to true, wall snap is ignored. Used for measurements mode */
    static ignoreWallSnap: boolean;
    /** Option for SnapCalculator, default true */
    static considerCollisions: boolean;
    private disabledModes;
    /**
     * Constructor of the SnapCheckOperation
     * @param operation The operation that will be computed before looking for snapping
     * @param componentIds The ids of moved components
     * @param converter
     * @param disabledModes
     */
    constructor(operation: Operation, componentIds: string[], converter: IScreenWorldConverter, disabledModes?: SnapMode[]);
    executeStart(request: TouchStartRequest): void;
    executeMotion(request: TouchMotionRequest): MotionResult;
    /**
     * Calculate the current matches and sort them.
     * Considered types: StrongNeighbour/StrongChild/Weak/WallMatch
     * Afterwards, sort matches by relevance
     * @param transformations
     * @param hitInfosScreenBased
     */
    private calculateMatches;
    /**
     * Calculate the matches for snapping to the wall.
     * Only considers wall matches for the closest wall
     * @param transformations
     * @returns {SnapMatch[]}
     */
    private getWallMatches;
    executeEnd(request: TouchEndRequest): EndResult;
    /**
     * Sort the matches member array by different priorities
     */
    private sortMatches;
    /**
     * Logs the message, if the log variable is set
     * @param message the message to be logged
     */
    private log;
}
