import { type ReactNode, type ReactElement } from "react";
import { type Props as ReactSelectProps, type GroupBase } from "react-select";
import { type TIconType } from "../adpIcon";
import { type TSelectSize, type IOption } from "./types";
/**
 * Props for the Select component
 */
export interface ISelectProps<IsMulti extends boolean = false, Group extends GroupBase<IOption> = GroupBase<IOption>> extends Omit<ReactSelectProps<IOption, IsMulti, Group>, "options" | "value" | "className"> {
    /** Unique id for the select input */
    id?: string;
    /** Custom className for wrapper */
    className?: string;
    /** Label displayed above select */
    label?: ReactNode;
    /** Select size variant */
    size?: TSelectSize;
    /** Options or groups to render */
    options?: ReactSelectProps<IOption, IsMulti, Group>["options"];
    /** Current value of the select */
    value?: ReactSelectProps<IOption, IsMulti, Group>["value"];
    /** Helper text displayed below */
    helperText?: ReactNode;
    /** Display error styling */
    error?: boolean;
    /** Disable the select */
    disabled?: boolean;
    /** Enable creatable select */
    creatable?: boolean;
    /** Field touched state */
    touched?: boolean;
    /** Max number of visible values in multi */
    maxVisibleValues?: number;
    /** Label for truncated values */
    maxVisibleValuesMsg?: string;
    /** Custom footer in menu */
    menuFooter?: ReactNode;
    /** Prefix icon for the control */
    prefixIcon?: TIconType | ReactNode;
    /** Suffix icon for the control */
    suffixIcon?: TIconType | ReactNode;
}
/**
 * Select component for single or multi selection
 */
export declare function Select<IsMulti extends boolean = false, Group extends GroupBase<IOption> = GroupBase<IOption>>(selectProps: ISelectProps<IsMulti, Group>): ReactElement;
export declare namespace Select {
    var displayName: string;
}
