using System.Collections.Immutable;
using Connected.Annotations;
using Connected.Notifications;
using Connected.ServiceModel;
namespace Connected.Common.Types.TaxRates;
///
/// The service used to manipulate with the entity.
///
[Service]
[ServiceUrl(Routes.TaxRates)]
public interface ITaxRateService : IServiceNotifications
{
///
/// Queries all valid entities.
///
/// An representing all valid entities.
[ServiceMethod(ServiceMethodVerbs.Get | ServiceMethodVerbs.Post)]
Task?> Query(QueryArgs? args);
///
/// Performs a lookup on entities for the specified list of ids.
///
/// The List of the ids for which the perform a query.
/// An of entities that matches
/// the passed ids.
[ServiceMethod(ServiceMethodVerbs.Get | ServiceMethodVerbs.Post)]
Task?> Query(PrimaryKeyListArgs e);
///
/// Selects an entity for the specified id.
///
/// The which contains id.
/// First that matches the arguments.
[ServiceMethod(ServiceMethodVerbs.Get | ServiceMethodVerbs.Post)]
Task Select(PrimaryKeyArgs e);
///
/// Selects an for the specified arguments.
///
/// The arguments for which the entity
/// will be returned.
/// First that matches the arguments.
[ServiceMethod(ServiceMethodVerbs.Get | ServiceMethodVerbs.Post)]
Task Select(TaxRateArgs e);
///
/// Inserts a new entity.
///
///
/// An Id of the newly inserted entity.
///
[ServiceMethod(ServiceMethodVerbs.Post)]
Task Insert(InsertTaxRateArgs e);
///
/// Updates entity.
///
/// The containing values to be updated.
[ServiceMethod(ServiceMethodVerbs.Post)]
Task Update(UpdateTaxRateArgs e);
///
/// Deletes entity.
///
[ServiceMethod(ServiceMethodVerbs.Delete | ServiceMethodVerbs.Post)]
Task Delete(PrimaryKeyArgs e);
}