syntax = "proto3";
package cosmos.store.v1beta1;

import "gogoproto/gogo.proto";
import "google/protobuf/timestamp.proto";

option go_package = "cosmossdk.io/store/types";

// CommitInfo defines commit information used by the multi-store when committing
// a version/height.
message CommitInfo {
  int64                     version     = 1;
  repeated StoreInfo        store_infos = 2 [(gogoproto.nullable) = false];
  google.protobuf.Timestamp timestamp   = 3 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
}

// StoreInfo defines store-specific commit information. It contains a reference
// between a store name and the commit ID.
message StoreInfo {
  string   name      = 1;
  CommitID commit_id = 2 [(gogoproto.nullable) = false];
}

// CommitID defines the commitment information when a specific store is
// committed.
message CommitID {
  option (gogoproto.goproto_stringer) = false;

  int64 version = 1;
  bytes hash    = 2;
}
