import type { IElementValueAccessor } from '../Interfaces/IElementValueAccessor';
interface IValueChangedCallback {
    (value: unknown): void;
}
interface IValueTouchedCallback {
    (): void;
}
/**
 * Base class for all ControlValueAccessor classes defined in Forms package.
 * Contains common logic and utility functions.
 *
 * @public
 * @abstract
 */
export declare abstract class ElementValueAccessorBase<TElement extends HTMLElement> implements IElementValueAccessor {
    private readonly _host;
    private _value;
    private _onTouched;
    private _onChange;
    private _onReset;
    /**
     * Constructs a new instance of the `ElementValueAccessorBase` class.
     *
     * @public
     */
    constructor(host: TElement);
    /**
     * Returns the element that the accessor is attached to.
     *
     * @protected
     * @readonly
     */
    protected get value(): unknown;
    protected set value(value: unknown);
    /**
     * Returns the element that the accessor is attached to.
     *
     * @protected
     * @readonly
     */
    protected get host(): TElement;
    /**
     * Returns the onTouched callback.
     *
     * @protected
     * @readonly
     */
    protected get onTouched(): IValueTouchedCallback;
    /**
     * Returns the onChange callback.
     *
     * @protected
     * @readonly
     */
    protected get onChange(): IValueChangedCallback;
    /**
     * @public
     */
    registerOnChange(fn: unknown): void;
    /**
     * @public
     */
    registerOnTouched(fn: unknown): void;
    /**
     * @public
     */
    registerOnReset(fn: unknown): void;
    /**
     * Sets the "disabled" property on the range input element.
     * @public
     */
    setDisabled(isDisabled: boolean): void;
    /**
     * Writes a value from the form framework into the accessor without
     * triggering the onChange callback. This is the correct behavior because
     * writeValue represents a programmatic push from the form model into the
     * control — it is not a user-initiated change.
     *
     * @public
     */
    writeValue(value: unknown): void;
    /**
     * @public
     */
    resetValue(): void;
    /**
     * @public
     */
    releaseCallbacks(): void;
    /**
     * Helper method that sets a property on a target element using the current Renderer implementation.
     *
     * @protected
     */
    protected setProperty(key: string, value: unknown): void;
}
export {};
//# sourceMappingURL=ElementValueAccessorBase.d.ts.map