import { ApiErrorAndInfo, IApiError, IApiInnerError } from './apiError';
import { LogLevel } from './logLevel';
/**
 * Builder to create errors.
 */
export declare class ErrorBuilder {
    private _code;
    private _logMessage;
    private _publicMessage;
    private _target;
    private _details;
    private _innererror;
    private _httpStatus;
    private _logLevel;
    private _logStackTrace;
    /**
     * Constructor
     * The error node and log message are mandatory.
     */
    constructor(code: string, logMessage: any);
    publicMessage: (publicMessage: string) => ErrorBuilder;
    target: (target: string) => ErrorBuilder;
    details: (details: IApiError[]) => ErrorBuilder;
    addDetail: (detail: IApiError) => ErrorBuilder;
    innererror: (innererror: IApiInnerError) => ErrorBuilder;
    httpStatus: (httpStatus: number) => ErrorBuilder;
    logLevel: (logLevel: LogLevel) => ErrorBuilder;
    logStackTrace: (logStackTrace: boolean) => ErrorBuilder;
    /**
     * Builds the error!
     */
    build: () => ApiErrorAndInfo;
}
/**
 * ErrorBuilder Type Guard
 */
export declare const isErrorBuilder: (obj: any) => obj is ErrorBuilder;
/**
 * Starts a builder to create an error.
 */
export declare function createError(code: string, logMessage: any): ErrorBuilder;
/**
 * Easily creates a generic internal server error (500)
 *
 * The log message is mandatory.
 */
export declare function createServerError(logMessage: any, publicMessage?: string): ApiErrorAndInfo;
/**
 * Easily creates a Not Found error (404)
 *
 * @param logMessage The message to log.
 * @param publicMessage The message to return in the error.
 * @param logLevel The log level to use.
 * @param logStackTrace Should the stack trace be logged?
 */
export declare function createNotFoundError(logMessage: any, publicMessage?: string, logLevel?: LogLevel, logStackTrace?: boolean): ApiErrorAndInfo;
/**
 * Easily creates an invalid parameter error (400)
 *
 * @param publicMessage The message to return in the error (will also be logged).
 * @param details Some additional information about the validation that failed.
 * @param logLevel The log level to use.
 * @param logStackTrace Should the stack trace be logged?
 */
export declare function createInvalidParameterError(publicMessage: string, details?: IApiError[], logLevel?: LogLevel, logStackTrace?: boolean): ApiErrorAndInfo;
/**
 * Easily creates an unprocessable entity error (422)
 *
 * @param publicMessage The message to return in the error (will also be logged).
 * @param details Some additional information about the validation that failed.
 * @param logLevel The log level to use.
 * @param logStackTrace Should the stack trace be logged?
 */
export declare function createUnprocessableEntityError(publicMessage: string, details?: IApiError[], logLevel?: LogLevel, logStackTrace?: boolean): ApiErrorAndInfo;
/**
 * Easily creates an "Not Implemented" error (501)
 */
export declare function createNotImplementedError(logMessage?: any, publicMessage?: string): ApiErrorAndInfo;
/**
 * Easily creates an "Unauthorized" error (401). To throw when
 * the user *is not authenticated*.
 */
export declare function createUnauthorizedError(logMessage?: any, publicMessage?: string): ApiErrorAndInfo;
/**
 * Easily creates a "Forbidden" error (403). To throw when
 * the user is authenticated but doesn't have sufficient
 * rights to access the requested resource.
 */
export declare function createForbiddenError(logMessage?: any, publicMessage?: string): ApiErrorAndInfo;
//# sourceMappingURL=apiErrorBuilder.d.ts.map