export declare type ErrorMap = { readonly [K in ErrorCode]?: string; }; export interface ErrorData { [key: string]: any | undefined; } declare type UnknownErr = 'unknown'; export declare enum ConfigErr { MISSING_CREDENTIALS = "missing-credentials", INVALID_URI = "invalid-uri" } export declare enum HttpErr { HTTP_BAD_REQUEST = "http-bad-request", HTTP_UNAUTHORIZED = "http-unauthorized", HTTP_FORBIDDEN = "http-forbidden", HTTP_NOT_FOUND = "http-not-found" } export declare function getErrorCodeByHttpStatus(status: number): HttpErr | UnknownErr; export declare const CommonErr: { HTTP_BAD_REQUEST: HttpErr.HTTP_BAD_REQUEST; HTTP_UNAUTHORIZED: HttpErr.HTTP_UNAUTHORIZED; HTTP_FORBIDDEN: HttpErr.HTTP_FORBIDDEN; HTTP_NOT_FOUND: HttpErr.HTTP_NOT_FOUND; MISSING_CREDENTIALS: ConfigErr.MISSING_CREDENTIALS; INVALID_URI: ConfigErr.INVALID_URI; }; declare const commonErrors: { "http-bad-request": string; "http-unauthorized": string; "http-forbidden": string; "http-not-found": string; "missing-credentials": string; "invalid-uri": string; }; declare type CommonErrorCode = keyof typeof commonErrors | UnknownErr; declare const ERROR_NAME = "SherlError"; export interface SherlError extends Error { readonly code: string; readonly message: string; readonly name: typeof ERROR_NAME; readonly data?: ErrorData; readonly stack?: string; } export declare class SherlError extends Error { readonly code: string; readonly data?: ErrorData | undefined; readonly name: "SherlError"; constructor(code: string, message: string, data?: ErrorData | undefined); } export declare class ErrorFactory { private readonly domainName; private readonly errors?; constructor(domainName: string, errors?: ErrorMap | undefined); /** * Create error instance based on error code * * @template K * @param {K} code * @param {ErrorData} [data] * @returns * @memberof ErrorFactory */ create(code: K | CommonErrorCode, data?: ErrorData): SherlError; /** * Replace tokens in template by data * * @static * @param {string} template * @param {ErrorData} data * @returns * @memberof ErrorFactory */ static bindData(template: string, data: ErrorData): string; } export {};