import { ConfigService } from '@nestjs/config';
import { JwtService } from '@nestjs/jwt';
import { Prisma } from '@prisma/client';
import { AuditService } from '../audit/audit.service';
import { RequestUser } from '../common/request-user';
import { PrismaService } from '../database/prisma.service';
import { LoginDto, RefreshTokenDto, SignupDto, VerifyOtpDto } from './dto/auth.dto';
import { OtpService } from './otp.service';
export declare class AuthService {
    private readonly prisma;
    private readonly jwt;
    private readonly config;
    private readonly audit;
    private readonly otp;
    private readonly BCRYPT_ROUNDS;
    constructor(prisma: PrismaService, jwt: JwtService, config: ConfigService, audit: AuditService, otp: OtpService);
    login(dto: LoginDto): Promise<{
        devOtp?: string | undefined;
        message: string;
        provider: import("./otp.types").OtpDeliveryProvider;
        providerPriority: import("./otp.types").OtpDeliveryProvider[];
        expiresInSeconds: number;
    }>;
    requestConsoleOtp(phone: string): Promise<{
        devOtp?: string | undefined;
        message: string;
        provider: import("./otp.types").OtpDeliveryProvider;
        providerPriority: import("./otp.types").OtpDeliveryProvider[];
        expiresInSeconds: number;
    }>;
    verifyOtp(dto: VerifyOtpDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
            estateId: string | null;
        } | null;
        estate: {
            subscriptionPlan: {
                name: string;
                code: string;
                sortOrder: number;
            } | null;
            id: string;
            name: string;
            location: string;
        } | null;
        estateName: string | null;
        estatePlanCode: string | null;
    }>;
    issueConsoleSession(dto: VerifyOtpDto): Promise<string>;
    refresh(dto: RefreshTokenDto): Promise<{
        accessToken: string;
        refreshToken: string;
        user: {
            id: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            role: import(".prisma/client").$Enums.UserRole;
            estateId: string | null;
        } | null;
        estate: {
            subscriptionPlan: {
                name: string;
                code: string;
                sortOrder: number;
            } | null;
            id: string;
            name: string;
            location: string;
        } | null;
        estateName: string | null;
        estatePlanCode: string | null;
    }>;
    signup(dto: SignupDto, actor: RequestUser): Promise<{
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: Prisma.JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        resident: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: Prisma.JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            blockNumber: string | null;
            flatNumber: string | null;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            emergencyContact: Prisma.JsonValue;
            unit: string;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            residentCode: string;
            householdMembers: Prisma.JsonValue;
            userId: string;
        };
        guard?: undefined;
    } | {
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: Prisma.JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        guard: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: Prisma.JsonValue;
            estateId: string;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            guardCode: string;
            assignedGateId: string | null;
            assignedShifts: Prisma.JsonValue;
            profilePictureUrl: string | null;
            emergencyContact: Prisma.JsonValue;
            deviceId: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            userId: string;
        };
        resident?: undefined;
    } | {
        user: {
            status: import(".prisma/client").$Enums.AccountStatus;
            id: string;
            metadata: Prisma.JsonValue;
            estateId: string | null;
            name: string;
            firstName: string | null;
            lastName: string | null;
            phone: string;
            address: string | null;
            profileConfirmed: boolean;
            profilePictureUrl: string | null;
            refreshToken: string | null;
            role: import(".prisma/client").$Enums.UserRole;
            email: string | null;
            createdAt: Date;
            updatedAt: Date;
            profilePictureThumbnailUrl: string | null;
            profileCompletion: number;
            phoneVerifiedAt: Date | null;
            emailVerifiedAt: Date | null;
        };
        resident?: undefined;
        guard?: undefined;
    }>;
    private issueTokens;
    private getLoginUser;
    private assertActiveAccount;
    private assertCanCreateRole;
    private resolveSignupEstate;
    private assertRoleSpecificFields;
    private assertPlanRoleLimit;
    private roleLimitKey;
    private countEstateRole;
    private roleLabel;
    private requiredEstateIdForRole;
    private requiredField;
    private isPlatformRole;
}
