import type { ValueComparator } from '../value-comparators/value-comparator'; import type { OnChangeCallback, OnTouchedCallback } from './value-accessor-base'; export interface ValueAccessor { readonly valueComparator: ValueComparator; readonly supportsMultipleElements: boolean; readonly supportsNativeValidation: boolean; readonly kind: string; readonly elements: ReadonlySet; attach(el: TElement): void | Promise; detach(el: TElement): void; waitForRenderComplete(el: TElement): Promise; readValue(): TValue | null; writeValue(value: TValue): void; setDisabledState(disabled: boolean): void; focus(): void; isEmpty(value: TValue | null): boolean; reset(): void; checkValidity(): boolean; reportValidity(): void; setCustomValidity(message: string): void; /** * @internal */ _registerListeners(onTouched: OnTouchedCallback, onChange: OnChangeCallback): void; }