import { TOKEN_TYPES } from '../constants/app'; import { IDefaultAttributes } from './commonInterface'; export interface ITokenAttributes extends IDefaultAttributes { id?: string; token: string; userId?: string; type: TOKEN_TYPES; expiresAt?: Date; blacklisted?: boolean; createdAt?: Date; updatedAt?: Date; } export interface ITokenDao { findOne(where: Partial): Promise; createMultiple: (data: ITokenAttributes[]) => Promise; findByWhere: (where: Partial) => Promise; deleteByWhere: (where: Partial) => Promise; } export interface ITokenService { findAllTokensByFilter: (where: Partial) => Promise; findOneTokenByFilter: (where: Partial) => Promise; createMultipleTokens: (tokenData: ITokenAttributes[]) => Promise; deleteUserTokens: (where: object) => Promise; generateToken: (userId: string, expires: Date, type: TOKEN_TYPES) => string; verifyTokenByType: (token: string, type: TOKEN_TYPES) => Promise; generateAppleClientSecret: (appId: string) => string; }