import RequestState from '../data/RequestState'; export declare type MessageInput = { requestError?: any; response?: T; removeEntity?: (type: string, id: string) => void; request: (payload: V, config?: { returnResponse: R; }) => R extends true ? Promise : void; reset?: () => void; responseKey?: string; }; export declare abstract class BaseMessage { response?: T; data?: T; requestError?: any; error?: any; request: (payload: V, config?: { returnResponse: R; }) => R extends true ? Promise : void; reset: () => void; removeEntity: (type: string, id: string) => void; responseKey: string; abstract readonly state: string; abstract readonly isEmpty: boolean; abstract readonly isFetching: boolean; abstract readonly isRefetching: boolean; abstract readonly isPending: boolean; abstract readonly isLoading: boolean; abstract readonly isSuccess: boolean; abstract readonly isError: boolean; abstract readonly requestState: RequestState; constructor(props: MessageInput); } export declare class EmptyMessage extends BaseMessage { readonly state = "empty"; readonly requestState: RequestState; readonly isEmpty = true; readonly isFetching = false; readonly isRefetching = false; readonly isPending = false; readonly isLoading = false; readonly isSuccess = false; readonly isError = false; } export declare class FetchingMessage extends BaseMessage { readonly state = "fetching"; readonly requestState: RequestState; readonly isEmpty = false; readonly isFetching = true; readonly isRefetching = false; readonly isPending = true; readonly isLoading = true; readonly isSuccess = false; readonly isError = false; } export declare class RefetchingMessage extends BaseMessage { response: T; data: T; readonly state = "refetching"; readonly requestState: RequestState; readonly isEmpty = false; readonly isFetching = false; readonly isRefetching = true; readonly isPending = true; readonly isLoading = true; readonly isSuccess = false; readonly isError = false; constructor(input: MessageInput & { response: T; }); } export declare class SuccessMessage extends BaseMessage { response: T; data: T; readonly state = "success"; readonly requestState: RequestState; readonly isEmpty = false; readonly isFetching = false; readonly isRefetching = false; readonly isPending = false; readonly isLoading = false; readonly isSuccess = true; readonly isError = false; constructor(input: MessageInput & { response: T; }); } export declare class ErrorMessage extends BaseMessage { readonly state = "success"; readonly requestState: RequestState; readonly isEmpty = false; readonly isFetching = false; readonly isRefetching = false; readonly isPending = false; readonly isLoading = false; readonly isSuccess = false; readonly isError = true; requestError: any; error: any; constructor(input: MessageInput & { requestError: Error; }); } export declare type Message = EmptyMessage | FetchingMessage | RefetchingMessage | SuccessMessage | ErrorMessage; export declare function unknownMessage(input: any): Message; export default Message; export declare const MessageFactory: { empty(messageProps: MessageInput): EmptyMessage; fetching(messageProps: MessageInput): FetchingMessage; refetching(messageProps: MessageInput & { response: R; }): RefetchingMessage; success(messageProps: MessageInput & { response: R_1; }): SuccessMessage; error(messageProps: MessageInput & { requestError: Error; }): ErrorMessage; };