import type { Request as ExpressRequest } from 'express';
import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { MeetingAttendanceAuditLogWriter } from "../../meeting-attendance/services/audit-log-writer.service";
import { AdpSchedulerService } from './adp-scheduler.service';
export declare class AdpSyncController {
    private readonly scheduler;
    private readonly prisma;
    private readonly auditLogWriter;
    constructor(scheduler: AdpSchedulerService, prisma: PrismaService, auditLogWriter: MeetingAttendanceAuditLogWriter);
    triggerLinker(body: {
        dryRun?: boolean;
    } | undefined, req: ExpressRequest): Promise<{
        accepted: boolean;
        reason: string | undefined;
        status: string;
    }>;
    triggerPtoSync(body: {
        windowStartDays?: number;
        windowEndDays?: number;
    } | undefined, req: ExpressRequest): Promise<{
        accepted: boolean;
        reason: string | undefined;
        status: string;
    }>;
    getStatus(req: ExpressRequest): Promise<{
        tasks: {
            code: string;
            name: string;
            status: import("@prisma/client").$Enums.AutomationTaskStatus;
            lastRunAt: Date | null;
            lastStatus: import("@prisma/client").$Enums.AutomationExecutionStatus | null;
            totalRuns: number;
            successRuns: number;
            failedRuns: number;
            lastExecution: {
                id: string;
                status: import("@prisma/client").$Enums.AutomationExecutionStatus;
                startedAt: Date;
                completedAt: Date | null;
                duration: number | null;
                result: import("@prisma/client/runtime/library").JsonValue;
                logs: string | null;
                error: string | null;
            } | null;
        }[];
        isEnabled: boolean;
        configValidation: {
            ok: boolean;
            missing: string[];
        };
    }>;
    listPtoSchedules(query: Record<string, any>, req: ExpressRequest): Promise<{
        items: {
            user: {
                displayName: string;
                id: string;
                email: string;
            };
            id: string;
            startTime: Date;
            endTime: Date;
            leaveDate: Date;
            syncedAt: Date;
        }[];
        total: number;
        page: number;
        pageSize: number;
    }>;
    listUnmatchedAdp(req: ExpressRequest): Promise<{
        items: {
            aoid: string;
            email: string;
        }[];
        lastRunAt: Date | null;
    }>;
    searchUnlinkedUsers(q: string, req: ExpressRequest): Promise<{
        items: {
            displayName: string;
            id: string;
            email: string;
        }[];
    }>;
    manualLink(body: {
        aoid: string;
        userId: string;
    }, req: ExpressRequest): Promise<{
        success: boolean;
        user: {
            displayName: string;
            id: string;
            email: string;
            adpAoid: string | null;
            adpLinkedAt: Date | null;
        };
    }>;
    private requireMeetingAdmin;
}
