using System.Collections.Generic;
namespace ZeroLevel.Services.PartitionStorage
{
    /// 
    /// Provides write operations in catalog partition
    /// 
    /// Key type
    /// Type of one input value
    /// Type of records aggregate
    public interface IStorePartitionBuilder
       : IStorePartitionBase
    {
        IEnumerable> Iterate();
        /// 
        /// Writing a key-value pair
        /// 
        void Store(TKey key, TInput value);
        /// 
        /// Called after all key-value pairs are written to the partition
        /// 
        void CompleteAdding();
        /// 
        /// Perform the conversion of the records from (TKey; TInput) to (TKey; TValue). Called after CompleteAdding
        /// 
        void Compress();
        /// 
        /// Rebuilds index files. Only for compressed data. 
        /// 
        void RebuildIndex();
    }
}