UNPKG

easy-peasy-thunk-stages

Version:
17 lines (16 loc) 924 B
import { Action, Generic, Thunk, ThunkOn } from 'easy-peasy'; export declare type ThunkStage = 'idle' | 'busy' | 'completed' | 'failed'; declare type ThunkNames<M extends unknown> = { [K in keyof M]: M[K] extends Thunk<any, any, any, any, any> ? K : never; }[keyof M]; export interface ThunkStagesModel<M extends unknown> { thunkStages: Generic<Record<ThunkNames<Omit<M, keyof ThunkStagesModel<any>>>, ThunkStage>>; setThunkStage: Action<ThunkStagesModel<M>, { thunk: ThunkNames<Omit<M, keyof ThunkStagesModel<any>>>; stage: ThunkStage; }>; resetThunkStages: Action<ThunkStagesModel<M>>; setThunkStageOn: ThunkOn<ThunkStagesModel<M>>; } export declare const thunkStagesModel: <M extends unknown>(initialThunkStages: Record<ThunkNames<Pick<M, Exclude<keyof M, "thunkStages" | "setThunkStage" | "resetThunkStages" | "setThunkStageOn">>>, ThunkStage>) => ThunkStagesModel<M>; export {};