import { AbstractControl, ValidatorFn } from '@angular/forms';
export interface ConditionalValidatorConfig<T = any> {
    condition: (control: AbstractControl) => boolean;
    validator: ValidatorFn;
}
/**
 * A custom validator function that applies conditional validation logic
 * based on a user-defined configuration.
 *
 * The function evaluates a `condition` provided in the configuration to determine
 * whether the associated `validator` function should be applied to the control.
 * It also tracks changes to relevant fields in the form and revalidates the control
 * whenever any of the dependent fields are updated.
 *
 * This supports dynamic validation scenarios where the validity of a control
 * is determined by its relationship with other controls in the form.
 *
 * @param {ConditionalValidatorConfig} config - The configuration object containing
 *                                              the condition function and the validator.
 * @returns {ValidatorFn} A validator function that implements the conditional validation logic.
 */
export declare const conditionalValidator: (config: ConditionalValidatorConfig) => ValidatorFn;
/**
 * JlValidators provides a collection of custom validators that execute conditionally
 * based on a specified condition function and Angular's built-in validators.
 */
export declare const JlValidators: {
    required: (condition: (control: AbstractControl) => boolean) => ValidatorFn;
    minLength: (length: number, condition: (control: AbstractControl) => boolean, watchFields?: string[]) => ValidatorFn;
    maxLength: (length: number, condition: (control: AbstractControl) => boolean, watchFields?: string[]) => ValidatorFn;
    pattern: (pattern: string | RegExp, condition: (control: AbstractControl) => boolean, watchFields?: string[]) => ValidatorFn;
    email: (condition: (control: AbstractControl) => boolean) => ValidatorFn;
    min: (min: number, condition: (control: AbstractControl) => boolean) => ValidatorFn;
    max: (max: number, condition: (control: AbstractControl) => boolean) => ValidatorFn;
    requiredTrue: (condition: (control: AbstractControl) => boolean) => ValidatorFn;
};
