import { IController } from "./types.js";
import Context from "../app/extend/context.js";
import { AppWorkerLoader } from "./loader/AppWorkerLoader.js";
import "./loader/index.js";
import { EggApplicationCore, EggApplicationCoreOptions } from "./egg.js";
import Helper from "../app/extend/helper.js";
import http from "node:http";
import { Socket } from "node:net";
//#region src/lib/application.d.ts
/**
 * Singleton instance in App Worker, extend {@link EggApplicationCore}
 * @augments EggApplicationCore
 */
export declare class Application extends EggApplicationCore {
  #private;
  controller: IController;
  server?: http.Server;
  /**
   * reference to {@link Helper}
   * @member {Helper} Application#Helper
   */
  Helper: typeof Helper;
  /**
   * @class
   * @param {Object} options - see {@link EggApplicationCore}
   */
  constructor(options?: Omit<EggApplicationCoreOptions, "type">);
  protected override customEggLoader(): typeof AppWorkerLoader;
  protected load(): Promise<void>;
  onClientError(err: any, socket: Socket): void;
  onServer(server: http.Server): void;
  /**
   * global locals for view
   * @member {Object} Application#locals
   * @see Context#locals
   */
  get locals(): Record<string, any>;
  set locals(val: Record<string, any>);
  /**
   * save routers to `run/router.json`
   * @private
   */
  dumpConfig(): void;
  /**
   * Run async function in the background
   * @see Context#runInBackground
   * @param {Function} scope - the first args is an anonymous ctx
   */
  runInBackground(scope: (ctx: Context) => Promise<void>, req?: unknown): void;
  /**
   * secret key for Application
   * @member {String} Application#keys
   */
  get keys(): string[];
  /**
   * @deprecated keep compatible with egg 3.x
   */
  toAsyncFunction(fn: (...args: any[]) => any): (...args: any[]) => any;
}
//#endregion