import { DependencyList, useMemo } from 'react'; import { useFnsWire } from '../fn-wire/use-fns-wire'; import { ReadOnlySelectorOptions, SelectorOptions, WritableSelectorOptions, } from '../state-selector/create-state-selector'; import { useStateSelector } from '../state-selector/use-state-selector'; import { ReadonlyWire, Wire } from '../wire/wire'; export function useSelector( options: WritableSelectorOptions, deps?: DependencyList, ): Wire; export function useSelector( options: ReadOnlySelectorOptions, deps?: DependencyList, ): ReadonlyWire; export function useSelector( options: SelectorOptions, deps?: DependencyList, ): ReadonlyWire | Wire { const fnsWire = useFnsWire(null); const selector = useStateSelector(options, deps); return useMemo(() => ({ ...fnsWire, ...selector }), [fnsWire, selector]); }