import { ValidationEvent } from './validation-event';
import { AbstractControl, UpdateValidValueHandler, ValidatorsFunction } from './abstract-control';
interface OptionsFormControl<TEntity> {
    /**
     * Validations
     * / Валидациии
     */
    validators?: ValidatorsFunction<FormControl<TEntity>>[];
    /**
     * Function enable validation by condition (always enabled by default)
     * / Функция включение валидаций по условию (по умолчанию включено всегда)
     */
    activate?: (() => boolean) | null;
    /**
     * Additional information
     * / Блок с дополнительной информацией
     */
    additionalData?: any;
    /**
     * Callback always when value changes
     * / Срабатывает всегда при изменении значения
     */
    onChangeValue?: UpdateValidValueHandler<TEntity> | null;
    /**
     * Callback get last valid value
     * / Передает последние валидное значение
     */
    onChangeValidValue?: UpdateValidValueHandler<TEntity> | null;
    /**
     * Invoke `onChangeValidValue` when `FormControl` is created.
     * / Вызвать `onChangeValidValue` при создании `FormControl`.
     * @example
     * const model = observable({ value: 123 });
     * new FormControl(
     *   () => model.value,
     *   [],
     *   value => { console.log({ value }); },
     *   { callSetterOnInitialize: true }
     * ); // then we see { value: 123 } in console immediately
     */
    callSetterOnInitialize?: boolean;
    /**
     * Invoke `onChangeValidValue` when value-getter that passed as first argument changes its underlying value.
     * / Вызывать `onChangeValidValue` при каждом изменении результата функции-геттера из первого аргумента.
     * @default false
     * @example
     * const model = observable({ value: 123 });
     * new FormControl(
     *   () => model.value,
     *   [],
     *   value => { console.log({ value }); },
     *   { callSetterOnReinitialize: true }
     * );
     * model.value = 456; // then we see { value: 456 } in console
     */
    callSetterOnReinitialize?: boolean;
}
export declare class FormControl<TEntity = string> extends AbstractControl {
    private reactionOnValueGetterDisposer;
    private reactionOnInternalValueDisposer;
    private readonly reactionOnIsActiveDisposer;
    private readonly reactionOnIsDirtyDisposer;
    private readonly reactionOnIsFocusedDisposer;
    private readonly validators;
    private readonly setValidValue;
    private readonly onChangeValue;
    private readonly callSetterOnInitialize;
    private readonly callSetterOnReinitialize;
    private isInitializedValue;
    private isInitializedActived;
    private get isInitialized();
    get processing(): boolean;
    private internalValue;
    get value(): TEntity;
    set value(value: TEntity);
    get invalid(): boolean;
    private isDirty;
    get dirty(): boolean;
    private isTouched;
    get touched(): boolean;
    private isFocused;
    get focused(): boolean;
    constructor(
    /**
     * Initializing valueI
     * / Инициализирующие значение или его getter
     */
    valueOrGetter: TEntity | (() => TEntity), 
    /**
     * Options
     * / Опции
     */
    options?: OptionsFormControl<TEntity>);
    setInitialValue: (valueOrGetter: TEntity | (() => TEntity)) => this;
    executeAsyncValidation: (validator: (control: this) => Promise<ValidationEvent[]>) => Promise<ValidationEvent[]>;
    /**
    * Set marker "Value has changed"
    * / Установить маркер "Значение изменилось"
    */
    setDirty: (dirty: boolean) => this;
    /**
     * Set marker "field was in focus"
     * / Установить маркер "Поле было в фокусе"
     */
    setTouched: (touched: boolean) => this;
    setFocused: (focused: boolean) => this;
    dispose: () => void;
    runInAction(action: () => void): void;
    private checkInternalValue;
}
export {};
