/**
 * @license
 *-------------------------------------------------------------------------------------------
 * Copyright © 2025 Progress Software Corporation. All rights reserved.
 * Licensed under commercial license. See LICENSE.md in the package root for more information
 *-------------------------------------------------------------------------------------------
 */
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { ProgressBarAnimation as ProgressBarAnimation_2 } from '..';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

/**
 * @hidden
 */
declare interface BaseProps {
    /**
     * Sets one of the two visually distinct types of progress bar.
     *
     * @hidden
     */
    type?: 'linear' | 'circular';
    /**
     * Sets the value of the progress bar. Has to be between `min` and `max` values. Defaults to `0`.
     * Set `null` to enable the indeterminate state of the progress bar.
     * See examples ([here]({% slug overview_progressbar %})).
     */
    value?: number | null;
    /**
     * The minimum value of the progress bar. Defaults to `0`.
     */
    min?: number;
    /**
     * The maximum value of the progress bar. Defaults to `100`.
     */
    max?: number;
    /**
     * Represents the `dir` HTML attribute. This is used to switch from LTR to RTL.
     */
    dir?: string;
    /**
     * The accessible label of the component.
     */
    ariaLabel?: string;
    /**
     * Sets the disabled state of the progress bar.
     * See examples ([here]({% slug progressbar_disabled %})).
     */
    disabled?: boolean;
    /**
     * Defines the orientation of the progress bar.
     * See examples ([here]({% slug progressbar_orientation %})) .
     * Defaults to `horizontal`.
     */
    orientation?: 'horizontal' | 'vertical' | string;
    /**
     * If set to `true`, the progress bar will be reversed.
     * See examples ([here]({% slug progressbar_direction %})).
     * Defaults to `false`.
     */
    reverse?: boolean;
    /**
     * Specifies a list of CSS classes that will be added to the progress bar element.
     */
    className?: string;
    /**
     * The styles that are applied to the inner element which represents the empty portion of the progress bar.
     * See examples ([here]({% slug progressbar_appearance %})).
     */
    emptyStyle?: object;
    /**
     * Sets additional classes to the inner element which represents the empty portion of the progress bar.
     * See examples ([here]({% slug progressbar_appearance %})).
     */
    emptyClassName?: string;
    /**
     * The styles that are applied to the inner element which represents the full portion of the progress bar.
     * See examples ([here]({% slug progressbar_appearance %})).
     */
    progressStyle?: object;
    /**
     * Sets additional classes to the inner element which represents the full portion of the progress bar.
     * See examples ([here]({% slug progressbar_appearance %})).
     */
    progressClassName?: string;
    /**
     * Sets the `tabIndex` property of the progress bar.
     */
    tabIndex?: number;
}

/**
 * @hidden
 */
export declare const ChunkProgressBar: DefineComponent<ExtractPropTypes<    {
chunkCount: {
type: PropType<number>;
default: number;
};
ariaLabel: PropType<string>;
disabled: PropType<boolean>;
reverse: {
type: PropType<boolean>;
default: boolean;
};
max: {
type: PropType<number>;
default: number;
};
min: {
type: PropType<number>;
default: number;
};
value: {
type: PropType<number>;
default: number;
};
tabIndex: PropType<number>;
emptyStyle: PropType<object>;
emptyClassName: PropType<string>;
progressStyle: PropType<object>;
progressClassName: PropType<string>;
orientation: {
type: PropType<string>;
default: string;
validator: (value: string) => any;
};
}>, {}, {
currentDir: any;
}, {}, {
focusElement(): void;
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<    {
chunkCount: {
type: PropType<number>;
default: number;
};
ariaLabel: PropType<string>;
disabled: PropType<boolean>;
reverse: {
type: PropType<boolean>;
default: boolean;
};
max: {
type: PropType<number>;
default: number;
};
min: {
type: PropType<number>;
default: number;
};
value: {
type: PropType<number>;
default: number;
};
tabIndex: PropType<number>;
emptyStyle: PropType<object>;
emptyClassName: PropType<string>;
progressStyle: PropType<object>;
progressClassName: PropType<string>;
orientation: {
type: PropType<string>;
default: string;
validator: (value: string) => any;
};
}>> & Readonly<{}>, {
reverse: boolean;
value: number;
max: number;
min: number;
orientation: string;
chunkCount: number;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

/**
 * Represents the props of the [Kendo UI for Vue ChunkProgressBar component]({% slug overview_chunkprogressbar %}).
 */
export declare interface ChunkProgressBarProps extends BaseProps {
    /**
     * Sets the number of chunks into which the ChunkProgressBar will be split. Defaults to `5`.
     */
    chunkCount?: number;
}

/**
 * An interface for the ProgressBar label.
 */
export declare interface LabelProps {
    /**
     * Represents the current value of the ProgressBar.
     */
    value?: number | null;
}

/**
 * @hidden
 */
export declare const ProgressBar: DefineComponent<ExtractPropTypes<    {
animation: {
type: PropType<boolean | ProgressBarAnimation_2>;
default: boolean;
};
disabled: {
type: PropType<boolean>;
default: boolean;
};
reverse: {
type: PropType<boolean>;
default: boolean;
};
label: PropType<any>;
labelRender: PropType<any>;
labelVisible: {
type: PropType<boolean>;
default: boolean;
};
labelPlacement: {
type: PropType<any>;
default: any;
validator: (value: string) => any;
};
dir: {
type: PropType<string>;
default: any;
};
max: {
type: PropType<number>;
default: number;
};
min: {
type: PropType<number>;
default: number;
};
value: {
type: PropType<number>;
default: number;
};
orientation: {
type: PropType<string>;
default: string;
validator: (value: string) => any;
};
tabIndex: PropType<number>;
emptyStyle: PropType<object>;
emptyClassName: PropType<string>;
progressStyle: PropType<object>;
progressClassName: PropType<string>;
ariaLabel: PropType<string>;
}>, {}, {
currentDir: any;
}, {
wrapperClass(): ProgressBarComputed['wrapperClass'];
isVertical(): ProgressBarComputed['isVertical'];
animationDuration(): ProgressBarComputed['animationDuration'];
}, {
focus(): void;
progressStatusElement(): any;
progressStatusWrapElement(): any;
handleStart(): void;
handleUpdate(progress: number): void;
handleEnd(): void;
}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<    {
animation: {
type: PropType<boolean | ProgressBarAnimation_2>;
default: boolean;
};
disabled: {
type: PropType<boolean>;
default: boolean;
};
reverse: {
type: PropType<boolean>;
default: boolean;
};
label: PropType<any>;
labelRender: PropType<any>;
labelVisible: {
type: PropType<boolean>;
default: boolean;
};
labelPlacement: {
type: PropType<any>;
default: any;
validator: (value: string) => any;
};
dir: {
type: PropType<string>;
default: any;
};
max: {
type: PropType<number>;
default: number;
};
min: {
type: PropType<number>;
default: number;
};
value: {
type: PropType<number>;
default: number;
};
orientation: {
type: PropType<string>;
default: string;
validator: (value: string) => any;
};
tabIndex: PropType<number>;
emptyStyle: PropType<object>;
emptyClassName: PropType<string>;
progressStyle: PropType<object>;
progressClassName: PropType<string>;
ariaLabel: PropType<string>;
}>> & Readonly<{}>, {
reverse: boolean;
value: number;
animation: boolean | ProgressBarAnimation_2;
labelVisible: boolean;
labelPlacement: any;
disabled: boolean;
dir: string;
max: number;
min: number;
orientation: string;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

/**
 * Specifies the animation settings of the ProgressBar.
 */
export declare interface ProgressBarAnimation {
    /**
     * Specifies the duration of the ProgressBar animation. Defaults to `400`.
     */
    duration: number;
}

/**
 * @hidden
 */
export declare interface ProgressBarComputed {
    [key: string]: any;
    wrapperClass: object;
    isVertical: boolean;
    animationDuration: number;
}

/**
 * The ProgressBar ref.
 */
export declare interface ProgressBarHandle {
    /**
     * The ProgressBar element.
     */
    element: HTMLDivElement | null;
    /**
     * The progress status element.
     */
    progressStatusElement: HTMLDivElement | null;
    /**
     * The progress status wrap element.
     */
    progressStatusWrapElement: HTMLSpanElement | null;
    /**
     * Focus the ProgressBar.
     */
    focus: () => void;
}

/**
 * Represents the props of the [Kendo UI for Vue ProgressBar component]({% slug overview_progressbar %}).
 */
export declare interface ProgressBarProps extends BaseProps {
    /**
     * Specifies the animation settings of the ProgressBar. Defaults to `false`.
     * If boolean, enables or disables the default animation.
     * Use ProgressBarAnimation to set slide animation with customizable duration option. Accepts a number in milliseconds.
     */
    animation?: boolean | ProgressBarAnimation;
    /**
     * Overrides the default label ([see example]({% slug progressbar_label %})).
     */
    label?: any;
    /**
     * Overrides the default label template ([see example]({% slug progressbar_label %})).
     */
    labelRender?: any;
    /**
     * Sets the visibility of the progress status label. Defaults to `true`.
     */
    labelVisible?: boolean;
    /**
     * Sets the position of the progress status label. Defaults to `end` ([see example]({% slug progressbar_label %})).
     */
    labelPlacement?: 'start' | 'center' | 'end' | any;
}

export { }