import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma } from '@prisma/client';
export declare class TemplateRepository {
    private readonly prisma;
    constructor(prisma: PrismaService);
    listTemplates(userId: string): Prisma.PrismaPromise<({
        creator: {
            displayName: string;
            email: string;
        };
        templateAttendees: ({
            user: {
                displayName: string;
                id: string;
                email: string;
                departmentMemberships: ({
                    department: {
                        code: string;
                        id: string;
                        name: string;
                    };
                    position: {
                        id: string;
                        name: string;
                        level: number;
                    } | null;
                } & {
                    title: string | null;
                    id: string;
                    createdAt: Date;
                    userId: string;
                    updatedAt: Date;
                    organizationId: string;
                    departmentId: string;
                    positionId: string | null;
                    managerId: string | null;
                    isPrimary: boolean;
                    joinedAt: Date;
                    leftAt: Date | null;
                })[];
            };
        } & {
            id: string;
            createdAt: Date;
            userId: string;
            templateId: string;
        })[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        duration: number;
        name: string;
        updatedAt: Date;
        description: string | null;
        timezone: string;
        isPublic: boolean;
        creatorId: string;
    })[]>;
    findTemplateById(id: string): Prisma.Prisma__MeetingTemplateClient<({
        templateAttendees: ({
            user: {
                displayName: string;
                id: string;
                employeeId: string | null;
                createdAt: Date;
                tenantId: string | null;
                status: import("@prisma/client").$Enums.UserStatus;
                passwordHash: string | null;
                username: string;
                email: string;
                avatar: string | null;
                phone: string | null;
                source: import("@prisma/client").$Enums.UserSource;
                ldapDn: string | null;
                ldapSyncedAt: Date | null;
                externalId: string | null;
                externalSource: string | null;
                adpAoid: string | null;
                adpLinkedAt: Date | null;
                defaultRegion: string;
                workCity: string | null;
                hiredAt: Date | null;
                terminatedAt: Date | null;
                metadata: Prisma.JsonValue;
                updatedAt: Date;
                deletedAt: Date | null;
            };
        } & {
            id: string;
            createdAt: Date;
            userId: string;
            templateId: string;
        })[];
    } & {
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        duration: number;
        name: string;
        updatedAt: Date;
        description: string | null;
        timezone: string;
        isPublic: boolean;
        creatorId: string;
    }) | null, null, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    createTemplate(data: Prisma.MeetingTemplateCreateInput): Prisma.Prisma__MeetingTemplateClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        duration: number;
        name: string;
        updatedAt: Date;
        description: string | null;
        timezone: string;
        isPublic: boolean;
        creatorId: string;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    updateTemplate(id: string, data: Prisma.MeetingTemplateUpdateInput): Prisma.Prisma__MeetingTemplateClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        duration: number;
        name: string;
        updatedAt: Date;
        description: string | null;
        timezone: string;
        isPublic: boolean;
        creatorId: string;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    deleteTemplate(id: string): Prisma.Prisma__MeetingTemplateClient<{
        type: import("@prisma/client").$Enums.MeetingType;
        location: string | null;
        title: string;
        id: string;
        createdAt: Date;
        duration: number;
        name: string;
        updatedAt: Date;
        description: string | null;
        timezone: string;
        isPublic: boolean;
        creatorId: string;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, Prisma.PrismaClientOptions>;
    createTemplateAttendees(data: Prisma.MeetingTemplateAttendeeCreateManyInput[]): Prisma.PrismaPromise<Prisma.BatchPayload>;
    deleteTemplateAttendees(templateId: string): Prisma.PrismaPromise<Prisma.BatchPayload>;
}
