import { type FocusEvent, type MutableRefObject, type PropsWithChildren, type Ref, type RefObject, type ReactNode, type ReactElement, type SetStateAction, type Dispatch } from 'react'; import { type GroupBase } from 'react-select'; import type { MenuListFunctionRefObject } from './components/MenuList.js'; import { SelectContent } from './SelectContent.js'; import { SelectCustomTrigger } from './SelectCustomTrigger.js'; import { SelectDisplayValue } from './SelectDisplayValue.js'; import { SelectEmptyState, type SelectEmptyStateProps } from './SelectEmptyState.js'; import { SelectFilter, type SelectFilterProps } from './SelectFilter.js'; import { SelectGroup, SelectGroupLabel } from './SelectGroup.js'; import { SelectOption } from './SelectOption.js'; import { SelectPrefix, type SelectPrefixProps } from './SelectPrefix.js'; import { SelectSuffix } from './SelectSuffix.js'; import { SelectTrigger } from './SelectTrigger.js'; import type { BaseOption, SelectContentWidthOptionsType, SelectTriggerWidthOptionsType, SelectMultiValue, SelectSingleValue } from './types.js'; import type { BehaviorTrackingProps } from '../../core/types/behavior-tracking-props.js'; import { DataTestId } from '../../core/types/data-props.js'; import { DOMProps } from '../../core/types/dom.js'; import type { FormControlProps } from '../../core/types/form-control-props.js'; import type { FormControlState, FormControlStateProps } from '../../core/types/form-control-state.js'; import { MaskingProps } from '../../core/types/masking-props.js'; import { StylingProps } from '../../core/types/styling-props.js'; import type { FormControlRef, FormControlWithOverlayRef } from '../shared-types.js'; declare module 'react-select/dist/declarations/src/Select' { interface Props> { /** Custom placeholder text */ placeholderText?: ReactNode; /** The trigger width set by the dev. */ triggerWidth?: SelectTriggerWidthOptionsType; /** Custom select trigger */ customTrigger?: ReactElement<{ [key: string]: any; } | null | undefined>; /** Custom display value. */ displayValue?: ReactNode[]; /** Prefix for the select trigger */ prefix?: ReactElement; triggerRef: HTMLElement | null; setTriggerRef: Dispatch>; /** Defines if the space for the prefix icons should be reserved in all options rendered */ optionsHavePrefix: boolean; /** Select.Filter component specified by dev */ customFilter?: ReactElement; /** Custom empty state provided by dev */ emptyState?: ReactElement; /** Form control state for errors and hints */ controlState?: FormControlState; loading?: boolean; clearable?: boolean; isRequired?: boolean; /** array of all select options (including those in groups) */ allOptions?: BaseOption