Skip to main content

actordb_protocol/generated/
meta.rs

1// This file is @generated by prost-build.
2/// Handshake: identifies the connecting node
3#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct Hello {
5    #[prost(string, tag = "1")]
6    pub node_id: ::prost::alloc::string::String,
7    /// Retained at its original field number for safe protobuf field evolution.
8    /// Since protocol v2 this field must be empty; the challenge-bound proof is
9    /// carried in HelloAuth.
10    #[prost(bytes = "vec", tag = "2")]
11    pub auth_tag: ::prost::alloc::vec::Vec<u8>,
12    /// Inclusive wire-version range understood by this peer. Both are nonzero;
13    /// a connection proceeds only when the ranges overlap.
14    #[prost(uint32, tag = "3")]
15    pub min_protocol_version: u32,
16    #[prost(uint32, tag = "4")]
17    pub max_protocol_version: u32,
18    /// Feature bitset. Required bits are checked before either side installs the
19    /// connection, so mixed binaries fail closed rather than mis-acknowledging
20    /// mutations or replication.
21    #[prost(uint64, tag = "5")]
22    pub capabilities: u64,
23    /// Fresh 256-bit challenge generated independently for every physical
24    /// connection. Both peers' complete Hellos are bound into each HelloAuth.
25    #[prost(bytes = "vec", tag = "6")]
26    pub challenge: ::prost::alloc::vec::Vec<u8>,
27}
28/// Second handshake flight. With a configured cluster secret, auth_tag is an
29/// HMAC-SHA256 over the ordered dialer/listener Hello transcript and the
30/// proving role. Without a secret it is empty, but the flight still makes
31/// handshake completion explicit before either peer publishes the connection.
32#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
33pub struct HelloAuth {
34    #[prost(bytes = "vec", tag = "1")]
35    pub auth_tag: ::prost::alloc::vec::Vec<u8>,
36}
37/// A single replicated write, sent from a fragment's coordinator to the
38/// other replica holders. Delivery is at-least-once; receivers merge with
39/// last-writer-wins on (timestamp_ms, node_id) and do NOT re-forward.
40/// `seq`/`boot_id` are propagation metadata.
41#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
42pub struct ReplicateOp {
43    #[prost(string, tag = "1")]
44    pub key: ::prost::alloc::string::String,
45    #[prost(bytes = "vec", tag = "2")]
46    pub value: ::prost::alloc::vec::Vec<u8>,
47    #[prost(uint64, tag = "3")]
48    pub timestamp_ms: u64,
49    #[prost(string, tag = "4")]
50    pub node_id: ::prost::alloc::string::String,
51    #[prost(uint64, tag = "5")]
52    pub seq: u64,
53    /// Random per process start. Carried as origin metadata; replay safety is
54    /// provided by the value's LWW version rather than transport deduplication.
55    #[prost(uint64, tag = "6")]
56    pub boot_id: u64,
57    /// Optional key expiry (wall-clock ms). 0/absent = no expiry.
58    #[prost(uint64, tag = "7")]
59    pub expires_at_ms: u64,
60    /// True if this is a deletion tombstone.
61    #[prost(bool, tag = "8")]
62    pub is_tombstone: bool,
63}
64/// A client-routed write: "you own this key's fragment — apply it as
65/// coordinator and replicate to the other holders." One network hop.
66#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
67pub struct ForwardedPut {
68    #[prost(string, tag = "1")]
69    pub key: ::prost::alloc::string::String,
70    #[prost(bytes = "vec", tag = "2")]
71    pub value: ::prost::alloc::vec::Vec<u8>,
72    #[prost(uint64, tag = "3")]
73    pub timestamp_ms: u64,
74    #[prost(string, tag = "4")]
75    pub node_id: ::prost::alloc::string::String,
76    #[prost(uint64, tag = "5")]
77    pub seq: u64,
78    #[prost(uint64, tag = "6")]
79    pub boot_id: u64,
80    /// Optional key expiry (wall-clock ms). 0/absent = no expiry.
81    #[prost(uint64, tag = "7")]
82    pub expires_at_ms: u64,
83    /// True if this is a deletion tombstone.
84    #[prost(bool, tag = "8")]
85    pub is_tombstone: bool,
86    /// Phase 7: priority the receiving node should apply this op with.
87    #[prost(enumeration = "Priority", tag = "9")]
88    pub priority: i32,
89    /// Phase 8: re-forward count. A node that receives a ForwardedPut for a
90    /// fragment it no longer serves (stale placement maps during
91    /// migration) re-forwards it to the current owner instead of
92    /// dropping it; hops bounds the chain.
93    #[prost(uint32, tag = "10")]
94    pub hops: u32,
95    /// Correlates the exact apply outcome back to the originating node.
96    #[prost(uint64, tag = "11")]
97    pub req_id: u64,
98}
99/// A single-key routed read. The origin tries configured holders in order; a
100/// non-serving holder may relay it under a fresh request id while placement
101/// maps converge. GetResponse has no unavailable value, so routing/actor
102/// unavailability produces no false not-found reply and the origin times out.
103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
104pub struct ForwardedGet {
105    #[prost(string, tag = "1")]
106    pub key: ::prost::alloc::string::String,
107    #[prost(uint64, tag = "2")]
108    pub req_id: u64,
109    /// Phase 7: priority the receiving node should serve this read with.
110    #[prost(enumeration = "Priority", tag = "3")]
111    pub priority: i32,
112    /// Phase 8: re-forward count, as with ForwardedPut. A non-serving node
113    /// relays the read to the current owner and relays the response back.
114    #[prost(uint32, tag = "4")]
115    pub hops: u32,
116}
117#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
118pub struct GetResponse {
119    #[prost(uint64, tag = "1")]
120    pub req_id: u64,
121    #[prost(bool, tag = "2")]
122    pub found: bool,
123    #[prost(bytes = "vec", tag = "3")]
124    pub value: ::prost::alloc::vec::Vec<u8>,
125    #[prost(uint64, tag = "4")]
126    pub timestamp_ms: u64,
127    #[prost(string, tag = "5")]
128    pub node_id: ::prost::alloc::string::String,
129    /// Optional key expiry (wall-clock ms). 0/absent = no expiry.
130    #[prost(uint64, tag = "6")]
131    pub expires_at_ms: u64,
132    /// True if this is a deletion tombstone.
133    #[prost(bool, tag = "7")]
134    pub is_tombstone: bool,
135    /// Phase 7: true if the read was shed due to backpressure (distinct
136    /// from not-found).
137    #[prost(bool, tag = "8")]
138    pub shed: bool,
139}
140/// Retired protocol-v1/v2 full-state frames. They remain generated for source
141/// compatibility, but a protocol-v3 connection closes if either is received.
142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
143pub struct SyncRequest {
144    #[prost(uint32, repeated, tag = "1")]
145    pub fragments: ::prost::alloc::vec::Vec<u32>,
146}
147/// Retired peer full-state response; see SyncRequest above.
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct SyncResponse {
150    #[prost(message, repeated, tag = "1")]
151    pub entries: ::prost::alloc::vec::Vec<SyncEntry>,
152}
153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
154pub struct SyncEntry {
155    #[prost(string, tag = "1")]
156    pub key: ::prost::alloc::string::String,
157    #[prost(bytes = "vec", tag = "2")]
158    pub value: ::prost::alloc::vec::Vec<u8>,
159    #[prost(uint64, tag = "3")]
160    pub timestamp_ms: u64,
161    #[prost(string, tag = "4")]
162    pub node_id: ::prost::alloc::string::String,
163    /// Optional key expiry (wall-clock ms). 0/absent = no expiry.
164    #[prost(uint64, tag = "5")]
165    pub expires_at_ms: u64,
166    /// True if this is a deletion tombstone.
167    #[prost(bool, tag = "6")]
168    pub is_tombstone: bool,
169}
170/// Top-level wire envelope, length-delimited on the wire
171/// Phase 5: async sender/receiver replication. The sender batches ops per
172/// (fragment, peer) and ships them on a timer. Tracked batches receive an ACK
173/// reporting the achieved durability after apply and any requested flush attempt,
174/// or a NACK on execution failure; reconciliation batches are untracked.
175/// Session ids distinguish pairings
176/// across reconnects; stale batches (old session) are discarded.
177#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
178pub struct SessionStart {
179    #[prost(uint64, tag = "1")]
180    pub session_id: u64,
181    #[prost(uint32, tag = "2")]
182    pub fragment: u32,
183}
184#[derive(Clone, PartialEq, ::prost::Message)]
185pub struct ReplicateBatch {
186    #[prost(uint64, tag = "1")]
187    pub session_id: u64,
188    #[prost(uint64, tag = "2")]
189    pub batch_seq: u64,
190    #[prost(uint32, tag = "3")]
191    pub fragment: u32,
192    #[prost(message, repeated, tag = "4")]
193    pub ops: ::prost::alloc::vec::Vec<ReplicateOp>,
194    /// Minimum fence the sender requires before this tracked batch may retire.
195    /// Ignored for untracked reconciliation batches.
196    #[prost(enumeration = "ReplicationAckLevel", tag = "5")]
197    pub required_ack_level: i32,
198}
199#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
200pub struct BatchAck {
201    #[prost(uint64, tag = "1")]
202    pub session_id: u64,
203    #[prost(uint64, tag = "2")]
204    pub batch_seq: u64,
205    #[prost(uint32, tag = "3")]
206    pub fragment: u32,
207    /// Distinguishes volatile in-memory application from a successful flush to
208    /// the receiver's configured KvStore.
209    #[prost(enumeration = "ReplicationAckLevel", tag = "4")]
210    pub level: i32,
211}
212/// A receiver could not account for or persist a batch. The sender retains
213/// and retries the exact idempotent operations instead of treating them as
214/// delivered.
215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
216pub struct BatchNack {
217    #[prost(uint64, tag = "1")]
218    pub session_id: u64,
219    #[prost(uint64, tag = "2")]
220    pub batch_seq: u64,
221    #[prost(uint32, tag = "3")]
222    pub fragment: u32,
223    #[prost(string, tag = "4")]
224    pub error: ::prost::alloc::string::String,
225}
226/// Incremental anti-entropy: exchange (timestamp, tombstone) summaries,
227/// then only the divergent keys.
228#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
229pub struct KeySummary {
230    #[prost(string, tag = "1")]
231    pub key: ::prost::alloc::string::String,
232    #[prost(uint64, tag = "2")]
233    pub timestamp_ms: u64,
234    #[prost(string, tag = "3")]
235    pub node_id: ::prost::alloc::string::String,
236    #[prost(bool, tag = "4")]
237    pub is_tombstone: bool,
238}
239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
240pub struct ReconcileRequest {
241    #[prost(uint32, tag = "1")]
242    pub fragment: u32,
243    /// Correlates the request to the active SessionStart on this connection.
244    #[prost(uint64, tag = "2")]
245    pub session_id: u64,
246    /// Monotonic within a sender session. Responses from older rounds are stale.
247    #[prost(uint64, tag = "3")]
248    pub round_id: u64,
249    /// V3 byte-bounded summary pagination. Page zero starts a pass; later pages
250    /// echo its cursor, observed revision, and pinned TTL time. Revision drift is
251    /// allowed during the bounded pass and forces a fresh verification pass.
252    #[prost(uint64, tag = "4")]
253    pub page_seq: u64,
254    #[prost(string, tag = "5")]
255    pub after_key: ::prost::alloc::string::String,
256    #[prost(uint64, tag = "6")]
257    pub snapshot_revision: u64,
258    #[prost(uint64, tag = "7")]
259    pub snapshot_time_ms: u64,
260}
261#[derive(Clone, PartialEq, ::prost::Message)]
262pub struct ReconcileResponse {
263    #[prost(uint32, tag = "1")]
264    pub fragment: u32,
265    #[prost(message, repeated, tag = "2")]
266    pub summaries: ::prost::alloc::vec::Vec<KeySummary>,
267    #[prost(uint64, tag = "3")]
268    pub session_id: u64,
269    #[prost(uint64, tag = "4")]
270    pub round_id: u64,
271    /// V3 page correlation and continuation metadata.
272    #[prost(uint64, tag = "5")]
273    pub page_seq: u64,
274    #[prost(string, tag = "6")]
275    pub next_after_key: ::prost::alloc::string::String,
276    #[prost(uint64, tag = "7")]
277    pub snapshot_revision: u64,
278    #[prost(uint64, tag = "8")]
279    pub snapshot_time_ms: u64,
280    #[prost(bool, tag = "9")]
281    pub done: bool,
282    /// The responder could not continue this pass; discard its partial result
283    /// and begin again with a fresh nonzero round id.
284    #[prost(bool, tag = "10")]
285    pub restart: bool,
286}
287#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
288pub struct ReconcileFetch {
289    #[prost(uint32, tag = "1")]
290    pub fragment: u32,
291    #[prost(string, repeated, tag = "2")]
292    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
293    #[prost(uint64, tag = "3")]
294    pub session_id: u64,
295    #[prost(uint64, tag = "4")]
296    pub round_id: u64,
297    /// Identifies the requested page within the round.
298    #[prost(uint64, tag = "5")]
299    pub chunk_seq: u64,
300}
301#[derive(Clone, PartialEq, ::prost::Message)]
302pub struct ReconcileData {
303    #[prost(uint32, tag = "1")]
304    pub fragment: u32,
305    #[prost(message, repeated, tag = "2")]
306    pub entries: ::prost::alloc::vec::Vec<SyncEntry>,
307    #[prost(uint64, tag = "3")]
308    pub session_id: u64,
309    #[prost(uint64, tag = "4")]
310    pub round_id: u64,
311    #[prost(uint64, tag = "5")]
312    pub chunk_seq: u64,
313    /// V3 page correlation within one bounded fetch chunk. Large value sets are
314    /// streamed across exact-byte-bounded pages.
315    #[prost(uint64, tag = "6")]
316    pub page_seq: u64,
317    #[prost(bool, tag = "7")]
318    pub done: bool,
319}
320/// Phase 6: multi-key fan-out. One message per remote fragment/owner attempt.
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct BatchPut {
323    #[prost(message, repeated, tag = "1")]
324    pub puts: ::prost::alloc::vec::Vec<ForwardedPut>,
325    /// Phase 7: priority applied to every put in the batch.
326    #[prost(enumeration = "Priority", tag = "2")]
327    pub priority: i32,
328    /// Correlates one ordered result per `puts` entry.
329    #[prost(uint64, tag = "3")]
330    pub req_id: u64,
331}
332#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
333pub struct MutationResult {
334    #[prost(string, tag = "1")]
335    pub key: ::prost::alloc::string::String,
336    #[prost(enumeration = "MutationStatus", tag = "2")]
337    pub status: i32,
338    #[prost(string, tag = "3")]
339    pub error: ::prost::alloc::string::String,
340    #[prost(uint64, tag = "4")]
341    pub winner_timestamp_ms: u64,
342    #[prost(string, tag = "5")]
343    pub winner_node_id: ::prost::alloc::string::String,
344    #[prost(bool, tag = "6")]
345    pub winner_is_tombstone: bool,
346    #[prost(uint32, tag = "7")]
347    pub request_index: u32,
348}
349#[derive(Clone, PartialEq, ::prost::Message)]
350pub struct MutationResponse {
351    #[prost(uint64, tag = "1")]
352    pub req_id: u64,
353    #[prost(message, repeated, tag = "2")]
354    pub results: ::prost::alloc::vec::Vec<MutationResult>,
355}
356#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
357pub struct BatchGet {
358    #[prost(uint64, tag = "1")]
359    pub req_id: u64,
360    #[prost(string, repeated, tag = "2")]
361    pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
362    /// Phase 7: priority applied to every get in the batch.
363    #[prost(enumeration = "Priority", tag = "3")]
364    pub priority: i32,
365}
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct BatchGetResponse {
368    #[prost(uint64, tag = "1")]
369    pub req_id: u64,
370    /// With CAPABILITY_BYTE_BOUNDED_BATCHES, a non-empty request returns either
371    /// an empty unavailable response or a non-empty ordered prefix. The caller
372    /// resumes an omitted suffix under a fresh request id.
373    #[prost(message, repeated, tag = "2")]
374    pub results: ::prost::alloc::vec::Vec<batch_get_response::KeyValue>,
375}
376/// Nested message and enum types in `BatchGetResponse`.
377pub mod batch_get_response {
378    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
379    pub struct KeyValue {
380        #[prost(string, tag = "1")]
381        pub key: ::prost::alloc::string::String,
382        #[prost(bool, tag = "2")]
383        pub found: bool,
384        #[prost(bytes = "vec", tag = "3")]
385        pub value: ::prost::alloc::vec::Vec<u8>,
386        #[prost(uint64, tag = "4")]
387        pub timestamp_ms: u64,
388        #[prost(string, tag = "5")]
389        pub node_id: ::prost::alloc::string::String,
390        #[prost(uint64, tag = "6")]
391        pub expires_at_ms: u64,
392        #[prost(bool, tag = "7")]
393        pub is_tombstone: bool,
394        /// Phase 7: true if the read was shed due to backpressure (distinct
395        /// from not-found).
396        #[prost(bool, tag = "8")]
397        pub shed: bool,
398    }
399}
400#[derive(Clone, PartialEq, ::prost::Message)]
401pub struct Envelope {
402    #[prost(
403        oneof = "envelope::Msg",
404        tags = "1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24"
405    )]
406    pub msg: ::core::option::Option<envelope::Msg>,
407}
408/// Nested message and enum types in `Envelope`.
409pub mod envelope {
410    #[derive(Clone, PartialEq, ::prost::Oneof)]
411    pub enum Msg {
412        #[prost(message, tag = "1")]
413        Hello(super::Hello),
414        /// Phase 5: ReplicateOp (2) retired; batches carry Repeated ReplicateOp.
415        #[prost(message, tag = "3")]
416        SyncRequest(super::SyncRequest),
417        #[prost(message, tag = "4")]
418        SyncResponse(super::SyncResponse),
419        #[prost(message, tag = "5")]
420        ForwardedPut(super::ForwardedPut),
421        #[prost(message, tag = "6")]
422        ForwardedGet(super::ForwardedGet),
423        #[prost(message, tag = "7")]
424        GetResponse(super::GetResponse),
425        #[prost(message, tag = "8")]
426        SessionStart(super::SessionStart),
427        #[prost(message, tag = "9")]
428        ReplicateBatch(super::ReplicateBatch),
429        #[prost(message, tag = "10")]
430        BatchAck(super::BatchAck),
431        #[prost(message, tag = "11")]
432        ReconcileRequest(super::ReconcileRequest),
433        #[prost(message, tag = "12")]
434        ReconcileResponse(super::ReconcileResponse),
435        #[prost(message, tag = "13")]
436        ReconcileFetch(super::ReconcileFetch),
437        #[prost(message, tag = "14")]
438        ReconcileData(super::ReconcileData),
439        #[prost(message, tag = "15")]
440        BatchPut(super::BatchPut),
441        #[prost(message, tag = "16")]
442        BatchGet(super::BatchGet),
443        #[prost(message, tag = "17")]
444        BatchGetResponse(super::BatchGetResponse),
445        #[prost(message, tag = "18")]
446        MutationResponse(super::MutationResponse),
447        #[prost(message, tag = "19")]
448        BatchNack(super::BatchNack),
449        #[prost(message, tag = "20")]
450        HelloAuth(super::HelloAuth),
451        #[prost(message, tag = "21")]
452        ScanRequest(super::ScanRequest),
453        #[prost(message, tag = "22")]
454        ScanResponse(super::ScanResponse),
455        #[prost(message, tag = "23")]
456        QueryPageRequest(super::QueryPageRequest),
457        #[prost(message, tag = "24")]
458        QueryPageResponse(super::QueryPageResponse),
459    }
460}
461/// Distributed scan: coordinator -> fragment holder. Mirrors ForwardedGet:
462/// one holder per fragment, failover across replica_order, hop-bounded
463/// re-forwarding during placement migration. The spec is data, never code.
464#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
465pub struct ScanRequest {
466    #[prost(uint64, tag = "1")]
467    pub req_id: u64,
468    #[prost(uint32, tag = "2")]
469    pub fragment: u32,
470    /// Matcher descriptor: 0=all, 1=key prefix.
471    #[prost(uint32, tag = "3")]
472    pub matcher_kind: u32,
473    /// Matcher argument: prefix bytes when matcher_kind=1.
474    #[prost(bytes = "vec", tag = "4")]
475    pub matcher_arg: ::prost::alloc::vec::Vec<u8>,
476    /// Transform descriptor: 0=identity, 1=key_only, 2=prefix_bytes.
477    #[prost(uint32, tag = "5")]
478    pub transform_kind: u32,
479    /// Transform argument: N when transform_kind=2.
480    #[prost(uint32, tag = "6")]
481    pub transform_arg: u32,
482    /// Per-fragment match bound. 0 = server default. This bound is also the
483    /// wire-size safety: the response is a single envelope, so limit *
484    /// avg value size must stay comfortably under the 16 MiB frame cap.
485    #[prost(uint32, tag = "7")]
486    pub limit: u32,
487    /// Skip-first-N pagination cursor (deterministic key order).
488    #[prost(uint64, tag = "8")]
489    pub offset: u64,
490    /// Always PRIORITY_BACKGROUND for scans.
491    #[prost(enumeration = "Priority", tag = "9")]
492    pub priority: i32,
493    /// Re-forward bound, as with ForwardedGet.
494    #[prost(uint32, tag = "10")]
495    pub hops: u32,
496}
497/// Holder -> coordinator. A single response per request; the per-fragment
498/// limit keeps it under the frame cap.
499#[derive(Clone, PartialEq, ::prost::Message)]
500pub struct ScanResponse {
501    #[prost(uint64, tag = "1")]
502    pub req_id: u64,
503    #[prost(message, repeated, tag = "2")]
504    pub matches: ::prost::alloc::vec::Vec<ScanMatch>,
505    /// Non-empty = this holder could not serve the scan (not serving, bad
506    /// spec, shed). The coordinator fails over to the next replica holder.
507    #[prost(string, tag = "3")]
508    pub error: ::prost::alloc::string::String,
509}
510#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
511pub struct ScanMatch {
512    #[prost(string, tag = "1")]
513    pub key: ::prost::alloc::string::String,
514    /// Transformed value. Empty when the transform is key_only.
515    #[prost(bytes = "vec", tag = "2")]
516    pub value: ::prost::alloc::vec::Vec<u8>,
517}
518/// Bounded declarative query traversal. Continuations pin one holder incarnation,
519/// revision, and TTL observation time. SQL is validated as data, never executed code.
520#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
521pub struct QueryPageRequest {
522    #[prost(uint64, tag = "1")]
523    pub req_id: u64,
524    #[prost(uint32, tag = "2")]
525    pub fragment: u32,
526    #[prost(string, tag = "3")]
527    pub sql: ::prost::alloc::string::String,
528    #[prost(string, tag = "4")]
529    pub after_key: ::prost::alloc::string::String,
530    #[prost(bool, tag = "5")]
531    pub continuation: bool,
532    #[prost(uint64, tag = "6")]
533    pub revision: u64,
534    #[prost(uint64, tag = "7")]
535    pub snapshot_time_ms: u64,
536    #[prost(uint64, tag = "8")]
537    pub incarnation: u64,
538    #[prost(uint32, tag = "9")]
539    pub max_rows: u32,
540    #[prost(uint32, tag = "10")]
541    pub max_bytes: u32,
542    #[prost(uint32, tag = "11")]
543    pub max_visits: u32,
544    #[prost(bool, tag = "12")]
545    pub verify_only: bool,
546}
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct QueryPageResponse {
549    #[prost(uint64, tag = "1")]
550    pub req_id: u64,
551    #[prost(uint32, tag = "2")]
552    pub fragment: u32,
553    #[prost(message, repeated, tag = "3")]
554    pub rows: ::prost::alloc::vec::Vec<QueryPageRow>,
555    #[prost(string, tag = "4")]
556    pub next_after_key: ::prost::alloc::string::String,
557    #[prost(bool, tag = "5")]
558    pub done: bool,
559    #[prost(uint64, tag = "6")]
560    pub revision: u64,
561    #[prost(uint64, tag = "7")]
562    pub snapshot_time_ms: u64,
563    #[prost(uint64, tag = "8")]
564    pub incarnation: u64,
565    #[prost(uint32, tag = "9")]
566    pub visited: u32,
567    #[prost(uint64, tag = "10")]
568    pub work_bytes: u64,
569    #[prost(enumeration = "QueryPageStatus", tag = "11")]
570    pub status: i32,
571    #[prost(string, tag = "12")]
572    pub error: ::prost::alloc::string::String,
573}
574#[derive(Clone, PartialEq, ::prost::Message)]
575pub struct QueryPageRow {
576    #[prost(string, tag = "1")]
577    pub key: ::prost::alloc::string::String,
578    #[prost(message, repeated, tag = "2")]
579    pub cells: ::prost::alloc::vec::Vec<QueryCell>,
580}
581#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
582pub struct QueryCell {
583    #[prost(oneof = "query_cell::Value", tags = "1, 2, 3, 4")]
584    pub value: ::core::option::Option<query_cell::Value>,
585}
586/// Nested message and enum types in `QueryCell`.
587pub mod query_cell {
588    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
589    pub enum Value {
590        #[prost(bool, tag = "1")]
591        Null(bool),
592        #[prost(string, tag = "2")]
593        Text(::prost::alloc::string::String),
594        #[prost(bytes, tag = "3")]
595        Bytes(::prost::alloc::vec::Vec<u8>),
596        /// Canonical base-ten integer; preserves full i128 precision in every SDK.
597        #[prost(string, tag = "4")]
598        Integer(::prost::alloc::string::String),
599    }
600}
601/// Phase 7: operation priority for traffic isolation. Wire values are
602/// stable; PRIORITY_DEFAULT = 0 so an absent/unknown field degrades to
603/// normal priority rather than misrouting.
604#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
605#[repr(i32)]
606pub enum Priority {
607    Default = 0,
608    High = 1,
609    Background = 2,
610}
611impl Priority {
612    /// String value of the enum field names used in the ProtoBuf definition.
613    ///
614    /// The values are not transformed in any way and thus are considered stable
615    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
616    pub fn as_str_name(&self) -> &'static str {
617        match self {
618            Self::Default => "PRIORITY_DEFAULT",
619            Self::High => "PRIORITY_HIGH",
620            Self::Background => "PRIORITY_BACKGROUND",
621        }
622    }
623    /// Creates an enum from field names used in the ProtoBuf definition.
624    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
625        match value {
626            "PRIORITY_DEFAULT" => Some(Self::Default),
627            "PRIORITY_HIGH" => Some(Self::High),
628            "PRIORITY_BACKGROUND" => Some(Self::Background),
629            _ => None,
630        }
631    }
632}
633#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
634#[repr(i32)]
635pub enum ReplicationAckLevel {
636    Unknown = 0,
637    Applied = 1,
638    StoreCommitted = 2,
639    StableCommitted = 3,
640}
641impl ReplicationAckLevel {
642    /// String value of the enum field names used in the ProtoBuf definition.
643    ///
644    /// The values are not transformed in any way and thus are considered stable
645    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
646    pub fn as_str_name(&self) -> &'static str {
647        match self {
648            Self::Unknown => "REPLICATION_ACK_LEVEL_UNKNOWN",
649            Self::Applied => "REPLICATION_ACK_LEVEL_APPLIED",
650            Self::StoreCommitted => "REPLICATION_ACK_LEVEL_STORE_COMMITTED",
651            Self::StableCommitted => "REPLICATION_ACK_LEVEL_STABLE_COMMITTED",
652        }
653    }
654    /// Creates an enum from field names used in the ProtoBuf definition.
655    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
656        match value {
657            "REPLICATION_ACK_LEVEL_UNKNOWN" => Some(Self::Unknown),
658            "REPLICATION_ACK_LEVEL_APPLIED" => Some(Self::Applied),
659            "REPLICATION_ACK_LEVEL_STORE_COMMITTED" => Some(Self::StoreCommitted),
660            "REPLICATION_ACK_LEVEL_STABLE_COMMITTED" => Some(Self::StableCommitted),
661            _ => None,
662        }
663    }
664}
665/// Exact result of one remotely forwarded mutation. Results in a
666/// MutationResponse have the same order and cardinality as the request.
667#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
668#[repr(i32)]
669pub enum MutationStatus {
670    Unknown = 0,
671    Applied = 1,
672    AlreadyPresent = 2,
673    Superseded = 3,
674    Expired = 4,
675    Backpressure = 5,
676    StorageError = 6,
677    ActorError = 7,
678    Unavailable = 8,
679}
680impl MutationStatus {
681    /// String value of the enum field names used in the ProtoBuf definition.
682    ///
683    /// The values are not transformed in any way and thus are considered stable
684    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
685    pub fn as_str_name(&self) -> &'static str {
686        match self {
687            Self::Unknown => "MUTATION_STATUS_UNKNOWN",
688            Self::Applied => "MUTATION_STATUS_APPLIED",
689            Self::AlreadyPresent => "MUTATION_STATUS_ALREADY_PRESENT",
690            Self::Superseded => "MUTATION_STATUS_SUPERSEDED",
691            Self::Expired => "MUTATION_STATUS_EXPIRED",
692            Self::Backpressure => "MUTATION_STATUS_BACKPRESSURE",
693            Self::StorageError => "MUTATION_STATUS_STORAGE_ERROR",
694            Self::ActorError => "MUTATION_STATUS_ACTOR_ERROR",
695            Self::Unavailable => "MUTATION_STATUS_UNAVAILABLE",
696        }
697    }
698    /// Creates an enum from field names used in the ProtoBuf definition.
699    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
700        match value {
701            "MUTATION_STATUS_UNKNOWN" => Some(Self::Unknown),
702            "MUTATION_STATUS_APPLIED" => Some(Self::Applied),
703            "MUTATION_STATUS_ALREADY_PRESENT" => Some(Self::AlreadyPresent),
704            "MUTATION_STATUS_SUPERSEDED" => Some(Self::Superseded),
705            "MUTATION_STATUS_EXPIRED" => Some(Self::Expired),
706            "MUTATION_STATUS_BACKPRESSURE" => Some(Self::Backpressure),
707            "MUTATION_STATUS_STORAGE_ERROR" => Some(Self::StorageError),
708            "MUTATION_STATUS_ACTOR_ERROR" => Some(Self::ActorError),
709            "MUTATION_STATUS_UNAVAILABLE" => Some(Self::Unavailable),
710            _ => None,
711        }
712    }
713}
714#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
715#[repr(i32)]
716pub enum QueryPageStatus {
717    Unknown = 0,
718    Ok = 1,
719    Changed = 2,
720    Backpressure = 3,
721    Unavailable = 4,
722    Invalid = 5,
723    Budget = 6,
724}
725impl QueryPageStatus {
726    /// String value of the enum field names used in the ProtoBuf definition.
727    ///
728    /// The values are not transformed in any way and thus are considered stable
729    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
730    pub fn as_str_name(&self) -> &'static str {
731        match self {
732            Self::Unknown => "QUERY_PAGE_STATUS_UNKNOWN",
733            Self::Ok => "QUERY_PAGE_STATUS_OK",
734            Self::Changed => "QUERY_PAGE_STATUS_CHANGED",
735            Self::Backpressure => "QUERY_PAGE_STATUS_BACKPRESSURE",
736            Self::Unavailable => "QUERY_PAGE_STATUS_UNAVAILABLE",
737            Self::Invalid => "QUERY_PAGE_STATUS_INVALID",
738            Self::Budget => "QUERY_PAGE_STATUS_BUDGET",
739        }
740    }
741    /// Creates an enum from field names used in the ProtoBuf definition.
742    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
743        match value {
744            "QUERY_PAGE_STATUS_UNKNOWN" => Some(Self::Unknown),
745            "QUERY_PAGE_STATUS_OK" => Some(Self::Ok),
746            "QUERY_PAGE_STATUS_CHANGED" => Some(Self::Changed),
747            "QUERY_PAGE_STATUS_BACKPRESSURE" => Some(Self::Backpressure),
748            "QUERY_PAGE_STATUS_UNAVAILABLE" => Some(Self::Unavailable),
749            "QUERY_PAGE_STATUS_INVALID" => Some(Self::Invalid),
750            "QUERY_PAGE_STATUS_BUDGET" => Some(Self::Budget),
751            _ => None,
752        }
753    }
754}