import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
import { default as CxResizeObserver } from '../../../atoms/src/components/resize-observer/resize-observer.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { ShareOptionListItem } from '../../../types/src/share-option-list';
import { CSSResultGroup, PropertyValueMap } from 'lit';
import { default as CxShareOptionListItem } from './components/share-option-list-item';

/**
 * @summary The <cx-share-option-list> component is a list of share options.
 *
 */
export default class CxShareOptionList extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-icon': typeof CxIcon;
        'cx-resize-observer': typeof CxResizeObserver;
        'cx-share-option-list-item': typeof CxShareOptionListItem;
    };
    slotElement: HTMLSlotElement;
    scrollContainer: HTMLElement;
    placeholderEl: HTMLElement;
    /**
     * Specifies the share option list items.
     */
    data: ShareOptionListItem[];
    /**
     * Specifies the navigation type.
     */
    navigation: 'arrows' | undefined;
    /**
     * Specifies the orientation in which the carousel will lay out.
     */
    orientation: 'horizontal' | 'vertical';
    /**
     * Specifies how many share option list items should be shown at a given time.
     */
    slidesPerPage: number;
    /**
     * Specifies the number of share option list items the share option list will advance when scrolling,
     * useful when specifying a `slides-per-page` greater than one. It can't be higher than `slides-per-page`.
     */
    slidesPerMove: number;
    /**
     * Specifies the selected share option list item.
     */
    selectedItem: string;
    currentSlide: number;
    /**
     * The index of the active share option list item
     */
    activeSlide: number;
    scrolling: boolean;
    calculatedSlidesPerPage: number;
    private readonly localize;
    private mutationObserver;
    private pendingSlideChange;
    private slideObserver;
    private slidesCache;
    runConnectedCallback(): void;
    connectedUpdatedCallback(): void;
    disconnectedCallback(): void;
    protected willUpdate(changedProperties: PropertyValueMap<CxShareOptionList> | Map<PropertyKey, unknown>): void;
    calculateSlidesPerPage(): Promise<void>;
    private getPageCount;
    private getCurrentPage;
    private canScrollNext;
    private canScrollPrev;
    /**
     * @internal Gets all share option list items.
     */
    private getSlides;
    private invalidateSlidesCache;
    private handleKeyDown;
    private handleScroll;
    /** @internal Synchronizes the slides with the IntersectionObserver API. */
    private synchronizeSlides;
    private handleScrollEnd;
    private isShareOptionListItem;
    private readonly handleSlotChange;
    attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
    private initializeSlides;
    handleSlidesPerPageChange(): Promise<void>;
    handleSlideChange(): void;
    updateSlidesSnap(): void;
    /**
     * Move the share option list backward by `slides-per-move` slides.
     *
     * @param behavior - The behavior used for scrolling.
     */
    previous(behavior?: ScrollBehavior): void;
    /**
     * Move the share option list forward by `slides-per-move` slides.
     *
     * @param behavior - The behavior used for scrolling.
     */
    next(behavior?: ScrollBehavior): void;
    /**
     * Scrolls the share option list to the slide specified by `index`.
     *
     * @param index - The slide index.
     * @param behavior - The behavior used for scrolling.
     */
    goToSlide(index: number, behavior?: ScrollBehavior): void;
    /**
     * Scrolls to the given slide, allowing an optional duration (in ms) for the scroll animation.
     * If duration is provided and behavior is 'smooth', a custom smooth scroll is performed.
     *
     * @param slide - The target slide HTMLElement.
     * @param behavior - The scroll behavior ('auto' | 'smooth').
     * @param duration - Optional duration in milliseconds for the scroll animation.
     */
    private scrollToSlide;
    private handleNextButtonClick;
    private handlePreviousButtonClick;
    private handleShareOptionListItemSelected;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-share-option-list': CxShareOptionList;
    }
}
