import { VueNode as VueNode$1 } from "../_util/type.js";
import { SemanticClassNamesType, SemanticStylesType } from "../_util/hooks/useMergeSemantic.js";
import "../_util/hooks/index.js";
import { SizeType } from "../config-provider/SizeContext.js";
import { InputStatus } from "../_util/statusUtils.js";
import { ComponentBaseProps, Variant } from "../config-provider/context.js";
import * as vue350 from "vue";
import { CSSProperties, SlotsType } from "vue";
import { InputNumberProps as InputNumberProps$1, InputNumberRef as VcInputNumberRef, ValueType } from "@v-c/input-number";

//#region src/input-number/index.d.ts
type InputNumberSemanticName = keyof InputNumberSemanticClassNames & keyof InputNumberSemanticStyles;
interface InputNumberSemanticClassNames {
  root?: string;
  prefix?: string;
  suffix?: string;
  input?: string;
  actions?: string;
  action?: string;
}
interface InputNumberSemanticStyles {
  root?: CSSProperties;
  prefix?: CSSProperties;
  suffix?: CSSProperties;
  input?: CSSProperties;
  actions?: CSSProperties;
  action?: CSSProperties;
}
type InputNumberClassNamesType = SemanticClassNamesType<InputNumberProps, InputNumberSemanticClassNames>;
type InputNumberStylesType = SemanticStylesType<InputNumberProps, InputNumberSemanticStyles>;
interface InputNumberStepContext {
  offset: ValueType;
  type: 'up' | 'down';
  emitter: 'handler' | 'keyboard' | 'wheel';
}
interface InputNumberProps extends ComponentBaseProps, Omit<InputNumberProps$1, 'class' | 'controls' | 'className' | 'style' | 'prefixCls' | 'classNames' | 'styles' | 'prefix' | 'suffix' | 'onChange' | 'onClick' | 'onInput' | 'onBeforeInput' | 'onBlur' | 'onCompositionEnd' | 'onCompositionStart' | 'onKeyDown' | 'onKeyUp' | 'onMouseDown' | 'onMouseEnter' | 'onPressEnter' | 'onMouseUp' | 'onMouseMove' | 'onFocus'>, InputNumberEmitsProps {
  size?: SizeType;
  status?: InputStatus;
  disabled?: boolean;
  addonBefore?: VueNode$1;
  addonAfter?: VueNode$1;
  prefix?: VueNode$1;
  suffix?: VueNode$1;
  /** @deprecated Use `variant="borderless"` instead. */
  bordered?: boolean;
  /**
   * @since 5.13.0
   * @default "outlined"
   */
  variant?: Variant;
  classes?: InputNumberClassNamesType;
  styles?: InputNumberStylesType;
  controls?: boolean | {
    upIcon?: VueNode$1;
    downIcon?: VueNode$1;
  };
  type?: 'number' | 'text';
}
interface InputNumberEmits {
  'change': (value: any) => void;
  'update:value': (value: any) => void;
  'input': (text: string) => void;
  'pressEnter': (e: KeyboardEvent) => void;
  'step': (value: any, info: InputNumberStepContext) => void;
  'mousedown': (e: MouseEvent) => void;
  'click': (e: MouseEvent) => void;
  'mouseup': (e: MouseEvent) => void;
  'mouseleave': (e: MouseEvent) => void;
  'mousemove': (e: MouseEvent) => void;
  'mouseenter': (e: MouseEvent) => void;
  'mouseout': (e: MouseEvent) => void;
  'focus': (e: FocusEvent) => void;
  'blur': (e: FocusEvent) => void;
  'keydown': (e: KeyboardEvent) => void;
  'keyup': (e: KeyboardEvent) => void;
  'compositionstart': (e: CompositionEvent) => void;
  'compositionend': (e: CompositionEvent) => void;
  'beforeinput': (e: InputEvent) => void;
}
interface InputNumberEmitsProps {
  onChange?: InputNumberEmits['change'];
  'onUpdate:value'?: InputNumberEmits['update:value'];
  onInput?: InputNumberEmits['input'];
  onPressEnter?: InputNumberEmits['pressEnter'];
  onStep?: InputNumberEmits['step'];
  onMousedown?: InputNumberEmits['mousedown'];
  onClick?: InputNumberEmits['click'];
  onMouseup?: InputNumberEmits['mouseup'];
  onMouseleave?: InputNumberEmits['mouseleave'];
  onMousemove?: InputNumberEmits['mousemove'];
  onMouseenter?: InputNumberEmits['mouseenter'];
  onMouseout?: InputNumberEmits['mouseout'];
  onFocus?: InputNumberEmits['focus'];
  onBlur?: InputNumberEmits['blur'];
  onKeydown?: InputNumberEmits['keydown'];
  onKeyup?: InputNumberEmits['keyup'];
  onCompositionstart?: InputNumberEmits['compositionstart'];
  onCompositionend?: InputNumberEmits['compositionend'];
  onBeforeinput?: InputNumberEmits['beforeinput'];
}
interface InputNumberSlots {
  prefix?: () => any;
  suffix?: () => any;
  addonBefore?: () => any;
  addonAfter?: () => any;
  default?: () => any;
}
declare const InputNumber: vue350.DefineSetupFnComponent<InputNumberProps, InputNumberEmits, SlotsType<InputNumberSlots>, InputNumberProps, vue350.PublicProps>;
//#endregion
export { InputNumberClassNamesType, InputNumberEmits, InputNumberEmitsProps, InputNumberProps, type VcInputNumberRef as InputNumberRef, InputNumberSemanticClassNames, InputNumberSemanticName, InputNumberSemanticStyles, InputNumberSlots, InputNumberStepContext, InputNumberStylesType, type ValueType, InputNumber as default };