// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Concurrency;
using System.Reactive.Joins;
using System.Reactive.Subjects;
using System.Threading;
#if !NO_REMOTING
#endif
#if !NO_TPL
using System.Threading.Tasks;
#endif
namespace System.Reactive.Linq
{
///
/// Internal interface describing the LINQ to Events query language.
///
internal interface IQueryLanguage
{
#region * Aggregates *
IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator);
IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator, Func resultSelector);
IObservable Aggregate(IObservable source, Func accumulator);
IObservable All(IObservable source, Func predicate);
IObservable Any(IObservable source);
IObservable Any(IObservable source, Func predicate);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Average(IObservable source, Func selector);
IObservable Contains(IObservable source, TSource value);
IObservable Contains(IObservable source, TSource value, IEqualityComparer comparer);
IObservable Count(IObservable source);
IObservable Count(IObservable source, Func predicate);
IObservable ElementAt(IObservable source, int index);
IObservable ElementAtOrDefault(IObservable source, int index);
IObservable FirstAsync(IObservable source);
IObservable FirstAsync(IObservable source, Func predicate);
IObservable FirstOrDefaultAsync(IObservable source);
IObservable FirstOrDefaultAsync(IObservable source, Func predicate);
IObservable IsEmpty(IObservable source);
IObservable LastAsync(IObservable source);
IObservable LastAsync(IObservable source, Func predicate);
IObservable LastOrDefaultAsync(IObservable source);
IObservable LastOrDefaultAsync(IObservable source, Func predicate);
IObservable LongCount(IObservable source);
IObservable LongCount(IObservable source, Func predicate);
IObservable Max(IObservable source);
IObservable Max(IObservable source, IComparer comparer);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector, IComparer comparer);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable Max(IObservable source, Func selector);
IObservable> MaxBy(IObservable source, Func keySelector);
IObservable> MaxBy(IObservable source, Func keySelector, IComparer comparer);
IObservable Min(IObservable source);
IObservable Min(IObservable source, IComparer comparer);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable Min(IObservable source);
IObservable