import { Middleware, MiddlewareAPI, Action, Store } from 'redux'; import { Observable, ObservableInput, Operator, SchedulerLike, Subject } from 'rxjs'; export declare class ActionsObservable extends Observable { /** * Just like RxJS itself, we can't actually make this method always type-safe * because we would need non-final position spread params e.g. * `static of(...items: T, scheduler?: Scheduler): ActionsObservable` * which isn't possible in either JavaScript or TypeScript. So instead, we * provide safe typing for up to 6 items, following by a scheduler. */ static of(item1: T, scheduler?: SchedulerLike): ActionsObservable; static of(item1: T, item2: T, scheduler?: SchedulerLike): ActionsObservable; static of(item1: T, item2: T, item3: T, scheduler?: SchedulerLike): ActionsObservable; static of(item1: T, item2: T, item3: T, item4: T, scheduler?: SchedulerLike): ActionsObservable; static of(item1: T, item2: T, item3: T, item4: T, item5: T, scheduler?: SchedulerLike): ActionsObservable; static of(item1: T, item2: T, item3: T, item4: T, item5: T, item6: T, scheduler?: SchedulerLike): ActionsObservable; static of(...array: Array): ActionsObservable; static from(ish: ObservableInput, scheduler?: SchedulerLike): ActionsObservable; static from(ish: ArrayLike, scheduler?: SchedulerLike): ActionsObservable; constructor(input$: Observable); lift(operator: Operator): ActionsObservable; lift(operator: Operator): Observable; ofType(...key: R['type'][]): ActionsObservable; } export declare class StateObservable extends Observable { source: Subject; constructor(stateSubject: Subject, initialState: S); value: S } export declare interface Epic { (action$: ActionsObservable, state$: StateObservable, dependencies: Dependencies): Observable; } export interface EpicMiddleware extends Middleware { run(rootEpic: Epic): void; } interface Options { dependencies?: D; } export declare function createEpicMiddleware(options?: Options): EpicMiddleware; export declare function combineEpics(...epics: Epic[]): Epic; export declare function combineEpics(...epics: E[]): E; export declare function combineEpics(...epics: any[]): any; export declare function ofType(...key: K[]): (source: Observable) => Observable;