UNPKG

pretur.redux

Version:
24 lines (23 loc) 937 B
import { Action } from './action'; export interface Reducer<T> { (state: T | undefined, action: Action<any, any>): T; } export declare type Reducible<T extends Reducible<any>> = T & { reduce(action: Action<any, any>): Reducible<T>; }; export declare type Reducibles<T extends object = any> = { [P in keyof T]: Reducible<T[P]>; }; export interface ParametricReducibleFactory<D, T extends Reducibles> { data: D; type: T & Reducible<T>; buildReducer: (data: D) => Reducer<T>; (data: D): T & Reducible<T>; } export interface ReducibleFactory<T extends Reducibles> { type: Reducible<T>; buildReducer: () => Reducer<T>; (): Reducible<T>; } export declare function buildReducibleFactory<T extends Reducibles = object>(builder: () => T): ReducibleFactory<T>; export declare function buildReducibleFactory<D = any, T extends Reducibles = object>(builder: (data: D) => T): ParametricReducibleFactory<D, T>;