import jwt, { type SignOptions } from 'jsonwebtoken';
import { getJwtConfig } from '../../config/database.js';

export interface JwtPayload {
  sub: string;
  role: string;
  permissions: string[];
}

export function signToken(payload: JwtPayload, rememberMe = false): string {
  const { secret, expiresIn } = getJwtConfig();
  const finalExpiresIn = (rememberMe ? '30d' : expiresIn) as SignOptions['expiresIn'];
  return jwt.sign(payload, secret, { expiresIn: finalExpiresIn });
}

export function verifyToken(token: string): JwtPayload {
  const { secret } = getJwtConfig();
  return jwt.verify(token, secret) as JwtPayload;
}
