import { HttpAdapterConfig, AuthenticatedUser, HttpRequest } from '../types.js';
import { ReAuthHttpAdapter } from '../base-adapter.js';
import { LoggerInterface } from '@re-auth/logger';
import { IRequest, CorsOptions, AutoRouterType } from 'itty-router';
import '@re-auth/reauth';
import '@re-auth/reauth/services';
import 'hono/utils/cookie';

declare class IttyRouterAdapter {
    readonly name = "itty-router";
    private adapter;
    private config;
    private generateDeviceInfo?;
    private routePaths;
    private logger;
    constructor(config: HttpAdapterConfig, generateDeviceInfo?: (request: IRequest) => Promise<Record<string, any>>, logger?: LoggerInterface);
    /**
     * Create a new AutoRouter with CORS configured
     */
    createRouter(basePath?: string, exposeIntrospection?: boolean, corsOptions?: CorsOptions): AutoRouterType;
    /**
     * Register middleware on an existing router
     */
    registerMiddleware(router: AutoRouterType, middleware: {
        before?: any[];
        finally?: any[];
    }): void;
    /**
     * Configure CORS on an existing router
     */
    configureCORS(router: AutoRouterType, options?: CorsOptions): void;
    createUserMiddleware(): (request: IRequest) => Promise<void>;
    generateDeviceInfoInternal(request: IRequest): Promise<Record<string, any>>;
    /**
     * Get current user from request
     */
    getCurrentUser(request: IRequest): Promise<AuthenticatedUser | null>;
    /**
     * Extract HTTP request from itty-router Request
     */
    extractRequest(request: IRequest): HttpRequest;
    /**
     * Send response using Response
     */
    sendResponse(data: any, statusCode?: number, headers?: Record<string, string>): Response;
    /**
     * Handle error using Response
     */
    handleError(err: Error, statusCode?: number): Response;
    /**
     * Register routes on existing itty-router AutoRouter or create a new one
     */
    registerRoutes(router?: AutoRouterType, basePath?: string, exposeIntrospection?: boolean): AutoRouterType;
    /**
     * Get all registered routes
     */
    getRoutes(): string[];
    /**
     * 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;
    /**
     * Create cookie header string
     */
    private createCookieHeader;
    /**
     * Get the base adapter instance
     */
    getAdapter(): ReAuthHttpAdapter;
}
/**
 * itty-router middleware factory function
 */
declare function reAuthRouter(config: HttpAdapterConfig, generateDeviceInfo?: (request: IRequest) => Promise<Record<string, any>>, logger?: LoggerInterface): IttyRouterAdapter;
declare const createReAuthRouter: (routerConfig: {
    basePath: string;
    exposeIntrospection: boolean;
    corsOptions?: CorsOptions;
}, config: HttpAdapterConfig, generateDeviceInfo?: (request: IRequest) => Promise<Record<string, any>>, logger?: LoggerInterface) => {
    router: AutoRouterType;
    adapter: IttyRouterAdapter;
};

export { IttyRouterAdapter, createReAuthRouter, reAuthRouter };
