import { EggPlugin } from "./types.js";
import { Agent } from "./agent.js";
import { Application } from "./application.js";
import { LoaderFS } from "@eggjs/core";
//#region src/lib/start.d.ts
export interface StartEggOptions {
  /** specify framework that can be absolute path or npm package */
  framework?: string;
  /** directory of application, default to `process.cwd()` */
  baseDir?: string;
  /** ignore single process mode warning */
  ignoreWarning?: boolean;
  mode?: "single";
  env?: string;
  plugins?: EggPlugin;
  /** Skip lifecycle hooks, only trigger loadMetadata for manifest generation */
  metadataOnly?: boolean;
  /** Loader-facing filesystem abstraction */
  loaderFS?: LoaderFS;
  /**
   * When true, load application metadata for V8 startup snapshot construction.
   * The lifecycle stops after configWillLoad (no servers, timers, or connections)
   * and skips `egg-ready` broadcast. `ready()` resolves when loading completes.
   */
  snapshot?: boolean;
}
export interface SingleModeApplication extends Application {
  agent: SingleModeAgent;
}
export interface SingleModeAgent extends Agent {
  app: SingleModeApplication;
}
/**
 * Start egg with single process.
 *
 * When `options.snapshot` is true, loads application metadata for V8 startup
 * snapshot construction. The lifecycle stops after `configWillLoad` (no servers,
 * timers, or connections) and skips `egg-ready` broadcast.
 */
export declare function startEgg(options?: StartEggOptions): Promise<SingleModeApplication>;
//#endregion