import { JwtService } from '@nestjs/jwt';
import { DataSource, Repository } from 'typeorm';
import { ClientAccessToken } from '../entities/client-access-token.entity';
import { ClientOtpLog } from '../entities/client-otp-log.entity';
import { User } from '../../user/entities/user.entity';
import { UserService } from '../../user/user.service';
import { MailsService } from '../../mails/mails.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { Company } from '../../companies/entities/company.entity';
import { CompanyUser } from '../../companies/entities/company-user.entity';
import { ClientRefreshToken } from '../entities/client-refresh-token.entity';
export declare class ClientAuthService {
    private accessTokenRepository;
    private otpLogRepository;
    private readonly refreshTokenRepository;
    private readonly companyUserRepository;
    private companyRepository;
    private userRepository;
    private readonly userService;
    private readonly jwtService;
    private readonly mailsService;
    private readonly notificationsService;
    private readonly dataSource;
    private readonly logger;
    constructor(accessTokenRepository: Repository<ClientAccessToken>, otpLogRepository: Repository<ClientOtpLog>, refreshTokenRepository: Repository<ClientRefreshToken>, companyUserRepository: Repository<CompanyUser>, companyRepository: Repository<Company>, userRepository: Repository<User>, userService: UserService, jwtService: JwtService, mailsService: MailsService, notificationsService: NotificationsService, dataSource: DataSource);
    private sendAsUserSafe;
    private static readonly BRAND_KEY_BY_SCHEME;
    private resolveBrandSenderUserId;
    private generateAccessToken;
    private generateRefreshToken;
    private hashRefreshToken;
    private generateJwtAccessToken;
    private createRefreshToken;
    private generateOtp;
    private maskPhone;
    inviteClient(companyId: number, clientEmail: string, clientPhone: string, createdByUserId: number): Promise<{
        token: string;
        link: string;
        message: string;
    }>;
    clientLogin(email: string, token: string): Promise<{
        otp_sent: boolean;
        message: string;
        expires_in_minutes: number;
        email?: string;
    }>;
    loginWithEmail(email: string): Promise<{
        otp_sent: boolean;
        message: string;
        expires_in_minutes: number;
    }>;
    verifyOtp(email: string, otpCode: string, deviceName?: string, deviceType?: string, ipAddress?: string | null, userAgent?: string | null): Promise<{
        access_token: string;
        refresh_token: string;
        token_type: string;
        expires_in: number;
        user: {
            id: number;
            email: string;
            firstName: string;
            lastName: string;
        };
        company_ids: number[];
        message: string;
    }>;
    refreshAccessToken(refreshToken: string): Promise<{
        access_token: string;
        token_type: string;
        expires_in: number;
    }>;
    logout(refreshToken: string): Promise<{
        success: boolean;
        message: string;
    }>;
    resendOtp(email: string, token: string): Promise<{
        otp_sent: boolean;
        message: string;
    }>;
    private isTokenExpired;
    getPortalStatus(companyId: number): Promise<{
        hasAccess: boolean;
        linkedEmails: string[];
    }>;
    inviteTeamMember(companyId: number, invitedEmail: string, invitedByUserId: number): Promise<{
        token: string;
        link: string;
        message: string;
    }>;
    getTeamMembers(companyId: number): Promise<{
        members: any[];
        pending: any[];
    }>;
}
