package com.flightticket.service;

import com.flightticket.dto.flight.FareRules;
import com.flightticket.dto.flight.FlightOffer;
import com.flightticket.dto.flight.FlightSearchRequest;
import com.flightticket.dto.flight.FlightSearchResponse;

/**
 * Service for flight search and fare rules
 * Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 8.1, 8.3
 */
public interface FlightService {
    
    /**
     * Search for flights with markup applied
     * @param request Flight search parameters
     * @param agencyId Agency ID for markup calculation
     * @return Flight search response with markup applied
     */
    FlightSearchResponse searchFlights(FlightSearchRequest request, String agencyId);
    
    /**
     * Get fare rules for a specific offer
     * @param offerId The offer ID
     * @return Fare rules
     */
    FareRules getFareRules(String offerId);
    
    /**
     * Get offer details from cache
     * @param offerId The offer ID
     * @return Flight offer details
     */
    FlightOffer getOfferDetails(String offerId);
}
