import * as React from 'react'; export type Selector = (value: ContextProps) => SelectorValue; export type Trigger = (value: ContextProps) => void; export type Listeners = Set>; export interface Context { getValue: () => ContextProps; listeners: Listeners; } export interface ContextSelectorProviderProps { value: T; children?: React.ReactNode; } export interface SelectorContext { Context: React.Context>; Provider: React.ComponentType>; defaultValue?: ContextProps; } export declare function createContext(defaultValue?: ContextProps): SelectorContext; /** e.g. useSelect(userContext) => user */ export declare function useContext(holder: SelectorContext): ContextProps; /** e.g. useSelect(userContext, user => user.name) => user.name */ export declare function useContext(holder: SelectorContext, selector: Selector): SelectorValue; /** e.g. useSelect(userContext, ['name', 'age']) => user { name, age } */ export declare function useContext>(holder: SelectorContext, selector: (keyof ContextProps)[]): SelectorValue; /** e.g. useSelect(userContext, 'name') => user.name */ export declare function useContext(holder: SelectorContext, selector: PropName): ContextProps[PropName];