import React from "react";
import { IConfigStorage } from "@appglue/common/dist/Common/IConfigStorage";
import { IEditable } from "../../CommonUI/IEditable";
import { ExecutionData } from "@appglue/common/dist/Common/Data/ExecutionData/ExecutionData";
import { IFormDataAccessor } from "../Utilities/IFormDataAccessor";
import { IDesignValidationProvider, IRuntimeValidationProvider, ValidationIssue } from "@appglue/common/dist/Common/IDesignValidationProvider";
import { FormContext } from "../Utilities/FormContext";
import { ControlRenderContext } from "../Utilities/ControlRenderContext";
import { IDataDefinition } from "@appglue/common/dist/Common/Data/Definitions/IDataDefinition";
export declare abstract class FormControl extends React.Component implements IConfigStorage, IEditable, IFormDataAccessor, IDesignValidationProvider, IRuntimeValidationProvider {
    abstract readonly __type: string;
    id: string;
    ref: React.RefObject<any>;
    canFocus: boolean;
    private _formContext?;
    constructor();
    get controlRenderContext(): ControlRenderContext | null | undefined;
    abstract getDesignValidationIssues(): ValidationIssue[];
    abstract getRuntimeValidationIssues(): ValidationIssue[];
    abstract getAddedData(): IDataDefinition | IDataDefinition[] | undefined;
    focusControl(): void;
    abstract renderEditUI(): JSX.Element | null;
    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(): ExecutionData | undefined | null;
    getFormDataValue(fieldName: string): any;
    setFormData(value: ExecutionData): void;
    setFormDataValue(fieldName: string, value: any): void;
    toString(): string;
}
