syntax = "proto3";

package LightGBM;

message Model {
    string name = 1;
    uint32 num_class = 2;
    uint32 num_tree_per_iteration = 3;
    uint32 label_index = 4;
    uint32 max_feature_idx = 5;
    string objective = 6;
    bool average_output = 7;
    repeated string feature_names = 8;
    repeated string feature_infos = 9;
    message Tree {
        uint32 num_leaves = 1;
        uint32 num_cat = 2;
        repeated uint32 split_feature = 3;
        repeated double split_gain = 4;
        repeated double threshold = 5;
        repeated uint32 decision_type = 6;
        repeated sint32 left_child = 7;
        repeated sint32 right_child = 8;
        repeated double leaf_value = 9;
        repeated uint32 leaf_count = 10;
        repeated double internal_value = 11;
        repeated double internal_count = 12;
        repeated sint32 cat_boundaries = 13;
        repeated uint32 cat_threshold = 14;
        double shrinkage = 15;
    }
    repeated Tree trees = 10;
}
