import { ElementRef, EventEmitter } from 'angular2/core';
import { Ion } from '../ion';
import { Swiper } from './swiper-widget';
/**
 * @name Slides
 * @description
 * The Slides component is a multi-section container. Each section can be swiped
 * or dragged between. It contains any number of [Slide](../Slide) components.
 *
 *
 * ### Creating
 * You should use a template to create slides and listen to slide events. The template
 * should contain the slide container, an `<ion-slides>` element, and any number of
 * [Slide](../Slide) components, written as `<ion-slide>`. Any configuration of the
 * slides should be passed in the `options` property of the `<ion-slides>` element.
 * You can listen to events such as the slide changing by placing the event on the
 * `<ion-slides>` element. See [Usage](#usage) below for more information on
 * creating slides.
 *
 *
 * ### Configuring
 * There are several configuration options that can be passed to Slides. These should
 * be passed in the `options` property of the `<ion-slides>` element upon creation.
 * You can allow the slides to loop around from the last to the first, set autoplay
 * on the slides so it will automatically switch between them, and more.
 *
 * Properties to pass in options:
 *
 * | Property              | Type      | Default        | Description                                                                                |
 * |-----------------------|-----------|----------------|--------------------------------------------------------------------------------------------|
 * | autoplay              | `number`  | -              | Delay between transitions (in ms). If this parameter is not passed, autoplay is disabled.  |
 * | direction             | `string`  | 'horizontal'   | Swipe direction: 'horizontal' or 'vertical'.                                               |
 * | initialSlide          | `number`  | 0              | Index number of initial slide                                                              |
 * | loop                  | `boolean` | false          | Whether to continuously loop from the last slide to the first slide.                       |
 * | speed                 | `number`  | 300            | Duration of transition between slides (in ms).                                             |
 *
 * See [Usage](#usage) below for more information on configuring slides.
 *
 *
 * ### Navigating
 * After creating and configuring the slides, you can navigate between them
 * by swiping or calling methods on the `Slides` instance. You can call `slideTo()` to
 * navigate to a specific slide, or `slideNext()` to change to the slide that follows
 * the active slide. All of the [methods](#instance-methods) provided by the `Slides`
 * instance are listed below. See [Usage](#usage) below for more information on
 * navigating between slides.
 *
 *
 * ### Limitations
 * The Slides component wraps the [Swiper](http://www.idangero.us/swiper/) component
 * built by iDangero.us. This means that all of the Swiper API isn't exposed on the
 * Slides component. See the [`getSlider()`](#getSlider) method for information on
 * getting the `Swiper` instance and using its methods directly.
 *
 *
 * @usage
 * ```html
 * <ion-slides>
 *   <ion-slide>
 *     <p>Slide 1</p>
 *     <button (click)="goToSlide(3)">Navigate</button>
 *   </ion-slide>
 *   <ion-slide>
 *     <p>Slide 2</p>
 *   </ion-slide>
 *   <ion-slide>
 *     <p>Slide 3</p>
 *   </ion-slide>
 * </ion-slides>
 * ```
 *
 * ```ts
 * import {ViewChild} from 'angular2/core';
 * import {App, Slides} from 'ionic-angular';
 *
 *
 * @App({
 *   templateUrl: 'main.html'
 * })
 * class MyApp {
 *   @ViewChild(Slides) slider: Slides;
 *
 *   goToSlide(index) {
 *     this.slider.slideTo(index, 500);
 *   }
 * }
 * ```
 *
 * @demo /docs/v2/demos/slides/
 * @see {@link /docs/v2/components#slides Slides Component Docs}
 *
 * Swiper.js:
 * The most modern mobile touch slider and framework with hardware accelerated transitions
 *
 * http://www.idangero.us/swiper/
 *
 * Copyright 2015, Vladimir Kharlampidi
 * The iDangero.us
 * http://www.idangero.us/
 *
 * Licensed under MIT
 */
export declare class Slides extends Ion {
    /**
     * @private
     */
    rapidUpdate: Function;
    /**
     * @private
     */
    private id;
    /**
     * @private
     */
    private slideId;
    /**
     * @private
     */
    private showPager;
    /**
     * @private
     */
    private slider;
    /**
     * @private
     */
    private maxScale;
    /**
     * @private
     */
    private zoomElement;
    /**
     * @private
     */
    private zoomGesture;
    /**
     * @private
     */
    private scale;
    /**
     * @private
     */
    private zoomLastPosX;
    /**
     * @private
     */
    private zoomLastPosY;
    /**
     * @private
     */
    private viewportWidth;
    /**
     * @private
     */
    private viewportHeight;
    /**
     * @private
     */
    private enableZoom;
    /**
     * @private
     */
    private touch;
    /**
     * @input {Object} Any configuration for the slides
     */
    options: any;
    /**
     * @private Deprecated
     */
    pager: any;
    /**
     * @private Deprecated
     */
    zoom: any;
    /**
     * @private Deprecated
     */
    zoomDuration: any;
    /**
     * @private Deprecated
     */
    zoomMax: any;
    /**
     * @private Deprecated
     */
    slideChangeStart: EventEmitter<any>;
    /**
     * @private Deprecated
     */
    change: EventEmitter<any>;
    /**
     * @output {any} Expression to evaluate when a slide change starts.
     */
    willChange: EventEmitter<any>;
    /**
     * @output {any} Expression to evaluate when a slide change ends.
     */
    didChange: EventEmitter<any>;
    /**
     * @output {any} Expression to evaluate when a slide moves.
     */
    move: EventEmitter<any>;
    constructor(elementRef: ElementRef);
    /**
     * @private
     */
    ngOnInit(): void;
    /**
     * @private
     */
    onTap(swiper: any, e: any): void;
    /**
     * @private
     */
    onClick(swiper: any, e: any): void;
    /**
     * @private
     */
    onDoubleTap(swiper: any, e: any): void;
    /**
     * @private
     */
    onLazyImageLoad(swiper: any, slide: any, img: any): void;
    /**
     * @private
     */
    onLazyImageReady(swiper: any, slide: any, img: any): void;
    /**
     * @private
     */
    initZoom(): void;
    /**
     * @private
     */
    resetZoom(): void;
    /**
     * @private
     */
    toggleZoom(swiper: any, e: any): void;
    /**
     * @private
     */
    onTransitionStart(swiper: any, e: any): void;
    /**
     * @private
     */
    onTransitionEnd(swiper: any, e: any): void;
    /**
     * @private
     */
    onTouchStart(e: any): void;
    /**
     * @private
     */
    onTouchMove(e: any): boolean;
    /**
     * @private
     */
    onTouchEnd(e: any): void;
    /**
     * @private
     * Update the underlying slider implementation. Call this if you've added or removed
     * child slides.
     */
    update(): void;
    /**
     * Transition to the specified slide.
     *
     * @param {number} index  The index number of the slide.
     * @param {number} speed  Transition duration (in ms). Optional.
     * @param {boolean} runCallbacks  Whether or not to emit the `willChange`/`didChange` events. Optional. Default true.
     */
    slideTo(index: number, speed: number, runCallbacks: boolean): void;
    /**
     * Transition to the next slide.
     *
     * @param {number} speed  Transition duration (in ms). Optional.
     * @param {boolean} runCallbacks  Whether or not to emit the `willChange`/`didChange` events. Optional. Default true.
     */
    slideNext(speed: number, runCallbacks: boolean): void;
    /**
     * Transition to the previous slide.
     *
     * @param {number} speed  Transition duration (in ms). Optional.
     * @param {boolean} runCallbacks  Whether or not to emit the `willChange`/`didChange` events. Optional. Default true.
     */
    slidePrev(speed: number, runCallbacks: boolean): void;
    /**
     * Get the index of the active slide.
     *
     * @returns {number} The index number of the current slide.
     */
    getActiveIndex(): number;
    /**
     * Get the total number of slides.
     *
     * @returns {number} The total number of slides.
     */
    length(): number;
    /**
     * Get whether or not the current slide is the last slide.
     *
     * @returns {boolean} If the slide is the last slide or not.
     */
    isEnd(): boolean;
    /**
     * Get whether or not the current slide is the first slide.
     *
     * @returns {boolean} If the slide is the first slide or not.
     */
    isBeginning(): boolean;
    /**
     * Get the `Swiper` instance.
     *
     * The Slides component wraps the `Swiper` component built by iDangero.us. See the
     * [Swiper API Docs](http://idangero.us/swiper/api/) for information on using
     * the `Swiper` instance directly.
     *
     * @returns {Swiper}
     */
    getSlider(): Swiper;
}
/**
 * @name Slide
 * @description
 * The Slide component is a child component of [Slides](../Slides). The template
 * should be written as `ion-slide`. Any slide content should be written
 * in this component and it should be used in conjunction with [Slides](../Slides).
 *
 * See the [Slides API Docs](../Slides) for more usage information.
 *
 * @demo /docs/v2/demos/slides/
 * @see {@link /docs/v2/api/components/slides/Slides/ Slides API Docs}
 */
export declare class Slide {
    /**
     * @private
     */
    private ele;
    /**
     * @private
     */
    zoom: any;
    constructor(elementRef: ElementRef, slides: Slides);
}
/**
 * @private
 */
export declare class SlideLazy {
}
