using System.Collections.Generic;
using System.ServiceModel;
using System.Threading.Tasks;
using DiplomovaPrace.Contracts.ProductCategories.InputModels;
using DiplomovaPrace.Contracts.ProductCategories.ViewModels;

namespace DiplomovaPrace.Contracts.ProductCategories
{
	[ServiceContract]
	public interface IProductCategoryFacadeContract
	{
		Task<List<ProductCategoryDto>> GetAllProductCategoriesAsync();

		Task<ProductCategoryDto> CreateProductCategoryAsync(ProductCategoryIM inputModel);

		Task<GetCategoryDescendantsResult> GetCategoryDescendantsAsync(GetCategoryDescendantsRequest request);

		Task UpdateProductCategoryAsync(ProductCategoryDto inputModel);

		Task<DeleteProductCategoryResult> DeleteProductCategoryAsync(DeleteProductCategoryRequest request);
	}
}
