import { Request, Response } from "express"; import { Session, SessionData } from "express-session"; import { Connection } from "mysql"; import Application from "../Application.js"; import AuthMethod from "./AuthMethod.js"; import AuthProof from "./AuthProof.js"; import User from "./models/User.js"; export default class AuthGuard { private readonly app; private readonly authMethods; constructor(app: Application, ...authMethods: AuthMethod>[]); interruptAuth(req: Request, res: Response): Promise; getAuthMethodByName(authMethodName: string): AuthMethod> | null; getAuthMethodNames(): string[]; getRegistrationMethod(): AuthMethod>; getAuthMethodsByIdentifier(identifier: string): Promise<{ user: User; method: AuthMethod>; }[]>; getProofs(req: Request): Promise[]>; getProofsForSession(session: Session & Partial): Promise[]>; getProofsForRequest(req: Request): Promise[]>; authenticateOrRegister(session: Session & Partial, proof: AuthProof, persistSession: boolean, onLogin?: (user: User) => Promise, beforeRegister?: (connection: Connection, user: User) => Promise, afterRegister?: (connection: Connection, user: User) => Promise): Promise; } export declare class AuthError extends Error { } export declare class AuthProofError extends AuthError { } export declare class InvalidAuthProofError extends AuthProofError { constructor(); } export declare class UnauthorizedAuthProofError extends AuthProofError { constructor(); } export declare class PendingApprovalAuthError extends AuthError { constructor(); } export declare type RegisterCallback = () => Promise;