import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import type { FlickityOptions, Flickity, DragEvent, SlideAnimation } from './slides-interface';
/**
 * A toolbox for creating carousel or slide-show widgets, allowing users to navigate through a collection of items one at a time.
 *
 * @version 1.0.0
 * @status stable
 *
 * @part base - Wrapper around slides and additional ui elements.
 * @part slide-container - Wraps all slide elements.
 * @part slide-viewport - The visible, scrollable area around slide elements.
 * @part navigation-button - Next / previous navigation buttons.
 * @part navigation-button--next - the next navigation button.
 * @part navigation-button--previous - The previous navigation button.
 * @part navigation-icon - The chevron / arrow icon within a navigation button.
 * @part pagination - Wraps pagination indicators.
 * @part pagination-item - A pagination indicator.
 * @part pagination-item--active - The current, active pagination indicator.
 *
 * @slot - default slot of nano-slide components.
 * @slot ui - An absolutely positioned element that will be placed over the slider. Any custom ui can be housed here.
 * @slot next-icon - Optional next icon to use instead of the default.
 * @slot previous-icon - Optional previous icon to use instead of the default.
 */
export declare class Slides implements ComponentInterface {
    private flickityEl;
    private flickityReady;
    private resizeO?;
    private readyflickity;
    private flickity;
    private syncflickity?;
    private childrenEles;
    private hasFullScreenModule;
    private hasLazyLoadModule;
    private hasFadeModule;
    iCurrentSlide: number;
    slidesReady: boolean;
    didInit: boolean;
    slideCount: number;
    host: HTMLNanoSlidesElement;
    /**
     * Options to pass to the flickity instance.
     * See https://flickity.metafizzy.co/options.html for valid options
     */
    options: FlickityOptions;
    optionsChanged(): Promise<void>;
    /** If `true`, show the next / prev buttons. */
    navbtns: boolean;
    /** If `true`, show the pagination. */
    pager: boolean;
    /** If `true`, show a fullscreen button. */
    fullscreenbtn: boolean;
    fullscreenBtnChanged(): Promise<void>;
    /** If `true`, make the slider fullscreen. */
    fullscreen: boolean;
    fullscreenChanged(_?: any, oldFs?: boolean): Promise<void>;
    /** Animation presets or your own custom animation function; called every frame during scroll */
    animation: SlideAnimation;
    animationChange(_?: any, oldAnim?: SlideAnimation): Promise<void>;
    private updateOptions;
    /** Zero-based index of the selected cell. */
    currentSlide: number;
    currentSlideChange(): void;
    internalSlideChange(): void;
    /** time duration, in ms, to automatically advance slides */
    autoplay: string | false | number;
    autoPlayChange(): Promise<void>;
    /** @internal */
    ready: boolean;
    /** Emitted after component initialisation. */
    nanoSlidesDidLoad: EventEmitter<void>;
    /** Emitted after flickity initialisation. */
    nanoSlidesReady: EventEmitter<void>;
    /** Emitted when a slide is selected, even on the same slide. */
    nanoSlidesSelect: EventEmitter<number>;
    /** Emitted when the selected slide is changed. */
    nanoSlidesChange: EventEmitter<number>;
    /** Emitted when the slider moves. */
    nanoSlidesScroll: EventEmitter<number>;
    /** Emitted when the slide transition has finished. */
    nanoSlidesTransitionEnd: EventEmitter<number>;
    /** Emitted when the slider starts actively being moved. */
    nanoSlidesDragStart: EventEmitter<DragEvent>;
    /** Emitted when the slider is being dragged. */
    nanoSlidesDragMove: EventEmitter<DragEvent>;
    /** Emitted when the slider has finished being dragged. */
    nanoSlidesDragEnd: EventEmitter<DragEvent>;
    /** Emitted when the user taps/clicks on the slide's container. */
    nanoSlidesTap: EventEmitter<DragEvent>;
    /** Emitted when the user taps/clicks on the slide's container. */
    nanoSlidesFullscreenChange: EventEmitter<boolean>;
    /**
     * Update the underlying flickity implementation. Call this if you've added or removed
     * child slides.
     */
    update(): Promise<void>;
    /**
     * Transition to the specified slide.
     *
     * @param index The index of the slide to transition to.
     * @param instant Immediately view the selected slide without animation.
     */
    slideTo(index: number, instant?: boolean): Promise<void>;
    /**
     * Transition to the next slide.
     *
     * @param instant The transition duration (in ms).
     * @param wrap If true, the first slide will be selected if at the last slide.
     */
    slideNext(instant?: boolean, wrap?: boolean): Promise<void>;
    /**
     * Transition to the previous slide.
     *
     * @param instant The transition duration (in ms).
     * @param wrap If true, the last slide will be selected if at the first slide.
     */
    slidePrev(instant?: boolean, wrap?: boolean): Promise<void>;
    /**
     * Get the index of the active slide.
     * @returns the index of the active slide
     */
    getActiveIndex(): Promise<number>;
    /**
     * Get the total number of slides.
     * @returns the total number of slides
     */
    length(): Promise<number>;
    /**
     * Get whether or not the current slide is the last slide.
     * @returns true if the current slide is the last slide, false otherwise
     */
    isEnd(): Promise<boolean>;
    /**
     * Get whether or not the current slide is the first slide.
     * @returns true if the current slide is the first slide, false otherwise
     */
    isBeginning(): Promise<boolean>;
    /**
     * Start auto play.
     * @param time - optional time duration to show slides
     */
    startAutoplay(time?: number): Promise<void>;
    /** Stop auto play. */
    stopAutoplay(): Promise<void>;
    /**
     * Lock or unlock the ability to slide to the next slide.
     *
     * @param lock If `true`, disable swiping
     */
    lockSwipes(lock: boolean): Promise<void>;
    /**
     * Get the flickity instance.
     * Use this to access the full flickity API.
     * See https://flickity.metafizzy.co/ for all API options.
     * @returns the flickity instance
     */
    getflickity(): Promise<Flickity>;
    /**
     * Hard destroy / create.
     * Certain flickity options, you will require the instance to be re-initialised
     */
    reload(): Promise<void>;
    private _getRoot;
    private parallax;
    private isActive;
    private handleFullscreen;
    private handleSlideSelect;
    private destroyflickity;
    private loadFlickityModules;
    private initflickity;
    private normalizeOptions;
    private waitForSlides;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    render(): any;
}
