import type { Nullable } from '../../../../Types/Nullable';
import type { ElementValidationError, ElementValidationMessageResolver, ElementValidationResult, IElementValidator } from './Interfaces/IElementValidator';
/**
 * @public
 * @abstract
 */
export declare abstract class ElementValidatorBase<TElement extends HTMLElement> implements IElementValidator {
    private readonly _host;
    private readonly _messageResolver;
    private readonly _observer;
    private _onChange;
    /**
     * Constructs a new instance of the `ElementValidatorBase` class.
     *
     * @public
     */
    constructor(host: TElement, messageResolver?: ElementValidationMessageResolver);
    /**
     * @protected
     * @abstract
     */
    protected abstract attributes: Array<string>;
    /**
     * Returns the element that the validator is attached to.
     *
     * @protected
     * @readonly
     */
    protected get host(): TElement;
    /**
     * Returns the message resolver function.
     *
     * @protected
     * @readonly
     */
    protected get messageResolver(): Nullable<ElementValidationMessageResolver>;
    /**
     * @public
     * @abstract
     */
    abstract validate(): Nullable<ElementValidationResult>;
    /**
     * @public
     */
    hostConnected(): void;
    /**
     * @public
     */
    hostDisconnected(): void;
    /**
     * @public
     */
    registerOnValidatorChange?(fn: (value: unknown) => void): void;
    /**
     * @protected
     */
    protected getMessage(error: Nullable<ElementValidationError>): Nullable<ElementValidationResult>;
}
//# sourceMappingURL=ElementValidatorBase.d.ts.map