import { ClientStatus, PrimaryMetricType } from '../../generated/prisma/enums';
import { PrismaService } from '../../common/prisma/prisma.service';
import { ActivityLogService } from '../activity-logs/activity-log.service';
import { CreateClientDto } from './dto/create-client.dto';
import { ListClientsQueryDto } from './dto/list-clients-query.dto';
import { UpdateClientDto } from './dto/update-client.dto';
export type AdminClientRecord = {
    id: string;
    companyName: string;
    website: string;
    contactName: string;
    email: string;
    phone: string;
    primaryMetricType: PrimaryMetricType;
    status: ClientStatus;
    isDeleted: boolean;
    notes: string | null;
    dashboardSlug: string;
    dashboardVisitCount: number;
    lastDashboardVisitedAt: Date | null;
    lastUpdatedAt: Date;
    createdAt: Date;
    updatedAt: Date;
    assignedUserId: string;
};
export type AdminClientsSummary = {
    total: number;
};
export type AdminClientsListResponse = {
    items: AdminClientRecord[];
    meta: {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    };
};
export declare class ClientsService {
    private readonly prisma;
    private readonly activityLogService;
    private readonly logger;
    constructor(prisma: PrismaService, activityLogService: ActivityLogService);
    private get clientClient();
    listClients(): Promise<AdminClientRecord[]>;
    listClients(query: undefined, assignedUserId: string): Promise<AdminClientRecord[]>;
    listClients(query: ListClientsQueryDto, assignedUserId?: string): Promise<AdminClientsListResponse>;
    getClientById(clientId: string, assignedUserId?: string): Promise<AdminClientRecord>;
    getClientBySlug(dashboardSlug: string): Promise<AdminClientRecord>;
    createClient(dto: CreateClientDto, actorUserId?: string | null): Promise<any>;
    updateClient(clientId: string, dto: UpdateClientDto, actorUserId?: string | null): Promise<any>;
    softDeleteClient(clientId: string, actorUserId?: string | null): Promise<any>;
    restoreClient(clientId: string, actorUserId?: string | null): Promise<any>;
    private createWithUniqueSlug;
    private requireActiveAssignee;
    private findUserName;
    private describeClientUpdate;
    private describeChange;
    private capitalize;
    private normalizePayload;
    private buildDashboardSlug;
    private buildClientWhere;
    private isUniqueSlugConflict;
    private recordActivity;
    private clientSelect;
}
