import { Application } from '@adonisjs/application';
import { AppEnvironments } from '@ioc:Adonis/Core/Application';
import { SignalsListener } from '../SignalsListener';
/**
 * Kernel to manage application state
 */
export declare class AppKernel {
    /**
     * Reference to application instance
     */
    application: Application;
    /**
     * Reference to signals listener
     */
    signalsListener: SignalsListener;
    /**
     * Find if the application has been booted or not
     */
    hasBooted: boolean;
    /**
     * Avoiding duplicate registeration of ts compiler hook
     */
    private hasRegisteredTsHook;
    constructor(appRoot: string, environment: AppEnvironments);
    /**
     * Pretty prints a given error on the terminal
     */
    private prettyPrintError;
    /**
     * Boot the application. The process for booting the app remains the
     * same regardless of the process environment.
     */
    boot(): Promise<void>;
    /**
     * Registers the TS compiler to hook into node require and
     * process TypeScript files
     */
    registerTsCompilerHook(): void;
    /**
     * Start the application. The callback is required to listen
     * for close signals
     */
    start(shutdownCallback?: () => Promise<void>): Promise<() => Promise<void>>;
    /**
     * Notify that process is ready
     */
    ready(eventPayload: Record<string, any>): void;
    /**
     * Prepare application for shutdown
     */
    close(): Promise<void>;
    /**
     * Handles ignitor boot errors
     */
    handleError(error: any): Promise<void>;
}
