import { Swiper } from "swiper";
import type { SwiperOptions } from "swiper/types";
export declare const defaultConfig: SwiperOptions;
export default class Carousel {
    element: HTMLElement;
    config: SwiperOptions;
    viewport: HTMLElement;
    track: HTMLElement;
    instance: Swiper;
    carouselId?: string;
    private isScrollbarDragging;
    private externalControlsState;
    private resizeObserver?;
    private resizeRafId?;
    private boundWindowResizeHandler;
    private bleedResizeHandler?;
    private static readonly OVERFLOW_EPSILON_PX;
    private getViewportWrapper;
    private getSlidesPerView;
    private setScrollbarVisible;
    private getSlidesContentWidth;
    private getOverflowWidth;
    private hasScrollableContent;
    constructor(element: HTMLElement, config?: Partial<SwiperOptions>);
    init(): void;
    private handleWindowResize;
    /**
     * Sync scrollbar position with current slide.
     * This ensures the scrollbar reflects the correct position when carousel is initialized with initialSlide.
     */
    syncScrollbar(): void;
    private observeVisibilityChanges;
    /**
     * Fix scrollbar drag size and position for bleed-right carousels.
     * Overrides Swiper's default scrollbar calculations to work correctly with bleed-right layouts.
     */
    fixBleedRightScrollbar(): void;
    getElements(): void;
    getCustomOptions(): void;
    /**
     * Enable or disable the carousel based on whether content requires scrolling.
     * Carousel is enabled only when there are more slides than can fit in the current viewport.
     */
    private updateCarouselEnabledState;
    private applyBleedInsets;
    /**
     * Configure bleed-right carousel to extend beyond the container edge.
     * Calculates the exact offset needed for the carousel to reach the viewport edge
     * while keeping the last slide aligned with the container edge when scrolled to the end.
     * When slidesPerView is a whole number (integer), the bleed effect is disabled.
     */
    adjustConfigForBleedRight(): void;
    /**
     * Handle carousel slide change events.
     * Updates tooltip positions and accessibility states for the active slide.
     */
    handleSlideChange(): void;
    /**
     * Update tooltip positions for elements within a slide.
     */
    updateTooltipPosition(element: HTMLElement): void;
    /**
     * Hide all tooltips for non-active slides.
     */
    hideAllTooltips(elements: NodeListOf<Element>): void;
    /**
     * Initialize external navigation controls that reference this carousel via data attributes.
     * Supports prev/next buttons placed anywhere in the DOM.
     */
    initExternalControls(): void;
    /**
     * Update the disabled state of external navigation controls.
     * Controls are disabled at the start/end of the carousel based on slide position.
     */
    updateExternalControlsState(force?: boolean): void;
    private applyExternalControlsState;
    /**
     * Navigate to the next slide.
     */
    slideNext(): void;
    /**
     * Navigate to the previous slide.
     */
    slidePrev(): void;
    /**
     * Get the current active slide index.
     */
    getActiveIndex(): number;
    /**
     * Register a callback for slide change events.
     */
    onSlideChange(callback: (activeIndex: number) => void): void;
    destroy(): void;
    update(): void;
    static getInstance(el: HTMLElement): Carousel | null;
    /**
     * Find a carousel instance by its ID or data-carousel-id attribute.
     */
    static getInstanceById(carouselId: string): Carousel | null;
}
