import type { DataFunctionArgs } from "./routeModules";
import type { AssetsManifest, EntryContext, FutureConfig } from "./entry";
import type { ServerRouteManifest } from "./routes";
/**
 * The output of the compiler for the server build.
 */
export interface ServerBuild {
    entry: {
        module: ServerEntryModule;
    };
    routes: ServerRouteManifest;
    assets: AssetsManifest;
    publicPath: string;
    assetsBuildDirectory: string;
    future: FutureConfig;
    dev?: {
        liveReloadPort: number;
    };
}
export interface HandleDocumentRequestFunction {
    (request: Request, responseStatusCode: number, responseHeaders: Headers, context: EntryContext): Promise<Response> | Response;
}
export interface HandleDataRequestFunction {
    (response: Response, args: DataFunctionArgs): Promise<Response> | Response;
}
/**
 * A module that serves as the entry point for a Remix app during server
 * rendering.
 */
export interface ServerEntryModule {
    default: HandleDocumentRequestFunction;
    handleDataRequest?: HandleDataRequestFunction;
}
