import Component from "@egjs/component";
import { FlickingOptions, FlickingEvent, Direction, EventType, FlickingPanel, FlickingStatus, Plugin, ElementLike, DestroyOption, BeforeSyncResult, SyncResult, ChangeEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent, ContentErrorEvent } from "./types";
import { DiffResult } from "@egjs/list-differ";
declare class Flicking extends Component<{
    holdStart: FlickingEvent;
    holdEnd: FlickingEvent;
    moveStart: FlickingEvent;
    move: FlickingEvent;
    moveEnd: FlickingEvent;
    change: ChangeEvent;
    restore: FlickingEvent;
    select: SelectEvent;
    needPanel: NeedPanelEvent;
    visibleChange: VisibleChangeEvent;
    contentError: ContentErrorEvent;
}> {
    static VERSION: string;
    static DIRECTION: Direction;
    static EVENTS: EventType;
    options: FlickingOptions;
    private wrapper;
    private viewport;
    private contentsReadyChecker;
    private eventContext;
    private isPanelChangedAtBeforeSync;
    constructor(element: string | HTMLElement, options?: Partial<FlickingOptions>);
    prev(duration?: number): this;
    next(duration?: number): this;
    moveTo(index: number, duration?: number): this;
    getIndex(): number;
    getElement(): HTMLElement;
    getSize(): number;
    getCurrentPanel(): FlickingPanel | null;
    getPanel(index: number): FlickingPanel | null;
    getAllPanels(includeClone?: boolean): FlickingPanel[];
    getVisiblePanels(): FlickingPanel[];
    getPanelCount(): number;
    getCloneCount(): number;
    getLastIndex(): number;
    setLastIndex(index: number): this;
    isPlaying(): boolean;
    enableInput(): this;
    disableInput(): this;
    getStatus(): FlickingStatus;
    setStatus(status: FlickingStatus): void;
    addPlugins(plugins: Plugin | Plugin[]): this;
    removePlugins(plugins: Plugin | Plugin[]): this;
    destroy(option?: Partial<DestroyOption>): void;
    resize: () => this;
    prepend(element: ElementLike | ElementLike[]): FlickingPanel[];
    append(element: ElementLike | ElementLike[]): FlickingPanel[];
    replace(index: number, element: ElementLike | ElementLike[]): FlickingPanel[];
    remove(index: number, deleteCount?: number): FlickingPanel[];
    getRenderingIndexes(diffResult: DiffResult<any>): number[];
    beforeSync(diffInfo: BeforeSyncResult): this;
    sync(diffInfo: SyncResult): this;
    private listenInput;
    private listenResize;
    private triggerEvent;
    private moveCamera;
    private checkContentsReady;
}
export default Flicking;
