import { Draft } from 'immer'; import { StoreApi as RawStoreApi, UseBoundStore } from 'zustand'; import { GetState, StateSelector } from 'zustand/vanilla'; import { NamedSet } from 'zustand/middleware'; export declare type StoreApiGet = StateGetters & TSelectors; export declare type StoreApiUse = GetRecord & TSelectors; export declare type StoreApiUseTracked = GetRecord & TSelectors; export declare type StoreApiSet = TActions; export declare type StoreApi = { get: StoreApiGet; name: TName; set: StoreApiSet; store: ImmerStoreApi; use: StoreApiUse; useTracked: StoreApiUseTracked; useStore: UseImmerStore; useTrackedStore: () => T; extendSelectors>(builder: SB): StoreApi & TActions, TSelectors & ReturnType>; extendActions & TActions, TSelectors>>(builder: AB): StoreApi & TActions & ReturnType, TSelectors>; }; export declare type State = unknown; export declare type EqualityChecker = (state: T, newState: T) => boolean; export declare type MergeState = (state: Partial, actionName?: string) => void; export declare type StateActions = SetRecord & { state: SetImmerState; mergeState: MergeState; }; export declare type StateGetters = GetRecord & { state: GetState; }; export declare type SelectorRecord = Record any>; export declare type SelectorBuilder = (state: T, get: StoreApiGet, api: StoreApi) => Record any>; export declare type ActionBuilder = (set: StoreApiSet, get: StoreApiGet, api: StoreApi) => any; export declare type SetImmerState = (fn: (draft: Draft) => void, actionName?: string) => void; export declare type StateCreatorWithDevtools, CustomGetState = GetState, CustomStoreApi extends RawStoreApi = RawStoreApi> = (set: CustomSetState, get: CustomGetState, api: CustomStoreApi) => T; export interface ImmerStoreApi extends Omit, 'setState'> { setState: SetImmerState; } export interface UseImmerStore extends Omit>, 'setState'> { (): T; (selector: StateSelector, equalityFn?: EqualityChecker): U; setState: SetImmerState; } export declare type GetRecord = { [K in keyof O]: (equalityFn?: EqualityChecker) => O[K]; }; export declare type SetRecord = { [K in keyof O]: (value: O[K]) => void; }; //# sourceMappingURL=types.d.ts.map