import { type Control, type FieldPath, type FieldValues } from "react-hook-form"; import { type AsyncSelectOption, type AsyncSelectProps } from "@/components/inputs/async-select"; import { type SelectProps } from "@/components/ui/select"; import { type FormFieldShellControlProps } from "@/components/form/form-field-shell"; export type FormSelectKind = "simple" | "async"; type FormSelectBaseProps> = FormFieldShellControlProps & { control: Control; name: TName; fieldClassName?: string; }; export type FormSimpleSelectProps = FieldPath> = Omit & FormSelectBaseProps & { kind?: "simple"; emptyValue?: unknown; onValueChange?: (value: string) => void; }; export type FormSelectAsyncVariantProps = FieldPath, TValue extends string = string, TData = unknown, TOption extends AsyncSelectOption = AsyncSelectOption> = Omit, "value" | "onValueChange" | "disabled"> & FormSelectBaseProps & { kind: "async"; emptyValue?: unknown; onValueChange?: (value: TValue | undefined, option?: TOption) => void; }; export type FormSelectProps = FieldPath, TValue extends string = string, TData = unknown, TOption extends AsyncSelectOption = AsyncSelectOption> = FormSimpleSelectProps | FormSelectAsyncVariantProps; declare function FormSelect = FieldPath, TValue extends string = string, TData = unknown, TOption extends AsyncSelectOption = AsyncSelectOption>(props: FormSelectProps): import("react").JSX.Element; export { FormSelect };