import { AbstractControl } from './abstract-control';
import { ControlError } from './control-error';
import { FormControlOptions } from './control-options';
import { ControlValidator } from './validators/control-validator';
export declare class FormControl<T> extends AbstractControl {
    readonly validators: ControlValidator[];
    private _value?;
    private _initialValue?;
    private _oldValue?;
    constructor(validators?: ControlValidator[], options?: FormControlOptions<T>);
    private clone;
    set initialValue(initialValue: T);
    get touched(): boolean;
    get controls(): AbstractControl[];
    getControl<T = any>(name: string): AbstractControl<T>;
    get value(): T | undefined;
    set value(value: T | undefined);
    get valid(): boolean;
    get enabled(): boolean;
    set enabled(isEnabled: boolean);
    get waiting(): boolean;
    set waiting(isWaiting: boolean);
    get readonly(): boolean;
    set readonly(isReadonly: boolean);
    get errors(): ControlError[];
    set errors(errors: ControlError[]);
    get errorsDeep(): ControlError[];
    /**
     * This specify the ennd of a edition context.
     */
    endEdition(): void;
    /**
     * Reset the field to it's orginal pristine state.
     *
     * @param {T} [initialValue]  a new initial value for the field
     */
    reset(initialValue?: T): void;
    /**
     * Run all validators
     *
     */
    submit(): Promise<void>;
}
//# sourceMappingURL=form-control.d.ts.map