import { ServiceNames } from "../../services";
export declare const NotificationServiceEventTypes: {
    readonly EMAIL_REQUESTED: "email.notification.requested";
    readonly EMAIL_SENDING: "email.notification.sending";
    readonly EMAIL_SENT: "email.notification.sent";
    readonly EMAIL_FAILED: "email.notification.failed";
    readonly EMAIL_DELIVERED: "email.notification.delivered";
    readonly EMAIL_BOUNCED: "email.notification.bounced";
    readonly EMAIL_OPENED: "email.notification.opened";
    readonly EMAIL_CLICKED: "email.notification.clicked";
    readonly SMS_REQUESTED: "sms.notification.requested";
    readonly SMS_SENDING: "sms.notification.sending";
    readonly SMS_SENT: "sms.notification.sent";
    readonly SMS_FAILED: "sms.notification.failed";
    readonly SMS_DELIVERED: "sms.notification.delivered";
    readonly SMS_BOUNCED: "sms.notification.bounced";
    readonly PUSH_REQUESTED: "push.notification.requested";
    readonly PUSH_SENT: "push.notification.sent";
    readonly PUSH_FAILED: "push.notification.failed";
    readonly PUSH_DELIVERED: "push.notification.delivered";
    readonly FILE_UPLOADED: "file.uploaded";
    readonly FILE_PROCESSED: "file.processed";
    readonly FILE_DELETED: "file.deleted";
    readonly FILE_ACCESS_GRANTED: "file.access.granted";
    readonly FILE_ACCESS_REVOKED: "file.access.revoked";
};
export interface EmailNotificationEvent {
    eventId: string;
    timestamp: string;
    eventType: (typeof NotificationServiceEventTypes)[keyof typeof NotificationServiceEventTypes];
    data: {
        emailRequestId: string;
        recipientEmail: string;
        recipientName?: string;
        templateId: string;
        subject: string;
        status: "requested" | "sending" | "sent" | "failed" | "delivered" | "bounced" | "opened" | "clicked";
        provider: "sendgrid" | "mailtrap" | "ses" | "other";
        errorCode?: string;
        errorMessage?: string;
        sentAt?: string;
        deliveredAt?: string;
        openedAt?: string;
        clickedAt?: string;
        templateData?: Record<string, any>;
    };
    metadata: {
        correlationId: string;
        sourceService: typeof ServiceNames.FILE_NOTIFICATION_SERVICE;
        version: "1.0";
        originalRequestSource?: string;
        retryCount?: number;
        priority: "low" | "normal" | "high" | "urgent";
    };
}
export interface SmsNotificationEvent {
    eventId: string;
    timestamp: string;
    eventType: (typeof NotificationServiceEventTypes)[keyof typeof NotificationServiceEventTypes];
    data: {
        smsRequestId: string;
        recipientPhone: string;
        recipientName?: string;
        messageContent: string;
        status: "requested" | "sending" | "sent" | "failed" | "delivered" | "bounced";
        provider: "twilio" | "gupshup" | "other";
        errorCode?: string;
        errorMessage?: string;
        sentAt?: string;
        deliveredAt?: string;
        messageLength: number;
        segmentCount: number;
        cost?: number;
    };
    metadata: {
        correlationId: string;
        sourceService: typeof ServiceNames.FILE_NOTIFICATION_SERVICE;
        version: "1.0";
        originalRequestSource?: string;
        retryCount?: number;
        priority: "low" | "normal" | "high" | "urgent";
    };
}
export interface FileEvent {
    eventId: string;
    timestamp: string;
    eventType: typeof NotificationServiceEventTypes.FILE_UPLOADED | typeof NotificationServiceEventTypes.FILE_PROCESSED | typeof NotificationServiceEventTypes.FILE_DELETED;
    data: {
        fileId: string;
        fileName: string;
        fileSize: number;
        fileType: string;
        filePath: string;
        uploadedBy: string;
        uploadedByEmail?: string;
        uploadedAt: string;
        processedAt?: string;
        processingStatus?: "pending" | "processing" | "completed" | "failed";
        processingResults?: Record<string, any>;
        storageProvider: "digitalocean" | "cloudinary" | "aws" | "local";
        storageLocation: string;
        isPublic: boolean;
        accessPermissions?: string[];
    };
    metadata: {
        correlationId: string;
        sourceService: typeof ServiceNames.FILE_NOTIFICATION_SERVICE;
        version: "1.0";
        entityType?: string;
        entityId?: string;
    };
}
export type NotificationServiceEvent = EmailNotificationEvent | SmsNotificationEvent | FileEvent;
export type NotificationServiceEventType = (typeof NotificationServiceEventTypes)[keyof typeof NotificationServiceEventTypes];
//# sourceMappingURL=index.d.ts.map