/**
 * @author DiZed Team
 * @copyright Copyright (c) DiZed Team (https://github.com/di-zed/)
 */
import { NextFunction, Request, Response } from 'express';
import AppError from '../errors/appError';
/**
 * Error Handler.
 */
declare class ErrorHandler {
    /**
     * Status Code.
     *
     * @protected
     */
    protected statusCode: number;
    /**
     * Status.
     *
     * @protected
     */
    protected status: string;
    /**
     * Is Operational Error?
     *
     * @protected
     */
    protected isOperational: boolean;
    /**
     * Error Handler Constructor.
     *
     * @param err
     * @param req
     * @param res
     * @param next
     */
    constructor(err: Error, req: Request, res: Response, next: NextFunction);
    /**
     * Generate an Error for the Development Mode.
     *
     * @param err
     * @param req
     * @param res
     * @returns Response | void
     * @protected
     */
    protected generateErrorDev(err: Error, req: Request, res: Response): Response | void;
    /**
     * Generate an Error for the Production Mode.
     *
     * @param err
     * @param req
     * @param res
     * @returns Response | void
     * @protected
     */
    protected generateErrorProd(err: Error, req: Request, res: Response): Response | void;
    /**
     * Handle JSON Web Token Error.
     *
     * @returns AppError
     * @protected
     */
    protected handleJsonWebTokenError(): AppError;
    /**
     * Handle Token Expired Error.
     *
     * @returns AppError
     * @protected
     */
    protected handleTokenExpiredError(): AppError;
    /**
     * Update Error Handler Properties.
     *
     * @param err
     * @returns ErrorHandler
     * @private
     */
    private updateProperties;
}
export default function (err: Error, req: Request, res: Response, next: NextFunction): ErrorHandler;
export {};
