using Grand.Domain.Shipping;

namespace Grand.Business.Core.Interfaces.Checkout.Shipping;

public interface IPickupPointService
{
    /// <summary>
    ///     Gets a warehouse
    /// </summary>
    /// <param name="pickupPointId">The pickup point identifier</param>
    /// <returns>PickupPoint</returns>
    Task<PickupPoint> GetPickupPointById(string pickupPointId);

    /// <summary>
    ///     Gets all pickup points
    /// </summary>
    /// <returns>PickupPoints</returns>
    Task<IList<PickupPoint>> GetAllPickupPoints();

    /// <summary>
    ///     Gets active pickup points
    /// </summary>
    /// <returns>PickupPoints</returns>
    Task<IList<PickupPoint>> LoadActivePickupPoints(string storeId = "");

    /// <summary>
    ///     Inserts a pickupPoint
    /// </summary>
    /// <param name="pickupPoint">PickupPoint</param>
    Task InsertPickupPoint(PickupPoint pickupPoint);

    /// <summary>
    ///     Updates the pickupPoint
    /// </summary>
    /// <param name="pickupPoint">PickupPoint</param>
    Task UpdatePickupPoint(PickupPoint pickupPoint);

    /// <summary>
    ///     Deletes a pickupPoint
    /// </summary>
    /// <param name="pickupPoint">The pickupPoint</param>
    Task DeletePickupPoint(PickupPoint pickupPoint);
}