import { Document, Types } from 'mongoose';
import mongoose from 'mongoose';
export type BroadcastDocument = Broadcast & Document;
export declare enum BroadcastType {
    NOTIFICATION = "NOTIFICATION",
    EMAIL = "EMAIL",
    BOTH = "BOTH"
}
export declare enum BroadcastTarget {
    ALL = "ALL",
    ONLY_USERS = "ONLY_USERS",
    ONLY_VENDORS = "ONLY_VENDORS",
    SPECIFIC_USERS = "SPECIFIC_USERS"
}
export declare enum BroadcastStatus {
    PENDING = "PENDING",
    PROCESSING = "PROCESSING",
    COMPLETED = "COMPLETED",
    FAILED = "FAILED",
    PARTIALLY_FAILED = "PARTIALLY_FAILED"
}
export declare class Broadcast extends Document {
    type: BroadcastType;
    target: BroadcastTarget;
    title: string;
    message: string;
    email_subject: string;
    target_users: Types.ObjectId[];
    created_by: Types.ObjectId;
    status: BroadcastStatus;
    total_recipients: number;
    success_count: number;
    failed_count: number;
    pending_count: number;
    error_message: string;
    started_at: number;
    completed_at: number;
    created_at: number;
    updated_at: number;
}
export declare const BroadcastSchema: mongoose.Schema<Broadcast, mongoose.Model<Broadcast, any, any, any, Document<unknown, any, Broadcast, any> & Broadcast & Required<{
    _id: unknown;
}> & {
    __v: number;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, Broadcast, Document<unknown, {}, mongoose.FlatRecord<Broadcast>, {}> & mongoose.FlatRecord<Broadcast> & Required<{
    _id: unknown;
}> & {
    __v: number;
}>;
