/// <reference types="node" resolution-mode="require"/>
import type { RouteData } from '../../@types/astro.js';
import type { RenderOptions } from './index.js';
import type { SSRManifest } from './types.js';
import { IncomingMessage } from 'node:http';
import { App } from './index.js';
export { apply as applyPolyfills } from '../polyfill.js';
declare class NodeIncomingMessage extends IncomingMessage {
    /**
     * Allow the request body to be explicitly overridden. For example, this
     * is used by the Express JSON middleware.
     */
    body?: unknown;
}
export declare class NodeApp extends App {
    match(req: NodeIncomingMessage | Request): RouteData | undefined;
    render(request: NodeIncomingMessage | Request, options?: RenderOptions): Promise<Response>;
    /**
     * @deprecated Instead of passing `RouteData` and locals individually, pass an object with `routeData` and `locals` properties.
     * See https://github.com/withastro/astro/pull/9199 for more information.
     */
    render(request: NodeIncomingMessage | Request, routeData?: RouteData, locals?: object): Promise<Response>;
}
export declare function loadManifest(rootFolder: URL): Promise<SSRManifest>;
export declare function loadApp(rootFolder: URL): Promise<NodeApp>;
