import { StoreApi } from 'zustand';
import { ReactNode, ButtonHTMLAttributes, HTMLAttributes } from 'react';
interface TriggerRect {
    top: number;
    left: number;
    width: number;
    height: number;
}
interface SelectStore {
    open: boolean;
    setOpen: (open: boolean) => void;
    value: string;
    setValue: (value: string) => void;
    selectedLabel: ReactNode;
    setSelectedLabel: (label: ReactNode) => void;
    onValueChange?: (value: string) => void;
    triggerRect: TriggerRect | null;
    setTriggerRect: (rect: TriggerRect | null) => void;
}
type SelectStoreApi = StoreApi<SelectStore>;
export declare function createSelectStore(onValueChange?: (value: string) => void): SelectStoreApi;
export declare const useSelectStore: (externalStore?: SelectStoreApi) => SelectStoreApi;
export declare function getLabelAsNode(children: ReactNode): ReactNode;
interface SelectProps {
    className?: string;
    children: ReactNode;
    defaultValue?: string;
    value?: string;
    onValueChange?: (value: string) => void;
    size?: 'small' | 'medium' | 'large' | 'extra-large';
    label?: string;
    helperText?: string;
    errorMessage?: string;
    id?: string;
}
declare const Select: ({ children, defaultValue, className, value: propValue, onValueChange, size, label, helperText, errorMessage, id, }: SelectProps) => import("react/jsx-runtime").JSX.Element;
declare const SelectValue: ({ placeholder, icon, store: externalStore, }: {
    placeholder?: string;
    /** Optional leading icon rendered before the selected label/placeholder. */
    icon?: ReactNode;
    store?: SelectStoreApi;
}) => import("react/jsx-runtime").JSX.Element;
interface SelectTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {
    className?: string;
    invalid?: boolean;
    variant?: 'outlined' | 'underlined' | 'rounded';
    store?: SelectStoreApi;
    size?: 'small' | 'medium' | 'large' | 'extra-large';
    selectId?: string;
}
declare const SelectTrigger: import("react").ForwardRefExoticComponent<SelectTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
interface SelectContentProps extends HTMLAttributes<HTMLDivElement> {
    className?: string;
    align?: 'start' | 'center' | 'end';
    side?: 'top' | 'right' | 'bottom' | 'left';
    store?: SelectStoreApi;
    selectId?: string;
}
declare const SelectContent: import("react").ForwardRefExoticComponent<SelectContentProps & import("react").RefAttributes<HTMLDivElement>>;
interface SelectItemProps extends HTMLAttributes<HTMLDivElement> {
    value: string;
    disabled?: boolean;
    store?: SelectStoreApi;
    truncate?: boolean;
}
declare const SelectItem: import("react").ForwardRefExoticComponent<SelectItemProps & import("react").RefAttributes<HTMLDivElement>>;
export default Select;
export { SelectTrigger, SelectContent, SelectItem, SelectValue };
//# sourceMappingURL=Select.d.ts.map