import { T_el, T_opt } from './ax';
import { T_drawer } from './drawer';
type T_gesture_drift = {
    enable?: boolean,
    timeThr?: number,
    distThr?: number,
    coef?: number,
    duration?: number,
    curve?:'linear'|'ease'|'easeIn'|'easeOut'|'easeInOut'|'easeOutIn',
}
type T_gesture_scale = {
    enable?: boolean,
    centered?: boolean,
    max?: number,
    min?: number,
}
type T_gesture_rotate = {
    enable?: boolean,
    max?: number,
    min?: number,
}
type T_gesture_click = {
    timeThr?: number,
    delay?: number,
    dblclickable?: boolean,
    holdDelay?: number,
    hold2Menu?: boolean,
}
type T_gesture_wheel = {
    enable?: boolean,
    mode?: 'scale'|'translate'|'rotate',
    axis?: 'y'|'x',
    value?: number,
    duration?: number,
    linkage?:boolean,
    reverse?: boolean,
    curve?:'linear'|'ease'|'easeIn'|'easeOut'|'easeInOut'|'easeOutIn',
}
type T_gesture_translate = {
    max?: number,
    min?: number,
    instead?:boolean,
    target?:T_sel,
}
type T_gesture_viewport = {
    enable?: boolean,
    selector?: T_sel,
    bouncy?: boolean,
    duration?:number,
}
export interface T_gesture<B = 1> extends T_opt_base {
    parent?: T_sel,
    jitterVal?: number,
    origin?: T_obj,
    unbound?: string,
    click?: T_gesture_click,
    viewport?: B extends 1 ? (T_gesture_viewport | boolean) : T_gesture_viewport,
    wheel?: B extends 1 ? (T_gesture_wheel | boolean) : T_gesture_wheel,
    translate?: T_gesture_translate,
    drift?: B extends 1 ? (T_gesture_drift | boolean) : T_gesture_drift,
    scale?: B extends 1 ? (T_gesture_scale | boolean) : T_gesture_scale,
    rotate?: B extends 1 ? (T_gesture_rotate | boolean) : T_gesture_rotate,
    initialVal?: T_obj,
    breakpoints?: T_obj;
    onDo?: T_fn,
    onDoing?: T_fn,
    onDone?: T_fn,
    onClick?: T_fn,
    onDblclick?: T_fn,
    onHold?: T_fn,
    onScale?: T_fn,
    onScaling?: T_fn,
    onScaled?: T_fn,
    onRotate?: T_fn,
    onRotating?: T_fn,
    onRotated?: T_fn,
    onTranslate?: T_fn,
    onTranslating?: T_fn,
    onTranslated?: T_fn,
    onDrift?: T_fn,
    onDrifting?: T_fn,
    onDrifted?: T_fn,
    onCancel?: T_fn,
    onReset?: T_fn_cb | null,
}
