import { ChangeDetectorRef, type Provider, type Type } from '@angular/core'; import { type ControlValueAccessor, type FormControlStatus, NgControl } from '@angular/forms'; import { TuiValueTransformer } from './value-transformer'; import * as i0 from "@angular/core"; /** * Basic ControlValueAccessor class to build form components upon */ export declare abstract class TuiControl implements ControlValueAccessor { private readonly fallback; private readonly refresh$; private readonly internal; protected readonly control: NgControl; protected readonly cdr: ChangeDetectorRef; protected transformer: TuiValueTransformer; readonly value: import("@angular/core").Signal; readonly readOnly: import("@angular/core").InputSignal; readonly pseudoInvalid: import("@angular/core").InputSignal; readonly touched: import("@angular/core").WritableSignal; readonly status: import("@angular/core").WritableSignal; readonly disabled: import("@angular/core").Signal; readonly interactive: import("@angular/core").Signal; readonly invalid: import("@angular/core").Signal; readonly mode: import("@angular/core").Signal<"invalid" | "readonly" | "valid">; onTouched: (...args: any[]) => void; onChange: (value: T) => void; constructor(); registerOnChange(onChange: (value: unknown) => void): void; registerOnTouched(onTouched: () => void): void; setDisabledState(): void; writeValue(value: T | null): void; private update; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵdir: i0.ɵɵDirectiveDeclaration, never, never, { "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "pseudoInvalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } export declare function tuiAsControl(control: Type>): Provider;