#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct StreamPosition {
#[prost(uint64, tag = "1")]
pub seq_num: u64,
#[prost(uint64, tag = "2")]
pub timestamp: u64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Header {
#[prost(bytes = "bytes", tag = "1")]
pub name: ::prost::bytes::Bytes,
#[prost(bytes = "bytes", tag = "2")]
pub value: ::prost::bytes::Bytes,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AppendRecord {
#[prost(uint64, optional, tag = "1")]
pub timestamp: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "2")]
pub headers: ::prost::alloc::vec::Vec<Header>,
#[prost(bytes = "bytes", tag = "3")]
pub body: ::prost::bytes::Bytes,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AppendInput {
#[prost(message, repeated, tag = "1")]
pub records: ::prost::alloc::vec::Vec<AppendRecord>,
#[prost(uint64, optional, tag = "2")]
pub match_seq_num: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub fencing_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct AppendAck {
#[prost(message, optional, tag = "1")]
pub start: ::core::option::Option<StreamPosition>,
#[prost(message, optional, tag = "2")]
pub end: ::core::option::Option<StreamPosition>,
#[prost(message, optional, tag = "3")]
pub tail: ::core::option::Option<StreamPosition>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SequencedRecord {
#[prost(uint64, tag = "1")]
pub seq_num: u64,
#[prost(uint64, tag = "2")]
pub timestamp: u64,
#[prost(message, repeated, tag = "3")]
pub headers: ::prost::alloc::vec::Vec<Header>,
#[prost(bytes = "bytes", tag = "4")]
pub body: ::prost::bytes::Bytes,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReadBatch {
#[prost(message, repeated, tag = "1")]
pub records: ::prost::alloc::vec::Vec<SequencedRecord>,
#[prost(message, optional, tag = "2")]
pub tail: ::core::option::Option<StreamPosition>,
}