import { UserRole } from '@prisma/client';
import type { CreateCampaignInput, UpdateCampaignInput, ListCampaignsInput, CreateUserCampaignInput, ModerateCampaignInput, ListModerationQueueInput } from './campaigns.schemas';
interface AuthUser {
    id: string;
    email: string;
    role: UserRole;
}
export declare const campaignsService: {
    findAll(filters: ListCampaignsInput, user?: AuthUser): Promise<{
        campaigns: {
            status: import(".prisma/client").$Enums.CampaignStatus;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            _count: {
                responses: number;
                emails: number;
            };
            title: string;
            description: string | null;
            slug: string;
            coverPhoto: string | null;
            coverVideoId: number | null;
            moderationNotes: string | null;
            createdByUserId: string | null;
            emailSubject: string;
            emailBody: string;
            callToAction: string | null;
            allowSmtpEmail: boolean;
            allowMailtoLink: boolean;
            collectUserInfo: boolean;
            showEmailCount: boolean;
            showCallCount: boolean;
            allowEmailEditing: boolean;
            allowCustomRecipients: boolean;
            showResponseWall: boolean;
            highlightCampaign: boolean;
            targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
            createdByUserEmail: string | null;
            createdByUserName: string | null;
            isUserGenerated: boolean;
            moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
            reviewedByUserId: string | null;
            reviewedAt: Date | null;
            rejectionReason: string | null;
        }[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    findById(id: string): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    findBySlug(slug: string): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    create(data: CreateCampaignInput, user: AuthUser): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    update(id: string, data: UpdateCampaignInput): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    findActiveCampaigns(): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
    }[]>;
    findBySlugPublic(slug: string): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
    }>;
    delete(id: string): Promise<void>;
    createUserCampaign(data: CreateUserCampaignInput, user: AuthUser): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    findUserCampaigns(userId: string): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }[]>;
    updateUserCampaign(id: string, data: Partial<CreateUserCampaignInput>, user: AuthUser): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
    findModerationQueue(filters: ListModerationQueueInput): Promise<{
        campaigns: {
            status: import(".prisma/client").$Enums.CampaignStatus;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            _count: {
                responses: number;
                emails: number;
            };
            title: string;
            description: string | null;
            slug: string;
            coverPhoto: string | null;
            coverVideoId: number | null;
            moderationNotes: string | null;
            createdByUserId: string | null;
            emailSubject: string;
            emailBody: string;
            callToAction: string | null;
            allowSmtpEmail: boolean;
            allowMailtoLink: boolean;
            collectUserInfo: boolean;
            showEmailCount: boolean;
            showCallCount: boolean;
            allowEmailEditing: boolean;
            allowCustomRecipients: boolean;
            showResponseWall: boolean;
            highlightCampaign: boolean;
            targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
            createdByUserEmail: string | null;
            createdByUserName: string | null;
            isUserGenerated: boolean;
            moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
            reviewedByUserId: string | null;
            reviewedAt: Date | null;
            rejectionReason: string | null;
        }[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    getModerationStats(): Promise<{
        total: number;
        pending: number;
        approved: number;
        rejected: number;
        changesRequested: number;
    }>;
    moderateCampaign(id: string, input: ModerateCampaignInput, reviewer: AuthUser): Promise<{
        status: import(".prisma/client").$Enums.CampaignStatus;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        _count: {
            responses: number;
            emails: number;
        };
        title: string;
        description: string | null;
        slug: string;
        coverPhoto: string | null;
        coverVideoId: number | null;
        moderationNotes: string | null;
        createdByUserId: string | null;
        emailSubject: string;
        emailBody: string;
        callToAction: string | null;
        allowSmtpEmail: boolean;
        allowMailtoLink: boolean;
        collectUserInfo: boolean;
        showEmailCount: boolean;
        showCallCount: boolean;
        allowEmailEditing: boolean;
        allowCustomRecipients: boolean;
        showResponseWall: boolean;
        highlightCampaign: boolean;
        targetGovernmentLevels: import(".prisma/client").$Enums.GovernmentLevel[];
        createdByUserEmail: string | null;
        createdByUserName: string | null;
        isUserGenerated: boolean;
        moderationStatus: import(".prisma/client").$Enums.CampaignModerationStatus | null;
        reviewedByUserId: string | null;
        reviewedAt: Date | null;
        rejectionReason: string | null;
    }>;
};
export {};
//# sourceMappingURL=campaigns.service.d.ts.map