import { PopoverProps as AriaPopoverProps } from 'react-aria-components/Popover';
import { SelectProps as AriaSelectProps } from 'react-aria-components/Select';
import { ContextValue } from 'react-aria-components/slots';
import { StyleProps } from './style-utils';
import { FocusableRefValue, SpectrumLabelableProps } from '@react-types/shared';
import { ListBoxItemProps, ListBoxProps } from 'react-aria-components/ListBox';
import React, { ReactNode } from 'react';
export interface PickerStyleProps {
}
export interface PickerProps<T extends object> extends Omit<AriaSelectProps<T>, 'children' | 'style' | 'className' | 'render' | 'placeholder'>, PickerStyleProps, StyleProps, SpectrumLabelableProps, Pick<ListBoxProps<T>, 'items'>, Pick<AriaPopoverProps, 'shouldFlip'> {
    /** The contents of the collection. */
    children: ReactNode | ((item: T) => ReactNode);
    /**
     * Direction the menu will render relative to the Picker.
     *
     * @default 'bottom'
     */
    direction?: 'bottom' | 'top';
    /**
     * Alignment of the menu relative to the input target.
     *
     * @default 'start'
     */
    align?: 'start' | 'end';
    /** Width of the menu. By default, matches width of the trigger. Note that the minimum width of the dropdown is always equal to the trigger's width. */
    menuWidth?: number;
    /** Density of the tabs, affects the height of the picker. */
    density: 'compact' | 'regular';
    /**
     * If the tab picker should only display icon and no text for the button label.
     * @default 'show
     */
    labelBehavior?: 'show' | 'hide';
    /** Id for the SelectedValue so we can label using it. */
    valueId?: string;
}
export declare const PickerContext: React.Context<ContextValue<Partial<PickerProps<any>>, FocusableRefValue<HTMLButtonElement, HTMLButtonElement>>>;
export declare let menu: (props: {
    size: "L" | "S" | "XL" | "XS" | undefined;
} | {
    [x: string]: any;
}) => import("../style/types").StyleString<"boxSizing" | "display" | "fontFamily" | "fontSize" | "gridTemplateColumns" | "maxHeight" | "outlineStyle" | "overflow" | "padding" | "width">;
/**
 * Pickers allow users to choose a single option from a collapsible list of options when space is limited.
 */
declare let _Picker: <T extends object>(props: PickerProps<T> & React.RefAttributes<FocusableRefValue<HTMLButtonElement, HTMLButtonElement>>) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
export { _Picker as Picker };
export interface PickerItemProps extends Omit<ListBoxItemProps, 'children' | 'style' | 'className' | 'render'>, StyleProps {
    children: ReactNode;
}
export declare function PickerItem(props: PickerItemProps): ReactNode;
