import React, { Dispatch, FC, PropsWithChildren } from "react";
import { LoaderServerResponse } from "./types";
export type LoaderState = Record<string, LoaderServerResponse<any>>;
export interface LoaderValue {
    state: LoaderState;
    setLoader(result: LoaderServerResponse<any>, name: string): void;
    reset(name: string): void;
    resetAll(): void;
}
export declare const initialState: LoaderState;
export declare const LoaderContext: React.Context<LoaderValue>;
export declare enum LoaderActionType {
    SET_LOADER = "SET_LOADER",
    RESET = "RESET",
    RESET_ALL = "RESET_ALL"
}
export interface LoaderSetLoaderAction {
    type: LoaderActionType.SET_LOADER;
    payload: LoaderServerResponse<any>;
    meta: string;
}
export interface LoaderResetAction {
    type: LoaderActionType.RESET;
    meta: string;
}
export interface LoaderResetAllAction {
    type: LoaderActionType.RESET_ALL;
}
export type LoaderAction = LoaderSetLoaderAction | LoaderResetAction | LoaderResetAllAction;
export declare const loaderReducer: (state: LoaderState | undefined, action: LoaderAction) => LoaderState;
export declare const createLoaderSlice: (dispatch: Dispatch<LoaderAction>) => {
    setLoader: (result: LoaderServerResponse<any>, name: string) => void;
    reset: (name: string) => void;
    resetAll: () => void;
};
declare const LoaderProvider: FC<PropsWithChildren<object>>;
export default LoaderProvider;
