
import { FieldBaseProps } from "../../../shared/form.js";
import "../../../shared/index.js";
import { CubeTooltipProviderProps } from "../../overlays/Tooltip/TooltipProvider.js";
import { CubeItemBadgeProps } from "../../content/ItemBadge/ItemBadge.js";
import { CubeItemActionProps } from "../../actions/ItemAction/ItemAction.js";
import "../../actions/index.js";
import { CubeCollectionItemProps, _CollectionItem } from "../../CollectionItem.js";
import "../../../index.js";
import * as _tenphi_tasty0 from "@tenphi/tasty";
import { BasePropsWithoutChildren, BaseStyleProps, ColorStyleProps, OuterStyleProps, Props, Styles } from "@tenphi/tasty";
import React, { ReactElement, ReactNode, RefObject } from "react";
import * as react_jsx_runtime0 from "react/jsx-runtime";
import { AriaSelectProps } from "react-aria";
import { Section, useSelectState } from "react-stately";
import * as _react_types_shared0 from "@react-types/shared";
import { AriaLabelingProps, CollectionBase, DOMRef, Key as Key$2 } from "@react-types/shared";

//#region src/components/fields/Select/Select.d.ts
declare const ListBoxElement: _tenphi_tasty0.TastyPolymorphicComponent<"ul", readonly (keyof _tenphi_tasty0.StylesInterface)[], _tenphi_tasty0.VariantMap, readonly never[], readonly never[]> & {
  [x: string]: React.ForwardRefExoticComponent<Omit<_tenphi_tasty0.SubElementProps<never>, "ref"> & React.RefAttributes<never>>;
};
interface CubeSelectBaseProps<T> extends BasePropsWithoutChildren, AriaLabelingProps, BaseStyleProps, OuterStyleProps, ColorStyleProps, Omit<FieldBaseProps, 'tooltip'>, CollectionBase<T>, Omit<AriaSelectProps<T>, 'errorMessage' | 'selectedKey' | 'defaultSelectedKey' | 'onSelectionChange'> {
  /** The currently selected key in the collection (controlled). */
  selectedKey?: Key$2 | null;
  /** The initial selected key in the collection (uncontrolled). */
  defaultSelectedKey?: Key$2;
  /** Handler that is called when the selection changes. */
  onSelectionChange?: (key: Key$2 | null) => void;
  icon?: ReactElement;
  rightIcon?: ReactNode;
  prefix?: ReactNode;
  suffix?: ReactNode;
  /** Description text for the trigger. Note: Different from field-level description. */
  triggerDescription?: ReactNode;
  descriptionPlacement?: 'inline' | 'block';
  /** Keyboard shortcut that triggers the select when pressed */
  hotkeys?: string;
  /**
   * Tooltip content and configuration for the trigger:
   * - string: simple tooltip text
   * - true: auto tooltip on overflow (shows selected value as tooltip when truncated)
   * - object: advanced configuration with optional auto property
   */
  tooltip?: string | boolean | (Omit<CubeTooltipProviderProps, 'children'> & {
    auto?: boolean;
  });
  triggerRef?: RefObject<HTMLButtonElement>;
  isLoading?: boolean;
  loadingIndicator?: ReactNode;
  overlayOffset?: number;
  hideTrigger?: boolean;
  /**
   *  @deprecated Use `triggerStyles` instead
   */
  inputStyles?: Styles;
  optionStyles?: Styles;
  triggerStyles?: Styles;
  listBoxStyles?: Styles;
  overlayStyles?: Styles;
  direction?: 'top' | 'bottom';
  shouldFlip?: boolean;
  /** Minimum padding in pixels between the popover and viewport edges */
  containerPadding?: number;
  inputProps?: Props;
  type?: 'outline' | 'outline-2' | 'clear' | 'primary' | (string & {});
  /**
   * Shape of the trigger's border radius.
   * - `card` - Card shape with larger border radius (`1cr`)
   * - `button` - Button shape with default border radius (default)
   * - `sharp` - Sharp corners with no border radius (`0`)
   * - `pill` - Pill shape with fully rounded ends (`round`)
   * @default "button"
   */
  shape?: 'card' | 'button' | 'sharp' | 'pill';
  suffixPosition?: 'before' | 'after';
  theme?: 'default' | 'special';
  /** Whether the select is clearable using a clear button in the rightIcon slot */
  isClearable?: boolean;
  /** Callback called when the clear button is pressed */
  onClear?: () => void;
  /** Callback called when the popover open state changes */
  onOpenChange?: (isOpen: boolean) => void;
}
interface CubeSelectProps<T> extends CubeSelectBaseProps<T> {
  popoverRef?: RefObject<HTMLInputElement>;
  /** The ref for the list box. */
  listBoxRef?: RefObject<HTMLElement>;
  size?: 'small' | 'medium' | 'large' | (string & {});
  placeholder?: string;
}
declare function ListBoxPopup({
  state,
  popoverRef,
  listBoxRef,
  listBoxStyles,
  overlayStyles,
  optionStyles,
  overlayProps: parentOverlayProps,
  shouldUseVirtualFocus,
  placement,
  minWidth,
  size,
  triggerRef,
  isDisabled,
  ...otherProps
}: {
  [x: string]: any;
  state: any;
  popoverRef: any;
  listBoxRef: any;
  listBoxStyles: any;
  overlayStyles: any;
  optionStyles: any;
  overlayProps: any;
  shouldUseVirtualFocus?: boolean | undefined;
  placement: any;
  minWidth: any;
  size?: string | undefined;
  triggerRef: any;
  isDisabled: any;
}): react_jsx_runtime0.JSX.Element;
type SectionComponent = typeof Section;
declare const SelectSectionComponent: SectionComponent;
declare const __Select: (<T extends object>(props: CubeSelectProps<object> & {
  ref?: DOMRef<HTMLDivElement> | undefined;
}) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>>) & {
  Item: typeof _CollectionItem;
  Section: typeof SelectSectionComponent;
} & {
  Item: (<T>(props: CubeCollectionItemProps<T>) => ReactElement) & {
    Action: React.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & React.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
    Badge: React.ForwardRefExoticComponent<CubeItemBadgeProps & React.RefAttributes<HTMLDivElement>>;
  };
  Section: any;
};
//#endregion
export { type AriaSelectProps, CubeSelectBaseProps, CubeSelectProps, ListBoxElement, ListBoxPopup, __Select, useSelectState };
//# sourceMappingURL=Select.d.ts.map