import { DefaultSession, DefaultUser } from "next-auth"
import { JWT, DefaultJWT } from "next-auth/jwt"
import { UserRole, AttendanceMethod, CurrentUser } from "@/types/auth"

declare module "next-auth" {
    interface Session {
        user: CurrentUser & DefaultSession["user"]
    }

    interface User extends DefaultUser {
        role: UserRole
        avatar?: string
        attendanceMethod: AttendanceMethod
        biometricDeviceId?: string
        isActive: boolean
        accessToken: string
        expiresIn: string
    }
}

declare module "next-auth/jwt" {
    interface JWT extends DefaultJWT {
        accessToken: string
        expiresIn: string
        tokenExpiry: number
        role: UserRole
        attendanceMethod: AttendanceMethod
        biometricDeviceId?: string
        isActive: boolean
    }
}