import jwt from 'jsonwebtoken';

const JWT_SECRET = process.env.JWT_SECRET || 'super-secret-jwt-key';
const JWT_REFRESH_SECRET = process.env.JWT_REFRESH_SECRET || 'super-secret-refresh-jwt-key';

export interface TokenPayload {
  userId?: string;
  adminId?: string;
  email: string;
  role: 'CUSTOMER' | 'ADMIN';
  sessionId?: string;
}

export const signAccessToken = (payload: TokenPayload, rememberMe: boolean = false): string => {
  const expiresIn = rememberMe ? '7d' : '15m';
  return jwt.sign(payload, JWT_SECRET, { expiresIn: expiresIn as any });
};

export const signRefreshToken = (payload: TokenPayload, rememberMe: boolean = false): string => {
  const expiresIn = rememberMe ? '30d' : '7d';
  return jwt.sign(payload, JWT_REFRESH_SECRET, { expiresIn: expiresIn as any });
};

export const verifyAccessToken = (token: string): TokenPayload => {
  return jwt.verify(token, JWT_SECRET) as TokenPayload;
};

export const verifyRefreshToken = (token: string): TokenPayload => {
  return jwt.verify(token, JWT_REFRESH_SECRET) as TokenPayload;
};
