/**
 * Number input field with increment/decrement buttons, validation, and min/max constraints.
 *
 * @example
 * <PlNumberField v-model="price" :step="0.01" :min-value="0" label="Price" />
 *
 * @example
 * <PlNumberField
 *   v-model="evenNumber"
 *   :validate="(v) => v % 2 !== 0 ? 'Number must be even' : undefined"
 *   :update-on-enter-or-click-outside="true"
 *   label="Even Number"
 * />
 */
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
    modelValue: number | undefined;
} & {
    /** Input is disabled if true */
    disabled?: boolean;
    /** Label on the top border of the field, empty by default */
    label?: string;
    /** Input placeholder, empty by default */
    placeholder?: string;
    /** Step for increment/decrement buttons, 1 by default */
    step?: number;
    /** If defined - show an error if value is lower  */
    minValue?: number;
    /** If defined - show an error if value is higher */
    maxValue?: number;
    /** If false - remove buttons on the right */
    useIncrementButtons?: boolean;
    /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside)  */
    updateOnEnterOrClickOutside?: boolean;
    /** Error message that shows always when it's provided, without other checks */
    errorMessage?: string;
    /** Additional validity check for input value that must return an error text if failed */
    validate?: (v: number) => string | undefined;
    /** Makes some of corners not rounded */
    groupPosition?: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    "update:modelValue": (value: number | undefined) => any;
}, string, import('vue').PublicProps, Readonly<{
    modelValue: number | undefined;
} & {
    /** Input is disabled if true */
    disabled?: boolean;
    /** Label on the top border of the field, empty by default */
    label?: string;
    /** Input placeholder, empty by default */
    placeholder?: string;
    /** Step for increment/decrement buttons, 1 by default */
    step?: number;
    /** If defined - show an error if value is lower  */
    minValue?: number;
    /** If defined - show an error if value is higher */
    maxValue?: number;
    /** If false - remove buttons on the right */
    useIncrementButtons?: boolean;
    /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside)  */
    updateOnEnterOrClickOutside?: boolean;
    /** Error message that shows always when it's provided, without other checks */
    errorMessage?: string;
    /** Additional validity check for input value that must return an error text if failed */
    validate?: (v: number) => string | undefined;
    /** Makes some of corners not rounded */
    groupPosition?: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
}> & Readonly<{
    "onUpdate:modelValue"?: ((value: number | undefined) => any) | undefined;
}>, {
    label: string;
    placeholder: string;
    step: number;
    groupPosition: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
    validate: (v: number) => string | undefined;
    minValue: number;
    maxValue: number;
    useIncrementButtons: boolean;
    errorMessage: string;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
    rootRef: HTMLDivElement;
    inputRef: HTMLInputElement;
}, HTMLDivElement>, {
    tooltip?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
//# sourceMappingURL=PlNumberField.vue.d.ts.map