import { type Kernel } from '../index.ts';
/**
 * The base exception handler that is used by default to handle
 * Ace exceptions.
 *
 * You can extend this class to customize the exception rendering
 * behavior.
 *
 * @example
 * ```ts
 * export class MyExceptionHandler extends ExceptionHandler {
 *   async render(error: unknown, kernel: Kernel<any>) {
 *     // Custom error handling
 *     await super.render(error, kernel)
 *   }
 * }
 * ```
 */
export declare class ExceptionHandler {
    /**
     * Enable debug mode for detailed error reporting
     */
    debug: boolean;
    /**
     * Known error codes. For these errors, only the error message is
     * reported using the logger
     */
    protected knownErrorCodes: string[];
    /**
     * Internal set of known error codes
     */
    protected internalKnownErrorCode: string[];
    /**
     * Logs error to stderr using logger
     *
     * @param error - The error object with a message property
     * @param kernel - The Ace kernel instance
     */
    protected logError(error: {
        message: any;
    } & unknown, kernel: Kernel<any>): void;
    /**
     * Pretty prints uncaught error in debug mode using Youch
     *
     * @param error - The error object to pretty print
     */
    protected prettyPrintError(error: object): Promise<void>;
    /**
     * Renders an exception for the console with appropriate formatting
     *
     * @param error - The error to render
     * @param kernel - The Ace kernel instance
     *
     * @example
     * ```ts
     * const handler = new ExceptionHandler()
     * await handler.render(new Error('Something went wrong'), kernel)
     * ```
     */
    render(error: unknown, kernel: Kernel<any>): Promise<any>;
}
