package com.flightticket.service;

import java.util.UUID;

/**
 * Service for managing data retention and purging.
 * Requirements: 16.5, 16.6
 */
public interface DataRetentionService {
    
    /**
     * Purges expired audit logs based on retention policy.
     * 
     * @return number of records purged
     */
    int purgeExpiredAuditLogs();
    
    /**
     * Purges expired booking data based on retention policy.
     * 
     * @return number of records purged
     */
    int purgeExpiredBookings();
    
    /**
     * Purges expired ticket data based on retention policy.
     * 
     * @return number of records purged
     */
    int purgeExpiredTickets();
    
    /**
     * Purges expired wallet transaction history based on retention policy.
     * 
     * @return number of records purged
     */
    int purgeExpiredWalletTransactions();
    
    /**
     * Purges expired notification history based on retention policy.
     * 
     * @return number of records purged
     */
    int purgeExpiredNotifications();
    
    /**
     * Runs all purging operations.
     * This is the main method called by the scheduled job.
     * 
     * @return total number of records purged across all entities
     */
    int purgeAllExpiredData();
    
    /**
     * Anonymizes all personal data associated with an agency.
     * This is used when an agency is deleted to comply with GDPR.
     * 
     * @param agencyId the agency ID to anonymize data for
     */
    void anonymizeAgencyData(UUID agencyId);
}
