import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
import { HTMLStencilElement } from '../../stencil-public-runtime';
import { BalBreakpointObserver, BalBreakpoints } from '../../utils/breakpoints';
import { BalConfigState, BalLanguage } from '../../utils/config';
import { BalMutationObserver } from '../../utils/mutation';
import { BalResizeObserver } from '../../utils/resize';
import { BalSwipeInfo, BalSwipeObserver } from '../../utils/swipe';
import { SwiperChildItem, SwiperInterface, SwiperUtil } from '../../utils/swiper';
import { BalVisibilityObserver } from '../../utils/visibility';
export declare class Carousel implements ComponentInterface, BalBreakpointObserver, BalSwipeObserver, BalMutationObserver, BalResizeObserver, BalVisibilityObserver, SwiperInterface {
    swiper: SwiperUtil;
    swiperIsLastSlideVisible: boolean;
    hasAnimated: boolean;
    isMobile: boolean;
    language: BalLanguage;
    el: HTMLStencilElement;
    /**
     * PUBLIC PROPERTY API
     * ------------------------------------------------------
     */
    /**
     * Defines the active slide index.
     */
    value: number;
    onValueChange(): void;
    /**
     * When how many slides are moved when going forward or backward.
     */
    steps: number;
    onStepsChange(): void;
    /**
     * Defines how many slides are visible in the container for the user.
     * `auto` will use the size of the actual item content
     */
    itemsPerView: 'auto' | 1 | 2 | 3 | 4;
    onItemsPerViewChange(): void;
    /**
     * Defines the layout of the navigation controls.
     */
    controls: 'small' | 'large' | 'dots' | 'tabs' | 'none';
    onControlsChange(): void;
    /**
     * Defines the layout of the navigation controls.
     */
    space: 'normal' | 'medium' | 'none';
    onSpaceChange(): void;
    /**
     * @deprecated
     * Defines the role of the carousel.
     */
    htmlRole: 'tablist' | 'list' | '';
    /**
     * If `true` items move under the controls, instead of having a gap
     */
    controlsOverflow: boolean;
    /**
     * If `true` the carousel can be used on dark background
     */
    inverted: boolean;
    /**
     * If `true` the carousel uses the full height
     */
    fullHeight: boolean;
    /**
     * Defines the image aspect ratio.
     * Should be combined with the interface `product`
     */
    aspectRatio?: '1by1' | '3by2' | '4by3' | '16by9';
    /**
     * Defines special looks.
     */
    interface: 'card' | 'image' | 'product' | '';
    onInterFaceChange(): void;
    /**
     * If `true` the controls will be sticky to the top.
     */
    controlsSticky: boolean;
    /**
     * If `true` vertical scrolling on mobile is enabled.
     */
    scrollY: boolean;
    /**
     * If `true` a light border is shown at the bottom.
     */
    border: boolean;
    /**
     * Emitted when a option got selected.
     */
    balChange: EventEmitter<BalEvents.BalCarouselChangeDetail>;
    /**
     * LIFECYCLE
     * ------------------------------------------------------
     */
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * LISTENERS
     * ------------------------------------------------------
     */
    blockVerticalScrolling(ev: any): Promise<void>;
    mutationObserverActive: boolean;
    mutationListener(): void;
    visibilityListener(): void;
    swipeListener({ left, right }: BalSwipeInfo): void;
    breakpointListener(breakpoints: BalBreakpoints): void;
    resizeListener(): void;
    /**
     * @internal define config for the component
     */
    configChanged(state: BalConfigState): Promise<void>;
    /**
     * PUBLIC METHODS
     * ------------------------------------------------------
     */
    previous(steps?: number): Promise<void>;
    next(steps?: number): Promise<void>;
    /**
     * @internal
     */
    getContainerId(): Promise<string>;
    /**
     * GETTERS
     * ------------------------------------------------------
     */
    swiperGetAllChildrenElements(): SwiperChildItem[];
    /**
     * EVENT HANDLERS
     * ------------------------------------------------------
     */
    swiperOnChange(index: number): void;
    /**
     * RENDER
     * ------------------------------------------------------
     */
    render(): any;
}
