import { DataSource } from 'typeorm';
import { InquiryNotificationEntity } from './entities/inquiry-notification.entity';
import { MailsService } from '../mails/mails.service';
export interface InquiryNotificationEvent {
    targetUserId: number;
    targetEmail?: string;
    type: string;
    inquiry_id: number;
    inquiry_ref: string;
    company_name: string;
    old_status: string;
    new_status: string;
    message: string;
    timestamp: string;
    pdf_url?: string;
    docx_url?: string;
    inquiry_type?: string;
    auditor_name?: string;
    previous_cert_no?: string;
    cert_body?: string;
    audit_stage?: string;
    submitted_by_name?: string;
    submitted_by_email?: string;
    notes?: string;
    actor_user_id?: number;
    cc?: string[];
}
export declare class InquiryNotificationsService {
    private readonly dataSource;
    private readonly mailsService;
    private readonly logger;
    private readonly events$;
    private readonly schemeCcEmails;
    private readonly ccTypes;
    private readonly transporter;
    constructor(dataSource: DataSource, mailsService: MailsService);
    static verifyDownloadToken(token: string, inquiryId: number, type: 'pdf' | 'docx'): boolean;
    private signDownloadToken;
    emit(event: InquiryNotificationEvent): Promise<void>;
    private saveToDb;
    getEventsForUser$(userId: number): import("rxjs").Observable<InquiryNotificationEvent & {
        dbId: number;
    }>;
    private sendEmail;
    private getEmailSubject;
    private buildEmailHtml;
    getForUser(userId: number, options?: {
        page?: number;
        limit?: number;
        is_resolved?: boolean;
        type?: string;
    }): Promise<{
        data: InquiryNotificationEntity[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getUnreadCount(userId: number): Promise<number>;
    markAsRead(id: number, userId: number): Promise<void>;
    markAsUnread(id: number, userId: number): Promise<void>;
    markAllAsRead(userId: number): Promise<void>;
    markAsResolved(id: number, userId: number): Promise<void>;
    markAllResolved(userId: number): Promise<void>;
}
