import { Request, Response, NextFunction, Router } from 'express';
import { FrameworkAdapter, HttpAdapterConfig, HttpRequest, AuthenticatedUser, MiddlewareFunction } from '../types.cjs';
import { ReAuthHttpAdapter } from '../base-adapter.cjs';
import { LoggerInterface } from '@re-auth/logger';
import '@re-auth/reauth';
import '@re-auth/reauth/services';
import 'hono/utils/cookie';

declare class ExpressAdapter implements FrameworkAdapter<Request, Response, NextFunction> {
    private exposeIntrospection;
    readonly name = "express";
    private adapter;
    private generateDeviceInfo?;
    constructor(config: HttpAdapterConfig, exposeIntrospection: boolean, generateDeviceInfo?: (request: Request) => Promise<Record<string, any>>, logger?: LoggerInterface);
    /**
     * Generate device info from request
     */
    generateDeviceInfoInternal(request: Request): Promise<Record<string, any>>;
    /**
     * Create Express middleware that populates req.user
     */
    createUserMiddleware(): (req: Request, res: Response, next: NextFunction) => Promise<void>;
    /**
     * Create Express middleware that adds adapter to request
     */
    createMiddleware(): (req: Request, res: Response, next: NextFunction) => Promise<void>;
    /**
     * Extract HTTP request from Express request
     */
    extractRequest(req: Request): HttpRequest;
    /**
     * Send response using Express response object
     */
    sendResponse(res: Response, data: any, statusCode?: number): void;
    /**
     * Handle error using Express response object
     */
    handleError(res: Response, error: Error, statusCode?: number): void;
    /**
     * Create Express router with all ReAuth routes
     */
    createRouter(router?: Router, basePath?: string): Router;
    /**
     * Create step execution handler
     */
    private createStepHandler;
    /**
     * Create session check handler
     */
    private createSessionCheckHandler;
    /**
     * Create plugin list handler
     */
    private createPluginListHandler;
    /**
     * Create plugin details handler
     */
    private createPluginDetailsHandler;
    /**
     * Create introspection handler
     */
    private createIntrospectionHandler;
    /**
     * Create health check handler
     */
    private createHealthHandler;
    /**
     * Get current user from Express request
     */
    getCurrentUser(req: Request): Promise<AuthenticatedUser | null>;
    /**
     * Get the base adapter instance
     */
    getAdapter(): ReAuthHttpAdapter;
}
/**
 * Factory function to create Express adapter
 */
declare function createExpressAdapter(config: HttpAdapterConfig, exposeIntrospection?: boolean, generateDeviceInfo?: (request: Request) => Promise<Record<string, any>>, logger?: LoggerInterface): ExpressAdapter;
/**
 * Express middleware factory function
 */
declare function expressReAuth(config: HttpAdapterConfig, exposeIntrospection?: boolean, generateDeviceInfo?: (request: Request) => Promise<Record<string, any>>, logger?: LoggerInterface): MiddlewareFunction<Request, Response, NextFunction>;

export { ExpressAdapter, createExpressAdapter, expressReAuth };
