import { Select as SelectPrimitive } from '@base-ui/react/select';
import * as React from 'react';
import { type FieldProps } from '@/components/atoms/forms/_shared';
interface SelectRootProps extends Omit<React.ComponentProps<typeof SelectPrimitive.Root>, 'value' | 'onValueChange' | 'items'> {
    /**
     * Optional custom trigger element that opens the select.
     * When provided, uses base-ui's render prop to prevent nested button hydration errors.
     * The trigger element will replace the default SelectTrigger entirely.
     * Note: You are responsible for rendering SelectValue inside your trigger to show the selected value.
     *
     * @example
     * <SelectRoot
     *   trigger={
     *     <Button appearance="outline" variant="secondary">
     *       <SelectValue placeholder="Choose..." />
     *     </Button>
     *   }
     * >
     *   <SelectPopup>...</SelectPopup>
     * </SelectRoot>
     */
    trigger?: React.ReactElement;
    /** Controlled value. When provided, component is controlled. */
    value?: string;
    /** Initial selected value for uncontrolled mode. */
    defaultValue?: string;
    /** Callback when selected value changes */
    onValueChange?: (value: string) => void;
    /**
     * Value→label map so Select.Value can display labels instead of raw values.
     * Auto-extracted from SelectItem children when omitted.
     */
    items?: Record<string, React.ReactNode>;
}
export type SelectPopupProps = SelectPrimitive.Popup.Props & Pick<SelectPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'>;
export type SelectGroupProps = SelectPrimitive.Group.Props;
export type SelectItemProps = SelectPrimitive.Item.Props;
export type SelectGroupLabelProps = SelectPrimitive.GroupLabel.Props;
export type SelectScrollDownButtonProps = React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>;
export type SelectScrollUpButtonProps = React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>;
export type SelectSeparatorProps = SelectPrimitive.Separator.Props;
export type SelectTriggerProps = SelectPrimitive.Trigger.Props & {
    /** Size variant matching Figma specs */
    size?: 'xs' | 'sm' | 'md' | 'lg';
    /** Shape variant */
    shape?: 'rounded' | 'round';
    /** Validation state */
    state?: 'default' | 'success' | 'error';
    /** Read-only mode renders as static text */
    readOnly?: boolean;
};
export interface SelectValueProps extends Omit<SelectPrimitive.Value.Props, 'children'> {
    placeholder?: string;
    children?: React.ReactNode | ((value: string | null) => React.ReactNode);
}
export type SelectTriggerIconProps = React.HTMLAttributes<HTMLSpanElement>;
declare const SelectTriggerIcon: React.ForwardRefExoticComponent<SelectTriggerIconProps & React.RefAttributes<HTMLSpanElement>>;
declare function SelectRoot({ trigger, value: controlledValue, defaultValue, onValueChange, items: itemsProp, children, ...props }: SelectRootProps): import("react/jsx-runtime").JSX.Element;
declare namespace SelectRoot {
    var displayName: string;
}
declare const SelectGroup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectValue: React.ForwardRefExoticComponent<Omit<SelectValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectTriggerProps, "ref"> & React.RefAttributes<HTMLElement>>;
declare const SelectPopup: React.ForwardRefExoticComponent<Omit<SelectPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectGroupLabel: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectItem: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectItemProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").SelectScrollUpArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").SelectScrollDownArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
export interface SelectProps extends FieldProps {
    /** Placeholder text for the trigger */
    placeholder?: string;
    /** Size variant matching Figma specs */
    size?: 'xs' | 'sm' | 'md' | 'lg';
    /** Shape variant */
    shape?: 'rounded' | 'round';
    /** Read-only mode renders as static text */
    readOnly?: boolean;
    /** Controlled value */
    value?: string;
    /** Initial selected value for uncontrolled mode */
    defaultValue?: string;
    /** Callback when selected value changes */
    onValueChange?: (value: string) => void;
    /** Whether the select is disabled */
    disabled?: boolean;
    /** SelectItem children */
    children: React.ReactNode;
    /** Additional class name for the trigger */
    className?: string;
    /** Name attribute for form submission */
    name?: string;
}
declare function Select({ placeholder, size, shape, readOnly, value, defaultValue, onValueChange, disabled, children, className, name, ...rest }: SelectProps): import("react/jsx-runtime").JSX.Element;
declare namespace Select {
    var displayName: string;
}
/**
 * Compound Select for advanced usage (custom triggers, popups, etc.)
 *
 * @example
 * ```tsx
 * <SelectCompound>
 *   <SelectTrigger>
 *     <SelectValue placeholder="Select an option" />
 *   </SelectTrigger>
 *   <SelectPopup>
 *     <SelectItem value="1">Option 1</SelectItem>
 *   </SelectPopup>
 * </SelectCompound>
 * ```
 */
declare const SelectCompound: typeof SelectRoot & {
    Root: typeof SelectRoot;
    Group: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    Value: React.ForwardRefExoticComponent<Omit<SelectValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
    Trigger: React.ForwardRefExoticComponent<Omit<SelectTriggerProps, "ref"> & React.RefAttributes<HTMLElement>> & {
        Icon: React.ForwardRefExoticComponent<SelectTriggerIconProps & React.RefAttributes<HTMLSpanElement>>;
    };
    Popup: React.ForwardRefExoticComponent<Omit<SelectPopupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    GroupLabel: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupLabelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    Item: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectItemProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    Separator: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
    ScrollUpButton: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").SelectScrollUpArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
    ScrollDownButton: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").SelectScrollDownArrowProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
};
export { Select, SelectCompound, SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerIcon, SelectValue, };
