///
///
///
import type * as http from 'node:http';
import type { AddressInfo } from 'node:net';
import type { AstroSettings, AstroUserConfig } from '../../@types/astro';
import nodeFs from 'node:fs';
import * as vite from 'vite';
import type { LogOptions } from '../logger/core.js';
export interface Container {
fs: typeof nodeFs;
logging: LogOptions;
settings: AstroSettings;
viteConfig: vite.InlineConfig;
viteServer: vite.ViteDevServer;
resolvedRoot: string;
configFlag: string | undefined;
configFlagPath: string | undefined;
restartInFlight: boolean;
handle: (req: http.IncomingMessage, res: http.ServerResponse) => void;
close: () => Promise;
}
export interface CreateContainerParams {
isRestart?: boolean;
logging?: LogOptions;
userConfig?: AstroUserConfig;
settings?: AstroSettings;
fs?: typeof nodeFs;
root?: string | URL;
configFlag?: string;
configFlagPath?: string;
}
export declare function createContainer(params?: CreateContainerParams): Promise;
export declare function startContainer({ settings, viteServer, logging, }: Container): Promise;
export declare function isStarted(container: Container): boolean;
/**
* Only used in tests
*/
export declare function runInContainer(params: CreateContainerParams, callback: (container: Container) => Promise | void): Promise;