import * as Core from "@ariakit/core/select/select-store";
import type { BivariantCallback, PickRequired } from "@ariakit/core/utils/types";
import type { CompositeStoreFunctions, CompositeStoreOptions, CompositeStoreState } from "../composite/composite-store.js";
import type { PopoverStoreFunctions, PopoverStoreOptions, PopoverStoreState } from "../popover/popover-store.js";
import type { Store } from "../utils/store.js";
type Item = Core.SelectStoreItem;
type Value = Core.SelectStoreValue;
export declare function useSelectStoreOptions<T extends Value = Value>(props: SelectStoreProps<T>): {
    setOpen?: ((open: boolean) => void) | undefined;
    defaultOpen?: boolean | undefined;
    disclosure?: import("@ariakit/core/disclosure/disclosure-store").DisclosureStore | undefined;
    open?: boolean | undefined;
    animated?: number | boolean | undefined;
    setItems?: BivariantCallback<(items: ({
        id: string;
        element?: HTMLElement | null | undefined;
    } & {
        rowId?: string | undefined;
        disabled?: boolean | undefined;
        children?: string | undefined;
    } & {
        value?: string | undefined;
    })[]) => void> | undefined;
    defaultItems?: ({
        id: string;
        element?: HTMLElement | null | undefined;
    } & {
        rowId?: string | undefined;
        disabled?: boolean | undefined;
        children?: string | undefined;
    } & {
        value?: string | undefined;
    })[] | undefined;
    items?: ({
        id: string;
        element?: HTMLElement | null | undefined;
    } & {
        rowId?: string | undefined;
        disabled?: boolean | undefined;
        children?: string | undefined;
    } & {
        value?: string | undefined;
    })[] | undefined;
};
export declare function useSelectStoreProps<T extends SelectStore>(store: T, props: SelectStoreProps): T;
/**
 * Creates a select store.
 * @see https://ariakit.org/components/select
 * @example
 * ```jsx
 * const select = useSelectState({ defaultValue: "Apple" });
 * <Select state={select} />
 * <SelectPopover state={select}>
 *   <SelectItem value="Apple" />
 *   <SelectItem value="Orange" />
 * </SelectPopover>
 * ```
 */
export declare function useSelectStore<T extends Value = Value>(props: PickRequired<SelectStoreProps<T>, "value" | "defaultValue">): SelectStore<T>;
export declare function useSelectStore(props?: SelectStoreProps): SelectStore;
export type SelectStoreItem = Item;
export type SelectStoreValue = Value;
export interface SelectStoreState<T extends Value = Value> extends Core.SelectStoreState<T>, CompositeStoreState<Item>, PopoverStoreState {
}
export interface SelectStoreFunctions<T extends Value = Value> extends Core.SelectStoreFunctions<T>, CompositeStoreFunctions<Item>, PopoverStoreFunctions {
}
export interface SelectStoreOptions<T extends Value = Value> extends Core.SelectStoreOptions<T>, CompositeStoreOptions<Item>, PopoverStoreOptions {
    /**
     * Function that will be called when the `value` state changes.
     * @param value The new value.
     * @example
     * function MySelect({ value, onChange }) {
     *   const select = useSelectStore({ value, setValue: onChange });
     * }
     */
    setValue?: BivariantCallback<(value: SelectStoreState<T>["value"]) => void>;
}
export type SelectStoreProps<T extends Value = Value> = SelectStoreOptions<T> & Core.SelectStoreProps<T>;
export type SelectStore<T extends Value = Value> = SelectStoreFunctions<T> & Store<Core.SelectStore<T>>;
export {};
