import { ActionFunctionAny, Action } from 'redux-actions';
import { ActionsObservable, StateObservable, Epic } from 'redux-observable';
import { Observable, OperatorFunction, ObservableInput } from 'rxjs';
import { mergeMap, switchMap } from 'rxjs/operators';
export declare type ObservableAction = ActionsObservable<Action<any>>;
export declare type ObservableState = StateObservable<any>;
export declare type Api = (payload: any) => Promise<any>;
export interface Dependencies {
    apiErrorsHandler?: any;
    apis?: any;
    schema?: any;
}
export interface HandlerArgs extends Dependencies {
    action$: ObservableAction;
    state$: ObservableState;
    action: Action<any>;
}
export interface MakeBasicFetchEpicOptions {
    actionType: string;
    apiName: string;
    fetchRequest: ActionFunctionAny<Action<any>>;
    handleSuccess: (response: any, args: HandlerArgs) => ObservableInput<any>;
    handleFailure: (error: any, args: HandlerArgs) => ObservableInput<any>;
    debounceTime?: number;
    observableMap?: typeof switchMap | typeof mergeMap;
    handleTakeUntil?: (action$: ObservableAction) => OperatorFunction<any, any>;
    handleBeforeFetch?: (action: Action<any>, dependencies: Dependencies) => Observable<any>;
    handleAfterFetch?: (action: Action<any>, dependencies: Dependencies) => Observable<any>;
}
export default function makeBasicFetchEpic({ actionType, apiName, fetchRequest, handleSuccess, handleFailure, debounceTime: time, observableMap: customized$Map, handleTakeUntil, handleBeforeFetch, handleAfterFetch, }: MakeBasicFetchEpicOptions): Epic<any, any, any, any>;
