import { StateCreator, StoreMutatorIdentifier } from 'zustand/vanilla';

type StoreInjectors<S> = {
    asyncSliceInitializers: Record<string, () => Promise<StateCreator<S, [], [], unknown>>>;
    injectAsyncSliceInitializer: (key: string, asyncSliceInitializer: () => Promise<StateCreator<S, [], [], unknown>>) => void;
};
type Injectors = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = [], U = T>(initializer: StateCreator<T, [...Mps, ["injectors", never]], Mcs>, initialAsyncSliceInitializers?: Record<string, () => Promise<StateCreator<T, [], [], unknown>>>) => StateCreator<T, Mps, [["injectors", U], ...Mcs]>;
type Write<T, U> = Omit<T, keyof U> & U;
type WithInjectors<S> = S extends {
    getState: () => infer T;
} ? Write<S, StoreInjectors<T>> : never;
declare module "zustand/vanilla" {
    interface StoreMutators<S, A> {
        injectors: WithInjectors<S>;
    }
}
export declare const injectors: Injectors;
export {};
