import type { RolePermissions, UserPreferences } from '@/lib/db/schema/users'; import type { Port } from '@/lib/db/schema/ports'; /** Typed Better Auth user object */ export interface AuthUser { id: string; email: string; name: string; image: string | null; emailVerified: boolean; createdAt: Date; updatedAt: Date; } /** Typed Better Auth session object */ export interface AuthSession { id: string; userId: string; token: string; expiresAt: Date; ipAddress: string | null; userAgent: string | null; createdAt: Date; updatedAt: Date; user: AuthUser | null; } /** Extended user profile (from user_profiles table) */ export interface UserProfile { id: string; userId: string; displayName: string; avatarUrl: string | null; phone: string | null; isSuperAdmin: boolean; isActive: boolean; lastLoginAt: Date | null; preferences: UserPreferences; createdAt: Date; updatedAt: Date; } /** Port context as seen by the authenticated user */ export interface PortContext { port: Port; roleId: string; roleName: string; permissions: RolePermissions; } /** Full authenticated user context (session + profile + port roles) */ export interface AuthenticatedUser extends AuthUser { profile: UserProfile | null; portContexts: PortContext[]; currentPortContext: PortContext | null; }