import { ClientService } from './client.service';
import { CreateClientDto } from './dto/create-client.dto';
import { FilterClientDto } from './dto/filter-client.dto';
import { UpdateClientDto } from './dto/update-client.dto';
export declare class ClientController {
    private readonly clientService;
    constructor(clientService: ClientService);
    createClient(req: any, data: CreateClientDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getClient(req: any, clientId: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    getClientCalls(req: any, clientId: string): Promise<(import("mongoose").Document<unknown, {}, import("../model/schemas/callsession.schema").CallSession, {}, {}> & import("../model/schemas/callsession.schema").CallSession & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getWhatsappSessions(req: any, clientId: string): Promise<{
        sessionId: string;
        startedAt: Date;
        endedAt: Date;
        messageCount: number;
        messages: any[];
    }[]>;
    updateClient(clientId: string, data: UpdateClientDto): Promise<import("mongoose").Document<unknown, {}, import("../model/schemas/client.schema").Client, {}, {}> & import("../model/schemas/client.schema").Client & Required<{
        _id: import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    getClients(req: any, 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: import("mongoose").Types.ObjectId;
            stylistId: import("mongoose").Types.ObjectId;
            serviceId: import("mongoose").Types.ObjectId;
            clientId: import("mongoose").Types.ObjectId;
            offerId?: import("mongoose").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: import("mongoose").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: import("mongoose").Types.ObjectId;
        }> & {
            __v: number;
        }) | null;
        insights: any;
    }>;
    getChatIdsForClient(clientId: string): Promise<string[]>;
    getClientStats(filter: FilterClientDto, req: any): Promise<any[]>;
    deleteClient(clientId: string): Promise<{
        deleted: boolean;
    }>;
}
