import * as react from 'react';
import { ReactNode, Dispatch, SetStateAction } from 'react';
import { CSSUIObject, RequiredPropGetter } from '@yamada-ui/core';
import { MotionProps } from '@yamada-ui/motion';
import { Dict, Merge } from '@yamada-ui/utils';
import { GroupProps, InputProps, ItemProps } from './use-rating.js';
import 'react/jsx-runtime';
import '@yamada-ui/form-control';
import './rating-group.js';
import './rating-item.js';
import './use-rating-item.js';

interface RatingContext {
    id: string;
    name: string;
    decimal: number;
    emptyIcon: ((value: number) => ReactNode) | ReactNode | undefined;
    filledIcon: ((value: number) => ReactNode) | ReactNode | undefined;
    highlightSelectedOnly: boolean;
    hoveredValue: number;
    outside: boolean;
    resolvedValue: number;
    roundedValue: number;
    setHoveredValue: Dispatch<SetStateAction<number>>;
    setValue: Dispatch<SetStateAction<number>>;
    styles: {
        [key: string]: CSSUIObject | undefined;
    };
    value: number;
    formControlProps: Dict;
    getGroupProps: RequiredPropGetter<Merge<MotionProps, {
        value: number;
    }>, MotionProps>;
    groupProps: GroupProps | undefined;
    inputProps: InputProps | undefined;
    itemProps: ItemProps | undefined;
}
declare const RatingProvider: react.Provider<RatingContext>;
declare const useRatingContext: () => RatingContext;

export { RatingProvider, useRatingContext };
