import * as React from 'react';
declare type Props = {
    index: number;
    width: number;
    height: number;
    direction: string;
    effect: string;
    children: React.ReactNode;
    onClick: () => void;
    onChange?: (index: number) => void;
};
declare type State = {
    index: number;
    index3d: number;
    width: number;
    height: number;
    mouseXY: Array<number>;
    mouseDelta: Array<number>;
    distance: number;
    isMoved: boolean;
    isPressed: boolean;
    isHorizontal: boolean;
    is2dEffect: boolean;
    count: number;
    theta: number;
    radius: number;
    carousel: {
        translate: {
            x: number;
            y: number;
            z: number;
        };
        rotate: {
            x: number;
            y: number;
            z: number;
            deg: number;
        };
    };
    cells: Array<Cell>;
    children: Array<React.ReactNode>;
};
declare type Cell = {
    translate: {
        x: number;
        y: number;
        z: number;
    };
    rotate: {
        x: number;
        y: number;
        z: number;
        deg: number;
    };
    opacity: number;
    zIndex: number;
};
declare class Carousel extends React.Component<Props, State> {
    static getDerivedStateFromProps(nextProps: Props, prevState: State): {
        index: number;
        index3d: number;
        count: number;
        children: React.ReactNode[];
    } | null;
    constructor(props: Props);
    componentDidMount(): void;
    dragCell: () => {
        cells: any;
    };
    dragCarousel: () => {
        carousel: {
            rotate: {
                deg: number;
                x: number;
                y: number;
                z: number;
            };
            translate: {
                x: number;
                y: number;
                z: number;
            };
        };
    };
    handleMouseDown: (e: React.MouseEvent<any>) => void;
    handleClick: (e: React.MouseEvent<any>) => void;
    handleMouseMove: (e: {
        pageX: number;
        pageY: number;
    }) => void;
    handleMouseUp: () => void;
    render(): JSX.Element;
}
export default Carousel;
