import type { KeyboardEvent } from "react";
import type { BooleanOrCallback } from "@ariakit/core/utils/types";
import type { CompositeTypeaheadOptions } from "../composite/composite-typeahead.js";
import type { CompositeOptions } from "../composite/composite.js";
import type { DisclosureContentOptions } from "../disclosure/disclosure-content.js";
import type { As, Props } from "../utils/types.js";
import type { SelectStore } from "./select-store.js";
/**
 * Returns props to create a `SelectList` component.
 * @see https://ariakit.org/components/select
 * @example
 * ```jsx
 * const store = useSelectStore();
 * const props = useSelectList({ store });
 * <Role {...props}>
 *   <SelectItem value="Apple" />
 *   <SelectItem value="Orange" />
 * </Role>
 * ```
 */
export declare const useSelectList: import("../utils/types.js").Hook<SelectListOptions<"div">>;
/**
 * Renders a select list. The `role` prop is set to `listbox` by default, but
 * can be overriden by any other valid select popup role (`listbox`, `menu`,
 * `tree`, `grid` or `dialog`). The `aria-labelledby` prop is set to the select
 * input element's `id` by default.
 * @see https://ariakit.org/components/select
 * @example
 * ```jsx
 * const select = useSelectStore();
 * <Select store={select} />
 * <SelectList store={select}>
 *   <SelectItem value="Apple" />
 *   <SelectItem value="Orange" />
 * </SelectList>
 * ```
 */
export declare const SelectList: import("../utils/types.js").Component<SelectListOptions<"div">>;
export interface SelectListOptions<T extends As = "div"> extends CompositeOptions<T>, CompositeTypeaheadOptions<T>, Pick<DisclosureContentOptions, "alwaysVisible"> {
    /**
     * Object returned by the `useSelectStore` hook.
     */
    store: SelectStore;
    /**
     * Whether the select value should be reset to the value before the list got
     * shown when Escape is pressed. This has effect only when `selectOnMove` is
     * `true` on the select store.
     * @default true
     */
    resetOnEscape?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;
    /**
     * Whether the select list should be hidden when the user presses Enter or
     * Space while the list is focused (that is, no item is selected).
     * @default true
     */
    hideOnEnter?: BooleanOrCallback<KeyboardEvent<HTMLElement>>;
}
export type SelectListProps<T extends As = "div"> = Props<SelectListOptions<T>>;
