import { AuthDocument } from '../generated/documents/authDocument.js'; import { PlatformType } from '../generated/platformType.js'; import { SessionType } from '../generated/session/sessionType.js'; import { AuthEntryPoint, RefreshToken, UserIdentificationData } from '../generated/token/tokenData.js'; import { User } from '../generated/token/user.js'; interface BaseTokenData { refreshToken: RefreshToken | null; sessionType: T; } export interface UserTokenData extends User, BaseTokenData { mobileUid: string; identifier: string; authEntryPoint: AuthEntryPoint; } export interface EResidentApplicant { email: string; document?: AuthDocument; } export type VerifiedBaseTokenData = BaseTokenData> = T & { exp?: number; iat?: number; refreshToken: RefreshToken; }; export interface EResidentTokenData extends User, BaseTokenData { mobileUid: string; identifier: string; authEntryPoint: AuthEntryPoint; } export interface EResidentApplicantTokenData extends EResidentApplicant, BaseTokenData { mobileUid: string; identifier: string; authEntryPoint: AuthEntryPoint; } export type AppUser = UserTokenData | EResidentTokenData; export type AppUserSessionType = SessionType.User | SessionType.EResident; export interface AcquirerTokenData extends BaseTokenData { _id: string; partnerId?: string; } export interface PartnerTokenData extends BaseTokenData { _id: string; scopes: Record; } export interface TemporaryTokenData extends BaseTokenData { mobileUid: string; platformType?: PlatformType; jti: string; scope: string[]; identificationData?: UserIdentificationData; } export interface ServiceEntranceTokenData extends BaseTokenData { acquirerId: string; branchHashId: string; offerHashId: string; offerRequestHashId: string; mobileUid: string; } export interface ServiceUserTokenData extends BaseTokenData { login: string; } export type TokenData = UserTokenData | AcquirerTokenData | EResidentTokenData | EResidentApplicantTokenData | PartnerTokenData | TemporaryTokenData | ServiceEntranceTokenData | ServiceUserTokenData; export {};