import React, { ElementType } from 'react'; export interface SelectOption { [key: string]: any; } export interface FormField { value?: any; onChange?: (value: any) => void; onBlur?: () => void; name?: string; disabled?: boolean; error?: string; } export interface ISelect { options: T[]; size: 'small' | 'medium' | 'large'; field?: FormField; Icon?: ElementType; defaultValue?: T; firstOption?: T; valueKey?: keyof T; labelKey?: keyof T; flagKey?: keyof T; flagType?: 'css'; onClick?: (event: React.MouseEvent) => void; onSelect?: (option: T) => void; onSearch?: (query: string) => void; placeholder?: string; disabled?: boolean; loading?: boolean; error?: string; className?: string; searchable?: boolean; maxHeight?: string | number; placement?: 'top' | 'bottom'; 'data-testid'?: string; ariaLabel?: string; ariaDescribedBy?: string; helpText?: string; required?: boolean; }