/// <reference types="react" />
import { ReactElement, Themecolor } from '../../@declares';
import { InputTypes } from '.';
declare namespace Slider {
    type Size = 'small' | 'medium' | 'large';
    namespace Input {
        type Base = React.DOMAttributes<HTMLInputElement> & {
            tabIndex?: number;
            id?: string;
            discreteScale?: boolean;
            size?: Size;
            disabled?: boolean;
            value?: number | [number, number];
            color?: Color;
            /**
             * default min
             */
            trackMin?: number;
            min: number;
            max: number;
            step: number;
            legends?: boolean;
            onLegendRender?: LegendsCallback;
        };
        type Single = Base & InputTypes.CoreInput<number> & {
            ranged?: false;
        };
        type Range = Base & InputTypes.CoreInput<number[]> & {
            ranged: true;
        };
    }
    type Input = Input.Single | Input.Range;
    type Color = Themecolor | 'theme' | 'posi' | 'nega' | 'warn';
    type LegendsCallback = {
        (value: number): ReactElement;
    };
    type NormalizedData = {
        value: number;
        offsetLeft: number;
    };
    namespace Methods {
        type Component = {
            (p: Slider.Input): React.JSX.Element;
        };
        type FNs = {
            Small(props: Slider.Input): React.JSX.Element;
            Medium(props: Slider.Input): React.JSX.Element;
            Large(props: Slider.Input): React.JSX.Element;
            Range: {
                (props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
                Small(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
                Medium(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
                Large(props: Omit<Slider.Input.Range, 'ranged'>): React.JSX.Element;
            };
        };
    }
    type Methods = Methods.Component & Methods.FNs;
}
declare const Slider: Slider.Methods;
export { Slider, Slider as default };
