zustand
Version: 
🐻 Bear necessities for state management in React
22 lines (21 loc) • 773 B
TypeScript
import { ReactNode } from 'react';
import { StoreApi } from 'zustand';
declare type UseContextStore<S extends StoreApi> = {
    (): ExtractState<S>;
    <U>(selector: (state: ExtractState<S>) => U, equalityFn?: (a: U, b: U) => boolean): U;
};
declare type ExtractState<S> = S extends {
    getState: () => infer T;
} ? T : never;
declare type WithoutCallSignature<T> = {
    [K in keyof T]: T[K];
};
declare function createContext<S extends StoreApi>(): {
    Provider: ({ createStore, children, }: {
        createStore: () => S;
        children: ReactNode;
    }) => import("react").FunctionComponentElement<import("react").ProviderProps<S | undefined>>;
    useStore: UseContextStore<S>;
    useStoreApi: () => WithoutCallSignature<S>;
};
export default createContext;