import { AnyAction, Dispatch, MiddlewareAPI } from 'redux'; export declare enum RequestStatus { PREPARING = "PREPARING", INTENTED = "INTENTED", PENDING = "PENDING", SUCCESS = "SUCCESS", FAILURE = "FAILURE", ABORTED = "ABORTED" } export declare enum RequestMethod { get = "get", post = "post", put = "put", delete = "delete", patch = "patch" } export declare type ReduxAjaxParams = { [key: string]: any; url?: string | null; method?: RequestMethod; headers?: Record; credentials?: 'same-origin' | 'omit' | 'include'; body?: object; signal?: AbortSignal; }; export declare type ReduxAjaxRequest = ReduxAjaxParams & { abortController?: AbortController; status: RequestStatus; error: object | null; response: object | null; }; export declare type ReduxAjaxState = { [requestId: string]: ReduxAjaxRequest; }; export declare type ReduxAjaxGetState = () => { [key: string]: ReduxAjaxState; }; export declare type Fetch = (input: RequestInfo, init?: RequestInit) => Promise; export declare type TransformData = (body: object) => BodyInit; export declare type AjaxMiddlewareConfig = { fetchFn: Fetch; }; export declare type RequestCallbackHandlers = { onRequestSuccess?: (response: object) => void; onRequestFailure?: (error: object) => void; onRequestComplete?: () => void; onRequestAborted?: () => void; }; export declare type SubmitRequestParams = { isCached?: boolean; transformData?: TransformData; requestContent?: ReduxAjaxParams; }; export declare type AjaxSubmitRequestData = RequestCallbackHandlers & SubmitRequestParams; export declare type ReduxAjaxAction = { type: string; data: AjaxSubmitRequestData & { requestId: string; }; }; export declare type MiddlewareHandlersParams = { store: MiddlewareAPI, object>; requestId: string; callback?: (data: object) => void; }; export declare type PrepareRequest = (params: { store: MiddlewareAPI, object>; action: ReduxAjaxAction; }) => void; export declare type GetRequestData = (params: { action: ReduxAjaxAction; store: MiddlewareAPI, object>; }) => ReduxAjaxRequest & { url: string; body: BodyInit; }; export declare type GetRequestBody = (params: { method?: string; transformData?: TransformData; body?: object | BodyInit; }) => BodyInit | undefined;