import { PrismaService } from "../../../core/database/prisma/prisma.service";
import type { Request } from 'express';
import { MeetingAttendanceAuditLogWriter } from './audit-log-writer.service';
import { AssignUploadTaskDto, QueryAgendaItemUploadTasksDto, QueryMyTasksDto, UpdateUploadTaskDto } from '../dto/agenda.dto';
interface ActorContext {
    userId: string;
    organizationId?: string | null;
}
export declare class UploadTaskService {
    private readonly prisma;
    private readonly auditLogWriter;
    constructor(prisma: PrismaService, auditLogWriter: MeetingAttendanceAuditLogWriter);
    assignTasks(itemId: string, dto: AssignUploadTaskDto, actor: ActorContext, req?: Request): Promise<{
        created: any[];
        skippedExistingUserIds: string[];
    }>;
    listByItem(itemId: string, query: QueryAgendaItemUploadTasksDto): Promise<{
        items: ({
            assignee: {
                displayName: string;
                id: string;
                email: string;
            };
            assignedBy: {
                displayName: string;
                id: string;
                email: string;
            };
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.UploadTaskStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            createdById: string;
            completedAt: Date | null;
            agendaItemId: string;
            assigneeUserId: string;
            assignedById: string;
            dueAt: Date | null;
            assignedAt: Date;
        })[];
    }>;
    updateTask(itemId: string, taskId: string, dto: UpdateUploadTaskDto, actor: ActorContext, req?: Request): Promise<{
        task: {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.UploadTaskStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            createdById: string;
            completedAt: Date | null;
            agendaItemId: string;
            assigneeUserId: string;
            assignedById: string;
            dueAt: Date | null;
            assignedAt: Date;
        };
    }>;
    deleteTask(itemId: string, taskId: string, actor: ActorContext, req?: Request): Promise<void>;
    listMyTasks(actorUserId: string, query: QueryMyTasksDto): Promise<{
        items: {
            agendaItem: {
                id: string;
                title: string;
                sectionTitle: string;
                meeting: {
                    title: string;
                    id: string;
                    startTime: Date;
                    endTime: Date;
                };
            };
            assignedBy: {
                displayName: string;
                id: string;
                email: string;
            };
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.UploadTaskStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            createdById: string;
            completedAt: Date | null;
            agendaItemId: string;
            assigneeUserId: string;
            assignedById: string;
            dueAt: Date | null;
            assignedAt: Date;
        }[];
        nextCursor: string | undefined;
    }>;
}
export {};
