import { T_el, T_fn_cb, T_opt_base, T_sel } from "./ax";
type T_scroll_snap = {
    enable?: boolean,
    mode?: 'auto' | 'manual',
    selector?: T_sel | T_el[],
    force?: boolean,
}
type T_scroll_drift = {
    enable?: boolean,
    mode?: 'auto' | 'snap' | 'slide'|'ratio' | 'const',
    value?: number,
    coef?: number,
}
type T_scroll_swipe = {
    enable?: boolean,
    mode?: 'auto' | 'snap' |'slide'| 'ratio' | 'const',
    value?: number,
    coef?: number,
}
type T_scroll_wheel = {
    enable?: boolean,
    mode: 'snap' |'slide'| 'ratio' | 'const',
    value?: number,
    reverse?: boolean,
}
type T_scroll_bar = {
    enable?: boolean,
    sticky?: boolean,
    triggerable?: boolean,
}
type T_scroll_child = {
    size?: null | number | string | (number | string)[],
    settable?: boolean,
    gap?: number | string,
}
export interface T_scroll<B = 1> extends T_opt_base {
    wrapper?: T_sel;
    axis?: 'x' | 'y',
    delay?: number,
    dmpRatio?: number,
    initial?: { value?: number | T_sel, mode?: 'scroll' | 'locate' },
    toInitMode?: 'scroll' | 'locate';
    duration?: number,
    resizeThr?:number,
    paddingStart?: number,
    paddingEnd?: number,
    insertable?: boolean,
    bounce?: boolean,
    gridded?: boolean,
    completedThr?: number,
    gesture?: T_obj,
    keyboard?: boolean,
    child?: T_scroll_child,
    bar?: B extends 1 ? (T_scroll_bar | boolean) : T_scroll_bar,
    snap?: B extends 1 ? (T_scroll_snap | boolean) : T_scroll_snap,
    drift?: B extends 1 ? (T_scroll_drift | boolean) : T_scroll_drift,
    swipe?: B extends 1 ? (T_scroll_swipe | boolean) : T_scroll_swipe,
    wheel?: B extends 1 ? (T_scroll_wheel | boolean) : T_scroll_wheel,
    b4ToStart?: T_fn,
    b4ToEnd?: T_fn,
    onStart?: T_fn;
    onMove?: T_fn;
    onEnd?: T_fn;
    onCompleted?: T_fn;
    onExceed?: T_fn;
    onToStart?: T_fn;
    onToEnd?: T_fn;
    onRefactored?: T_fn;
    onSnap?: T_fn;
    onSnapped?: T_fn;
    onResized?: T_fn;
    onScroll?: T_fn;
    onScrolled?: T_fn;
    onLocate?: T_fn;
    onLocated?: T_fn;
}
