import type { FormGroup } from './form-group'; import type { AsyncValidatorFn, ValidationErrors, ValidatorFn } from './validators'; import { Subject } from 'rxjs'; export type FormControlStatus = 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED'; export declare const VALID: FormControlStatus, INVALID: FormControlStatus, PENDING: FormControlStatus, DISABLED: FormControlStatus; export declare abstract class AbstractControl { private _parent; private _pristine; private _errors; private _hasOwnPendingAsyncValidator; private _asyncValidationSubscription?; private _composedValidatorFn; private _composedAsyncValidatorFn; private _rawValidators; private _rawAsyncValidators; constructor(validators: ValidatorFn | ValidatorFn[] | null, asyncValidators: AsyncValidatorFn | AsyncValidatorFn[] | null); get validator(): ValidatorFn | null; set validator(validatorFn: ValidatorFn | null); get asyncValidator(): AsyncValidatorFn | null; set asyncValidator(asyncValidatorFn: AsyncValidatorFn | null); get parent(): FormGroup | null; get root(): AbstractControl; get value(): V; get status(): FormControlStatus; get errors(): ValidationErrors | null; get valid(): boolean; get invalid(): boolean; get pending(): boolean; get disabled(): boolean; get enabled(): boolean; get pristine(): boolean; get dirty(): boolean; readonly asyncVerifyComplete$: Subject>; clone(): this; setValidators(validators: ValidatorFn | ValidatorFn[] | null): void; setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[] | null): void; addValidators(validators: ValidatorFn | ValidatorFn[]): void; addAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; removeValidators(validators: ValidatorFn | ValidatorFn[]): void; removeAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; hasValidator(validator: ValidatorFn): boolean; hasAsyncValidator(validator: AsyncValidatorFn): boolean; clearValidators(): void; clearAsyncValidators(): void; markAsDirty(onlySelf?: boolean): void; markAsPristine(onlySelf?: boolean): void; markAsPending(onlySelf?: boolean): void; disable(onlySelf?: boolean): void; enable(onlySelf?: boolean): void; setParent(parent: FormGroup): void; setErrors(errors: ValidationErrors | null): void; updateValueAndValidity(onlySelf?: boolean): void; protected abstract _value: V; protected abstract _status: FormControlStatus; abstract setValue(value: V, onlySelf?: boolean): void; abstract patchValue(value: any, onlySelf?: boolean): void; abstract reset(value?: any, onlySelf?: boolean): void; protected abstract _updateValue(): void; protected abstract _forEachChild(cb: (c: AbstractControl) => void): void; protected abstract _anyControls(condition: (c: AbstractControl) => boolean): boolean; protected abstract _allControlsDisabled(): boolean; protected _anyControlsHaveStatus(status: FormControlStatus): boolean; protected _anyControlsDirty(): boolean; protected _parentMarkedDirty(onlySelf: boolean): boolean; protected _updatePristine(onlySelf?: boolean): void; protected _updateControlsErrors(): void; protected _calculateStatus(): FormControlStatus; protected _updateAncestors(onlySelf: boolean, skipPristineCheck: boolean): void; protected _runValidator(): ValidationErrors | null; protected _cancelExistingSubscription(): void; protected _runAsyncValidator(): void; }