import { ResolvedConfig } from "../config";
import { HttpServer, HttpServerOptions } from "./http";
import { FSWatcher } from "chokidar";
import { SocketServer } from "./websocket";
import { ModuleMap } from "./moduleMap";
import { PluginContainer } from "./pluginContainer";
import { TransformRequester } from "./transformRequest";
export interface ServerOptions extends HttpServerOptions {
    /** 热更新 */
    hmr?: boolean | {
        port?: number;
        host?: string;
    };
    /**
     * 配置文件允许范围
     */
    fs?: FileSystemServeOptions;
}
export declare function resolveServerOpt(config: Partial<ResolvedConfig>): void;
export interface FileSystemServeOptions {
    /**
     * 严格限制文件访问超出允许的路径
     * 设置为'false'，则不做警告限制
     * @default true
     */
    strict?: boolean;
    /**
     * 允许访问的目录集合
     *
     * @default [workspace/root]
     */
    allow?: string[];
}
export declare class Server {
    config: ResolvedConfig;
    httpServer: HttpServer;
    watcher: FSWatcher;
    socketServer: SocketServer;
    moduleMap: ModuleMap;
    pluginContainer: PluginContainer;
    transformRequester: TransformRequester;
    clientId: string;
    constructor(config: ResolvedConfig);
    private initHandler;
    private initMiddleware;
    start(): Promise<void>;
    addWatchFile(filePath: string | undefined): void;
    private dispose;
}
