using System;
using System.Collections.Generic;
using EcsRx.Events.Collections;
namespace EcsRx.Plugins.Computeds.Collections
{
///
/// Represents a computed collection of elements
///
/// The data to contain
public interface IComputedCollection : IComputed>, IEnumerable
{
///
/// Get an element by its index
///
///
/// In some implementations this may be its id not a sequential index
///
/// index/id of the element
T this[int index] {get;}
///
/// How many elements are within the collection
///
int Count { get; }
///
/// Fired when an element is added
///
IObservable> OnAdded { get; }
///
/// Fired when an element is removed
///
IObservable> OnRemoved { get; }
///
/// Fired when an element is updated
///
IObservable> OnUpdated { get; }
}
}