import { Type } from '@angular/core'; /** * API Endpoints configuration for session management */ export interface FgsSessionEndpoints { /** Endpoint to create a new session */ createSession: string; /** Endpoint to validate current session */ validateSession: string; /** Endpoint to refresh session and get new token */ refreshSession: string; /** Endpoint to revoke a specific session */ revokeSession: string; /** Endpoint to list all active sessions for a user */ listSessions: string; /** Endpoint for logout */ logout: string; } /** * Storage keys configuration */ export interface FgsStorageKeys { /** Key for auth token in cookie */ authToken?: string; /** Key for session ID in sessionStorage */ sessionId?: string; /** Key for session auth token in sessionStorage */ sessionAuthToken?: string; /** Key for user data in sessionStorage */ userData?: string; /** Key for last API call timestamp */ lastApiCallTime?: string; /** Key for last user activity timestamp */ lastActivity?: string; /** Key for device ID */ deviceId?: string; } /** * Cookie configuration */ export interface FgsCookieConfig { /** Cookie name for auth token */ name?: string; /** Whether cookie should be secure (HTTPS only) */ secure?: boolean; /** SameSite attribute */ sameSite?: 'strict' | 'lax' | 'none'; /** Cookie path */ path?: string; /** Cookie domain (optional) */ domain?: string; } /** * Feature flags configuration */ export interface FgsFeatureFlags { /** Enable detection and handling of multiple active sessions */ enableMultiSessionDetection?: boolean; /** Enable device fingerprinting for session tracking */ enableDeviceFingerprint?: boolean; /** Enable IP geolocation lookup */ enableIPGeolocation?: boolean; /** Enable activity tracking (mouse, keyboard, etc.) */ enableActivityTracking?: boolean; } /** * UI customization options */ export interface FgsUIConfig { /** Show the timeout warning dialog */ showTimeoutDialog?: boolean; /** Show the session conflict modal */ showConflictModal?: boolean; /** Show the lock screen when session is locked */ showLockScreen?: boolean; /** Title for timeout dialog */ dialogTitle?: string; /** Message for timeout dialog */ dialogMessage?: string; /** Text for extend session button */ dialogExtendButtonText?: string; /** Text for logout button */ dialogLogoutButtonText?: string; /** Title for conflict modal */ conflictModalTitle?: string; /** Message for conflict modal */ conflictModalMessage?: string; /** Delay in seconds before force logout is enabled */ forceLogoutDelaySeconds?: number; /** Title for lock screen */ lockScreenTitle?: string; /** Message for lock screen */ lockScreenMessage?: string; /** Custom dialog component to override default */ customDialogComponent?: Type; /** Custom conflict modal component to override default */ customConflictComponent?: Type; /** Custom lock screen component to override default */ customLockScreenComponent?: Type; } /** * Route configuration */ export interface FgsRouteConfig { /** Route to redirect on logout/session expiry */ loginRoute?: string; /** Route to redirect after successful login */ afterLoginRoute?: string; } /** * Session information for callbacks */ export interface FgsSessionInfo { sessionId: string; sessionAuthToken?: string; deviceId?: string; ipAddress?: string; location?: string; userAgent?: string; browser?: string; os?: string; createdAt?: Date; } /** * Active session information */ export interface FgsActiveSession { sessionId: string; deviceName?: string; browser?: string; os?: string; ipAddress?: string; location?: string; lastActivity?: Date; createdAt?: Date; isCurrent?: boolean; } /** * Callback functions configuration */ export interface FgsCallbacks { /** Called when a new session is created */ onSessionCreated?: (session: FgsSessionInfo) => void; /** Called when session expires */ onSessionExpired?: () => void; /** Called when session is extended */ onSessionExtended?: () => void; /** Called when user is force logged out */ onForceLogout?: () => void; /** Called when session conflict is detected */ onConflictDetected?: (sessions: FgsActiveSession[]) => void; /** Called on logout */ onLogout?: () => void; /** Called on 401 unauthorized response */ onUnauthorized?: () => void; } /** * IP Geolocation configuration */ export interface FgsGeolocationConfig { /** Custom API URL for IP geolocation (default: ip-api.com) */ apiUrl?: string; /** Timeout for geolocation request in ms */ timeout?: number; } /** * Main configuration interface for FGS Session Management */ export interface FgsSessionConfig { /** Base URL for API calls */ apiBaseUrl: string; /** API endpoints configuration */ endpoints: FgsSessionEndpoints; /** Session timeout in milliseconds (default: 600000 = 10 minutes) */ sessionTimeoutMs?: number; /** Warning window in seconds before session expires (default: 60) */ warningWindowSeconds?: number; /** Throttle interval for activity updates in ms (default: 1000) */ activityThrottleMs?: number; /** Throttle interval for session refresh in ms (default: 30000) */ refreshThrottleMs?: number; /** Throttle interval for session validation in ms (default: 5000) */ validationThrottleMs?: number; /** Storage keys configuration */ storageKeys?: FgsStorageKeys; /** Cookie configuration */ cookieConfig?: FgsCookieConfig; /** Feature flags */ features?: FgsFeatureFlags; /** UI customization */ ui?: FgsUIConfig; /** Route configuration */ routes?: FgsRouteConfig; /** Callback functions */ callbacks?: FgsCallbacks; /** IP Geolocation configuration */ geolocation?: FgsGeolocationConfig; /** Custom HTTP headers to include in requests */ customHeaders?: Record; /** Additional URLs to skip in the HTTP interceptor (added to default list) */ interceptorSkipUrls?: string[]; /** Use legacy Authtoken header in addition to Authorization (default: false) */ useLegacyAuthHeader?: boolean; /** Enable debug logging */ debug?: boolean; } /** * Default configuration values */ export declare const FGS_SESSION_DEFAULTS: Partial; //# sourceMappingURL=config.model.d.ts.map