package NKiwiAggr;


// THistoRec represents a value record added to a multihistogram
message THistoRec {
    optional uint64 Id = 1; // Current histogram identifier
    optional double Value = 2;
    optional double Weight = 3 [default = 1.0]; // You can set a certain weight to each record or just skip records using Weight=0
}

message THistoRecs {
    repeated THistoRec HistoRecs = 1;
}

enum EHistogramType {
    HT_FIXED_BIN_HISTOGRAM = 1;
    HT_ADAPTIVE_DISTANCE_HISTOGRAM = 2;
    HT_ADAPTIVE_WEIGHT_HISTOGRAM = 3;
    HT_ADAPTIVE_HISTOGRAM = 4;  // if the quality function is unknown
    HT_ADAPTIVE_WARD_HISTOGRAM = 5;
}

message THistogram {
    optional uint64 Id = 1;
    optional double MinValue = 2;
    optional double BinRange = 4; // for FIXED_BIN_HISTOGRAM only. And it's OK that it is 4 after 2
    repeated float Freq = 5;
    repeated float Position = 6;  // for ADAPTIVE histograms only
    optional double MaxValue = 7;
    optional EHistogramType Type = 8;  // Empty field means FIXED_BIN_HISTOGRAM
}

// Multihistogam
message THistograms {
    repeated THistogram HistoRecs = 1;
}