/**
 * @module @arcis/node/nuxt
 *
 * Nuxt (h3) adapter for Arcis. Drop into a server middleware file.
 *
 * **Scope:** rate-limit + bot detection + security headers. For
 * XSS/SQL/SSTI/etc. body-payload blocking, call `sanitizeObject` from
 * `@arcis/node/sanitizers` inside your route handler. v1 keeps the
 * middleware surface narrow.
 *
 * ```ts
 * // server/middleware/arcis.ts
 * import { defineEventHandler } from 'h3';
 * import { arcisHandler } from '@arcis/node/nuxt';
 * export default defineEventHandler(arcisHandler({ rateLimit: { max: 100 } }));
 * ```
 *
 * Or compose with other handlers — each Nuxt server middleware file runs in
 * the order Nitro discovers them (alphabetical by default).
 *
 * The adapter operates against h3's Node-compat layer (`event.node.req` /
 * `event.node.res`) so it works on the standard Nuxt server. There is no
 * runtime dependency on `h3` — its event shape is duck-typed.
 */
import type { HeaderOptions, RateLimitOptions } from '../core/types';
import { type BotProtectionOptions } from './bot-detection';
interface NodeIncomingMessageLike {
    headers: Record<string, string | string[] | undefined>;
    socket?: {
        remoteAddress?: string;
    };
    method?: string;
    url?: string;
}
interface NodeServerResponseLike {
    statusCode: number;
    writableEnded?: boolean;
    setHeader(name: string, value: string | number | string[]): void;
    removeHeader(name: string): void;
    end(body?: string): void;
}
export interface H3EventLike {
    node: {
        req: NodeIncomingMessageLike;
        res: NodeServerResponseLike;
    };
}
export type ArcisH3Handler = (event: H3EventLike) => Promise<void> | void;
export interface ArcisNuxtOptions {
    /** Security headers configuration. Default: enabled. Pass `false` to disable. */
    headers?: boolean | HeaderOptions;
    /** Rate limiter configuration. Default: 100 req/60s in-memory. Pass `false` to disable. */
    rateLimit?: boolean | RateLimitOptions;
    /** Bot protection. Default: disabled (opt-in). */
    bot?: boolean | BotProtectionOptions;
}
/**
 * Build an h3 event handler that applies Arcis protections on each request.
 * Wrap it with `defineEventHandler` in your Nuxt server middleware. When a
 * request is rate-limited or denied, the handler writes the 429/403 response
 * directly via `event.node.res` and returns; otherwise it sets security
 * headers and falls through to the next handler.
 */
export declare function arcisHandler(options?: ArcisNuxtOptions): ArcisH3Handler;
export default arcisHandler;
//# sourceMappingURL=nuxt.d.ts.map