/// <reference types="react" />
/// <reference types="node" />
import { IResultOfValidate } from '../Page/ValidatingControl';
import { IControlSimulateKey } from '../Page/Events';
export declare abstract class BaseSelfControl<T, J, D, H> {
    #private;
    propertyName?: string;
    onChangePropertyName: string | undefined;
    keyOfJSON?: string;
    keyOfResultValue?: string;
    controlRef?: React.RefObject<H>;
    required: boolean;
    showHasChangeFlag?: boolean;
    tabIndex?: number;
    changeHeadOfStack?: number;
    timerOfIncorrectChar?: NodeJS.Timeout;
    isTypedIncorrectChar?: boolean;
    filteredChar?: string;
    get hidden(): boolean;
    set hidden(value: boolean);
    abstract value: T;
    validation: IResultOfValidate;
    abstract validate: () => void;
    abstract isValueEmpty: () => boolean;
    abstract isValueNotEmpty: () => boolean;
    restartValidation: () => void;
    abstract cleaningClassInitializer: () => void;
    defaultValue?: D;
    abstract refreshHasChange: () => void;
    abstract restartDefaultValue: () => void;
    abstract setValue: (value: T) => void;
    abstract deserialize: (value: J, information: any) => void;
    initializeProperties: boolean;
    initializeListener: boolean;
    caption?: string;
    captionAddress?: string;
    onErrorSimulateKey?: IControlSimulateKey;
    private _hasChange;
    get hasChange(): boolean;
    set hasChange(value: boolean);
}
