import { type PropsWithChildren, type ReactElement } from "react";
import { type Key, type Keyed } from "@synnaxlabs/x";
import { type UseSelectProps } from './useSelect';
interface SelectContextValue<K extends Key = Key> {
    selected: K[];
}
interface SelectUtilContextValue<K extends Key = Key> {
    onSelect: (key: K) => void;
    clear: () => void;
    getSelected: () => K[];
}
export type SelectorProps<K extends Key = Key, E extends Keyed<K> = Keyed<K>> = PropsWithChildren<Omit<UseSelectProps<K, E>, "data">>;
export declare const useSelectionContext: <K extends Key = Key>() => SelectContextValue<K>;
export declare const useSelection: <K extends Key = Key>() => K[];
export declare const useSelectionUtils: <K extends Key = Key>() => SelectUtilContextValue<K>;
/**
 * Implements selection behavior for a list.
 *
 * @param props - The props for the List.Selector component. These props are identical
 * to the props for {@link useSelect} hook.
 */
export declare const Selector: <K extends Key = Key, E extends Keyed<K> = Keyed<K>>({ value, children, ...props }: SelectorProps<K, E>) => ReactElement;
export {};
