syntax = "proto3";
package tendermint.statesync;

option go_package = "github.com/cometbft/cometbft/proto/tendermint/statesync";

message Message {
  oneof sum {
    SnapshotsRequest  snapshots_request  = 1;
    SnapshotsResponse snapshots_response = 2;
    ChunkRequest      chunk_request      = 3;
    ChunkResponse     chunk_response     = 4;
  }
}

message SnapshotsRequest {}

message SnapshotsResponse {
  uint64 height   = 1;
  uint32 format   = 2;
  uint32 chunks   = 3;
  bytes  hash     = 4;
  bytes  metadata = 5;
}

message ChunkRequest {
  uint64 height = 1;
  uint32 format = 2;
  uint32 index  = 3;
}

message ChunkResponse {
  uint64 height  = 1;
  uint32 format  = 2;
  uint32 index   = 3;
  bytes  chunk   = 4;
  bool   missing = 5;
}
