import * as React from 'react';
import { CSSAttribute } from 'goober';
import Star from './star';
export interface StarsRatingProps {
    allowClear?: boolean;
    allowHalf?: boolean;
    autoFocus?: boolean;
    classNamePrefix?: string;
    count?: number;
    defaultValue?: number;
    direction?: 'ltr' | 'rtl';
    disabled?: boolean;
    onBlur?: () => void;
    onChange?: (value?: number) => void;
    onFocus?: () => void;
    onHoverChange?: (value?: number) => void;
    style?: StarsRatingStyles;
    symbol?: React.ReactNode;
    tabIndex?: number;
    value?: number;
}
declare type StarsRatingStyles = {
    style?: CSSAttribute;
    full?: {
        first?: CSSAttribute;
        second?: CSSAttribute;
        star?: CSSAttribute;
    };
    half?: {
        first?: CSSAttribute;
        second?: CSSAttribute;
        star?: CSSAttribute;
    };
    zero?: {
        first?: CSSAttribute;
        second?: CSSAttribute;
        star?: CSSAttribute;
    };
    hover?: Omit<StarsRatingStyles, 'hover'>;
};
interface StarsRatingState {
    clearedValue?: number;
    hoverValue?: number;
    value?: number;
}
declare class StarsRating extends React.Component<StarsRatingProps, StarsRatingState> {
    static defaultProps: {
        allowClear: boolean;
        allowHalf: boolean;
        classNamePrefix: string;
        count: number;
        defaultValue: number;
        direction: string;
        disabled: boolean;
        onChange: () => void;
        onHoverChange: () => void;
        style: {};
        symbol: string;
        tabIndex: number;
    };
    ratingContainerRef?: HTMLUListElement | null;
    starRefs?: {
        [key: number]: Star;
    };
    constructor(props: StarsRatingProps);
    componentDidMount(): void;
    static getDerivedStateFromProps(nextProps: StarsRatingProps, state: StarsRatingState): StarsRatingState;
    onHover: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;
    onMouseLeave: () => void;
    onClick: (event: React.MouseEvent, index: number) => void;
    onFocus: () => void;
    onBlur: () => void;
    changeValue: (value: number) => void;
    saveStarRef: (index: number) => (node: Star) => void;
    getStarValue: (index: number, x: number) => number;
    focus: () => void;
    render(): JSX.Element;
}
export default StarsRating;
