// Type definitions for reductor 0.8.0 // Project: https://github.com/mbensch/reductor // Definitions by: Marcel Bensch type Action = { type: string payload?: any error?: boolean meta?: any }; type PayloadCreator = (...args: any[]) => T; type MetaCreator = (...args: any[]) => any; type Reducer = (state: T, action: Action) => T; type ReducerMap = { [actionType: string]: Reducer }; type Dispatch = (action:any) => any; interface MiddlewareAPI { dispatch:Dispatch; getState():S; } interface Middleware { (api:MiddlewareAPI):(next:Dispatch) => (action:any) => any; } interface Unsubscribe { ():void; } interface Store { dispatch:Dispatch; getState():S; subscribe(listener:() => void): Unsubscribe; replaceReducer(nextReducer: Reducer):void; } interface StoreCreator { (reducer:Reducer, enhancer?:StoreEnhancer):Store; (reducer:Reducer, initialState:S, enhancer?:StoreEnhancer):Store; } type StoreEnhancer = (next:StoreCreator) => StoreCreator; declare namespace __Reductor { interface ActionMapObject { [key:string]: Action; } interface ActionTypeMapObject { [key:string]: string; } type Selector = (state: TInput, props?: any) => TOutput; interface SelectorMapObject { [key:string]: Selector; } class Application { getName(): string; setName(name: string): void; name(name: string): Application; getVersion(): string; setVersion(version: string): void; version(version: string): Application; getKey(): string; setKey(key: string, transform?: boolean) key(key: string, transform?: boolean): Application; getMount(): Node; setMount(node: Node): void; mount(node: Node): Application; addModule(module: Module): Application; getModule(key: string): Module; getActionTypes(): ActionTypeMapObject; addMiddleware(middleware: Middleware): Application; addEnhancer(enhancer: StoreEnhancer): Application; isDebug(): boolean; debug(): Application; useHistoryApi(): Application; getRoutes(): Array; setRoutes(routes: Array); routes(routes: Array) getStore(): Store; getHistory(): Object; run(): void; getState(): TState; dispatch(action: Action): Dispatch; subscribe(listener: () => void): Unsubscribe; replaceReducer(nextReducer: Reducer): void; } class Module { getName(): string; setName(name: string): void; name(name: string): Module; getKey(): string; setKey(key: string) key(key: string): Module; getVersion(): string; setVersion(version: string): void; version(version: string): Module; connect(component: any, selectorMap?: SelectorMapObject): any; getComponent(name: string): any; addComponent(name: string, component: any, selectorMap?: SelectorMapObject, connected?: boolean): Module; getInitialState(): TState; setInitialState(state: TState): void; initialState(state: TState): Module; on(actionType: string, reducer: Reducer | ReducerMap, payloadCreator?: PayloadCreator, metaCreator?: MetaCreator ): Module; getReducer(): Reducer; getActionTypes(): ActionTypeMapObject; getActions(): ActionMapObject; decorate(name: string, decorator: any): Module; } } declare namespace __Reductor_Helpers { enum LogLevel { LOG, DEBUG, INFO, SUCCESS, WARNING, ERROR } interface Logger { log(level: LogLevel, message: any[], data?: any[]): void; debug( message: any[], data?: any[]): void; info(message: any[], data?: any[]): void; success(message: any[], data?: any[]): void; warning(message: any[], data?: any[]): void; error(message: any[], data?: any[]): void; } } declare module "reductor" { export = __Reductor; } declare module "reductor.helpers" { export = __Reductor_Helpers; }