import React from "react";
import { IConfigStorage } from "../../Common/IConfigStorage";
import { IEditable } from "../../CommonUI/IEditable";
import { UserFormData } from "../UserFormData";
import { IFormDataAccessor } from "../Utilities/IFormDataAccessor";
import { IDesignValidationProvider, IRuntimeValidationProvider, ValidationIssue } from "../../Common/IDesignValidationProvider";
import { FormContext } from "../Utilities/FormContext";
import { ControlRenderContext } from "../Utilities/ControlRenderContext";
import { IDataDefinition } from "../../Common/Data/Definitions/IDataDefinition";
export declare abstract class XBaseControl extends React.Component implements IConfigStorage, IEditable, IFormDataAccessor, IDesignValidationProvider, IRuntimeValidationProvider {
    id: string;
    ref: React.RefObject<any>;
    canFocus: boolean;
    private _formContext?;
    abstract getDesignValidationIssues(): ValidationIssue[];
    abstract getRuntimeValidationIssues(): ValidationIssue[];
    abstract getAddedData(): IDataDefinition | IDataDefinition[] | undefined;
    focusControl(): void;
    abstract renderEditUI(): JSX.Element | null;
    constructor();
    get controlRenderContext(): ControlRenderContext | null | undefined;
    getFormContext(): FormContext | undefined;
    setFormContext(value: FormContext | undefined): void;
    getStorageData(): object;
    setStorageData(data: object): void;
    controlUpdate(): void;
    designerUpdate(): void;
    isDesignSelected(): boolean;
    selectInDesigner(): void;
    unselectInDesigner(): void;
    getFormData(): UserFormData | undefined | null;
    getFormDataValue(fieldName: string): any;
    setFormData(value: UserFormData): void;
    setFormDataValue(fieldName: string, value: any): void;
    toString(): string | null;
}
