import { EmptyEmit } from "../_util/type.js";
import { SemanticClassNamesType, SemanticStylesType } from "../_util/hooks/useMergeSemantic.js";
import "../_util/hooks/index.js";
import { ComponentBaseProps } from "../config-provider/context.js";
import * as vue839 from "vue";
import { AriaAttributes, CSSProperties, SlotsType } from "vue";

//#region src/progress/progress.d.ts
type ProgressSemanticName = keyof ProgressSemanticClassNames & keyof ProgressSemanticStyles;
interface ProgressSemanticClassNames {
  root?: string;
  body?: string;
  rail?: string;
  track?: string;
  indicator?: string;
}
interface ProgressSemanticStyles {
  root?: CSSProperties;
  body?: CSSProperties;
  rail?: CSSProperties;
  track?: CSSProperties;
  indicator?: CSSProperties;
}
type ProgressClassNamesType = SemanticClassNamesType<ProgressProps, ProgressSemanticClassNames>;
type ProgressStylesType = SemanticStylesType<ProgressProps, ProgressSemanticStyles>;
declare const ProgressTypes: readonly ["line", "circle", "dashboard"];
type ProgressType = (typeof ProgressTypes)[number];
declare const ProgressStatuses: readonly ["normal", "exception", "active", "success"];
type ProgressSize = 'small' | 'medium' | 'default';
type StringGradients = Record<string, string>;
interface FromToGradients {
  from: string;
  to: string;
}
type ProgressGradient = {
  direction?: string;
} & (StringGradients | FromToGradients);
interface PercentPositionType {
  align?: 'start' | 'center' | 'end';
  type?: 'inner' | 'outer';
}
interface SuccessProps {
  percent?: number;
  strokeColor?: string;
}
type ProgressAriaProps = Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'>;
type GapPlacement = 'top' | 'bottom' | 'start' | 'end';
type GapPosition = 'top' | 'bottom' | 'left' | 'right';
interface ProgressProps extends ComponentBaseProps, ProgressAriaProps {
  classes?: ProgressClassNamesType;
  styles?: ProgressStylesType;
  type?: ProgressType;
  percent?: number;
  format?: (percent?: number, successPercent?: number) => any;
  status?: (typeof ProgressStatuses)[number];
  showInfo?: boolean;
  strokeWidth?: number;
  strokeLinecap?: 'butt' | 'square' | 'round';
  strokeColor?: string | string[] | ProgressGradient;
  /** @deprecated Please use `railColor` instead */
  trailColor?: string;
  railColor?: string;
  /** @deprecated Use `size` instead */
  width?: number;
  success?: SuccessProps;
  gapDegree?: number;
  gapPlacement?: GapPlacement;
  /** @deprecated please use `gapPlacement` instead */
  gapPosition?: GapPosition;
  size?: number | [number | string, number] | ProgressSize | {
    width?: number;
    height?: number;
  };
  steps?: number | {
    count: number;
    gap: number;
  };
  percentPosition?: PercentPositionType;
  rounding?: (step: number) => number;
}
interface ProgressSlots {
  default?: () => any;
}
declare const Progress: vue839.DefineSetupFnComponent<ProgressProps, EmptyEmit, SlotsType<ProgressSlots>, ProgressProps, vue839.PublicProps>;
//#endregion
export { GapPlacement, GapPosition, PercentPositionType, ProgressAriaProps, ProgressClassNamesType, ProgressGradient, ProgressProps, ProgressSemanticClassNames, ProgressSemanticName, ProgressSemanticStyles, ProgressSize, ProgressSlots, ProgressStylesType, ProgressType, ProgressTypes, StringGradients, SuccessProps, Progress as default };