import type { Observable } from 'rxjs'; import type { FormComponent } from './form-component'; import type { AttachmentsStore } from './attachments-store'; import type { FormControl } from './form-control'; import type { FormComponentStateReceiver } from './form-component-state-receiver'; import type { FormController } from '../controllers/form-controller'; import { TouchedEvent, ValueChangedEvent, StateChangedEvent } from '../common/types'; import { FormParent } from './form-parent'; /** * @internal */ export declare abstract class FormComponentImpl implements FormComponent { private readonly _onStateChange; private readonly _onValueChange; private readonly _onTouch; readonly id: number; protected _controller: FormController | null; protected _parentStateReceiver: FormComponentStateReceiver | null; protected _attachmentsStore: AttachmentsStore | null; private _isTouched; abstract get value(): TValue | null; abstract set value(value: TValue | null); abstract get isValid(): boolean; abstract get isEmpty(): boolean; abstract get isDirty(): boolean; abstract clone(): FormComponent; abstract enable(): void; abstract disable(): void; protected _el: HTMLElement | undefined; reset(): void; patchValue(value: TValue): void; get controller(): FormController | null; get onStateChange(): Observable>; get onValueChange(): Observable>; get onTouch(): Observable>; get isTouched(): boolean; _link(controller: FormController | null, parentStateReceiver: FormComponentStateReceiver | null, attachmentsStore: AttachmentsStore): void; _destroy(): void; _notifyValueChanged(origin: FormControl): void; _notifyTouched(origin: FormControl): void; _notifyStateChanged(origin: FormControl): void; _notifyComponentsChanged(_origin: FormParent): void; }