import { ModelService } from '../model/model.service';
import { FilterClientDto } from './dto/filter-client.dto';
import { NotificationService } from '../reminder/reminders.service';
import { Types } from 'mongoose';
export declare class ClientService {
    private readonly model;
    private readonly reminderService;
    private readonly logger;
    private readonly SESSION_GAP;
    constructor(model: ModelService, reminderService: NotificationService);
    createClient(data: {
        name?: string;
        email?: string;
        phone?: string;
        status?: string;
        salonId: string;
    }): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getClient(id: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    getClientApi(id: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    getClientCalls(clientId: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/callsession.schema").CallSession, {}, {}> & import("../model/schemas/callsession.schema").CallSession & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getWhatsappSessions(clientId: string): Promise<{
        sessionId: string;
        startedAt: Date;
        endedAt: Date;
        messageCount: number;
        messages: any[];
    }[]>;
    updateClient(clientId: string, data: {
        name?: string;
        email?: string;
        phone?: string;
        status?: string;
        description?: string;
    }): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }>;
    fetchClients(filters: {
        id?: string;
        status?: string;
        salonId: string;
        page?: number;
        limit?: number;
        platformUsed?: string;
    }): Promise<{
        data: any;
        meta: {
            page: number;
            limit: number;
            total: any;
            totalPages: number;
            active: any;
            inactive: any;
            new: any;
        };
    }>;
    getClientAppointments(clientId: string, page?: number, limit?: number): Promise<{
        data: (import("mongoose").FlattenMaps<{
            salonId: Types.ObjectId;
            stylistId: Types.ObjectId;
            serviceId: Types.ObjectId;
            clientId: Types.ObjectId;
            offerId?: Types.ObjectId | undefined;
            start: Date;
            end: Date;
            status: import("../common/enums").AppointmentStatus;
            appointmentFee: number;
            depositAmount: number;
            remainingAmount: number;
            generatedBy: import("../common/enums").AppointmentGeneratedBy;
            payment_type: string;
            payment_status: string;
            payment_provider: string;
            payment_intent_id: string;
            amount_paid: number;
            payment_charge_id: string;
            payout_status: string;
            payout_amount: number;
            payout_currency: string;
            payout_received_amount: number;
            payout_received_currency: string;
            payout_transfer_id: string;
            payout_at?: Date | undefined;
            payout_error: string;
        }> & {
            _id: Types.ObjectId;
        } & {
            __v: number;
        })[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getClientInsights(clientId: string): Promise<{
        client: (import("mongoose").FlattenMaps<import("../model/schemas/client.schema").Client> & Required<{
            _id: Types.ObjectId;
        }> & {
            __v: number;
        }) | null;
        insights: any;
    }>;
    deleteClient(id: string): Promise<{
        deleted: boolean;
    }>;
    getChatIdsForClient(clientId: string): Promise<string[]>;
    getClientBookings(clientId: string, booking_status: any): Promise<{
        success: boolean;
        bookings: {
            bookingId: any;
            serviceName: any;
            stylistName: any;
            start: any;
            end: any;
            status: any;
        }[];
        reason?: undefined;
    } | {
        success: boolean;
        reason: string;
        bookings?: undefined;
    }>;
    getClientStats(filter: FilterClientDto, salonId: string): Promise<any[]>;
}
