import React from 'react';
import PropTypes from 'prop-types';
import { strings } from '@douyinfe/semi-foundation/lib/cjs/rating/constants';
import '@douyinfe/semi-foundation/lib/cjs/rating/rating.css';
import { RatingItemFoundation, RatingItemAdapter } from '@douyinfe/semi-foundation/lib/cjs/rating/foundation';
import BaseComponent, { BaseProps } from '../_base/baseComponent';
type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
export interface RatingItemProps extends BaseProps {
    value: number;
    index: number;
    prefixCls: string;
    allowHalf: boolean;
    onHover: (e: React.MouseEvent, index: number) => void;
    onClick: (e: React.MouseEvent | React.KeyboardEvent, index: number) => void;
    character: React.ReactNode;
    focused: boolean;
    disabled: boolean;
    count: number;
    ariaLabelPrefix: string;
    size: number | ArrayElement<typeof strings.SIZE_SET>;
    'aria-describedby'?: React.AriaAttributes['aria-describedby'];
    onFocus?: (e: React.FocusEvent) => void;
    onBlur?: (e: React.FocusEvent) => void;
    preventScroll?: boolean;
}
export interface RatingItemState {
    firstStarFocus: boolean;
    secondStarFocus: boolean;
}
export default class Item extends BaseComponent<RatingItemProps, RatingItemState> {
    static propTypes: {
        value: PropTypes.Requireable<number>;
        index: PropTypes.Requireable<number>;
        prefixCls: PropTypes.Requireable<string>;
        allowHalf: PropTypes.Requireable<boolean>;
        onHover: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        character: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        focused: PropTypes.Requireable<boolean>;
        disabled: PropTypes.Requireable<boolean>;
        count: PropTypes.Requireable<number>;
        ariaLabelPrefix: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<NonNullable<number | "default" | "small">>;
        'aria-describedby': PropTypes.Requireable<string>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        preventScroll: PropTypes.Requireable<boolean>;
    };
    foundation: RatingItemFoundation;
    constructor(props: RatingItemProps);
    get adapter(): RatingItemAdapter<RatingItemProps, RatingItemState>;
    firstStar: HTMLDivElement;
    secondStar: HTMLDivElement;
    onHover: React.MouseEventHandler;
    onClick: React.MouseEventHandler;
    onFocus: (e: any, star: any) => void;
    onBlur: (e: any, star: any) => void;
    onKeyDown: React.KeyboardEventHandler;
    starFocus: () => void;
    saveFirstStar: (node: HTMLDivElement) => void;
    saveSecondStar: (node: HTMLDivElement) => void;
    render(): React.JSX.Element;
}
export {};
