import type { Request, Response } from 'express';
import { M365SyncService } from '../services/m365-sync.service';
import { M365UsersService } from '../services/m365-users.service';
import { HistoryQueryDto, ListUsersQueryDto, UserTimelineQueryDto } from '../dto/m365-dormant.dto';
export declare class M365DormantController {
    private readonly syncService;
    private readonly usersService;
    constructor(syncService: M365SyncService, usersService: M365UsersService);
    listUsers(query: ListUsersQueryDto, req: Request, res: Response): Promise<void | {
        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: import("@prisma/client/runtime/library").JsonValue;
            accountCreatedAt: Date | null;
            firstSeenInExecutionId: string;
            lastSeenInExecutionId: string;
        }[];
        pagination: {
            page: number;
            pageSize: number;
            total: number;
            totalPages: number;
        };
    }>;
    listLicenses(req: Request): Promise<{
        items: import("../services/m365-users.service").LicenseSummary[];
    }>;
    getUserTimeline(userId: string, query: UserTimelineQueryDto, req: Request): 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;
        }[];
    }>;
    triggerSync(req: Request): Promise<{
        executionId: string;
        status: "RUNNING";
        startedAt: Date;
    }>;
    getLatestSync(): Promise<{
        id: any;
        status: any;
        triggerSource: any;
        createdById: any;
        startedAt: any;
        finishedAt: any;
        duration: any;
        totalUsers: number | null;
        changedUsers: number | null;
        inactiveDistribution: import("../dto/m365-dormant.dto").InactiveDistribution | null;
        errorCode: string | null;
        errorMessage: string | null;
    } | null>;
    getSyncHistory(query: HistoryQueryDto): Promise<{
        items: {
            id: any;
            status: any;
            triggerSource: any;
            createdById: any;
            startedAt: any;
            finishedAt: any;
            duration: any;
            totalUsers: number | null;
            changedUsers: number | null;
            inactiveDistribution: import("../dto/m365-dormant.dto").InactiveDistribution | null;
            errorCode: string | null;
            errorMessage: string | null;
        }[];
    }>;
    private serializeExecution;
    private parseErrorCode;
    private parseErrorMessage;
    private exportCsv;
}
