using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Firebase.Database.Streaming;
namespace Firebase.Database.Query
{
///
/// The FirebaseQuery interface.
///
public interface IFirebaseQuery
{
///
/// Gets the owning client of this query.
///
FirebaseClient Client { get; }
///
/// Retrieves items which exist on the location specified by this query instance.
///
/// Optional timeout value.
/// Type of the items.
/// Collection of .
Task>> OnceAsync(TimeSpan? timeout = null);
///
/// Returns current location as an observable which allows to real-time listening to events from the firebase server.
///
/// Type of the items.
/// Cold observable of .
IObservable> AsObservable(
EventHandler> exceptionHandler, string elementRoot = "");
///
/// Builds the actual url of this query.
///
/// The .
Task BuildUrlAsync();
}
}