export interface FormControlInstance extends HTMLElement { _internals: ElementInternals; formAssociated: true; form: HTMLFormElement; name: string; type: string; defaultValue: string; validity: ValidityState; validationMessage: string; willValidate: boolean; valueAsNumber: number; composedLabel: string; checked?: boolean; readOnly: boolean; required: boolean; noValidate: boolean; disabled: boolean; value?: FormControlValue; min: number | string | null; max: number | string | null; pattern?: string; placeholder?: string; minLength?: number; maxLength?: number; step?: number; multiple?: boolean; autocomplete?: string; size?: number; formNoValidate?: boolean; formAction?: string; formMethod?: string; formTarget?: string; dirName?: string; list?: HTMLDataListElement | null; selectionStart?: number | null; selectionEnd?: number | null; selectionDirection?: 'forward' | 'backward' | 'none'; reset(): void; focus(): void; select(): void; setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none'): void; setRangeText(replacement: string, start?: number, end?: number, selectMode?: 'select' | 'start' | 'end' | 'preserve'): void; updateValue(value: FormControlValue): void; checkValidity(): boolean; reportValidity(): boolean; setValidity(validity: Partial, message?: string): void; setCustomValidity(message: string): void; setFormValue(value: string | File | FormData | null): void; _onChange(e: InputEvent, config?: { valueType: 'string' | 'number'; }): void; _onInput(e: InputEvent, config?: { valueType: 'string' | 'number'; }): void; } export interface FormControlMixin { new (...args: any[]): FormControlInstance; formAssociated: boolean; readonly observedAttributes: string[]; } export type FormControlValue = string | number | File | File[] | FormData | null | Record; type Constructor = (new (...args: any[]) => HTMLElement & { connectedCallback?(): void; disconnectedCallback?(): void; attributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void; requestUpdate?(name?: string, oldValue?: unknown): void; }) & { observedAttributes?: string[]; }; export declare function FormControlMixin(SuperClass: TBase): TBase & FormControlMixin; export {};