import { ControlEditionContext } from './control-edition-context';
import { ControlError } from './control-error';
import { ControlOptions, FormControlOptions } from './control-options';
import { FormArray } from './form-array';
import { FormGroup } from './form-group';
import { ControlValidationGuard } from './validation-guard';
import { ControlValidator } from './validators/control-validator';
/**
 * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.
 *
 */
export declare abstract class AbstractControl<T = any> {
    readonly validators: ControlValidator[];
    htmlElementAccessor: () => HTMLElement | undefined;
    protected readonly _validationGuard: ControlValidationGuard;
    protected _parent: FormGroup | FormArray;
    protected _editionContext: ControlEditionContext;
    protected _errors: ControlError[];
    protected _waiting: boolean;
    protected _enabled: boolean;
    protected _readonly: boolean;
    protected _pristine: boolean;
    protected _touched: boolean;
    constructor(validators?: ControlValidator[], options?: ControlOptions | FormControlOptions<any>);
    abstract get value(): T;
    abstract set value(value: T);
    abstract get valid(): boolean;
    abstract get enabled(): boolean;
    abstract set enabled(isEnabled: boolean);
    abstract get waiting(): boolean;
    abstract set waiting(isWaiting: boolean);
    abstract get readonly(): boolean;
    abstract set readonly(isReadonly: boolean);
    abstract get touched(): boolean;
    abstract get controls(): AbstractControl[];
    abstract getControl<T = any>(name: string): AbstractControl<T>;
    abstract get errors(): ControlError[];
    abstract set errors(errors: ControlError[]);
    abstract get errorsDeep(): ControlError[];
    get htmlElement(): HTMLElement | undefined;
    get pristine(): boolean;
    hasError(): boolean;
    hasErrorDeep(): boolean;
    /**
     * Gets the first error message, if any, of the current control errors.
     * Children errors are excluded.
     */
    get errorMessage(): string;
    /**
     * Gets the first error message, if any, of one of the current control and children control errors.
     */
    get errorMessageDeep(): string;
    get parent(): FormGroup | FormArray;
    set parent(parent: FormGroup | FormArray);
    /**
     * The submit method reset the edition context and runs all validations in
     * a downward manner from parents (FormGroup and FormArray) to childs (FormControl).
     */
    submit(): Promise<void>;
    reset(): void;
    upwardValueChanged(): void;
    validate(): void;
    validateAsync(): Promise<void>;
    initEdition(): void;
    endEdition(): void;
    private _updateErrors;
    protected _hasAnyControlsInError(): boolean;
}
//# sourceMappingURL=abstract-control.d.ts.map