import { ModuleMetadata, Type } from '@nestjs/common'; export interface AuthModuleOptions { jwt: { secret: string; expiresIn: string; }; userSerializationService: Type>; google?: { clientID: string; clientSecret: string; callbackURL: string; scope: string[]; authManagerService: Type>; }; } export interface GoogleUserProfile { name: { givenName: string; familyName: string; }; emails: string[]; photos: any; } export interface AuthUserSerializationService { transform(user: TUser): any; } export interface AuthGoogleManagerService { findOrCreateUser: (profile: GoogleUserProfile) => Promise; beforeAuthentication?: (options: any) => void; } export interface AuthOptionsFactory { createAuthOptions(): Promise | AuthModuleOptions; } export interface AuthModuleAsyncOptions extends Pick { useExisting?: Type; useClass?: Type; useFactory?: (...args: any[]) => Promise | AuthOptionsFactory; inject?: any[]; } export interface JWTAccessToken { access_token: string; token_type: string; expires_in: string; } export interface JwtTokenGeneratorService { generate(user: any): Promise; }