import { ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef, AfterViewInit } from '@angular/core';
import { CarouselItem } from '../../models/carousel-item.model';
import { CarouselConfig } from '../../models/carousel-config.model';
import * as i0 from "@angular/core";
export declare class CarouselComponent implements OnInit, OnDestroy, AfterViewInit {
    items: CarouselItem[];
    config: CarouselConfig;
    pageChange: EventEmitter<number>;
    itemClick: EventEmitter<CarouselItem>;
    carouselStage?: ElementRef;
    carouselContent?: ElementRef;
    contentTemplate?: TemplateRef<any>;
    currentPageIndex: number;
    totalPages: number;
    isPlaying: boolean;
    isPaused: boolean;
    isHovering: boolean;
    isDragging: boolean;
    dragStartX: number;
    dragCurrentX: number;
    initialTransform: number;
    currentTransform: number;
    loadedImages: Set<string>;
    adjacentImagesLoaded: boolean;
    private autoPlaySubscription?;
    private touchStartX;
    private touchEndX;
    private touchStartY;
    private touchStartTime;
    private swipeSubscriptions;
    private mousedownSubscription?;
    private mousemoveSubscription?;
    private mouseupSubscription?;
    private mouseleaveSubscription?;
    get currentPage(): number;
    get pages(): number[];
    get blocks(): number[];
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    onMouseEnter(): void;
    onMouseLeave(): void;
    private calculateTotalPages;
    private initializeCarousel;
    goToPage(pageIndex: number): void;
    private preloadAdjacentImages;
    private preloadImage;
    private updateContentTransform;
    next(): void;
    prev(): void;
    play(): void;
    pauseAutoPlay(): void;
    resumeAutoPlay(): void;
    pause(): void;
    togglePlay(): void;
    private stopAutoPlay;
    private setupTouchEvents;
    private handleTouchStart;
    private handleTouchMove;
    private handleTouchEnd;
    private setupMouseEvents;
    private handleMouseDown;
    private handleMouseMove;
    private handleMouseUp;
    private cleanupTouchEvents;
    private cleanupMouseEvents;
    isFirstPage(): boolean;
    isLastPage(): boolean;
    shouldDisableNavButton(direction: 'prev' | 'next'): boolean;
    trackByFn(index: number, item: CarouselItem): string | number;
    static ɵfac: i0.ɵɵFactoryDeclaration<CarouselComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CarouselComponent, "cfc-carousel", never, { "items": { "alias": "items"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "pageChange": "pageChange"; "itemClick": "itemClick"; }, ["contentTemplate"], ["*", "[carouselContent]"], false, never>;
}
