interface AuthResult { isValid: boolean; user: AuthUser | null; error: string | null; token?: string; expiresAt?: Date; } interface AuthUser { id: string; email: string; createdAt?: Date; emailVerified?: boolean; metadata?: Record; } interface AuthMiddlewareOptions { required?: boolean; tokenExtractor?: TokenExtractor; errorHandler?: ErrorHandler; successHandler?: SuccessHandler; cookieName?: string; enableCache?: boolean; cacheTimeout?: number; allowedPaths?: string[] | RegExp[]; excludedPaths?: string[] | RegExp[]; roles?: string[]; permissions?: string[]; onUnauthorized?: (req: any, res: any) => void | Promise; onForbidden?: (req: any, res: any) => void | Promise; } type TokenExtractor = (req: any) => string | null | Promise; type ErrorHandler = (error: any, req: any, res: any, next?: any) => void | Promise; type SuccessHandler = (authResult: AuthResult, req: any, res: any, next?: any) => void | Promise; declare function createAuthMiddleware(options?: AuthMiddlewareOptions): (req: any, res: any, next?: any) => Promise; declare const optionalAuthMiddleware: (req: any, res: any, next?: any) => Promise; export { createAuthMiddleware, optionalAuthMiddleware };