import type { VextAdapter } from "../../types/adapter.js";
import type { VextApp } from "../../types/app.js";
/**
 * Native Adapter 选项
 *
 * 用户通过 nativeAdapter(options) 工厂函数传入，
 * 控制 Native Adapter 的初始化行为。
 *
 * 所有选项均可选，默认值已为 vext 场景优化。
 *
 * Native Adapter 不依赖任何第三方 HTTP 框架（无 Fastify / Express / Koa / Hono），
 * 直接使用 Node.js 原生 http.createServer + route-core（轻量路由核心）。
 * 这是 vext 的最高性能适配器选项。
 */
export interface NativeAdapterOptions {
    /**
     * 忽略尾部斜杠（默认 true）
     * /users 和 /users/ 视为相同路由
     */
    ignoreTrailingSlash?: boolean;
    /**
     * 大小写敏感（默认 false）
     * /Users 和 /users 视为相同路由
     */
    caseSensitive?: boolean;
    /**
     * 最大参数长度（默认 500）
     * 路由参数（如 :id）的最大字符数
     */
    maxParamLength?: number;
}
/**
 * createNativeAdapter — 创建基于 http.createServer + route-core 的 VextAdapter 实例
 *
 * 将 Node.js 原生 HTTP 服务器作为底层，配合 route-core 路由核心，
 * 实现 VextAdapter 接口。这是 vext 的第五个 adapter 实现，
 * 也是唯一不依赖第三方 HTTP 框架的实现。
 *
 * 架构说明：
 *   - 路由匹配：route-core（只负责 method/path 匹配与 params 提取）
 *   - HTTP 层：Node.js 原生 http.createServer，零框架开销
 *   - 中间件链执行：vext 自己的 executeChain（洋葱模型）
 *   - 请求/响应对象：直接从 IncomingMessage / ServerResponse 构造 VextRequest / VextResponse
 *   - 全局中间件：通过 registerMiddleware() 收集，在每个路由执行时拼接到链头
 *
 * 与其他 Adapter 的核心差异：
 *   - 无第三方框架依赖（Fastify / Express / Koa / Hono 均被跳过）
 *   - 请求对象直接从 IncomingMessage 构造，无中间包装层
 *   - 响应对象直接操作 ServerResponse，无框架 reply / ctx 层
 *   - Body 读取：直接从 IncomingMessage 数据流读取 Buffer → string
 *   - JSON 序列化：直接 serverResponse.end(JSON.stringify(...))
 *   - 路由匹配：route-core prepared lookup 直接在 http handler 中调用
 *
 * 性能预期：
 *   相比 Fastify Adapter，Native Adapter 省去了：
 *   1. Fastify 框架初始化开销（plugin 系统、hook 系统）
 *   2. Fastify 的 request/reply 对象构造
 *   3. Fastify 的 content-type parser 管道
 *   4. Fastify 的 serialization 管道
 *   5. Fastify 的 lifecycle hooks 调用
 *   预估 RPS 提升 +44-73%（相对 vext-Fastify）
 *
 * HTTP 服务器：
 *   - listen() 创建 http.createServer 并开始监听
 *   - close() 关闭服务器
 *   - buildHandler() 返回 (req, res) => void 处理函数，
 *     用于 dev 模式热重载的 HotSwappableHandler 原子替换
 *
 * @param options Native 适配器配置选项
 * @param app     VextApp 实例（用于传递给 createVextRequest 的 app 引用）
 * @returns VextAdapter 实例
 *
 * @see adapters/fastify/adapter.ts（Fastify Adapter 对应实现）
 * @see adapters/express/adapter.ts（Express Adapter 对应实现）
 * @see adapters/koa/adapter.ts（Koa Adapter 对应实现）
 * @see adapters/hono/adapter.ts（Hono Adapter 对应实现）
 */
export declare function createNativeAdapter(options: NativeAdapterOptions, app: VextApp): VextAdapter;
