// EN: Strongly-typed client interface for PosHub.
// VI: Interface client strongly-typed cho PosHub.

namespace OrderService.API.Hubs;

/// <summary>
/// EN: Strongly-typed SignalR client interface for POS/KDS real-time updates.
/// VI: Interface SignalR client strongly-typed cho POS/KDS real-time updates.
/// </summary>
public interface IPosHubClient
{
    /// <summary>
    /// EN: Notify clients that a new order was created.
    /// VI: Thông báo clients rằng order mới đã được tạo.
    /// </summary>
    Task OrderCreated(OrderNotificationDto order);

    /// <summary>
    /// EN: Notify clients that an order was updated.
    /// VI: Thông báo clients rằng order đã được cập nhật.
    /// </summary>
    Task OrderUpdated(OrderNotificationDto order);

    /// <summary>
    /// EN: Notify clients that an order status changed.
    /// VI: Thông báo clients rằng trạng thái order đã thay đổi.
    /// </summary>
    Task OrderStatusChanged(OrderStatusChangedDto statusChange);

    /// <summary>
    /// EN: Notify KDS clients that a new kitchen ticket was created.
    /// VI: Thông báo KDS clients rằng phiếu bếp mới đã được tạo.
    /// </summary>
    Task KitchenTicketCreated(KitchenTicketNotificationDto ticket);

    /// <summary>
    /// EN: Notify KDS clients that a kitchen ticket was updated.
    /// VI: Thông báo KDS clients rằng phiếu bếp đã được cập nhật.
    /// </summary>
    Task KitchenTicketUpdated(KitchenTicketNotificationDto ticket);

    /// <summary>
    /// EN: Notify clients that payment was completed.
    /// VI: Thông báo clients rằng thanh toán đã hoàn thành.
    /// </summary>
    Task PaymentCompleted(PaymentNotificationDto payment);

    /// <summary>
    /// EN: Notify clients that a table status changed.
    /// VI: Thông báo clients rằng trạng thái bàn đã thay đổi.
    /// </summary>
    Task TableStatusChanged(TableStatusNotificationDto tableStatus);
}
