import { Action } from './action'; export interface Reducer { (state: T | undefined, action: Action): T; } export declare type Reducible> = T & { reduce(action: Action): Reducible; }; export declare type Reducibles = { [P in keyof T]: Reducible; }; export interface ParametricReducibleFactory { data: D; type: T & Reducible; buildReducer: (data: D) => Reducer; (data: D): T & Reducible; } export interface ReducibleFactory { type: Reducible; buildReducer: () => Reducer; (): Reducible; } export declare function buildReducibleFactory(builder: () => T): ReducibleFactory; export declare function buildReducibleFactory(builder: (data: D) => T): ParametricReducibleFactory;