using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tango.TFS
{
///
/// Represents a VSTS (Visual Studio On-line) client implementation.
///
public interface ITeamFoundationServiceClient
{
///
/// Gets a team project by the specified name.
///
/// The name.
///
Task GetProject(String name);
///
/// Uploads a work item to the specified team project.
///
/// The project.
/// The work item.
///
Task UploadWorkItem(Project project, WorkItem workItem);
///
/// Gets a work item by the specified team project and work item id.
///
/// The project.
/// The identifier.
///
Task GetWorkItem(Project project, int id);
///
/// Gets all work items of the specified type
///
/// The project.
/// Work item type.
///
Task> GetWorkItemsByType(Project project, WorkItemType type);
///
/// Gets all work items of the specified project.
///
/// The project.
///
Task> GetAllWorkItems(Project project);
///
/// Gets all the work items created by the specified team member.
///
/// The project.
/// The member.
///
Task> GetWorkItemsCreatedBy(Project project, TeamMember member);
///
/// Sets the state of the work item.
///
/// The project.
/// The item.
/// The state.
///
Task SetWorkItemState(Project project, WorkItem item, State state);
///
/// Sets the work item assignment.
///
/// The project.
/// The item.
/// The member.
///
Task SetWorkItemAssignment(Project project, WorkItem item, TeamMember member);
///
/// Adds a comment to the work item discussion.
///
/// The project.
/// The item.
/// Team member
/// The comment.
///
Task AddWorkItemComment(Project project, WorkItem item, TeamMember teamMember, String comment);
///
/// Deletes the specified work item.
///
/// The project.
/// The identifier.
///
Task DeleteWorkItem(Project project, int id);
}
}