import { PrismaService } from "../../../core/database/prisma/prisma.service";
import type { Request } from 'express';
import { MeetingAttendanceAuditLogWriter } from './audit-log-writer.service';
import { CreateAgendaItemDto, CreateAgendaSectionDto, UpdateAgendaItemDto, UpdateAgendaSectionDto } from '../dto/agenda.dto';
export declare class AgendaService {
    private readonly prisma;
    private readonly auditLogWriter;
    private readonly logger;
    constructor(prisma: PrismaService, auditLogWriter: MeetingAttendanceAuditLogWriter);
    getAgendaTree(meetingId: string): Promise<{
        sections: ({
            items: ({
                attachments: ({
                    uploadedBy: {
                        displayName: string;
                        id: string;
                        email: string;
                    };
                } & {
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    organizationId: string | null;
                    createdById: string;
                    size: bigint;
                    filename: string;
                    mimeType: string;
                    agendaItemId: string;
                    uploadedById: string;
                    storagePath: string;
                    uploadedAt: Date;
                })[];
                presenter: {
                    displayName: string;
                    id: string;
                    email: string;
                } | null;
                uploadTasks: ({
                    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;
                })[];
            } & {
                title: string;
                code: string | null;
                id: string;
                createdAt: Date;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                organizationId: string | null;
                order: number;
                createdById: string;
                sectionId: string;
                timeMinutes: number | null;
                presenterUserId: string | null;
                categoryTag: import("@prisma/client").$Enums.AgendaCategoryTag | null;
            })[];
        } & {
            title: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            meetingId: string;
        })[];
    }>;
    createSection(meetingId: string, dto: CreateAgendaSectionDto, actor: {
        userId: string;
        organizationId?: string | null;
    }, req?: Request): Promise<{
        section: {
            title: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            meetingId: string;
        };
    }>;
    updateSection(meetingId: string, sectionId: string, dto: UpdateAgendaSectionDto, actor: {
        userId: string;
    }, req?: Request): Promise<{
        section: {
            title: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            meetingId: string;
        };
    }>;
    deleteSection(meetingId: string, sectionId: string, actor: {
        userId: string;
    }, req?: Request): Promise<void>;
    reorderSections(meetingId: string, ids: string[], actor: {
        userId: string;
    }, req?: Request): Promise<{
        meetingId: string;
        sections: {
            title: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            meetingId: string;
        }[];
    }>;
    createItem(sectionId: string, dto: CreateAgendaItemDto, actor: {
        userId: string;
        organizationId?: string | null;
    }, req?: Request): Promise<{
        item: {
            title: string;
            code: string | null;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            sectionId: string;
            timeMinutes: number | null;
            presenterUserId: string | null;
            categoryTag: import("@prisma/client").$Enums.AgendaCategoryTag | null;
        };
    }>;
    updateItem(sectionId: string, itemId: string, dto: UpdateAgendaItemDto, actor: {
        userId: string;
    }, req?: Request): Promise<{
        item: {
            title: string;
            code: string | null;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            sectionId: string;
            timeMinutes: number | null;
            presenterUserId: string | null;
            categoryTag: import("@prisma/client").$Enums.AgendaCategoryTag | null;
        };
    }>;
    deleteItem(sectionId: string, itemId: string, actor: {
        userId: string;
    }, req?: Request): Promise<void>;
    reorderItems(sectionId: string, ids: string[], actor: {
        userId: string;
    }, req?: Request): Promise<{
        sectionId: string;
        items: {
            title: string;
            code: string | null;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string | null;
            order: number;
            createdById: string;
            sectionId: string;
            timeMinutes: number | null;
            presenterUserId: string | null;
            categoryTag: import("@prisma/client").$Enums.AgendaCategoryTag | null;
        }[];
    }>;
    findMeetingIdByItem(itemId: string): Promise<string | null>;
    findMeetingIdBySection(sectionId: string): Promise<string | null>;
}
