import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
import { Observable } from 'rxjs';
export type FudisValidatorMessage = Observable<string> | string;
export interface FudisValidationErrors extends ValidationErrors {
    [key: string]: {
        message: FudisValidatorMessage;
        value?: unknown;
    } | null;
}
export interface FudisValidatorFn extends ValidatorFn {
    (control: AbstractControl): FudisValidationErrors | null;
}
export interface FudisValidatorsDatepickerSettings {
    value: Date;
    message: FudisValidatorMessage;
}
/**
 * Form Control Validators
 */
export declare const FudisValidators: {
    required: typeof required;
    email: typeof email;
    maxLength: typeof maxLength;
    minLength: typeof minLength;
    max: typeof max;
    min: typeof min;
    pattern: typeof pattern;
    datepickerMin: typeof datepickerMin;
    datepickerMax: typeof datepickerMax;
};
/**
 * Fudis version of Validators.required
 */
declare function required(message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Fudis version of Validators.email
 */
declare function email(message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Fudis version of Validators.maxLength
 */
declare function maxLength(length: number, message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Fudis version of Validators.minLength
 *
 * @param length
 * @param message
 * @param valueRequired By default this validator does not require, that control value cannot be
 *   empty. If set true, validator returns error, if control value is falsy.
 */
declare function minLength(length: number, message: FudisValidatorMessage, valueRequired?: boolean): FudisValidatorFn;
/**
 * Fudis version of Validators.min
 */
declare function min(minValue: number, message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Fudis version of Validators.max
 */
declare function max(maxValue: number, message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Fudis version of Validators.pattern
 */
declare function pattern(regex: string | RegExp, message: FudisValidatorMessage): FudisValidatorFn;
/**
 * Min date validator for Datepicker
 */
declare function datepickerMin(settings: FudisValidatorsDatepickerSettings): (control: AbstractControl) => {
    datepickerMin: {
        message: FudisValidatorMessage;
        value: Date;
    };
} | null;
/**
 * Max date validator for Datepicker
 */
declare function datepickerMax(settings: FudisValidatorsDatepickerSettings): (control: AbstractControl) => {
    datepickerMax: {
        message: FudisValidatorMessage;
        value: Date;
    };
} | null;
export {};
