export interface GenericObject {
    [key: string]: any;
}
export interface Options {
    transition: Transition['cb'];
    auto?: boolean;
    click?: boolean;
    controls?: boolean | string;
    debounce?: number;
    drag?: boolean;
    group?(): number;
    height?: 'auto' | number;
    index?: number;
    interval?: number;
    keyboard?: boolean;
    loop?: boolean;
    namespace?: string;
    nav?: boolean | string;
    pagination?: boolean | string;
    pause?: boolean;
    preserveGroup?: boolean;
    queue?: number;
    resize?: boolean;
    reverse?: boolean;
    swipe?: boolean;
    tap?: boolean;
    zerofill?: boolean | number;
}
interface BaseAction {
    trigger: Trigger;
    animate?: boolean;
}
/**
 * Initiated by Slidy `slide` method, used by manager.
 */
export interface Action extends BaseAction {
    index?: number;
    move: Move;
}
/**
 * Used by transition callback.
 */
export interface TransitionInfos extends BaseAction {
    direction: Direction;
    currentIndex: number;
    newIndex: number;
    currentGroup: number;
    newGroup: number;
}
export declare type Direction = 'prev' | 'next';
export declare type Move = Direction | 'to';
export declare type Trigger = 'auto' | 'click' | 'tap' | 'drag' | 'swipe' | 'nav' | 'pagination' | 'controls';
export declare type GestureDirection = 'left' | 'right';
export declare type SupportedEvents = 'click' | 'tap' | 'drag' | 'swipe';
export declare type SupportedTypes = 'click' | 'mousedown' | 'mouseup' | 'mousemove' | 'touchstart' | 'touchend' | 'touchmove' | 'pointerdown' | 'pointerup' | 'pointermove';
export interface Transition {
    cb(currentSlides: HTMLElement | HTMLElement[], newSlides: HTMLElement | HTMLElement[], infos?: TransitionInfos, context?: any, data?: any): Promise<any>;
}
export declare type HooksNames = 'beforeInit' | 'afterInit' | 'afterResize' | 'preventSlide' | 'beforeSlide' | 'afterSlide';
export interface HooksCallbacks {
    beforeInit: (el: HTMLElement) => void;
    afterInit: (el: HTMLElement) => void;
    afterResize: (el: HTMLElement) => void;
    preventSlide: (action: Action) => boolean;
    beforeSlide: (infos: TransitionInfos, context?: any, data?: any) => void;
    afterSlide: (infos: TransitionInfos, context?: any, data?: any) => void;
}
export {};
