type SliceActions = { [actionName: string]: (...args: never[]) => (prev: Value) => Value; }; export type SliceConfig< Name extends string, Value, Actions extends SliceActions, > = { name: Name; value: Value; actions: Actions; }; export function createSlice< Name extends string, Value, Actions extends SliceActions, >(config: SliceConfig) { return config; }