import { Validator } from '../validator.type';
import { createIntegerValidator } from './integer';
import { createIsNumberValidator } from './is-number';
import { createMaxValidator } from './max';
import { createMinValidator } from './min';
import { createMultipleOfValidator } from './multiple-of';
export type NumberMessageFactories = {
    min: Parameters<typeof createMinValidator>[0];
    max: Parameters<typeof createMaxValidator>[0];
    isNumber: Parameters<typeof createIsNumberValidator>[0];
    multipleOf: Parameters<typeof createMultipleOfValidator>[0];
    integer: Parameters<typeof createIntegerValidator>[0];
};
export type NumberValidatorOptions = {
    min?: number;
    max?: number;
    integer?: boolean;
    multipleOf?: number;
    required?: boolean;
    mustBe?: number | null;
    not?: number | null;
    oneOf?: (number | null)[];
    notOneOf?: (number | null)[];
};
export declare function createNumberValidators(factories?: Partial<NumberMessageFactories>, generalValidators?: {
    required: <T>(label?: string) => Validator<T>;
    mustBe: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>;
    mustBeNull: <T>() => Validator<T>;
    not: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>;
    oneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>;
    notOneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>;
}, merger?: <T>(validators: Validator<T>[]) => ((value: T) => string) & {
    resolve: (mergedError: string) => {
        error: string;
        tooltip: string;
    };
}): {
    all: (opt: NumberValidatorOptions) => ((value: number | null) => string) & {
        resolve: (mergedError: string) => {
            error: string;
            tooltip: string;
        };
    };
    min: (min: number) => Validator<number | null>;
    max: (max: number) => Validator<number | null>;
    isNumber: () => Validator<number | null>;
    multipleOf: (multipleOf: number) => Validator<number | null>;
    integer: () => Validator<number | null>;
};
