import Koa from 'koa';
import express from 'express';
import { VirtualElement } from 'ssrsxjsx/jsx-runtime';
import { DumbServer } from './dumbServer';
interface SsrsxOptions<USER_CONTEXT = unknown> {
    baseUrl?: string;
    development?: boolean;
    clientRoot?: string;
    staticRoot?: string;
    jsRoot?: string;
    requireJsRoot?: string;
    requireJsPaths?: {
        [key: string]: string;
    };
    clientScriptBaseUrl?: string;
    ignoreExtensions?: string[];
    cacheControlMaxAge?: number;
    context?: ((server: Required<Pick<HttpServer, 'koa'>>) => USER_CONTEXT | Promise<USER_CONTEXT>) | ((server: Required<Pick<HttpServer, 'express'>>) => USER_CONTEXT | Promise<USER_CONTEXT>) | ((server: Required<Pick<HttpServer, 'dumb'>>) => USER_CONTEXT | Promise<USER_CONTEXT>);
    app?: VirtualElement;
    sourceMap?: boolean;
    hotReload?: number | boolean;
    hotReloadWait?: number;
    hotReloadWaitMax?: number;
    hotReloadWaitInclement?: number;
}
interface KoaServer {
    ctx: Koa.Context;
    next: Koa.Next;
}
interface ExpressServer {
    req: express.Request;
    res: express.Response;
    next: express.NextFunction;
}
interface HttpServer {
    koa?: KoaServer;
    express?: ExpressServer;
    dumb?: DumbServer;
}
declare const isKoaServer: (server: HttpServer) => boolean;
declare const isExpressServer: (server: HttpServer) => boolean;
declare const isDumbServer: (server: HttpServer) => boolean;
export { SsrsxOptions, KoaServer, ExpressServer, DumbServer, HttpServer };
export { isKoaServer, isExpressServer, isDumbServer };
