import React from "react";
import { Select as SelectPrimitive } from "@base-ui/react/select";
import { LabelAnimationProps } from "../animation/LabelAnimation";
import { VariantProps } from "class-variance-authority";
import { componentVariantPropNames, floatingPositionStrategies } from "../../../fd-toolbox/constants/html-constants";
/**
 * Props for {@link SelectTrigger}
 *
 * Extends [VariantProps](https:/cva.style/docs/getting-started/variants) of {@link selectVariants}
 */
interface SelectTriggerProps extends Omit<LabelAnimationProps, typeof componentVariantPropNames.variant>, React.PropsWithChildren, VariantProps<typeof selectVariants> {
    id?: string;
    /** Additional class name for the icon */
    iconClassName?: string;
    /** If true, removes the underline from the select trigger */
    noUnderline?: boolean;
}
/**
 * Button for scrolling select content up
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
/**
 * Button for scrolling select content down
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
/**
 * Container component for select dropdown content
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
interface SelectContentProps {
    className?: string;
    position?: (typeof floatingPositionStrategies)[keyof typeof floatingPositionStrategies];
    disablePortal?: boolean;
}
interface SelectLabelProps {
    className?: string;
    ref?: React.Ref<React.ComponentRef<typeof SelectPrimitive.GroupLabel>>;
}
/**
 * Selectable option in select dropdown
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 *
 * @example
 * ```tsx
 * <SelectItem value="item-1">Item 1</SelectItem>
 * ```
 */
interface SelectItemProps {
    className?: string;
    value: string;
    id?: string;
}
/**
 * Using [class-variance-authority](https:/cva.style/docs/getting-started/variants)
 */
export declare const selectVariants: (props?: {
    variant?: "float" | "bordered";
    size?: "default" | "short";
} & import("class-variance-authority/types").ClassProp) => string;
/**
 * Original Root component from Base UI Select
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 *
 * @example
 * ```tsx
    function MyComponent() {
        const [value, setValue] = useState<string | null>(null);

        return (
            <Select value={value} onValueChange={setValue}>
                <SelectTrigger label="Status" variant="float">
                    <SelectValue />
                </SelectTrigger>
                <SelectContent>
                    <SelectItem value="draft">Draft</SelectItem>
                    <SelectItem value="published">Published</SelectItem>
                </SelectContent>
            </Select>
        );
    }
 * ```
 */
/** @monorepo-internal */
export declare const Select: typeof SelectPrimitive.Root;
/**
 * Original Group component from Base UI Select
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
/** @monorepo-internal */
declare const SelectGroup: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
/**
 * Original Value component from Base UI Select
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
/** @monorepo-internal */
declare const SelectValue: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").SelectValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
/** @monorepo-internal */
declare function SelectTrigger({ className, children, label, shouldAnimate, skipAnimationOnce, variant, size, iconClassName, noUnderline, id, ref, }: SelectTriggerProps & {
    ref?: React.Ref<React.ComponentRef<typeof SelectPrimitive.Trigger>>;
}): React.JSX.Element;
declare namespace SelectTrigger {
    var displayName: string;
}
/** @monorepo-internal */
declare function SelectContent({ className, children, position, disablePortal, }: SelectContentProps & React.PropsWithChildren): React.JSX.Element;
declare namespace SelectContent {
    var displayName: string;
}
/**
 * Label component for select groups
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
declare function SelectLabel({ className, children, ref }: SelectLabelProps & React.PropsWithChildren): React.JSX.Element;
declare namespace SelectLabel {
    var displayName: string;
}
/** @monorepo-internal */
declare function SelectItem({ className, value, children, id }: SelectItemProps & React.PropsWithChildren): React.JSX.Element;
declare namespace SelectItem {
    var displayName: string;
}
/**
 * Separator line between select options
 *
 * Based on [select](https:/ui.shadcn.com/docs/components/select)
 */
declare function SelectSeparator({ className }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>): React.JSX.Element;
declare namespace SelectSeparator {
    var displayName: string;
}
export { SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, type SelectTriggerProps, };
