import Flicking, { FlickingEvents, FlickingOptions } from "./Flicking";
import { ChangedEvent, HoldEndEvent, HoldStartEvent, MoveEndEvent, MoveEvent, MoveStartEvent, RestoredEvent, WillChangeEvent, WillRestoreEvent } from "./type/event";
export declare const SIDE_EVENTS: {
    readonly HOLD_START: "sideHoldStart";
    readonly HOLD_END: "sideHoldEnd";
    readonly MOVE_START: "sideMoveStart";
    readonly MOVE: "sideMove";
    readonly MOVE_END: "sideMoveEnd";
    readonly WILL_CHANGE: "sideWillChange";
    readonly CHANGED: "sideChanged";
    readonly WILL_RESTORE: "sideWillRestore";
    readonly RESTORED: "sideRestored";
};
export declare type CrossFlickingEvent<T> = {
    mainIndex: number;
} & T;
export interface CrossFlickingEvents extends FlickingEvents {
    [SIDE_EVENTS.HOLD_START]: CrossFlickingEvent<HoldStartEvent>;
    [SIDE_EVENTS.HOLD_END]: CrossFlickingEvent<HoldEndEvent>;
    [SIDE_EVENTS.MOVE_START]: CrossFlickingEvent<MoveStartEvent>;
    [SIDE_EVENTS.MOVE]: CrossFlickingEvent<MoveEvent>;
    [SIDE_EVENTS.MOVE_END]: CrossFlickingEvent<MoveEndEvent>;
    [SIDE_EVENTS.WILL_CHANGE]: CrossFlickingEvent<WillChangeEvent>;
    [SIDE_EVENTS.CHANGED]: CrossFlickingEvent<ChangedEvent>;
    [SIDE_EVENTS.WILL_RESTORE]: CrossFlickingEvent<WillRestoreEvent>;
    [SIDE_EVENTS.RESTORED]: CrossFlickingEvent<RestoredEvent>;
}
export interface CrossFlickingOptions extends FlickingOptions {
    sideOptions: Partial<FlickingOptions> | undefined;
    preserveIndex: boolean | undefined;
    disableSlideOnHold: boolean | undefined;
    disableIndexSync: boolean | undefined;
}
export interface SideState {
    key: string;
    start: number;
    end: number;
    element: HTMLElement;
}
export interface CrossFlickingChangedEvent extends ChangedEvent {
    sideIndex?: number;
}
export interface CrossFlickingWillChangeEvent extends WillChangeEvent {
    sideIndex?: number;
}
export declare class CrossFlicking extends Flicking {
    private _sideFlicking;
    private _sideOptions;
    private _preserveIndex;
    private _disableSlideOnHold;
    private _disableIndexSync;
    private _sideState;
    private _moveDirection;
    private _originalDragThreshold;
    private _nextIndex;
    get sideFlicking(): Flicking[];
    get sideIndex(): number[];
    get sideState(): SideState[];
    get sideOptions(): CrossFlickingOptions["sideOptions"];
    get preserveIndex(): CrossFlickingOptions["preserveIndex"];
    get disableSlideOnHold(): CrossFlickingOptions["disableSlideOnHold"];
    get disableIndexSync(): CrossFlickingOptions["disableIndexSync"];
    set sideOptions(val: CrossFlickingOptions["sideOptions"]);
    set preserveIndex(val: CrossFlickingOptions["preserveIndex"]);
    set disableSlideOnHold(val: CrossFlickingOptions["disableSlideOnHold"]);
    set disableIndexSync(val: CrossFlickingOptions["disableIndexSync"]);
    constructor(root: HTMLElement | string, options: Partial<CrossFlickingOptions>);
    init(): Promise<void>;
    destroy(): void;
    private _addComponentEvents;
    private _createSideState;
    private _createCrossStructure;
    private _getGroupFromAttribute;
    private _getSideStateFromGroup;
    private _getSideStateFromPanels;
    private _getSideStateFromCrossStructure;
    private _createSideFlicking;
    private _syncToCategory;
    private _setDraggable;
    private _setPreviousSideIndex;
    private _addSideIndex;
    private _onHorizontalHoldStart;
    private _onHorizontalMove;
    private _onHorizontalMoveEnd;
    private _onSideHoldStart;
    private _onSideMove;
    private _onSideMoveEnd;
    private _onSideChanged;
}
