import { LitElement } from 'lit';
type HTMLElementConstructor = new (...args: any[]) => T;
type NativeFormControlElement = HTMLInputElement;
type FlagTypes = 'badInput' | 'customError' | 'patternMismatch' | 'rangeOverflow' | 'rangeUnderflow' | 'stepMismatch' | 'tooLong' | 'tooShort' | 'typeMismatch' | 'valueMissing' | 'badInput' | 'valid';
interface UUIFormControlValidatorConfig {
flagKey: FlagTypes;
getMessageMethod: () => string;
checkMethod: () => boolean;
weight: number;
}
export interface UUIFormControlMixinInterface extends LitElement {
addValidator: (flagKey: FlagTypes, getMessageMethod: () => string, checkMethod: () => boolean) => void;
removeValidator: (obj: UUIFormControlValidatorConfig) => void;
focusFirstInvalidElement(): void;
get value(): ValueType;
set value(newValue: ValueType);
formResetCallback(): void;
checkValidity(): boolean;
get validationMessage(): string;
get validity(): ValidityState;
setCustomValidity(error?: string): void;
submit(): void;
pristine: boolean;
}
export declare abstract class UUIFormControlMixinElement extends LitElement implements UUIFormControlMixinInterface {
protected _internals: ElementInternals;
protected _runValidators(): void;
addValidator: (flagKey: FlagTypes, getMessageMethod: () => string, checkMethod: () => boolean) => void;
removeValidator: (obj: UUIFormControlValidatorConfig) => void;
protected addFormControlElement(element: NativeFormControlElement): void;
protected abstract getFormElement(): HTMLElement | undefined | null;
focusFirstInvalidElement(): void;
get value(): ValueType;
set value(newValue: ValueType);
formResetCallback(): void;
checkValidity(): boolean;
get validationMessage(): string;
get validity(): ValidityState;
setCustomValidity(error: string): void;
submit(): void;
pristine: boolean;
name: string;
required: boolean;
requiredMessage: string;
error: boolean;
errorMessage: string;
}
/**
* The mixin allows a custom element to participate in HTML forms.
*
* @param {Object} superClass - superclass to be extended.
* @mixin
*/
export declare const UUIFormControlMixin: = typeof LitElement, DefaultValueType = undefined>(superClass: T, defaultValue?: DefaultValueType) => HTMLElementConstructor> & T;
export {};