// @generated
// This file is @generated by prost-build.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetBlobRequest {
    /// repo carries the DID as a string.
    #[prost(string, tag="1")]
    pub repo: ::prost::alloc::string::String,
    /// oid is the blob object id (hex).
    #[prost(string, tag="2")]
    pub oid: ::prost::alloc::string::String,
}
/// One chunk of a blob's raw bytes; concatenate in arrival order.
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct BlobChunk {
    #[prost(bytes="bytes", tag="1")]
    pub data: ::prost::bytes::Bytes,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitsRequest {
    /// repo carries the DID as a string; parsing/validation is an impl detail.
    #[prost(string, tag="1")]
    pub repo: ::prost::alloc::string::String,
    #[prost(message, optional, tag="2")]
    pub options: ::core::option::Option<CommitsOptions>,
}
/// TODO: fields for the Go CommitsOptions (e.g. ref/branch, limit, cursor) —
/// unspecified for now.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitsOptions {
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommitsResponse {
    /// maps the Go \[\]string return.
    #[prost(string, repeated, tag="1")]
    pub commits: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DiffRequest {
    /// repo carries the DID as a string; parsing/validation is an impl detail.
    #[prost(string, tag="1")]
    pub repo: ::prost::alloc::string::String,
    /// base/head are commit-ish ref strings.
    #[prost(string, tag="2")]
    pub base: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub head: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InterdiffRequest {
    /// repo carries the DID as a string.
    #[prost(string, tag="1")]
    pub repo: ::prost::alloc::string::String,
    /// Old patch range (from_base..from_head) and new patch range (to_base..to_head).
    #[prost(string, tag="2")]
    pub from_base: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub from_head: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub to_base: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub to_head: ::prost::alloc::string::String,
}
// Diff and Interdiff stream one FileDiff per changed file.

#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FileContent {
    #[prost(string, tag="1")]
    pub path: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub oid: ::prost::alloc::string::String,
    #[prost(uint64, tag="3")]
    pub size: u64,
    #[prost(bool, tag="4")]
    pub is_binary: bool,
    #[prost(bool, tag="5")]
    pub is_submodule: bool,
}
/// One aligned line pair; a side is absent (None) when unset.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct LinePair {
    #[prost(uint32, optional, tag="1")]
    pub lhs: ::core::option::Option<u32>,
    #[prost(uint32, optional, tag="2")]
    pub rhs: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Hunk {
    /// LineNumber (u32) sets containing novel content per side.
    #[prost(uint32, repeated, tag="1")]
    pub novel_lhs: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag="2")]
    pub novel_rhs: ::prost::alloc::vec::Vec<u32>,
    #[prost(message, repeated, tag="3")]
    pub lines: ::prost::alloc::vec::Vec<LinePair>,
}
/// Number of bytes per side when the files differ (Rust Option<(usize, usize)>).
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ByteChanges {
    #[prost(uint64, tag="1")]
    pub lhs: u64,
    #[prost(uint64, tag="2")]
    pub rhs: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileDiff {
    #[prost(message, optional, tag="1")]
    pub lhs_src: ::core::option::Option<FileContent>,
    #[prost(message, optional, tag="2")]
    pub rhs_src: ::core::option::Option<FileContent>,
    #[prost(message, repeated, tag="3")]
    pub hunks: ::prost::alloc::vec::Vec<Hunk>,
    #[prost(message, optional, tag="4")]
    pub has_byte_changes: ::core::option::Option<ByteChanges>,
    /// TODO: lhs_positions / rhs_positions (MatchedPos) — AST, added later.
    #[prost(bool, tag="5")]
    pub has_syntactic_changes: bool,
}
// @@protoc_insertion_point(module)
