import { RequestUser } from '../common/request-user';
import { AnnouncementsService } from './announcements.service';
import { CreateAnnouncementDto } from './dto/announcement.dto';
export declare class AnnouncementsController {
    private readonly announcements;
    constructor(announcements: AnnouncementsService);
    getOptions(): {
        categories: readonly [{
            readonly label: "Security";
            readonly category: "SECURITY";
        }, {
            readonly label: "Maintenance";
            readonly category: "MAINTENANCE";
        }, {
            readonly label: "Estate News";
            readonly category: "NEWS";
        }, {
            readonly label: "Events";
            readonly category: "EVENTS";
        }, {
            readonly label: "Utility Notice";
            readonly category: "NOTICES";
        }, {
            readonly label: "Parking";
            readonly category: "NOTICES";
            readonly metadataKey: "PARKING";
        }, {
            readonly label: "Visitor Policy";
            readonly category: "NOTICES";
            readonly metadataKey: "VISITOR_POLICY";
        }, {
            readonly label: "Emergency";
            readonly category: "EMERGENCY";
        }];
        priorities: ("EMERGENCY" | "NORMAL" | "IMPORTANT")[];
        contentControls: {
            adsAllowed: boolean;
            titleMaxLength: number;
            bodyMaxLength: number;
            flaggedKeywordApproval: boolean;
            auditLogs: boolean;
        };
    };
    findAll(user: RequestUser, estateId?: string): import(".prisma/client").Prisma.PrismaPromise<({
        author: {
            id: string;
            name: string;
            role: import(".prisma/client").$Enums.UserRole;
        };
    } & {
        status: import(".prisma/client").$Enums.AnnouncementStatus;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string;
        title: string;
        category: import(".prisma/client").$Enums.AnnouncementCategory;
        createdAt: Date;
        updatedAt: Date;
        body: string;
        authorId: string;
        priority: import(".prisma/client").$Enums.AnnouncementPriority;
        targetRoles: string[];
        targetUserIds: string[];
        deliveryChannels: import(".prisma/client").$Enums.NotificationChannel[];
        publishedAt: Date | null;
        expiresAt: Date | null;
    })[]>;
    findOne(user: RequestUser, id: string): Promise<{
        notifications: {
            status: import(".prisma/client").$Enums.NotificationStatus;
            id: string;
            readAt: Date | null;
        }[];
        author: {
            id: string;
            name: string;
            role: import(".prisma/client").$Enums.UserRole;
        };
    } & {
        status: import(".prisma/client").$Enums.AnnouncementStatus;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string;
        title: string;
        category: import(".prisma/client").$Enums.AnnouncementCategory;
        createdAt: Date;
        updatedAt: Date;
        body: string;
        authorId: string;
        priority: import(".prisma/client").$Enums.AnnouncementPriority;
        targetRoles: string[];
        targetUserIds: string[];
        deliveryChannels: import(".prisma/client").$Enums.NotificationChannel[];
        publishedAt: Date | null;
        expiresAt: Date | null;
    }>;
    create(dto: CreateAnnouncementDto, user: RequestUser): Promise<{
        status: import(".prisma/client").$Enums.AnnouncementStatus;
        id: string;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        estateId: string;
        title: string;
        category: import(".prisma/client").$Enums.AnnouncementCategory;
        createdAt: Date;
        updatedAt: Date;
        body: string;
        authorId: string;
        priority: import(".prisma/client").$Enums.AnnouncementPriority;
        targetRoles: string[];
        targetUserIds: string[];
        deliveryChannels: import(".prisma/client").$Enums.NotificationChannel[];
        publishedAt: Date | null;
        expiresAt: Date | null;
    }>;
}
