import type { AxiosRequestConfig } from 'axios';
import type { iconsByResourceKey } from 'consts';
export declare enum HTTPMethod {
    GET = "get",
    POST = "post",
    PUT = "put",
    PATCH = "patch",
    DELETE = "delete",
    OPTIONS = "options",
    HEAD = "head"
}
export declare enum StatusCode {
    UNAUTHORIZED = 401,
    FORBIDDEN = 403,
    NOT_FOUND = 404,
    INTERNAL_SERVER_ERROR = 500,
    SERVICE_UNAVAILABLE = 503
}
export declare enum ErrorMessage {
    SERVICE_UNAVAILABLE = "This service is unavailable right now, please try again later",
    INTERNAL_SERVER_ERROR = "An unexpected error occurred, please try again later",
    NOT_FOUND = "The requested content does not exist, please try something else",
    FORBIDDEN = "You are not allowed to access this content",
    UNAUTHORIZED = "You should login in order to access this content"
}
export type ErrorData<T = string> = {
    errorCode: number;
    errorMessage: string;
    hostErrorCode: number;
    moduleInfoCode: T;
    status: boolean;
    traceID: string;
};
export declare enum ActionType {
    CLOSE = "CLOSE",
    DEEP_LINK = "DEEP_LINK",
    NAVIGATION_BACK = "NAVIGATION_BACK",
    DISMISS = "DISMISS",
    DEEP_LINK_AND_DISMISS = "DEEP_LINK_AND_DISMISS",
    DEEP_LINK_AND_CLOSE = "DEEP_LINK_AND_CLOSE"
}
type ActionObjectModuleInfoCode = {
    actionType: 'NAVIGATION_BACK' | 'DEEP_LINK' | 'CLOSE' | 'DISMISS' | 'DEEP_LINK_AND_DISMISS' | 'DEEP_LINK_AND_CLOSE';
    numberForAction: string;
};
export type ButtonModuleInfoCode = {
    btnTextResourceKey: string;
    actionObject: ActionObjectModuleInfoCode;
};
export type Category = 'ERROR' | 'INFO' | 'SUCCESS' | 'WARNING';
export declare enum ErrorViewType {
    SCREEN = "SCREEN",
    NEW_SCREEN = "NEW_SCREEN",
    POPUP = "POPUP",
    NONE = "NONE"
}
export declare enum ErrorType {
    SYSTEM = "SYSTEM",
    SNACKBAR = "SNACKBAR"
}
export type ModuleInfoCode = {
    viewType: ErrorViewType;
    titleResourceKey: string;
    textResourceKey: string;
    iconResourceKey: keyof typeof iconsByResourceKey;
    iconType: string;
    buttons: ButtonModuleInfoCode[];
    type: ErrorType;
    providerErrorCode: string;
    displayErrorCode: string;
    category: Category;
};
export type APIError = {
    originalRequest: AxiosRequestConfig;
    status: StatusCode;
    message: string;
    data?: ErrorData<ModuleInfoCode>;
} & Error;
export {};
