package xapi.collect.service;
import xapi.collect.api.ClassTo;
import xapi.collect.api.CollectionOptions;
import xapi.collect.api.Fifo;
import xapi.collect.api.IntTo;
import xapi.collect.api.ObjectTo;
import xapi.collect.api.StringDictionary;
import xapi.collect.api.StringTo;
import xapi.collect.proxy.CollectionProxy;
public interface CollectionService {
<E, Generic extends E> IntTo<E> newList(Class<Generic> cls, CollectionOptions opts);
<E, Generic extends E> IntTo<E> newSet(Class<Generic> cls, CollectionOptions opts);
<K, V> ObjectTo<K, V> newMap(Class<K> key, Class<V> cls, CollectionOptions opts);
<K, V> ObjectTo.Many<K, V> newMultiMap(Class<K> key, Class<V> cls, CollectionOptions opts);
<V, Generic extends V> ClassTo<V> newClassMap(Class<Generic> cls, CollectionOptions opts);
<V, Generic extends V> ClassTo.Many<V> newClassMultiMap(Class<Generic> cls, CollectionOptions opts);
<V, Generic extends V> StringTo<V> newStringMap(Class<Generic> cls, CollectionOptions opts);
<V, Generic extends V> StringTo.Many<V> newStringMultiMap(Class<Generic> cls, CollectionOptions opts);
<V> StringDictionary<V> newDictionary(Class<V> cls);
<V> Fifo<V> newFifo();
<K, V, Key extends K, Value extends V> CollectionProxy<K,V> newProxy(Class<Key> keyCls, Class<Value> valueCls, CollectionOptions opts);
}