import { Types } from 'mongoose';
import { JwtPayload } from 'jsonwebtoken';

export interface IToken {
  token: string;
  user: string;
  type: string;
  expires: Date;
  blacklisted: boolean;
  sub: string;
  companyId: string;
  iat: number;
  exp: number;
}

export type NewToken = Omit<IToken, 'blacklisted'>;

export interface IPayload extends JwtPayload {
  sub: string;
  iat: number;
  exp: number;
  type: string;
}

export interface TokenPayload {
  token: string;
  expires: Date;
}

export interface AccessAndRefreshTokens {
  access: TokenPayload;
  refresh: TokenPayload;
}

export interface TokenSubject {
  id:  Types.ObjectId;
  companyId: Types.ObjectId;
}
