import { CarouselResponsiveOptions, CarouselPageEvent, CarouselItemTemplateContext } from 'primeng/types/carousel';
export * from 'primeng/types/carousel';
import * as i0 from '@angular/core';
import { ElementRef, NgZone, EventEmitter, QueryList, TemplateRef, SimpleChanges } from '@angular/core';
import * as i2 from 'primeng/api';
import { Header, Footer, PrimeTemplate } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { ButtonProps } from 'primeng/button';
import * as _primeuix_styled from '@primeuix/styled';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Carousel is a content slider featuring various customization options.
 *
 * [Live Demo](https://www.primeng.org/carousel/)
 *
 * @module carouselstyle
 *
 */
declare enum CarouselClasses {
    /**
     * Class name of the root element
     */
    root = "p-carousel",
    /**
     * Class name of the header element
     */
    header = "p-carousel-header",
    /**
     * Class name of the content container element
     */
    contentContainer = "p-carousel-content-container",
    /**
     * Class name of the content element
     */
    content = "p-carousel-content",
    /**
     * Class name of the previous button element
     */
    pcPrevButton = "p-carousel-prev-button",
    /**
     * Class name of the viewport element
     */
    viewport = "p-carousel-viewport",
    /**
     * Class name of the item list element
     */
    itemList = "p-carousel-item-list",
    /**
     * Class name of the item clone element
     */
    itemClone = "p-carousel-item-clone",
    /**
     * Class name of the item element
     */
    item = "p-carousel-item",
    /**
     * Class name of the next button element
     */
    pcNextButton = "p-carousel-next-button",
    /**
     * Class name of the indicator list element
     */
    indicatorList = "p-carousel-indicator-list",
    /**
     * Class name of the indicator element
     */
    indicator = "p-carousel-indicator",
    /**
     * Class name of the indicator button element
     */
    indicatorButton = "p-carousel-indicator-button",
    /**
     * Class name of the footer element
     */
    footer = "p-carousel-footer"
}
declare class CarouselStyle extends BaseStyle {
    name: string;
    style: _primeuix_styled.StyleType;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-carousel-vertical': any;
            'p-carousel-horizontal': boolean;
        })[];
        header: string;
        contentContainer: string;
        content: string;
        pcPrevButton: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        viewport: string;
        itemList: string;
        itemClone: ({ instance, index }: {
            instance: any;
            index: any;
        }) => (string | {
            'p-carousel-item-active': boolean;
            'p-carousel-item-start': boolean;
            'p-carousel-item-end': boolean;
        })[];
        item: ({ instance, index }: {
            instance: any;
            index: any;
        }) => (string | {
            'p-carousel-item-active': boolean;
            'p-carousel-item-start': boolean;
            'p-carousel-item-end': boolean;
        })[];
        pcNextButton: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
        })[];
        indicatorList: ({ instance }: {
            instance: any;
        }) => any[];
        indicator: ({ instance, index }: {
            instance: any;
            index: any;
        }) => (string | {
            'p-carousel-indicator-active': boolean;
        })[];
        indicatorButton: ({ instance }: {
            instance: any;
        }) => any[];
        footer: string;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<CarouselStyle, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CarouselStyle>;
}
interface CarouselStyle extends BaseStyle {
}

/**
 * Carousel is a content slider featuring various customization options.
 * @group Components
 */
declare class Carousel extends BaseComponent {
    el: ElementRef;
    zone: NgZone;
    componentName: string;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * Index of the first item.
     * @defaultValue 0
     * @group Props
     */
    get page(): number;
    set page(val: number);
    /**
     * Number of items per page.
     * @defaultValue 1
     * @group Props
     */
    get numVisible(): number;
    set numVisible(val: number);
    /**
     * Number of items to scroll.
     * @defaultValue 1
     * @group Props
     */
    get numScroll(): number;
    set numScroll(val: number);
    /**
     * An array of options for responsive design.
     * @see {CarouselResponsiveOptions}
     * @group Props
     */
    responsiveOptions: CarouselResponsiveOptions[] | undefined;
    /**
     * Specifies the layout of the component.
     * @group Props
     */
    orientation: 'horizontal' | 'vertical';
    /**
     * Height of the viewport in vertical layout.
     * @group Props
     */
    verticalViewPortHeight: string;
    /**
     * Style class of main content.
     * @group Props
     */
    contentClass: string;
    /**
     * Style class of the indicator items.
     * @group Props
     */
    indicatorsContentClass: string;
    /**
     * Inline style of the indicator items.
     * @group Props
     */
    indicatorsContentStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the indicators.
     * @group Props
     */
    indicatorStyleClass: string;
    /**
     * Style of the indicators.
     * @group Props
     */
    indicatorStyle: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * An array of objects to display.
     * @defaultValue null
     * @group Props
     */
    get value(): any[];
    set value(val: any[]);
    /**
     * Defines if scrolling would be infinite.
     * @group Props
     */
    circular: boolean;
    /**
     * Whether to display indicator container.
     * @group Props
     */
    showIndicators: boolean;
    /**
     * Whether to display navigation buttons in container.
     * @group Props
     */
    showNavigators: boolean;
    /**
     * Time in milliseconds to scroll items automatically.
     * @group Props
     */
    autoplayInterval: number;
    /**
     * Style class of the viewport container.
     * @deprecated since v20.0.0, use `class` instead.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Used to pass all properties of the ButtonProps to the Button component.
     * @group Props
     */
    prevButtonProps: ButtonProps;
    /**
     * Used to pass all properties of the ButtonProps to the Button component.
     * @group Props
     */
    nextButtonProps: ButtonProps;
    /**
     * Callback to invoke after scroll.
     * @param {CarouselPageEvent} event - Custom page event.
     * @group Emits
     */
    onPage: EventEmitter<CarouselPageEvent>;
    itemsContainer: ElementRef | undefined;
    indicatorContent: ElementRef | undefined;
    headerFacet: QueryList<Header> | undefined;
    footerFacet: QueryList<Footer> | undefined;
    _numVisible: number;
    _numScroll: number;
    _oldNumScroll: number;
    prevState: any;
    defaultNumScroll: number;
    defaultNumVisible: number;
    _page: number;
    _value: any[] | null | undefined;
    carouselStyle: any;
    id: string | undefined;
    totalShiftedItems: any;
    isRemainingItemsAdded: boolean;
    animationTimeout: any;
    translateTimeout: any;
    remainingItems: number;
    _items: any[] | undefined;
    startPos: any;
    documentResizeListener: any;
    clonedItemsForStarting: any[] | undefined;
    clonedItemsForFinishing: any[] | undefined;
    allowAutoplay: boolean | undefined;
    interval: any;
    isCreated: boolean | undefined;
    swipeThreshold: number;
    /**
     * Custom item template.
     * @group Templates
     */
    itemTemplate: TemplateRef<CarouselItemTemplateContext> | undefined;
    /**
     * Custom header template.
     * @group Templates
     */
    headerTemplate: TemplateRef<void> | undefined;
    /**
     * Custom footer template.
     * @group Templates
     */
    footerTemplate: TemplateRef<void> | undefined;
    /**
     * Custom previous icon template.
     * @group Templates
     */
    previousIconTemplate: TemplateRef<void> | undefined;
    /**
     * Custom next icon template.
     * @group Templates
     */
    nextIconTemplate: TemplateRef<void> | undefined;
    _itemTemplate: TemplateRef<CarouselItemTemplateContext> | undefined;
    _headerTemplate: TemplateRef<void> | undefined;
    _footerTemplate: TemplateRef<void> | undefined;
    _previousIconTemplate: TemplateRef<void> | undefined;
    _nextIconTemplate: TemplateRef<void> | undefined;
    window: Window;
    _componentStyle: CarouselStyle;
    constructor(el: ElementRef, zone: NgZone);
    onChanges(simpleChange: SimpleChanges): void;
    templates: QueryList<PrimeTemplate> | undefined;
    onAfterContentInit(): void;
    onAfterContentChecked(): void;
    createStyle(): void;
    calculatePosition(): void;
    setCloneItems(): void;
    firstIndex(): number;
    lastIndex(): number;
    totalDots(): number;
    totalDotsArray(): any[];
    isVertical(): boolean;
    isCircular(): boolean;
    isAutoplay(): boolean | 0 | undefined;
    isForwardNavDisabled(): boolean;
    isBackwardNavDisabled(): boolean;
    isEmpty(): boolean;
    navForward(e: MouseEvent | TouchEvent, index?: number): void;
    navBackward(e: MouseEvent | TouchEvent, index?: number): void;
    onDotClick(e: MouseEvent, index: number): void;
    onIndicatorKeydown(event: KeyboardEvent): void;
    onRightKey(): void;
    onLeftKey(): void;
    onHomeKey(): void;
    onEndKey(): void;
    onTabKey(): void;
    findFocusedIndicatorIndex(): number;
    changedFocusedIndicator(prevInd: any, nextInd: any): void;
    step(dir: number, page?: number): void;
    startAutoplay(): void;
    stopAutoplay(changeAllow?: boolean): void;
    isPlaying(): boolean;
    onTransitionEnd(): void;
    onTouchStart(e: TouchEvent): void;
    onTouchMove(e: TouchEvent | MouseEvent): void;
    onTouchEnd(e: TouchEvent): void;
    changePageOnTouch(e: TouchEvent | MouseEvent, diff: number): void;
    ariaPrevButtonLabel(): string | undefined;
    ariaSlideLabel(): string | undefined;
    ariaNextButtonLabel(): string | undefined;
    ariaSlideNumber(value: any): string | undefined;
    ariaPageLabel(value: any): string | undefined;
    getIndicatorPTOptions(key: string, index: number): any;
    getItemPTOptions(key: string, index: number): any;
    bindDocumentListeners(): void;
    unbindDocumentListeners(): void;
    onDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Carousel, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<Carousel, "p-carousel", never, { "page": { "alias": "page"; "required": false; }; "numVisible": { "alias": "numVisible"; "required": false; }; "numScroll": { "alias": "numScroll"; "required": false; }; "responsiveOptions": { "alias": "responsiveOptions"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "verticalViewPortHeight": { "alias": "verticalViewPortHeight"; "required": false; }; "contentClass": { "alias": "contentClass"; "required": false; }; "indicatorsContentClass": { "alias": "indicatorsContentClass"; "required": false; }; "indicatorsContentStyle": { "alias": "indicatorsContentStyle"; "required": false; }; "indicatorStyleClass": { "alias": "indicatorStyleClass"; "required": false; }; "indicatorStyle": { "alias": "indicatorStyle"; "required": false; }; "value": { "alias": "value"; "required": false; }; "circular": { "alias": "circular"; "required": false; }; "showIndicators": { "alias": "showIndicators"; "required": false; }; "showNavigators": { "alias": "showNavigators"; "required": false; }; "autoplayInterval": { "alias": "autoplayInterval"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "prevButtonProps": { "alias": "prevButtonProps"; "required": false; }; "nextButtonProps": { "alias": "nextButtonProps"; "required": false; }; }, { "onPage": "onPage"; }, ["headerFacet", "footerFacet", "itemTemplate", "headerTemplate", "footerTemplate", "previousIconTemplate", "nextIconTemplate", "templates"], ["p-header", "p-footer"], true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_circular: unknown;
    static ngAcceptInputType_showIndicators: unknown;
    static ngAcceptInputType_showNavigators: unknown;
    static ngAcceptInputType_autoplayInterval: unknown;
}
declare class CarouselModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<CarouselModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<CarouselModule, never, [typeof Carousel, typeof i2.SharedModule], [typeof Carousel, typeof i2.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<CarouselModule>;
}

export { Carousel, CarouselClasses, CarouselModule, CarouselStyle };
