import type { DCloneHTMLElement, DId, DSize } from '../../utils/types';
import type { DFormControl } from '../form';
import React from 'react';
export interface DSelectRef {
updatePosition: () => void;
}
export interface DSelectItem {
label: string;
value: V;
disabled?: boolean;
children?: DSelectItem[];
}
export interface DSelectProps> extends Omit, 'children'> {
dRef?: {
input?: React.ForwardedRef;
};
dFormControl?: DFormControl;
dList: T[];
dModel?: V | null | V[];
dVisible?: boolean;
dInitialVisible?: boolean;
dPlaceholder?: string;
dSize?: DSize;
dLoading?: boolean;
dSearchable?: boolean;
dSearchValue?: string;
dClearable?: boolean;
dDisabled?: boolean;
dMultiple?: boolean;
dMonospaced?: boolean;
dVirtual?: boolean;
dCustomItem?: (item: T) => React.ReactNode;
dCustomSelected?: (select: T) => string;
dCustomSearch?: {
filter?: (value: string, item: T) => boolean;
sort?: (a: T, b: T) => number;
};
dCreateItem?: (value: string) => T | undefined;
dPopupClassName?: string;
dInputRender?: DCloneHTMLElement>;
onModelChange?: (value: any, item: any) => void;
onVisibleChange?: (visible: boolean) => void;
onSearchValueChange?: (value: string) => void;
onClear?: () => void;
onCreateItem?: (item: T) => void;
onScrollBottom?: () => void;
afterVisibleChange?: (visible: boolean) => void;
}
declare function Select>(props: DSelectProps, ref: React.ForwardedRef): JSX.Element | null;
export declare const DSelect: >(props: DSelectProps & React.RefAttributes) => ReturnType;
export {};