import type { ServiceContainerLike } from "../contracts/serviceContainer"; import type { AuthUser, CredentialSource } from "./authContext"; interface AuthGuard { resolve(request: Request): AuthUser | null | Promise; } declare class GuestGuard implements AuthGuard { resolve(request: Request): AuthUser | null; } declare class ApiTokenGuard implements AuthGuard { private readonly options; constructor(options: { token: string; user: AuthUser; }); resolve(request: Request): AuthUser | null; } declare class DatabaseTokenGuard implements AuthGuard { private readonly container; constructor(container: ServiceContainerLike); resolve(request: Request): Promise; } declare class CompositeGuard implements AuthGuard { private readonly guards; constructor(guards: AuthGuard[]); resolve(request: Request): Promise; } declare class AuthManager { private readonly guard; private readonly namedGuards; constructor(guard: AuthGuard); registerGuard(name: string, next: AuthGuard): this; use(name?: string): AuthGuard; guardNames(): string[]; resolve(request?: Request): Promise; resolveWithSource(request?: Request): Promise<{ user: AuthUser | null; credentialSource: CredentialSource; }>; user(request?: Request): Promise; check(request?: Request): Promise; requireUser(request?: Request): Promise; private authenticateRequest; private tryNamedGuards; } export type { AuthGuard, AuthUser }; export { ApiTokenGuard, AuthManager, CompositeGuard, DatabaseTokenGuard, GuestGuard };