import { FormControlInstance, FormControlValue } from './form-control.mixin.js'; export interface SelectOption extends HTMLElement { value: string; selected: boolean; disabled: boolean; textContent: string | null; hasAttribute(name: string): boolean; } interface FormControlSelectInstance extends FormControlInstance { options: SelectOption[]; selectedOptions: SelectOption[]; selectedIndex: number; length: number; value: string | FormData; updateInitialSelected(): void; } export interface SelectFormControlMixin { new (...args: any[]): FormControlSelectInstance; formAssociated: boolean; readonly observedAttributes: string[]; } interface OptionInstance extends HTMLElement { value: string; selected: boolean; disabled: boolean; } export interface OptionMixin { new (...args: any[]): OptionInstance; readonly observedAttributes: string[]; } 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[]; }; /** * Mixin that extends FormControlMixin with select-specific functionality. * Provides native HTMLSelectElement-like behavior for custom select components. * * Features: * - options: Returns array of option elements * - selectedOptions: Returns array of selected option elements * - selectedIndex: Get/set the index of the first selected option * - length: Returns the number of options * - type: Returns 'select-one' or 'select-multiple' * - size: Defaults to 1 (unlike input which defaults to 20) * - Multiple select support with FormData for form submission */ export declare function SelectFormControlMixin(SuperClass: TBase): TBase & SelectFormControlMixin; /** * Mixin that provides option-specific functionality for custom option elements. * Provides native HTMLOptionElement-like behavior. * * Features: * - value: Get/set the option value (defaults to textContent if not set) * - selected: Get/set whether the option is selected * - disabled: Get/set whether the option is disabled */ export declare function OptionMixin(SuperClass: TBase): TBase & OptionMixin; export {};