import { AllowedComponentProps } from 'vue';
import { Carousel } from 'vue3-carousel';
import { ComponentCustomProps } from 'vue';
import { Ref } from 'vue';
import { RendererElement } from 'vue';
import { RendererNode } from 'vue';
import { ShallowUnwrapRef } from 'vue';
import { VNode } from 'vue';
import { VNodeProps } from 'vue';

/**
 * Helper type representing the template ref (used with the "ref" attribute) for a Carousel instance.
 * This addresses an issue encountered when using the `InstanceType` utility type with generic Vue components.
 * For more details, refer to the known issue: {@link https://github.com/vuejs/language-tools/issues/3206}
 * Additionally, explore Vue's documentation on typing component template refs:
 * {@link https://vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs}
 *
 * The solution implemented here involves directly defining the instance type of the Vue3Carousel component.
 * This approach works because our Carousel component serves as a wrapper around the Vue3Carousel.
 */
export declare type CarouselInstanceRef = Ref<InstanceType<typeof Carousel>> & {
    next: () => void;
    prev: () => void;
    slideTo: (index: number) => void;
};

/**
 * Minimum data required to render a carousel slide.  The array
 * of objects passed must have at least these properties.
 */
export declare interface CarouselSlide {
    id: number | string;
    imageUrl: string;
}

/**
 * Which direction the carousel image should slide
 */
export declare type CarouselSlideDirection = 'left' | 'right';

declare const _default: <Slide extends CarouselSlide>(__VLS_props: {
    readonly onClick?: ((slide: Slide) => any) | undefined;
    itemsToShow?: number | undefined;
    itemsToScroll?: number | undefined;
    pauseAutoplayOnHover?: boolean | undefined;
    readonly onTransition?: ((slide: Slide) => any) | undefined;
    readonly "onTransition:multi"?: ((slides: Slide[]) => any) | undefined;
    slides: Slide[];
    autoplayInterval?: number | undefined;
    hideNavigation?: boolean | undefined;
    hidePagination?: boolean | undefined;
    loop?: boolean | undefined;
    pagination?: "dot" | "tile" | undefined;
    paginationTileRadius?: "standard" | "full" | undefined;
    roundBorders?: boolean | undefined;
    staticPaginationDots?: boolean | undefined;
} & VNodeProps & AllowedComponentProps & ComponentCustomProps, __VLS_ctx?: {
    attrs: any;
    slots: {
        slide?(_: {
            slide: Slide;
            index: number;
        }): any;
    };
    emit: {
        (e: 'click', slide: Slide): void;
        (e: 'transition', slide: Slide): void;
        (e: 'transition:multi', slides: Slide[]): void;
    };
} | undefined, __VLS_expose?: ((exposed: ShallowUnwrapRef<    {
next: () => void | undefined;
prev: () => void | undefined;
slideTo: (index: number) => void;
}>) => void) | undefined, __VLS_setup?: Promise<{
    props: {
        readonly onClick?: ((slide: Slide) => any) | undefined;
        itemsToShow?: number | undefined;
        itemsToScroll?: number | undefined;
        pauseAutoplayOnHover?: boolean | undefined;
        readonly onTransition?: ((slide: Slide) => any) | undefined;
        readonly "onTransition:multi"?: ((slides: Slide[]) => any) | undefined;
        slides: Slide[];
        autoplayInterval?: number | undefined;
        hideNavigation?: boolean | undefined;
        hidePagination?: boolean | undefined;
        loop?: boolean | undefined;
        pagination?: "dot" | "tile" | undefined;
        paginationTileRadius?: "standard" | "full" | undefined;
        roundBorders?: boolean | undefined;
        staticPaginationDots?: boolean | undefined;
    } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
    expose(exposed: ShallowUnwrapRef<    {
    next: () => void | undefined;
    prev: () => void | undefined;
    slideTo: (index: number) => void;
    }>): void;
    attrs: any;
    slots: {
        slide?(_: {
            slide: Slide;
            index: number;
        }): any;
    };
    emit: {
        (e: 'click', slide: Slide): void;
        (e: 'transition', slide: Slide): void;
        (e: 'transition:multi', slides: Slide[]): void;
    };
}>) => VNode<RendererNode, RendererElement, {
[key: string]: any;
}> & {
    __ctx?: {
        props: {
            readonly onClick?: ((slide: Slide) => any) | undefined;
            itemsToShow?: number | undefined;
            itemsToScroll?: number | undefined;
            pauseAutoplayOnHover?: boolean | undefined;
            readonly onTransition?: ((slide: Slide) => any) | undefined;
            readonly "onTransition:multi"?: ((slides: Slide[]) => any) | undefined;
            slides: Slide[];
            autoplayInterval?: number | undefined;
            hideNavigation?: boolean | undefined;
            hidePagination?: boolean | undefined;
            loop?: boolean | undefined;
            pagination?: "dot" | "tile" | undefined;
            paginationTileRadius?: "standard" | "full" | undefined;
            roundBorders?: boolean | undefined;
            staticPaginationDots?: boolean | undefined;
        } & VNodeProps & AllowedComponentProps & ComponentCustomProps;
        expose(exposed: ShallowUnwrapRef<    {
        next: () => void | undefined;
        prev: () => void | undefined;
        slideTo: (index: number) => void;
        }>): void;
        attrs: any;
        slots: {
            slide?(_: {
                slide: Slide;
                index: number;
            }): any;
        };
        emit: {
            (e: 'click', slide: Slide): void;
            (e: 'transition', slide: Slide): void;
            (e: 'transition:multi', slides: Slide[]): void;
        };
    } | undefined;
};
export default _default;

export { }
