using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using EQNetwork.Objects;
using EQNetwork.Utility;

namespace EQNetwork.Interfaces
{
    public partial interface IRequestService
    {
        EQTask Accept(Guid requestGuid, Action<EQException> onComplete);
        EQTask Confirm(Guid requestGuid, Action<EQException> onComplete);
        EQTask Create(RequestContext requestContext, Action<RequestMessage, EQException> onComplete);
        EQTask Decline(Guid requestGuid, Action<EQException> onComplete);
        EQTask Delete(Guid requestGuid, Action<EQException> onComplete);
        EQTask ListRequestsForCollection(int collectionId, Action<List<Request>, EQException> onComplete);
        EQTask ListRequestsForCollection(Guid collectionGuid, Action<List<Request>, EQException> onComplete);
        EQTask ListRequestsForUser(int userId, Action<List<Request>, EQException> onComplete);
        EQTask ListRequestsToMe(List<Db.RequestType> requestTypes, bool? all, Action<List<Request>, EQException> onComplete);
        EQTask GetCollectionRequestGuid(int collectionId, Action<Guid, EQException> onComplete);
        EQTask Update(Guid requestGuid, Action<EQException> onComplete);
    }
}
