import type { Store } from '../db/store.ts'; import type { Connection } from '../protocol/connection.ts'; import type { AuthUser, BroadcastTableChangeFn, GenesisMessage, LoginCtx, LoginFailure, MockServerConfig, Row } from '../types.ts'; export type TokenRegistry = Map; export interface AuthSession { username: string; sessionAuthToken: string; refreshAuthToken: string; sessionId: string; } export interface AuthState { tokens: TokenRegistry; sessions: Map; lastLogin: Map; } export declare function createAuthState(): AuthState; export declare function capRegistry(registry: Map): void; export declare function openSession(auth: AuthState, user: AuthUser): AuthSession; export declare function closeSession(auth: AuthState, session: AuthSession): void; export declare function sessionByRefreshToken(auth: AuthState, refreshAuthToken: unknown): AuthSession | undefined; export declare function sessionTimeoutMins(config: MockServerConfig): number; export declare function refreshTokenExpirationMins(config: MockServerConfig): number; export declare function javaDateString(date: Date): string; export declare function buildLoginAckBody(user: AuthUser, session: AuthSession, config: MockServerConfig, auth: AuthState, messageType?: string): Row; export declare function buildLoginNackBody(config: MockServerConfig, transport: 'ws' | 'http', failure?: LoginError): Row; export declare function buildLogoutAckBody(config: MockServerConfig): Row; export declare function findUser(config: MockServerConfig, store: Store, username?: string): AuthUser | undefined; export type LoginKind = 'credentials' | 'refresh' | 'none'; export declare function loginKind(config: MockServerConfig, details: Row, refreshToken: unknown): LoginKind; export declare function credentialsLogin(config: MockServerConfig, store: Store, details: Row, ctx: LoginCtx): AuthUser | LoginFailure; export declare function unclaimedLogin(config: MockServerConfig, details: Row, ctx: LoginCtx): LoginFailure; export declare function refreshLogin(config: MockServerConfig, store: Store, username: string | undefined, ctx: LoginCtx): AuthUser | LoginFailure; export type LoginError = LoginFailure | 'INTERNAL_ERROR'; export declare function attemptLogin(run: () => AuthUser | LoginFailure): AuthUser | LoginError; export declare function recordLogout(config: MockServerConfig, auth: AuthState, username: string, ctx: LoginCtx): void; export declare function routerHostname(header: unknown, address: string | undefined): string; export declare function handleLogin(message: GenesisMessage, connection: Connection, config: MockServerConfig, auth: AuthState, store: Store, broadcastTableChange: BroadcastTableChangeFn): void; export declare function handleLogout(message: GenesisMessage, connection: Connection, config: MockServerConfig, auth: AuthState, store: Store, broadcastTableChange: BroadcastTableChangeFn): void;