import { JwtService } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { Response } from 'express';
import { DataSource, Repository } from 'typeorm';
import { User } from '../../database/entities/user.entity';
import { NotificationPreferences } from '../../database/entities/notification-preferences.entity';
import { PasswordResetToken } from '../../database/entities/password-reset-token.entity';
import { EmailVerificationToken } from '../../database/entities/email-verification-token.entity';
import { GroupsService } from '../groups/groups.service';
import { MailService } from '../mail/mail.service';
import { RegisterDto } from './dto/register.dto';
import { LoginDto } from './dto/login.dto';
import { AuthResponseDto } from './dto/auth-response.dto';
export declare class AuthService {
    private readonly userRepo;
    private readonly notificationPrefsRepo;
    private readonly passwordResetTokenRepo;
    private readonly emailVerificationTokenRepo;
    private readonly dataSource;
    private readonly jwt;
    private readonly config;
    private readonly groupsService;
    private readonly mailService;
    constructor(userRepo: Repository<User>, notificationPrefsRepo: Repository<NotificationPreferences>, passwordResetTokenRepo: Repository<PasswordResetToken>, emailVerificationTokenRepo: Repository<EmailVerificationToken>, dataSource: DataSource, jwt: JwtService, config: ConfigService, groupsService: GroupsService, mailService: MailService);
    register(dto: RegisterDto): Promise<{
        message: string;
    }>;
    login(dto: LoginDto, res: Response): Promise<AuthResponseDto>;
    loginWithGoogle(profile: {
        googleId: string;
        email: string;
        name: string;
        avatarUrl: string | null;
    }, res: Response): Promise<AuthResponseDto>;
    refresh(userId: string, res: Response): Promise<{
        accessToken: string;
    }>;
    logout(userId: string, res: Response): Promise<{
        message: string;
    }>;
    forgotPassword(email: string): Promise<{
        message: string;
    }>;
    resetPassword(token: string, newPassword: string): Promise<{
        message: string;
    }>;
    verifyEmail(token: string, res: Response): Promise<AuthResponseDto>;
    resendVerification(email: string): Promise<{
        message: string;
    }>;
    private hashToken;
    private frontendOrigin;
    private createAndSendVerification;
    private issueTokens;
    private setRefreshCookie;
    private clearRefreshCookie;
    private toProfile;
}
