package com.flightticket.service;

import com.flightticket.model.entity.SubscriptionPlan;
import com.flightticket.model.enums.SubscriptionType;

import java.math.BigDecimal;
import java.util.Optional;
import java.util.UUID;

/**
 * Service for managing subscription plans.
 */
public interface SubscriptionManagementService {
    
    /**
     * Create a new subscription plan for an agency.
     */
    SubscriptionPlan createSubscriptionPlan(UUID agencyId, SubscriptionType type, BigDecimal monthlyFee, String currency);
    
    /**
     * Update an existing subscription plan.
     */
    SubscriptionPlan updateSubscriptionPlan(UUID planId, SubscriptionType type, BigDecimal monthlyFee, String currency);
    
    /**
     * Get the active subscription plan for an agency.
     */
    Optional<SubscriptionPlan> getActiveSubscriptionPlan(UUID agencyId);
    
    /**
     * Deactivate a subscription plan.
     */
    void deactivateSubscriptionPlan(UUID planId);
}
