import { CompilerBuildResults, CompilerRequestResponse, CompilerWatcher, DevServer, DevServerConfig, DevServerConfig as DevServerConfig$1, Logger, StencilDevServerConfig } from "@stencil/core/compiler";

//#region src/server/types.d.ts
/**
 * Internal dev server message protocol for communication between
 * main process and browser clients.
 */
interface DevServerMessage {
  startServer?: DevServerConfig$1;
  closeServer?: boolean;
  serverStarted?: DevServerConfig$1;
  serverClosed?: boolean;
  buildStart?: boolean;
  buildLog?: BuildLog;
  buildResults?: CompilerBuildResults;
  requestBuildResults?: boolean;
  error?: {
    message?: string;
    type?: string;
    stack?: string | null;
  };
  isActivelyBuilding?: boolean;
  compilerRequestPath?: string;
  compilerRequestResults?: CompilerRequestResponse;
  requestLog?: {
    method: string;
    url: string;
    status: number;
  };
}
interface BuildLog {
  buildId?: number;
  messages?: string[];
  progress?: number;
}
type DevServerSendMessage = (msg: DevServerMessage) => void;
//#endregion
//#region src/server/server.d.ts
declare function initServerProcess(sendMsg: DevServerSendMessage): (msg: DevServerMessage) => void;
//#endregion
//#region src/server/index.d.ts
/**
 * Start the Stencil development server.
 *
 * @param stencilDevServerConfig - Configuration for the dev server
 * @param logger - Logger instance for output
 * @param watcher - Optional compiler watcher for build events
 * @returns Promise resolving to the DevServer instance
 */
declare function start(stencilDevServerConfig: StencilDevServerConfig, logger: Logger, watcher?: CompilerWatcher): Promise<DevServer>;
//#endregion
export { type CompilerWatcher, type DevServer, type DevServerConfig, type Logger, type StencilDevServerConfig, initServerProcess, start };