/**
 * 滚轮事件处理抽象基类
 * 仅保留事件处理模板，具体 enable / zoom / scroll 逻辑交由子类实现
 */
import { AppEventContext } from "../../app";
import { OSType } from "../../common/OSType";
import { Point } from "../../common";
import { WheelRedrawHandler } from "./WheelRedrawHandler";
export interface WheelDetectionProfile {
    mouseWheelNotches: number[];
    wheelNotchTolerance: number;
    trackpadSmallStepThreshold: number;
}
export interface MouseWheelProfile extends WheelDetectionProfile {
    mouseZoomStepBase: number;
}
export interface TrackpadWheelProfile extends WheelDetectionProfile {
    trackpadMaxZoomDelta: number;
    trackpadMinZoomDelta: number;
    trackpadZoomRatio: number;
    trackpadMaxScaleDelta: number;
}
export interface WheelHandlerProfile extends MouseWheelProfile, TrackpadWheelProfile {
}
export declare const WINDOWS_WHEEL_HANDLER_PROFILE: WheelHandlerProfile;
export declare const MAC_WHEEL_HANDLER_PROFILE: WheelHandlerProfile;
export declare abstract class AbsWheelHandler {
    protected readonly redrawHandler: WheelRedrawHandler;
    protected constructor(redrawHandler: WheelRedrawHandler);
    abstract enable(event: WheelEvent, ctx: AppEventContext): boolean;
    /**
     * 处理滚轮事件的主入口
     * 根据条件判断是执行缩放还是滚动
     * @param event - 滚轮事件
     * @param ctx - 应用程序事件上下文
     */
    handle(event: WheelEvent, ctx: AppEventContext): void;
    protected shouldZoom(event: WheelEvent, ctx: AppEventContext): boolean;
    protected isZoomModifierPressed(event: Pick<WheelEvent, "ctrlKey" | "metaKey">): boolean;
    protected isCanvasWheelEvent(event: WheelEvent, ctx: AppEventContext): boolean;
    protected getGlobalPoint(ctx: AppEventContext, event: WheelEvent): Point;
    protected getScrollX(deltaX: number, ctx: AppEventContext): number;
    protected getClientPoint(event: WheelEvent, domRect: DOMRect): Point;
    protected isCurrentOS(os: OSType): boolean;
    protected isMouseInput(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode">, profile?: WheelDetectionProfile): boolean;
    protected isTrackpadInput(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode">, profile?: WheelDetectionProfile): boolean;
    protected detectInputDevice(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode">, profile?: WheelDetectionProfile): "mouse" | "trackpad";
    protected normalizeDelta(delta: number, deltaMode?: number): number;
    protected getZoomDelta(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode">): number;
    protected abstract handleZoom(event: WheelEvent, ctx: AppEventContext): void;
    protected abstract handleScroll(event: WheelEvent, ctx: AppEventContext): void;
}
//# sourceMappingURL=AbsWheelHandler.d.ts.map