import { Component, ReactNode } from 'react'; import { Form } from './form'; import { FormDataEntry } from './form-data-entry'; import { FormControlProps, IFormControl } from './form.doc'; declare abstract class FormControl = FormControlProps> extends Component implements IFormControl { protected form: Form | undefined; protected _dataEntry: FormDataEntry | undefined; touched: boolean; active: boolean; uncontrolledValue: T | undefined; readonly changed: boolean; readonly dataEntry: FormDataEntry | undefined; readonly controlled: boolean; readonly readOnly: boolean; readonly name: string | undefined; readonly value: T | undefined; readonly empty: boolean; readonly error: string | undefined; isEmpty(value: unknown): boolean; render(): ReactNode; abstract renderControl(): ReactNode; componentDidMount(): void; componentWillUnmount(): void; onChange: () => void; onFocus: () => void; onBlur: () => void; focus(): void; blur(): void; initialize(): void; reset(): void; preSubmit(): void; protected abstract focusControl(): void; protected abstract blurControl(): void; protected abstract resetControl(value: T | undefined): void; protected abstract validateControl(): void; protected renderErrorMessage(): ReactNode; } export declare const AbstractFormControl: typeof FormControl; export {};