using StrawberryShake; using System.Threading.Tasks; using System.Threading; using System; using Tgstation.Server.Client.GraphQL; using Tgstation.Server.Client; namespace Tgstation.Server.Tests.Live { interface IMultiServerClient { ValueTask Execute( Func restAction, Func graphQLAction); ValueTask<(TRestResult, TGraphQLResult)> ExecuteReadOnlyConfirmEquivalence( Func> restAction, Func>> graphQLAction, Func comparison, CancellationToken cancellationToken) where TGraphQLResult : class; /// /// Subcribes to the GraphQL subscription indicated by . /// /// The of the 's . /// A which initiates a single subscription on a given and returns a resulting in the . /// The for s. /// The for the operation. /// A resulting in the representing the lifetime of the subscription. ValueTask Subscribe(Func>> operationExecutor, IObserver> observer, CancellationToken cancellationToken) where TResultData : class; } }