@@ -2,11 +2,12 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+using System;
 using System.Threading.Tasks;
 
 namespace Microsoft.DotNet.VersionTools.Automation.GitHubApi
 {
-    public interface IGitHubClient
+    public interface IGitHubClient : IDisposable
     {
         GitHubAuth Auth { get; }
 
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Threading.Tasks;

namespace Microsoft.DotNet.VersionTools.Automation.GitHubApi
{
    public interface IGitHubClient
    {
        GitHubAuth Auth { get; }

        Task<GitHubContents> GetGitHubFileAsync(
            string path,
            GitHubProject project,
            string @ref);

        Task<string> GetGitHubFileContentsAsync(
            string path,
            GitHubBranch branch);

        Task<string> GetGitHubFileContentsAsync(
            string path,
            GitHubProject project,
            string @ref);

        Task PutGitHubFileAsync(
            string fileUrl,
            string commitMessage,
            string newFileContents);

        Task PostGitHubPullRequestAsync(
            string title,
            string description,
            GitHubBranch headBranch,
            GitHubBranch baseBranch,
            bool maintainersCanModify);

        Task UpdateGitHubPullRequestAsync(
            GitHubProject project,
            int number,
            string title = null,
            string body = null,
            string state = null,
            bool? maintainersCanModify = null);

        Task<GitHubPullRequest> SearchPullRequestsAsync(
            GitHubProject project,
            string headPrefix,
            string author,
            string sortType = "created");

        Task<GitHubCombinedStatus> GetStatusAsync(
            GitHubProject project,
            string @ref);

        Task PostCommentAsync(
            GitHubProject project,
            int issueNumber,
            string message);

        Task<GitCommit> GetCommitAsync(
            GitHubProject project,
            string sha);

        Task<GitReference> GetReferenceAsync(
            GitHubProject project,
            string @ref);

        Task<GitTree> PostTreeAsync(
            GitHubProject project,
            string baseTree,
            GitObject[] tree);

        Task<GitCommit> PostCommitAsync(
            GitHubProject project,
            string message,
            string tree,
            string[] parents);

        Task<GitReference> PatchReferenceAsync(
            GitHubProject project,
            string @ref,
            string sha,
            bool force);
    }
}

Should this be renamed? `IGitClient` sounds better... Or `IRemoteGitClient`?