import { Validator } from '../validator.type';
import { createMaxLengthValidator } from './max-length';
import { createMinLengthValidator } from './min-length';
export type ArrayMessageFactories = {
    minLength: Parameters<typeof createMinLengthValidator>[0];
    maxLength: Parameters<typeof createMaxLengthValidator>[0];
};
export type ArrayValidatorOptions = {
    minLength?: number;
    maxLength?: number;
    elementsLabel?: string;
};
export declare function createArrayValidators(factories?: Partial<ArrayMessageFactories>, merger?: <T>(validators: Validator<T>[]) => ((value: T) => string) & {
    resolve: (mergedError: string) => {
        error: string;
        tooltip: string;
    };
}): {
    all: <T extends any[]>(opt: ArrayValidatorOptions) => ((value: T) => string) & {
        resolve: (mergedError: string) => {
            error: string;
            tooltip: string;
        };
    };
    minLength: <T extends string | any[] | null>(min: number, elementsLabel?: string) => Validator<T>;
    maxLength: <T extends string | any[] | null>(max: number, elementsLabel?: string) => Validator<T>;
};
