import { PointMoveT } from '../../_utils/types';
export interface EffectT {
    active: (slideIndex: number) => Promise<null | number>;
    destroyed: () => void;
}
export interface EffectOptionT {
    activeClass?: string | {
        [k: string]: boolean;
    } | Array<{
        [k: string]: boolean;
    } | string>;
    onTouchstart?: () => void;
    onTouchend?: () => void;
    onBeforeChange?: (from: number, to: number) => boolean | void;
    onChanged?: (from: number, to: number) => void;
}
export default abstract class Effect {
    total: number;
    currentIndex: number;
    activeClass?: string | {
        [k: string]: boolean;
    } | Array<{
        [k: string]: boolean;
    } | string>;
    onTouchstart: (() => void) | undefined;
    onTouchend: (() => void) | undefined;
    onBeforeChange: ((to: number, from: number) => boolean | void) | undefined;
    onChanged: ((to: number, from: number) => void) | undefined;
    private isTouchStart;
    private containerEl;
    constructor(slideElList: HTMLElement[], slideContainer: HTMLElement, options?: EffectOptionT);
    abstract handleTouchStart(): void;
    abstract handleTouchMove(pos: PointMoveT, e: TouchEvent): void;
    abstract handleTouchEnd(pos: PointMoveT, e: TouchEvent): number | void;
    abstract active(toIndex: number, animate?: boolean, force?: boolean): Promise<null | number>;
    abstract destroyed(): void;
    fixIndex(idx: number): number;
    handleTouch(): void;
}
