import { PrismaService } from "../../../../core/database/prisma/prisma.service";
import { Prisma } from '@prisma/client';
export interface LicenseSummary {
    skuPartNumber: string;
    displayName: string;
    userCount: number;
}
import { ListUsersQueryDto, UserTimelineQueryDto } from '../dto/m365-dormant.dto';
import { M365SyncService } from './m365-sync.service';
export declare class M365UsersService {
    private readonly prisma;
    private readonly syncService;
    constructor(prisma: PrismaService, syncService: M365SyncService);
    list(organizationId: string, query: ListUsersQueryDto): Promise<{
        snapshotAt: Date | null;
        snapshotExecutionId: string | null;
        items: {
            missingFromLatestSync: boolean;
            department: string | null;
            mail: string | null;
            displayName: string | null;
            userPrincipalName: string;
            id: string;
            jobTitle: string | null;
            accountEnabled: boolean;
            createdAt: Date;
            updatedAt: Date;
            organizationId: string;
            createdById: string;
            graphUserId: string;
            daysInactive: number | null;
            lastAnyActivity: Date | null;
            hasLicense: boolean;
            lastSignInDateTime: Date | null;
            lastNonInteractiveSignInDateTime: Date | null;
            lastEmailActivity: Date | null;
            lastOneDriveActivity: Date | null;
            lastTeamsActivity: Date | null;
            lastSharePointActivity: Date | null;
            licenses: Prisma.JsonValue;
            accountCreatedAt: Date | null;
            firstSeenInExecutionId: string;
            lastSeenInExecutionId: string;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    listForExport(organizationId: string, query: ListUsersQueryDto, limit: number): Promise<{
        items: {
            missingFromLatestSync: boolean;
            department: string | null;
            mail: string | null;
            displayName: string | null;
            userPrincipalName: string;
            id: string;
            jobTitle: string | null;
            accountEnabled: boolean;
            createdAt: Date;
            updatedAt: Date;
            organizationId: string;
            createdById: string;
            graphUserId: string;
            daysInactive: number | null;
            lastAnyActivity: Date | null;
            hasLicense: boolean;
            lastSignInDateTime: Date | null;
            lastNonInteractiveSignInDateTime: Date | null;
            lastEmailActivity: Date | null;
            lastOneDriveActivity: Date | null;
            lastTeamsActivity: Date | null;
            lastSharePointActivity: Date | null;
            licenses: Prisma.JsonValue;
            accountCreatedAt: Date | null;
            firstSeenInExecutionId: string;
            lastSeenInExecutionId: string;
        }[];
        snapshotAt: Date | null;
        snapshotExecutionId: string | null;
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    listLicenseSummary(organizationId: string): Promise<LicenseSummary[]>;
    timeline(organizationId: string, userId: string, query: UserTimelineQueryDto): Promise<{
        user: {
            id: string;
            userPrincipalName: string;
            displayName: string | null;
            currentDaysInactive: number | null;
            firstSeenAt: Date;
        };
        events: {
            id: string;
            executionId: string;
            observedAt: Date;
            field: import("@prisma/client").$Enums.M365UserActivityChangeField;
            previousValue: string | null;
            currentValue: string | null;
        }[];
    }>;
}
