using Baya.Application.Models.Catalog;

namespace Baya.Application.Contracts.Common;

/// <summary>
/// Emits the canonical <c>variant_snapshot_json</c> that Booking (backend-phase-8) freezes onto a
/// <c>booking_requests</c> row so later variant edits/deactivation never mutate past bookings, disputes, or
/// invoices. A pure function — no I/O, no state. This phase ships and unit-tests it; b8 persists its output.
/// Not an external-service seam: it has a single real implementation.
/// </summary>
public interface IVariantSnapshotSerializer
{
    /// <summary>Serialize a variant + its resolved options as they are at serialize time. Price is emitted
    /// as a string of IRR-Rial digits (integer money, no floats).</summary>
    string Serialize(VariantSnapshot snapshot);
}
