import { CarouselDisplayMode } from '../../../Types/CarouselDisplayMode';
import { CarouselNavigationPosition } from '../../../Types/CarouselNavigationPosition';
import { SelectorElement } from '../Abstracts/Selector/SelectorElement';
import { CarouselItemElement } from './CarouselItemElement';
import type { ICarouselElementProps } from './ICarouselElementProps';
declare const CarouselElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new () => SelectorElement<any>) & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Carousel - A content navigation component that displays items in a horizontally scrolling slideshow format.
 *
 * Enables users to browse through multiple content items (images, cards, media) in a space-efficient
 * carousel layout with navigation controls. Supports automatic cycling, manual navigation, and
 * touch/swipe interactions for engaging content presentation. Offers two display modes: `slide`
 * (horizontal track) and `deck` (stacked cards with depth effect). Navigation button placement
 * can be configured via `navigationPosition` (`split`, `inside`, `outside`).
 *
 * @name CarouselElement
 * @element mosaik-carousel
 * @category Selectors
 *
 * @slot - Default content area for carousel items and navigation elements
 * @slot indicator - The indicator slot.
 *
 * @csspart content - Content area wrapping the item list or deck
 * @csspart indicator - Page indicator showing current position
 * @csspart next - Navigation button to go to the next item
 * @csspart previous - Navigation button to go to the previous item
 *
 * @cssprop {String} --carousel-deck-animation-duration - Transition duration for deck card animations
 * @cssprop {String} --carousel-deck-rotation - Rotation angle for pile cards (design token)
 * @cssprop {String} --carousel-font-family - The font family CSS custom property.
 * @cssprop {String} --carousel-font-letter-spacing - The font letter spacing CSS custom property.
 * @cssprop {String} --carousel-font-line-height - The font line height CSS custom property.
 * @cssprop {String} --carousel-font-size - The font size CSS custom property.
 * @cssprop {String} --carousel-font-text-decoration - The font text decoration CSS custom property.
 * @cssprop {String} --carousel-font-text-transform - The font text transform CSS custom property.
 * @cssprop {String} --carousel-font-weight - The font weight CSS custom property.
 * @cssprop {String} --carousel-gap - Spacing between carousel items
 * @cssprop {String} --carousel-padding-bottom - The padding bottom CSS custom property.
 * @cssprop {String} --carousel-padding-left - The padding left CSS custom property.
 * @cssprop {String} --carousel-padding-right - The padding right CSS custom property.
 * @cssprop {String} --carousel-padding-top - The padding top CSS custom property.
 * @cssprop {String} --carousel-shadow - The shadow CSS custom property.
 * @cssprop {String} --carousel-shadow-blur - The shadow blur CSS custom property.
 * @cssprop {String} --carousel-shadow-color - The shadow color CSS custom property.
 * @cssprop {String} --carousel-shadow-offset-x - The shadow offset x CSS custom property.
 * @cssprop {String} --carousel-shadow-offset-y - The shadow offset y CSS custom property.
 * @cssprop {String} --carousel-shadow-spread - The shadow spread CSS custom property.
 * @cssprop {String} --carousel-transition-duration - Animation duration for slide-mode item transitions
 * @cssprop {String} --carousel-transition-mode - The transition mode CSS custom property.
 * @cssprop {String} --carousel-transition-property - The transition property CSS custom property.
 * @cssprop {String} --carousel-translate - The translate CSS custom property.
 *
 * @dependency mosaik-fab - The Fab element.
 * @dependency mosaik-text - The Text element.
 *
 * @example
 * ```html
 * <!-- Slide carousel with outside navigation -->
 * <mosaik-carousel display-mode="slide" navigation-position="outside" show-navigation>
 *   <mosaik-carousel-item>
 *     <mosaik-image src="slide1.jpg" alt="Slide 1"></mosaik-image>
 *   </mosaik-carousel-item>
 *   <mosaik-carousel-item>
 *     <mosaik-image src="slide2.jpg" alt="Slide 2"></mosaik-image>
 *   </mosaik-carousel-item>
 * </mosaik-carousel>
 *
 * <!-- Deck carousel (Tinder-like stacked cards) -->
 * <mosaik-carousel display-mode="deck" show-navigation>
 *   <mosaik-carousel-item>
 *     <mosaik-card>Card 1</mosaik-card>
 *   </mosaik-carousel-item>
 *   <mosaik-carousel-item>
 *     <mosaik-card>Card 2</mosaik-card>
 *   </mosaik-carousel-item>
 *   <mosaik-carousel-item>
 *     <mosaik-card>Card 3</mosaik-card>
 *   </mosaik-carousel-item>
 * </mosaik-carousel>
 * ```
 *
 * @public
 *
 * @keyhandle LeftArrow - Navigates to the previous item in the carousel
 * @keyhandle RightArrow - Navigates to the next item in the carousel
 * @keyhandle Home - Navigates to the first item in the carousel
 * @keyhandle End - Navigates to the last item in the carousel
 */
export declare class CarouselElement extends CarouselElement_base implements ICarouselElementProps {
    private _listElement;
    private _position;
    private _hasPrevious;
    private _hasNext;
    private _loop;
    private _showNavigation;
    private _showIndicator;
    private _navigationPosition;
    private _displayMode;
    private _deckAnimating;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @override
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `loop` property.
     *
     * @public
     * @attr
     */
    get loop(): boolean;
    set loop(value: boolean);
    /**
     * Gets or sets the `showNavigation` property.
     *
     * @public
     * @attr
     */
    get showNavigation(): boolean;
    set showNavigation(value: boolean);
    /**
     * Gets or sets the `showIndicator` property.
     *
     * @public
     * @attr
     */
    get showIndicator(): boolean;
    set showIndicator(value: boolean);
    /**
    * Gets or sets the `hasPrevious` property.
    *
    * @public
    * @attr
    * @readonly
    */
    get hasPrevious(): boolean;
    private set hasPrevious(value);
    /**
     * Gets or sets the `hasNext` property.
     *
     * @public
     * @attr
     * @readonly
     */
    get hasNext(): boolean;
    private set hasNext(value);
    /**
     * Gets or sets the `navigationPosition` property.
     * Controls where the navigation buttons are placed relative to the carousel content.
     *
     * @public
     * @attr
     */
    get navigationPosition(): CarouselNavigationPosition;
    set navigationPosition(value: CarouselNavigationPosition);
    /**
     * Gets or sets the `displayMode` property.
     * Determines how carousel items are arranged and transitioned.
     * Use `slide` for a traditional horizontal track or `deck` for stacked card presentation.
     *
     * @public
     * @attr
     */
    get displayMode(): CarouselDisplayMode;
    set displayMode(value: CarouselDisplayMode);
    /**
     * Gets the items of the Carousel.
     *
     * @remark
     * It is important to override the base class property to ensure that only
     * `CarouselItemElement` instances are returned.
     *
     * @public
     * @readonly
     * @ignore
     */
    get items(): Array<CarouselItemElement>;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    select(item: CarouselItemElement): void;
    /**
     * @public
     * @override
     */
    selectNext(): void;
    /**
     * @public
     * @override
     */
    selectPrevious(): void;
    /**
     * @public
     * @override
     */
    selectFirst(): void;
    /**
     * @public
     * @override
     */
    selectLast(): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @protected
     * @override
     */
    protected onItemsChanged(): void;
    /**
     * Called when the `displayMode` property changes.
     * Re-applies the appropriate layout for the new mode.
     *
     * @protected
     */
    protected onDisplayModeChanged(): void;
    /**
     * Resets all deck item attributes to reflect the current selection.
     * Only manages state attributes - all visual presentation is handled in SCSS.
     *
     * @private
     */
    private updateDeckLayout;
    /**
     * Dismisses the current top card in the given direction.
     * The card slides off-screen (CSS transition), then snaps back behind the
     * pile and the next card becomes active.
     *
     * @param direction - The direction the card leaves ('next' or 'prev').
     * @private
     */
    private dismissDeckCard;
    /**
     * Brings a card from behind the pile to the top position.
     * The card is placed off-screen instantly, then transitions in as it
     * becomes the new active card.
     *
     * @param direction - The direction the card arrives from ('next' or 'prev').
     * @private
     */
    private arriveDeckCard;
    /**
     * Scrolls the slide-mode track so that the active item is in view.
     *
     * @private
     */
    private scrollToActiveItem;
    /**
     * Checks whether an item at a specific index is outside of the viewport.
     *
     * @private
     */
    private isOutOfView;
    /**
     * Checks whether an index is out of range.
     *
     * @private
     */
    private isOutOfRange;
}
/**
 * @public
 */
export declare namespace CarouselElement {
    type Props = ICarouselElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-carousel': CarouselElement;
    }
}
export {};
//# sourceMappingURL=CarouselElement.d.ts.map