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: '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: '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: '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=notification-service.d.ts.map