import Koa from 'koa';
import express from 'express';
import { SsrsxOptions, HttpServer } from './types';
interface SsrsxOptionsKoa<USER_CONTEXT = unknown> extends SsrsxOptions<USER_CONTEXT> {
    context?: (server: Required<Pick<HttpServer, 'koa'>>) => USER_CONTEXT | Promise<USER_CONTEXT>;
}
declare const ssrsxKoa: <T = unknown>(ssrsxOption?: SsrsxOptionsKoa<T>) => Promise<{
    middleware: (ctx: Koa.Context, next: Koa.Next) => Promise<any>;
    hotReload: () => void;
}>;
interface SsrsxOptionsExpress<USER_CONTEXT = unknown> extends SsrsxOptions<USER_CONTEXT> {
    context?: (server: Required<Pick<HttpServer, 'express'>>) => USER_CONTEXT | Promise<USER_CONTEXT>;
}
declare const ssrsxExpress: <T = unknown>(ssrsxOption?: SsrsxOptionsExpress<T>) => Promise<{
    middleware: (req: express.Request, res: express.Response, next: express.NextFunction) => void;
    hotReload: () => void;
}>;
interface SsrsxOptionsDumb<USER_CONTEXT = unknown> extends SsrsxOptions<USER_CONTEXT> {
    context?: (server: Required<Pick<HttpServer, 'dumb'>>) => USER_CONTEXT | Promise<USER_CONTEXT>;
}
declare const ssrsxDumb: <T = unknown>(ssrsxOption?: SsrsxOptionsDumb<T>) => Promise<{
    dumb: {
        request: (requestUrl: string) => void;
        response: () => Promise<unknown>;
        req: () => {
            url: string;
        };
        res: (res: import("./server/sendData").SendData) => void;
    };
    request: (url: string) => Promise<unknown>;
    hotReload: () => void;
}>;
export { ssrsxKoa, ssrsxExpress, ssrsxDumb };
export type { SsrsxOptionsKoa, SsrsxOptionsExpress, SsrsxOptionsDumb };
