import http from 'http'; import { type JwtBody } from './'; import type { ExpressNextFunction, ExpressRequest, ExpressResponse } from './express-types'; import type { PublicKeys } from './pubkeys-helper'; export interface RevokedToken { id?: number | string; jti: string; revokedAt: Date; } export type ResultMapper = (user: JwtAuthMiddlewareHandlerRequestUser, request: ExpressRequest, response: ExpressResponse) => void | Record | Promise>; export interface JwtAuthMiddlewareOptions { allowAnonymous?: boolean; } export interface JwtAuthMiddlewareHandlerRequestUser { [key: string]: unknown; audience: JwtBody['aud']; issuer: JwtBody['iss']; subject: JwtBody['sub']; authenticated: true; body: JwtBody; } interface JwtAuthMiddlewareHandlerRequest extends ExpressRequest { user?: JwtAuthMiddlewareHandlerRequestUser; jwtAuthMiddlewareProcessed?: boolean; headers: http.IncomingHttpHeaders; } export type JwtAuthMiddlewareHandler = (request: JwtAuthMiddlewareHandlerRequest, response: ExpressResponse, next: ExpressNextFunction) => void; export declare function createJwtAuthMiddlewareHandler(pubKeys: PublicKeys, revokedTokens: Record, audiences: string[], mapper?: ResultMapper | null, options?: JwtAuthMiddlewareOptions): JwtAuthMiddlewareHandler; export {};