import { JwtService } from '@nestjs/jwt';
import { SignupDto } from './dto/signup.dto';
import { LoginDto } from './dto/login.dto';
import { ModelService } from '../model/model.service';
import { CommonService } from '../common/common.service';
import { ConfigService } from '@nestjs/config';
import { Types } from 'mongoose';
import { AdminLoginDto } from './dto/admin-login.dto';
import { AdminSignupDto } from './dto/adminsignup.dto';
import { SpacesService } from '../spaces/spaces.service';
import { ForgotPasswordDto } from './dto/forgot-password.dto';
import { VerifyOtpDto, ChangePasswordDto } from './dto/VerifyOtpDto';
import { UpdateSalonInfoDto } from './dto/update-salon-info.dto';
export declare class AuthService {
    private readonly modelService;
    private jwtService;
    private commonService;
    private configService;
    private spacesService;
    private readonly twilioclient;
    constructor(modelService: ModelService, jwtService: JwtService, commonService: CommonService, configService: ConfigService, spacesService: SpacesService);
    private sendVerificationEmail;
    generateToken(tokenData: any, expiresInSeconds?: number): Promise<string>;
    decodeToken(token: any): Promise<any>;
    verifyToken(token: string): any;
    encriptPass(pass: string): Promise<any>;
    bcriptPass(old_password: any, user_pass: any): Promise<any>;
    signup(dto: SignupDto): Promise<{
        message: string;
        salonId: any;
    }>;
    updateSalonInfo(salonId: string, dto: UpdateSalonInfoDto): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/salon.schema").Salon, {}, {}> & import("../model/schemas/salon.schema").Salon & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    stylistForgotPassword(dto: ForgotPasswordDto): Promise<{
        message: string;
        stylistId: any;
    }>;
    stylistChangePassword(stylistId: string, dto: ChangePasswordDto): Promise<{
        message: string;
    }>;
    salonForgotPassword(dto: ForgotPasswordDto): Promise<{
        message: string;
        salonId: any;
    }>;
    adminForgotPassword(dto: ForgotPasswordDto): Promise<{
        message: string;
        adminId: any;
    }>;
    sendOtpEmail(email: string, otp: string): Promise<void>;
    verifyOtpAndChangePassword(dto: VerifyOtpDto): Promise<{
        message: string;
    }>;
    verifyAdminOtpAndChangePassword(dto: VerifyOtpDto): Promise<{
        message: string;
    }>;
    login(dto: LoginDto): Promise<{
        token: string;
        salon: {
            id: Types.ObjectId;
            name: string;
            imageUrl: string;
        };
    }>;
    verifyEmail(token: string): Promise<{
        message: string;
    }>;
    validateSalon(email: string, password: string): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/salon.schema").Salon, {}, {}> & import("../model/schemas/salon.schema").Salon & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getProfile(salonId: string): Promise<{
        id: Types.ObjectId;
        name: string;
        email: string;
        imageUrl: string | null;
        timezone: string;
        verified: boolean;
        admin_approved: boolean;
        salon_phone: string | null;
        salon_email: string | null;
        website: string | null;
        address: string | null;
        social_links: import("mongoose").FlattenMaps<{
            instagram?: string;
            facebook?: string;
            google?: string;
            tiktok?: string;
        }> | null;
        opening_hours: import("mongoose").FlattenMaps<{
            day: import("../model/schemas/salon.schema").WeekDay;
            open: string;
            close: string;
            closed: boolean;
        }>[];
        closing_days: string[];
        owner_name: string | null;
        holidays: import("mongoose").FlattenMaps<{
            date: Date;
            reason?: string;
        }>[];
    }>;
    addImage(salonId: string, imageKey: string): Promise<{
        message: string;
    }>;
    createDefaultConfigs(salonId: any): Promise<{
        ok: boolean;
    }>;
    setupAdmin2FA(adminId: string): Promise<{
        qrCode: any;
        manualKey: any;
    }>;
    validateAdminPassword(email: string, password: string): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/admin.schema").Admin, {}, {}> & import("../model/schemas/admin.schema").Admin & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    validateAdmin2FA(adminId: string, code: string): Promise<{
        token: string;
        admin: {
            id: Types.ObjectId;
            email: string;
            role: import("../common/enums").AdminRole;
            is2FAEnabled: boolean;
        };
    }>;
    adminLogin(dto: AdminLoginDto): Promise<{
        token: string;
        setupRequired: boolean;
        admin: {
            id: Types.ObjectId;
            email: string;
            role: import("../common/enums").AdminRole;
            is2FAEnabled: boolean;
        };
        setupToken?: undefined;
        adminResponse?: undefined;
    } | {
        setupRequired: boolean;
        setupToken: string;
        admin: {
            id: Types.ObjectId;
            email: string;
            role: import("../common/enums").AdminRole;
            is2FAEnabled: boolean;
        };
        token?: undefined;
        adminResponse?: undefined;
    } | {
        token: string;
        setupRequired: boolean;
        adminResponse: {
            id: Types.ObjectId;
            email: string;
            role: import("../common/enums").AdminRole;
            is2FAEnabled: boolean;
        };
        admin?: undefined;
        setupToken?: undefined;
    }>;
    adminSignup(dto: AdminSignupDto): Promise<void>;
    verifyAdmin2FA(adminId: string, code: string): Promise<{
        message: string;
    }>;
    getAdminProfile(adminId: string): Promise<{
        id: Types.ObjectId;
        email: string;
        role: import("../common/enums").AdminRole;
        is2FAEnabled: boolean;
    }>;
    updateFcmToken(salonId: string, fcmToken: string): Promise<{
        success: boolean;
    } | undefined>;
}
