UNPKG

3.04 kBTypeScriptView Raw
1import { Middleware, MiddlewareAPI, Action, Store } from 'redux';
2import { Observable, ObservableInput, Operator, SchedulerLike, Subject } from 'rxjs';
3
4export declare class ActionsObservable<T extends Action> extends Observable<T> {
5 /**
6 * Just like RxJS itself, we can't actually make this method always type-safe
7 * because we would need non-final position spread params e.g.
8 * `static of<T>(...items: T, scheduler?: Scheduler): ActionsObservable<T>`
9 * which isn't possible in either JavaScript or TypeScript. So instead, we
10 * provide safe typing for up to 6 items, following by a scheduler.
11 */
12 static of<T extends Action>(item1: T, scheduler?: SchedulerLike): ActionsObservable<T>;
13 static of<T extends Action>(item1: T, item2: T, scheduler?: SchedulerLike): ActionsObservable<T>;
14 static of<T extends Action>(item1: T, item2: T, item3: T, scheduler?: SchedulerLike): ActionsObservable<T>;
15 static of<T extends Action>(item1: T, item2: T, item3: T, item4: T, scheduler?: SchedulerLike): ActionsObservable<T>;
16 static of<T extends Action>(item1: T, item2: T, item3: T, item4: T, item5: T, scheduler?: SchedulerLike): ActionsObservable<T>;
17 static of<T extends Action>(item1: T, item2: T, item3: T, item4: T, item5: T, item6: T, scheduler?: SchedulerLike): ActionsObservable<T>;
18 static of<T extends Action>(...array: Array<T | SchedulerLike>): ActionsObservable<T>;
19
20 static from<T extends Action>(ish: ObservableInput<T>, scheduler?: SchedulerLike): ActionsObservable<T>;
21 static from<T extends Action, R extends Action>(ish: ArrayLike<T>, scheduler?: SchedulerLike): ActionsObservable<R>;
22
23 constructor(input$: Observable<T>);
24 lift<R extends Action>(operator: Operator<T, R>): ActionsObservable<R>;
25 lift<R>(operator: Operator<T, R>): Observable<R>;
26 ofType<R extends T = T>(...key: R['type'][]): ActionsObservable<R>;
27}
28
29export declare class StateObservable<S> extends Observable<S> {
30 source: Subject<S>;
31 constructor(stateSubject: Subject<S>, initialState: S);
32
33 value: S
34}
35
36export declare interface Epic<Input extends Action = any, Output extends Input = Input, State = any, Dependencies = any> {
37 (action$: ActionsObservable<Input>, state$: StateObservable<State>, dependencies: Dependencies): Observable<Output>;
38}
39
40export interface EpicMiddleware<T extends Action, O extends T = T, S = void, D = any> extends Middleware {
41 run(rootEpic: Epic<T, O, S, D>): void;
42}
43
44interface Options<D = any> {
45 dependencies?: D;
46}
47
48export declare function createEpicMiddleware<T extends Action, O extends T = T, S = void, D = any>(options?: Options<D>): EpicMiddleware<T, O, S, D>;
49
50export declare function combineEpics<T extends Action, O extends T = T, S = void, D = any>(...epics: Epic<T, O, S, D>[]): Epic<T, O, S, D>;
51export declare function combineEpics<E>(...epics: E[]): E;
52export declare function combineEpics(...epics: any[]): any;
53
54export declare function ofType<T extends Action, R extends T = T, K extends R['type'] = R['type']>(...key: K[]): (source: Observable<T>) => Observable<R>;