import { AfterContentInit, ChangeDetectorRef, ElementRef } from '@angular/core';
import { AbstractControl, FormGroupDirective, NgControl, NgForm, Validator, ValidatorFn } from '@angular/forms';
import { KbqValidationOptions } from '@koobiq/components/core';
import { KbqFormField } from './form-field';
import { KbqFormFieldControl } from './form-field-control';
import * as i0 from "@angular/core";
/**
 * @deprecated Will be removed in next major release (#DS-2838)
 *
 * Legacy validation directive.
 *
 * ### How to disable?
 *
 * ```typescript
 * import { kbqDisableLegacyValidationDirectiveProvider } from '@koobiq/components/core';
 *
 * @NgModule({
 *      providers: [kbqDisableLegacyValidationDirectiveProvider()]
 * })
 * ```
 *
 * @docs-private
 */
export declare class KbqValidateDirective implements AfterContentInit {
    private formFieldControl;
    rawValidators: Validator[];
    private ngControl;
    private parentForm;
    private parentFormGroup;
    private mcValidation;
    private cdr;
    private readonly parentFormField;
    private readonly elementRef;
    get isNgModel(): boolean;
    get isFormControlName(): boolean;
    get isFormControl(): boolean;
    get validationControl(): any;
    get parent(): NgForm;
    get hasNotSubmittedParent(): boolean;
    constructor(formFieldControl: KbqFormFieldControl<any>, rawValidators: Validator[], ngControl: NgControl, parentForm: NgForm, parentFormGroup: FormGroupDirective, mcValidation: KbqValidationOptions, cdr: ChangeDetectorRef, parentFormField: KbqFormField | null, elementRef: ElementRef);
    ngAfterContentInit(): void;
    setValidState(control: AbstractControl, validator: ValidatorFn): void;
    /** This function do next:
     * - run validation on submitting parent form
     * - prevent validation in required validator if form doesn't submitted
     * - if control has focus validation will be prevented
     */
    setMosaicValidation(): void;
    setMosaicValidationForModelControl(): void;
    setMosaicValidationForFormControl(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqValidateDirective, [null, { optional: true; self: true; }, { optional: true; self: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null, { optional: true; host: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqValidateDirective, "        input[kbqInput],        input[kbqNumberInput],        input[kbqInputPassword],        input[kbqTimepicker],        input[kbqDatepicker],        textarea[kbqTextarea],        kbq-select,        kbq-tree-select,        kbq-tag-list    ", ["KbqValidate"], {}, {}, never, never, true, never>;
}
