import type { Request, Response } from 'express';
import type { Debugger } from 'debug';
import type { AdapterConfig, AuthenticatorConfig, PluginsConfig } from '../Options.js';
import type { Adapter } from './Adapter.js';
import type { User } from './User.js';
import type { Plugin } from './Plugin.js';
export type AuthResponse<ResBody = any, Locals extends Record<string, any> = Record<string, any>> = Response<ResBody, {
    adapterConfig: AdapterConfig;
    adapter: Adapter;
    authenticatorConfig: AuthenticatorConfig;
    authenticator: Authenticator;
    pluginsConfig: PluginsConfig;
    plugins: Plugin[];
    baseUrl: URL;
    user: User;
    requestId: string;
    debug: Debugger;
    error?: Error;
} & Locals>;
export interface Authenticator {
    authenticate(request: Request, response: AuthResponse): Promise<User>;
    cleanAuthentication(request: Request, response: AuthResponse): Promise<void>;
}
