using System.Collections.Generic;
using System.ServiceModel;
using System.Threading.Tasks;

namespace DiplomovaPrace.Contracts.Addresses
{
	[ServiceContract]
	public interface IAddressFacadeContract
	{
		Task<List<AddressDto>> GetDeliveryAddressesByUserAsync(ValueDto<string> user);

		Task<AddressDto> GetDeliveryAddressesByIDAsync(ValueDto<int> id);

		Task<List<AddressDto>> GetInvoicingAddressesByUserAsync(ValueDto<string> user);

		Task<AddressDto> GetInvoicingAddressesByIDAsync(ValueDto<int> id);

		Task<AddressDto> CreateUserAddressAsync(AddressDto inputModel);

		Task<AddressDto> CreateAddressAsync(AddressDto inputModel);

		Task<AddressDto> UpdateUserAddressAsync(AddressDto inputModel);

		Task<AddressDto> UpdateAddressAsync(AddressDto inputModel);
	}
}
