import { type CSSProperties, type ExtractPropTypes, type PropType } from 'vue';
import type { AriaValueFormat } from './interface';
import { type VueNode } from '../_util/type';
import { type MarkObj } from './Marks';
export type RangeConfig = {
    editable?: boolean;
    draggableTrack?: boolean;
    /** Set min count when `editable` */
    minCount?: number;
    /** Set max count when `editable` */
    maxCount?: number;
};
export interface SliderRef {
    focus: () => void;
    blur: () => void;
}
export declare const sliderProps: () => {
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    className: StringConstructor;
    style: PropType<CSSProperties>;
    classNames: PropType<Partial<Record<import("./interface").SemanticName, string>>>;
    styles: PropType<Partial<Record<import("./interface").SemanticName, CSSProperties>>>;
    id: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    keyboard: {
        type: BooleanConstructor;
        default: boolean;
    };
    autoFocus: {
        type: BooleanConstructor;
        default: any;
    };
    onFocus: PropType<(e: FocusEvent) => void>;
    onBlur: PropType<(e: FocusEvent) => void>;
    range: {
        type: PropType<boolean | RangeConfig>;
        default: boolean | RangeConfig;
    };
    /** @deprecated Use `range.minCount` or `range.maxCount` to handle this */
    count: NumberConstructor;
    min: {
        type: NumberConstructor;
        default: number;
    };
    max: {
        type: NumberConstructor;
        default: number;
    };
    step: {
        type: NumberConstructor;
        default: number;
    };
    value: PropType<number | number[]>;
    defaultValue: PropType<number | number[]>;
    onChange: PropType<(value: number | number[]) => void>;
    'onUpdate:value': PropType<(value: number | number[]) => void>;
    /** @deprecated It's always better to use `onChange` instead */
    onBeforeChange: PropType<(value: number | number[]) => void>;
    /** @deprecated Use `onChangeComplete` instead */
    onAfterChange: PropType<(value: number | number[]) => void>;
    onChangeComplete: PropType<(value: number | number[]) => void>;
    allowCross: {
        type: BooleanConstructor;
        default: boolean;
    };
    pushable: (BooleanConstructor | NumberConstructor)[];
    reverse: {
        type: BooleanConstructor;
        default: any;
    };
    vertical: {
        type: BooleanConstructor;
        default: any;
    };
    included: {
        type: BooleanConstructor;
        default: boolean;
    };
    startPoint: NumberConstructor;
    /** @deprecated Please use `styles.track` instead */
    trackStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.handle` instead */
    handleStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.rail` instead */
    railStyle: PropType<CSSProperties>;
    dotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    activeDotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    marks: PropType<Record<string | number, VueNode | MarkObj>>;
    dots: {
        type: BooleanConstructor;
        default: any;
    };
    handleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    activeHandleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    track: {
        type: BooleanConstructor;
        default: any;
    };
    tabIndex: {
        type: PropType<number | number[]>;
        default: number;
    };
    ariaLabelForHandle: PropType<string | string[]>;
    ariaLabelledByForHandle: PropType<string | string[]>;
    ariaRequired: {
        type: BooleanConstructor;
        default: any;
    };
    ariaValueTextFormatterForHandle: PropType<AriaValueFormat | AriaValueFormat[]>;
};
export type SliderProps = ExtractPropTypes<ReturnType<typeof sliderProps>>;
declare const Slider: import("vue").DefineComponent<ExtractPropTypes<{
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    className: StringConstructor;
    style: PropType<CSSProperties>;
    classNames: PropType<Partial<Record<import("./interface").SemanticName, string>>>;
    styles: PropType<Partial<Record<import("./interface").SemanticName, CSSProperties>>>;
    id: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    keyboard: {
        type: BooleanConstructor;
        default: boolean;
    };
    autoFocus: {
        type: BooleanConstructor;
        default: any;
    };
    onFocus: PropType<(e: FocusEvent) => void>;
    onBlur: PropType<(e: FocusEvent) => void>;
    range: {
        type: PropType<boolean | RangeConfig>;
        default: boolean | RangeConfig;
    };
    /** @deprecated Use `range.minCount` or `range.maxCount` to handle this */
    count: NumberConstructor;
    min: {
        type: NumberConstructor;
        default: number;
    };
    max: {
        type: NumberConstructor;
        default: number;
    };
    step: {
        type: NumberConstructor;
        default: number;
    };
    value: PropType<number | number[]>;
    defaultValue: PropType<number | number[]>;
    onChange: PropType<(value: number | number[]) => void>;
    'onUpdate:value': PropType<(value: number | number[]) => void>;
    /** @deprecated It's always better to use `onChange` instead */
    onBeforeChange: PropType<(value: number | number[]) => void>;
    /** @deprecated Use `onChangeComplete` instead */
    onAfterChange: PropType<(value: number | number[]) => void>;
    onChangeComplete: PropType<(value: number | number[]) => void>;
    allowCross: {
        type: BooleanConstructor;
        default: boolean;
    };
    pushable: (BooleanConstructor | NumberConstructor)[];
    reverse: {
        type: BooleanConstructor;
        default: any;
    };
    vertical: {
        type: BooleanConstructor;
        default: any;
    };
    included: {
        type: BooleanConstructor;
        default: boolean;
    };
    startPoint: NumberConstructor;
    /** @deprecated Please use `styles.track` instead */
    trackStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.handle` instead */
    handleStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.rail` instead */
    railStyle: PropType<CSSProperties>;
    dotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    activeDotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    marks: PropType<Record<string | number, VueNode | MarkObj>>;
    dots: {
        type: BooleanConstructor;
        default: any;
    };
    handleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    activeHandleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    track: {
        type: BooleanConstructor;
        default: any;
    };
    tabIndex: {
        type: PropType<number | number[]>;
        default: number;
    };
    ariaLabelForHandle: PropType<string | string[]>;
    ariaLabelledByForHandle: PropType<string | string[]>;
    ariaRequired: {
        type: BooleanConstructor;
        default: any;
    };
    ariaValueTextFormatterForHandle: PropType<AriaValueFormat | AriaValueFormat[]>;
}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ExtractPropTypes<{
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    className: StringConstructor;
    style: PropType<CSSProperties>;
    classNames: PropType<Partial<Record<import("./interface").SemanticName, string>>>;
    styles: PropType<Partial<Record<import("./interface").SemanticName, CSSProperties>>>;
    id: StringConstructor;
    disabled: {
        type: BooleanConstructor;
        default: boolean;
    };
    keyboard: {
        type: BooleanConstructor;
        default: boolean;
    };
    autoFocus: {
        type: BooleanConstructor;
        default: any;
    };
    onFocus: PropType<(e: FocusEvent) => void>;
    onBlur: PropType<(e: FocusEvent) => void>;
    range: {
        type: PropType<boolean | RangeConfig>;
        default: boolean | RangeConfig;
    };
    /** @deprecated Use `range.minCount` or `range.maxCount` to handle this */
    count: NumberConstructor;
    min: {
        type: NumberConstructor;
        default: number;
    };
    max: {
        type: NumberConstructor;
        default: number;
    };
    step: {
        type: NumberConstructor;
        default: number;
    };
    value: PropType<number | number[]>;
    defaultValue: PropType<number | number[]>;
    onChange: PropType<(value: number | number[]) => void>;
    'onUpdate:value': PropType<(value: number | number[]) => void>;
    /** @deprecated It's always better to use `onChange` instead */
    onBeforeChange: PropType<(value: number | number[]) => void>;
    /** @deprecated Use `onChangeComplete` instead */
    onAfterChange: PropType<(value: number | number[]) => void>;
    onChangeComplete: PropType<(value: number | number[]) => void>;
    allowCross: {
        type: BooleanConstructor;
        default: boolean;
    };
    pushable: (BooleanConstructor | NumberConstructor)[];
    reverse: {
        type: BooleanConstructor;
        default: any;
    };
    vertical: {
        type: BooleanConstructor;
        default: any;
    };
    included: {
        type: BooleanConstructor;
        default: boolean;
    };
    startPoint: NumberConstructor;
    /** @deprecated Please use `styles.track` instead */
    trackStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.handle` instead */
    handleStyle: PropType<CSSProperties | CSSProperties[]>;
    /** @deprecated Please use `styles.rail` instead */
    railStyle: PropType<CSSProperties>;
    dotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    activeDotStyle: PropType<CSSProperties | ((dotValue: number) => CSSProperties)>;
    marks: PropType<Record<string | number, VueNode | MarkObj>>;
    dots: {
        type: BooleanConstructor;
        default: any;
    };
    handleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    activeHandleRender: PropType<(origin: any, props: import("./Handles/Handle").RenderProps) => any>;
    track: {
        type: BooleanConstructor;
        default: any;
    };
    tabIndex: {
        type: PropType<number | number[]>;
        default: number;
    };
    ariaLabelForHandle: PropType<string | string[]>;
    ariaLabelledByForHandle: PropType<string | string[]>;
    ariaRequired: {
        type: BooleanConstructor;
        default: any;
    };
    ariaValueTextFormatterForHandle: PropType<AriaValueFormat | AriaValueFormat[]>;
}>> & Readonly<{}>, {
    vertical: boolean;
    dots: boolean;
    reverse: boolean;
    track: boolean;
    range: boolean | RangeConfig;
    disabled: boolean;
    max: number;
    min: number;
    prefixCls: string;
    step: number;
    keyboard: boolean;
    tabIndex: number | number[];
    ariaRequired: boolean;
    included: boolean;
    autoFocus: boolean;
    allowCross: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export default Slider;
