import type { Request, Response, RequestHandler, ErrorRequestHandler } from "express";
import { Logger } from "../core/logger.service.js";
import { type LoggerConfig } from "../core/logger.config.js";
declare global {
    namespace Express {
        interface Request {
            id?: string;
        }
    }
}
export interface ExpressLoggerOptions {
    /**
     * An existing Logger instance to use.
     * If not provided, a new Logger will be created with the options below.
     */
    loggerInstance?: Logger;
    /**
     * Configuration options for the Logger.
     * Ignored if loggerInstance is provided.
     */
    loggerOptions?: Partial<LoggerConfig>;
    /**
     * Function to determine if a request should be skipped for logging.
     * @param req Express request
     * @param res Express response
     * @returns true to skip logging, false otherwise
     */
    skip?: (req: Request, res: Response) => boolean;
    /**
     * Customize the log message for incoming requests.
     * @param req Express request
     * @param store Request context store
     * @returns Log message string
     */
    requestMessage?: (req: Request, store: {
        requestId: string;
    }) => string;
    /**
     * Customize the log message for completed requests.
     * @param req Express request
     * @param res Express response
     * @param store Request context store
     * @param duration Request duration in ms
     * @param status Response status code
     * @returns Log message string
     */
    responseMessage?: (req: Request, res: Response, store: {
        requestId: string;
    }, duration: number, status: number) => string;
}
/**
 * Express middleware for neuro-friendly logging and request context management.
 *
 * @param options Configuration options for the logger middleware.
 * @returns Express RequestHandler.
 */
export declare const expressLogger: (options?: ExpressLoggerOptions) => RequestHandler;
/**
 * Express error handling middleware that logs errors using the logger and request context.
 *
 * Place this AFTER your routes and other middleware, but BEFORE the default Express error handler.
 *
 * Usage:
 * ```typescript
 * import express from 'express';
 * import { expressLogger, expressErrorHandler } from './path/to/expressAdapter/index.js';
 * import { Logger } from './path/to/logger/index.js';
 *
 * const app = express();
 * const logger = new Logger();
 *
 * app.use(expressLogger({ loggerInstance: logger }));
 * // ... routes ...
 * app.use(expressErrorHandler(logger));
 * ```
 *
 * @param loggerInstance An instance of the Logger.
 * @returns Express ErrorRequestHandler.
 */
export declare const expressErrorHandler: (loggerInstance: Logger) => ErrorRequestHandler;
//# sourceMappingURL=express.d.ts.map