Skip to main content

polyester/gen/buffa/
polychart.v1.rs

1// @generated by buffa-codegen. DO NOT EDIT.
2
3/// LayerRef uniquely identifies a drawing layer across owners.
4#[derive(Clone, PartialEq, Default)]
5#[derive(::serde::Serialize, ::serde::Deserialize)]
6#[serde(default)]
7pub struct LayerRef {
8    /// Account that owns the layer.
9    ///
10    /// Field 1: `owner_id`
11    #[serde(
12        rename = "ownerId",
13        alias = "owner_id",
14        with = "::buffa::json_helpers::uint64",
15        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
16    )]
17    pub owner_id: u64,
18    /// Layer identifier unique within the owner account.
19    ///
20    /// Field 2: `layer_id`
21    #[serde(
22        rename = "layerId",
23        alias = "layer_id",
24        with = "::buffa::json_helpers::uint64",
25        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
26    )]
27    pub layer_id: u64,
28    #[serde(skip)]
29    #[doc(hidden)]
30    pub __buffa_unknown_fields: ::buffa::UnknownFields,
31}
32impl ::core::fmt::Debug for LayerRef {
33    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
34        f.debug_struct("LayerRef")
35            .field("owner_id", &self.owner_id)
36            .field("layer_id", &self.layer_id)
37            .finish()
38    }
39}
40impl LayerRef {
41    /// Protobuf type URL for this message, for use with `Any::pack` and
42    /// `Any::unpack_if`.
43    ///
44    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
45    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerRef";
46}
47::buffa::impl_default_instance!(LayerRef);
48impl ::buffa::MessageName for LayerRef {
49    const PACKAGE: &'static str = "polychart.v1";
50    const NAME: &'static str = "LayerRef";
51    const FULL_NAME: &'static str = "polychart.v1.LayerRef";
52    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerRef";
53}
54impl ::buffa::Message for LayerRef {
55    /// Returns the total encoded size in bytes.
56    ///
57    /// The result is a `u32`; the protobuf specification requires all
58    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
59    /// compliant message will never overflow this type.
60    #[allow(clippy::let_and_return)]
61    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
62        #[allow(unused_imports)]
63        use ::buffa::Enumeration as _;
64        let mut size = 0u32;
65        if self.owner_id != 0u64 {
66            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
67        }
68        if self.layer_id != 0u64 {
69            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
70        }
71        size += self.__buffa_unknown_fields.encoded_len() as u32;
72        size
73    }
74    fn write_to(
75        &self,
76        _cache: &mut ::buffa::SizeCache,
77        buf: &mut impl ::buffa::bytes::BufMut,
78    ) {
79        #[allow(unused_imports)]
80        use ::buffa::Enumeration as _;
81        if self.owner_id != 0u64 {
82            ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
83        }
84        if self.layer_id != 0u64 {
85            ::buffa::types::put_fixed64_field(2u32, self.layer_id, buf);
86        }
87        self.__buffa_unknown_fields.write_to(buf);
88    }
89    fn merge_field(
90        &mut self,
91        tag: ::buffa::encoding::Tag,
92        buf: &mut impl ::buffa::bytes::Buf,
93        ctx: ::buffa::DecodeContext<'_>,
94    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
95        #[allow(unused_imports)]
96        use ::buffa::bytes::Buf as _;
97        #[allow(unused_imports)]
98        use ::buffa::Enumeration as _;
99        match tag.field_number() {
100            1u32 => {
101                ::buffa::encoding::check_wire_type(
102                    tag,
103                    ::buffa::encoding::WireType::Fixed64,
104                )?;
105                self.owner_id = ::buffa::types::decode_fixed64(buf)?;
106            }
107            2u32 => {
108                ::buffa::encoding::check_wire_type(
109                    tag,
110                    ::buffa::encoding::WireType::Fixed64,
111                )?;
112                self.layer_id = ::buffa::types::decode_fixed64(buf)?;
113            }
114            _ => {
115                self.__buffa_unknown_fields
116                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
117            }
118        }
119        ::core::result::Result::Ok(())
120    }
121    fn clear(&mut self) {
122        self.owner_id = 0u64;
123        self.layer_id = 0u64;
124        self.__buffa_unknown_fields.clear();
125    }
126}
127impl ::buffa::ExtensionSet for LayerRef {
128    const PROTO_FQN: &'static str = "polychart.v1.LayerRef";
129    fn unknown_fields(&self) -> &::buffa::UnknownFields {
130        &self.__buffa_unknown_fields
131    }
132    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
133        &mut self.__buffa_unknown_fields
134    }
135}
136impl ::buffa::json_helpers::ProtoElemJson for LayerRef {
137    fn serialize_proto_json<S: ::serde::Serializer>(
138        v: &Self,
139        s: S,
140    ) -> ::core::result::Result<S::Ok, S::Error> {
141        ::serde::Serialize::serialize(v, s)
142    }
143    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
144        d: D,
145    ) -> ::core::result::Result<Self, D::Error> {
146        <Self as ::serde::Deserialize>::deserialize(d)
147    }
148}
149#[doc(hidden)]
150pub const __LAYER_REF_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
151    type_url: "type.googleapis.com/polychart.v1.LayerRef",
152    to_json: ::buffa::type_registry::any_to_json::<LayerRef>,
153    from_json: ::buffa::type_registry::any_from_json::<LayerRef>,
154    is_wkt: false,
155};
156/// DrawingRef uniquely identifies a drawing across owners.
157#[derive(Clone, PartialEq, Default)]
158#[derive(::serde::Serialize, ::serde::Deserialize)]
159#[serde(default)]
160pub struct DrawingRef {
161    /// Account that owns the drawing.
162    ///
163    /// Field 1: `owner_id`
164    #[serde(
165        rename = "ownerId",
166        alias = "owner_id",
167        with = "::buffa::json_helpers::uint64",
168        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
169    )]
170    pub owner_id: u64,
171    /// Drawing identifier unique within the owner account.
172    ///
173    /// Field 2: `drawing_id`
174    #[serde(
175        rename = "drawingId",
176        alias = "drawing_id",
177        with = "::buffa::json_helpers::uint64",
178        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
179    )]
180    pub drawing_id: u64,
181    #[serde(skip)]
182    #[doc(hidden)]
183    pub __buffa_unknown_fields: ::buffa::UnknownFields,
184}
185impl ::core::fmt::Debug for DrawingRef {
186    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
187        f.debug_struct("DrawingRef")
188            .field("owner_id", &self.owner_id)
189            .field("drawing_id", &self.drawing_id)
190            .finish()
191    }
192}
193impl DrawingRef {
194    /// Protobuf type URL for this message, for use with `Any::pack` and
195    /// `Any::unpack_if`.
196    ///
197    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
198    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DrawingRef";
199}
200::buffa::impl_default_instance!(DrawingRef);
201impl ::buffa::MessageName for DrawingRef {
202    const PACKAGE: &'static str = "polychart.v1";
203    const NAME: &'static str = "DrawingRef";
204    const FULL_NAME: &'static str = "polychart.v1.DrawingRef";
205    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DrawingRef";
206}
207impl ::buffa::Message for DrawingRef {
208    /// Returns the total encoded size in bytes.
209    ///
210    /// The result is a `u32`; the protobuf specification requires all
211    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
212    /// compliant message will never overflow this type.
213    #[allow(clippy::let_and_return)]
214    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
215        #[allow(unused_imports)]
216        use ::buffa::Enumeration as _;
217        let mut size = 0u32;
218        if self.owner_id != 0u64 {
219            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
220        }
221        if self.drawing_id != 0u64 {
222            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
223        }
224        size += self.__buffa_unknown_fields.encoded_len() as u32;
225        size
226    }
227    fn write_to(
228        &self,
229        _cache: &mut ::buffa::SizeCache,
230        buf: &mut impl ::buffa::bytes::BufMut,
231    ) {
232        #[allow(unused_imports)]
233        use ::buffa::Enumeration as _;
234        if self.owner_id != 0u64 {
235            ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
236        }
237        if self.drawing_id != 0u64 {
238            ::buffa::types::put_fixed64_field(2u32, self.drawing_id, buf);
239        }
240        self.__buffa_unknown_fields.write_to(buf);
241    }
242    fn merge_field(
243        &mut self,
244        tag: ::buffa::encoding::Tag,
245        buf: &mut impl ::buffa::bytes::Buf,
246        ctx: ::buffa::DecodeContext<'_>,
247    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
248        #[allow(unused_imports)]
249        use ::buffa::bytes::Buf as _;
250        #[allow(unused_imports)]
251        use ::buffa::Enumeration as _;
252        match tag.field_number() {
253            1u32 => {
254                ::buffa::encoding::check_wire_type(
255                    tag,
256                    ::buffa::encoding::WireType::Fixed64,
257                )?;
258                self.owner_id = ::buffa::types::decode_fixed64(buf)?;
259            }
260            2u32 => {
261                ::buffa::encoding::check_wire_type(
262                    tag,
263                    ::buffa::encoding::WireType::Fixed64,
264                )?;
265                self.drawing_id = ::buffa::types::decode_fixed64(buf)?;
266            }
267            _ => {
268                self.__buffa_unknown_fields
269                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
270            }
271        }
272        ::core::result::Result::Ok(())
273    }
274    fn clear(&mut self) {
275        self.owner_id = 0u64;
276        self.drawing_id = 0u64;
277        self.__buffa_unknown_fields.clear();
278    }
279}
280impl ::buffa::ExtensionSet for DrawingRef {
281    const PROTO_FQN: &'static str = "polychart.v1.DrawingRef";
282    fn unknown_fields(&self) -> &::buffa::UnknownFields {
283        &self.__buffa_unknown_fields
284    }
285    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
286        &mut self.__buffa_unknown_fields
287    }
288}
289impl ::buffa::json_helpers::ProtoElemJson for DrawingRef {
290    fn serialize_proto_json<S: ::serde::Serializer>(
291        v: &Self,
292        s: S,
293    ) -> ::core::result::Result<S::Ok, S::Error> {
294        ::serde::Serialize::serialize(v, s)
295    }
296    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
297        d: D,
298    ) -> ::core::result::Result<Self, D::Error> {
299        <Self as ::serde::Deserialize>::deserialize(d)
300    }
301}
302#[doc(hidden)]
303pub const __DRAWING_REF_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
304    type_url: "type.googleapis.com/polychart.v1.DrawingRef",
305    to_json: ::buffa::type_registry::any_to_json::<DrawingRef>,
306    from_json: ::buffa::type_registry::any_from_json::<DrawingRef>,
307    is_wkt: false,
308};
309/// Layer is a shareable container of drawings for one market.
310#[derive(Clone, PartialEq, Default)]
311#[derive(::serde::Serialize, ::serde::Deserialize)]
312#[serde(default)]
313pub struct Layer {
314    /// Account that owns the layer.
315    ///
316    /// Field 1: `owner_id`
317    #[serde(
318        rename = "ownerId",
319        alias = "owner_id",
320        with = "::buffa::json_helpers::uint64",
321        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
322    )]
323    pub owner_id: u64,
324    /// Layer identifier unique within the owner account.
325    ///
326    /// Field 2: `layer_id`
327    #[serde(
328        rename = "layerId",
329        alias = "layer_id",
330        with = "::buffa::json_helpers::uint64",
331        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
332    )]
333    pub layer_id: u64,
334    /// Engine symbol identifier for the market this layer belongs to.
335    ///
336    /// Field 3: `engine_symbol_id`
337    #[serde(
338        rename = "engineSymbolId",
339        alias = "engine_symbol_id",
340        with = "::buffa::json_helpers::uint32",
341        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
342    )]
343    pub engine_symbol_id: u32,
344    /// Human-readable layer name.
345    ///
346    /// Field 4: `name`
347    #[serde(
348        rename = "name",
349        with = "::buffa::json_helpers::proto_string",
350        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
351    )]
352    pub name: ::buffa::alloc::string::String,
353    /// Owner-defined ordering hint for the layer list.
354    ///
355    /// Field 5: `sort_hint`
356    #[serde(
357        rename = "sortHint",
358        alias = "sort_hint",
359        with = "::buffa::json_helpers::int32",
360        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_i32"
361    )]
362    pub sort_hint: i32,
363    /// Owner-level style defaults.
364    /// Packed layer color in 0xAARRGGBB format.
365    ///
366    /// Field 6: `color_rgba`
367    #[serde(
368        rename = "colorRgba",
369        alias = "color_rgba",
370        with = "::buffa::json_helpers::uint32",
371        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
372    )]
373    pub color_rgba: u32,
374    /// True when drawings should use the layer color by default.
375    ///
376    /// Field 7: `use_layer_color`
377    #[serde(
378        rename = "useLayerColor",
379        alias = "use_layer_color",
380        with = "::buffa::json_helpers::proto_bool",
381        skip_serializing_if = "::buffa::json_helpers::skip_if::is_false"
382    )]
383    pub use_layer_color: bool,
384    /// True when clients should prevent editing drawings in this layer.
385    ///
386    /// Field 8: `is_locked`
387    #[serde(
388        rename = "isLocked",
389        alias = "is_locked",
390        with = "::buffa::json_helpers::proto_bool",
391        skip_serializing_if = "::buffa::json_helpers::skip_if::is_false"
392    )]
393    pub is_locked: bool,
394    /// True when the layer is visible by default.
395    ///
396    /// Field 9: `is_visible`
397    #[serde(
398        rename = "isVisible",
399        alias = "is_visible",
400        with = "::buffa::json_helpers::proto_bool",
401        skip_serializing_if = "::buffa::json_helpers::skip_if::is_false"
402    )]
403    pub is_visible: bool,
404    /// Monotonic per layer; increments on any committed change to the layer or its drawings.
405    ///
406    /// Field 10: `revision`
407    #[serde(
408        rename = "revision",
409        with = "::buffa::json_helpers::uint64",
410        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
411    )]
412    pub revision: u64,
413    /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
414    ///
415    /// Field 11: `updated_at_ms`
416    #[serde(
417        rename = "updatedAtMs",
418        alias = "updated_at_ms",
419        with = "::buffa::json_helpers::uint64",
420        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
421    )]
422    pub updated_at_ms: u64,
423    #[serde(skip)]
424    #[doc(hidden)]
425    pub __buffa_unknown_fields: ::buffa::UnknownFields,
426}
427impl ::core::fmt::Debug for Layer {
428    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
429        f.debug_struct("Layer")
430            .field("owner_id", &self.owner_id)
431            .field("layer_id", &self.layer_id)
432            .field("engine_symbol_id", &self.engine_symbol_id)
433            .field("name", &self.name)
434            .field("sort_hint", &self.sort_hint)
435            .field("color_rgba", &self.color_rgba)
436            .field("use_layer_color", &self.use_layer_color)
437            .field("is_locked", &self.is_locked)
438            .field("is_visible", &self.is_visible)
439            .field("revision", &self.revision)
440            .field("updated_at_ms", &self.updated_at_ms)
441            .finish()
442    }
443}
444impl Layer {
445    /// Protobuf type URL for this message, for use with `Any::pack` and
446    /// `Any::unpack_if`.
447    ///
448    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
449    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Layer";
450}
451::buffa::impl_default_instance!(Layer);
452impl ::buffa::MessageName for Layer {
453    const PACKAGE: &'static str = "polychart.v1";
454    const NAME: &'static str = "Layer";
455    const FULL_NAME: &'static str = "polychart.v1.Layer";
456    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Layer";
457}
458impl ::buffa::Message for Layer {
459    /// Returns the total encoded size in bytes.
460    ///
461    /// The result is a `u32`; the protobuf specification requires all
462    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
463    /// compliant message will never overflow this type.
464    #[allow(clippy::let_and_return)]
465    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
466        #[allow(unused_imports)]
467        use ::buffa::Enumeration as _;
468        let mut size = 0u32;
469        if self.owner_id != 0u64 {
470            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
471        }
472        if self.layer_id != 0u64 {
473            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
474        }
475        if self.engine_symbol_id != 0u32 {
476            size
477                += 1u32
478                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
479        }
480        if !self.name.is_empty() {
481            size += 1u32 + ::buffa::types::string_encoded_len(&self.name) as u32;
482        }
483        if self.sort_hint != 0i32 {
484            size += 1u32 + ::buffa::types::int32_encoded_len(self.sort_hint) as u32;
485        }
486        if self.color_rgba != 0u32 {
487            size += 1u32 + ::buffa::types::uint32_encoded_len(self.color_rgba) as u32;
488        }
489        if self.use_layer_color {
490            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
491        }
492        if self.is_locked {
493            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
494        }
495        if self.is_visible {
496            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
497        }
498        if self.revision != 0u64 {
499            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
500        }
501        if self.updated_at_ms != 0u64 {
502            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
503        }
504        size += self.__buffa_unknown_fields.encoded_len() as u32;
505        size
506    }
507    fn write_to(
508        &self,
509        _cache: &mut ::buffa::SizeCache,
510        buf: &mut impl ::buffa::bytes::BufMut,
511    ) {
512        #[allow(unused_imports)]
513        use ::buffa::Enumeration as _;
514        if self.owner_id != 0u64 {
515            ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
516        }
517        if self.layer_id != 0u64 {
518            ::buffa::types::put_fixed64_field(2u32, self.layer_id, buf);
519        }
520        if self.engine_symbol_id != 0u32 {
521            ::buffa::types::put_uint32_field(3u32, self.engine_symbol_id, buf);
522        }
523        if !self.name.is_empty() {
524            ::buffa::types::put_string_field(4u32, &self.name, buf);
525        }
526        if self.sort_hint != 0i32 {
527            ::buffa::types::put_int32_field(5u32, self.sort_hint, buf);
528        }
529        if self.color_rgba != 0u32 {
530            ::buffa::types::put_uint32_field(6u32, self.color_rgba, buf);
531        }
532        if self.use_layer_color {
533            ::buffa::types::put_bool_field(7u32, self.use_layer_color, buf);
534        }
535        if self.is_locked {
536            ::buffa::types::put_bool_field(8u32, self.is_locked, buf);
537        }
538        if self.is_visible {
539            ::buffa::types::put_bool_field(9u32, self.is_visible, buf);
540        }
541        if self.revision != 0u64 {
542            ::buffa::types::put_fixed64_field(10u32, self.revision, buf);
543        }
544        if self.updated_at_ms != 0u64 {
545            ::buffa::types::put_fixed64_field(11u32, self.updated_at_ms, buf);
546        }
547        self.__buffa_unknown_fields.write_to(buf);
548    }
549    fn merge_field(
550        &mut self,
551        tag: ::buffa::encoding::Tag,
552        buf: &mut impl ::buffa::bytes::Buf,
553        ctx: ::buffa::DecodeContext<'_>,
554    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
555        #[allow(unused_imports)]
556        use ::buffa::bytes::Buf as _;
557        #[allow(unused_imports)]
558        use ::buffa::Enumeration as _;
559        match tag.field_number() {
560            1u32 => {
561                ::buffa::encoding::check_wire_type(
562                    tag,
563                    ::buffa::encoding::WireType::Fixed64,
564                )?;
565                self.owner_id = ::buffa::types::decode_fixed64(buf)?;
566            }
567            2u32 => {
568                ::buffa::encoding::check_wire_type(
569                    tag,
570                    ::buffa::encoding::WireType::Fixed64,
571                )?;
572                self.layer_id = ::buffa::types::decode_fixed64(buf)?;
573            }
574            3u32 => {
575                ::buffa::encoding::check_wire_type(
576                    tag,
577                    ::buffa::encoding::WireType::Varint,
578                )?;
579                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
580            }
581            4u32 => {
582                ::buffa::encoding::check_wire_type(
583                    tag,
584                    ::buffa::encoding::WireType::LengthDelimited,
585                )?;
586                ::buffa::types::merge_string(&mut self.name, buf)?;
587            }
588            5u32 => {
589                ::buffa::encoding::check_wire_type(
590                    tag,
591                    ::buffa::encoding::WireType::Varint,
592                )?;
593                self.sort_hint = ::buffa::types::decode_int32(buf)?;
594            }
595            6u32 => {
596                ::buffa::encoding::check_wire_type(
597                    tag,
598                    ::buffa::encoding::WireType::Varint,
599                )?;
600                self.color_rgba = ::buffa::types::decode_uint32(buf)?;
601            }
602            7u32 => {
603                ::buffa::encoding::check_wire_type(
604                    tag,
605                    ::buffa::encoding::WireType::Varint,
606                )?;
607                self.use_layer_color = ::buffa::types::decode_bool(buf)?;
608            }
609            8u32 => {
610                ::buffa::encoding::check_wire_type(
611                    tag,
612                    ::buffa::encoding::WireType::Varint,
613                )?;
614                self.is_locked = ::buffa::types::decode_bool(buf)?;
615            }
616            9u32 => {
617                ::buffa::encoding::check_wire_type(
618                    tag,
619                    ::buffa::encoding::WireType::Varint,
620                )?;
621                self.is_visible = ::buffa::types::decode_bool(buf)?;
622            }
623            10u32 => {
624                ::buffa::encoding::check_wire_type(
625                    tag,
626                    ::buffa::encoding::WireType::Fixed64,
627                )?;
628                self.revision = ::buffa::types::decode_fixed64(buf)?;
629            }
630            11u32 => {
631                ::buffa::encoding::check_wire_type(
632                    tag,
633                    ::buffa::encoding::WireType::Fixed64,
634                )?;
635                self.updated_at_ms = ::buffa::types::decode_fixed64(buf)?;
636            }
637            _ => {
638                self.__buffa_unknown_fields
639                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
640            }
641        }
642        ::core::result::Result::Ok(())
643    }
644    fn clear(&mut self) {
645        self.owner_id = 0u64;
646        self.layer_id = 0u64;
647        self.engine_symbol_id = 0u32;
648        self.name.clear();
649        self.sort_hint = 0i32;
650        self.color_rgba = 0u32;
651        self.use_layer_color = false;
652        self.is_locked = false;
653        self.is_visible = false;
654        self.revision = 0u64;
655        self.updated_at_ms = 0u64;
656        self.__buffa_unknown_fields.clear();
657    }
658}
659impl ::buffa::ExtensionSet for Layer {
660    const PROTO_FQN: &'static str = "polychart.v1.Layer";
661    fn unknown_fields(&self) -> &::buffa::UnknownFields {
662        &self.__buffa_unknown_fields
663    }
664    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
665        &mut self.__buffa_unknown_fields
666    }
667}
668impl ::buffa::json_helpers::ProtoElemJson for Layer {
669    fn serialize_proto_json<S: ::serde::Serializer>(
670        v: &Self,
671        s: S,
672    ) -> ::core::result::Result<S::Ok, S::Error> {
673        ::serde::Serialize::serialize(v, s)
674    }
675    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
676        d: D,
677    ) -> ::core::result::Result<Self, D::Error> {
678        <Self as ::serde::Deserialize>::deserialize(d)
679    }
680}
681#[doc(hidden)]
682pub const __LAYER_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
683    type_url: "type.googleapis.com/polychart.v1.Layer",
684    to_json: ::buffa::type_registry::any_to_json::<Layer>,
685    from_json: ::buffa::type_registry::any_from_json::<Layer>,
686    is_wkt: false,
687};
688/// Drawing is a shape or annotation stored inside a layer.
689#[derive(Clone, PartialEq, Default)]
690#[derive(::serde::Serialize, ::serde::Deserialize)]
691#[serde(default)]
692pub struct Drawing {
693    /// Account that owns the drawing.
694    ///
695    /// Field 1: `owner_id`
696    #[serde(
697        rename = "ownerId",
698        alias = "owner_id",
699        with = "::buffa::json_helpers::uint64",
700        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
701    )]
702    pub owner_id: u64,
703    /// Drawing identifier unique within the owner account.
704    ///
705    /// Field 2: `drawing_id`
706    #[serde(
707        rename = "drawingId",
708        alias = "drawing_id",
709        with = "::buffa::json_helpers::uint64",
710        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
711    )]
712    pub drawing_id: u64,
713    /// Parent layer for the drawing.
714    ///
715    /// Field 3: `layer`
716    #[serde(
717        rename = "layer",
718        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
719    )]
720    pub layer: ::buffa::MessageField<LayerRef>,
721    /// Engine symbol identifier for the drawing market.
722    ///
723    /// Field 4: `engine_symbol_id`
724    #[serde(
725        rename = "engineSymbolId",
726        alias = "engine_symbol_id",
727        with = "::buffa::json_helpers::uint32",
728        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
729    )]
730    pub engine_symbol_id: u32,
731    /// Client-defined drawing type identifier.
732    ///
733    /// Field 5: `type`
734    #[serde(
735        rename = "type",
736        with = "::buffa::json_helpers::uint32",
737        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
738    )]
739    pub r#type: u32,
740    /// Client-defined payload schema version.
741    ///
742    /// Field 6: `version`
743    #[serde(
744        rename = "version",
745        with = "::buffa::json_helpers::uint32",
746        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
747    )]
748    pub version: u32,
749    /// Serialized drawing payload bytes.
750    ///
751    /// Field 7: `payload`
752    #[serde(
753        rename = "payload",
754        with = "::buffa::json_helpers::bytes",
755        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_bytes"
756    )]
757    pub payload: ::buffa::alloc::vec::Vec<u8>,
758    /// Minimum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
759    ///
760    /// Field 8: `bbox_time_min_ms`
761    #[serde(
762        rename = "bboxTimeMinMs",
763        alias = "bbox_time_min_ms",
764        with = "::buffa::json_helpers::uint64",
765        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
766    )]
767    pub bbox_time_min_ms: u64,
768    /// Maximum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
769    ///
770    /// Field 9: `bbox_time_max_ms`
771    #[serde(
772        rename = "bboxTimeMaxMs",
773        alias = "bbox_time_max_ms",
774        with = "::buffa::json_helpers::uint64",
775        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
776    )]
777    pub bbox_time_max_ms: u64,
778    /// Minimum drawing price bound; 0 means unset.
779    ///
780    /// Field 10: `bbox_price_min`
781    #[serde(
782        rename = "bboxPriceMin",
783        alias = "bbox_price_min",
784        with = "::buffa::json_helpers::double",
785        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_f64"
786    )]
787    pub bbox_price_min: f64,
788    /// Maximum drawing price bound; 0 means unset.
789    ///
790    /// Field 11: `bbox_price_max`
791    #[serde(
792        rename = "bboxPriceMax",
793        alias = "bbox_price_max",
794        with = "::buffa::json_helpers::double",
795        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_f64"
796    )]
797    pub bbox_price_max: f64,
798    /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
799    ///
800    /// Field 12: `updated_at_ms`
801    #[serde(
802        rename = "updatedAtMs",
803        alias = "updated_at_ms",
804        with = "::buffa::json_helpers::uint64",
805        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
806    )]
807    pub updated_at_ms: u64,
808    /// Server-assigned deletion timestamp in milliseconds since epoch (UTC); 0 means not deleted.
809    ///
810    /// Field 13: `deleted_at_ms`
811    #[serde(
812        rename = "deletedAtMs",
813        alias = "deleted_at_ms",
814        with = "::buffa::json_helpers::uint64",
815        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
816    )]
817    pub deleted_at_ms: u64,
818    /// Client-assigned commit timestamp in milliseconds since epoch (UTC), used for last-write-wins merge.
819    ///
820    /// Field 14: `client_updated_at_ms`
821    #[serde(
822        rename = "clientUpdatedAtMs",
823        alias = "client_updated_at_ms",
824        with = "::buffa::json_helpers::uint64",
825        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
826    )]
827    pub client_updated_at_ms: u64,
828    #[serde(skip)]
829    #[doc(hidden)]
830    pub __buffa_unknown_fields: ::buffa::UnknownFields,
831}
832impl ::core::fmt::Debug for Drawing {
833    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
834        f.debug_struct("Drawing")
835            .field("owner_id", &self.owner_id)
836            .field("drawing_id", &self.drawing_id)
837            .field("layer", &self.layer)
838            .field("engine_symbol_id", &self.engine_symbol_id)
839            .field("type", &self.r#type)
840            .field("version", &self.version)
841            .field("payload", &self.payload)
842            .field("bbox_time_min_ms", &self.bbox_time_min_ms)
843            .field("bbox_time_max_ms", &self.bbox_time_max_ms)
844            .field("bbox_price_min", &self.bbox_price_min)
845            .field("bbox_price_max", &self.bbox_price_max)
846            .field("updated_at_ms", &self.updated_at_ms)
847            .field("deleted_at_ms", &self.deleted_at_ms)
848            .field("client_updated_at_ms", &self.client_updated_at_ms)
849            .finish()
850    }
851}
852impl Drawing {
853    /// Protobuf type URL for this message, for use with `Any::pack` and
854    /// `Any::unpack_if`.
855    ///
856    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
857    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Drawing";
858}
859::buffa::impl_default_instance!(Drawing);
860impl ::buffa::MessageName for Drawing {
861    const PACKAGE: &'static str = "polychart.v1";
862    const NAME: &'static str = "Drawing";
863    const FULL_NAME: &'static str = "polychart.v1.Drawing";
864    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Drawing";
865}
866impl ::buffa::Message for Drawing {
867    /// Returns the total encoded size in bytes.
868    ///
869    /// The result is a `u32`; the protobuf specification requires all
870    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
871    /// compliant message will never overflow this type.
872    #[allow(clippy::let_and_return)]
873    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
874        #[allow(unused_imports)]
875        use ::buffa::Enumeration as _;
876        let mut size = 0u32;
877        if self.owner_id != 0u64 {
878            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
879        }
880        if self.drawing_id != 0u64 {
881            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
882        }
883        if self.layer.is_set() {
884            let __slot = __cache.reserve();
885            let inner_size = self.layer.compute_size(__cache);
886            __cache.set(__slot, inner_size);
887            size
888                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
889                    + inner_size;
890        }
891        if self.engine_symbol_id != 0u32 {
892            size
893                += 1u32
894                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
895        }
896        if self.r#type != 0u32 {
897            size += 1u32 + ::buffa::types::uint32_encoded_len(self.r#type) as u32;
898        }
899        if self.version != 0u32 {
900            size += 1u32 + ::buffa::types::uint32_encoded_len(self.version) as u32;
901        }
902        if !self.payload.is_empty() {
903            size += 1u32 + ::buffa::types::bytes_encoded_len(&self.payload) as u32;
904        }
905        if self.bbox_time_min_ms != 0u64 {
906            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
907        }
908        if self.bbox_time_max_ms != 0u64 {
909            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
910        }
911        if self.bbox_price_min.to_bits() != 0u64 {
912            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
913        }
914        if self.bbox_price_max.to_bits() != 0u64 {
915            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
916        }
917        if self.updated_at_ms != 0u64 {
918            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
919        }
920        if self.deleted_at_ms != 0u64 {
921            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
922        }
923        if self.client_updated_at_ms != 0u64 {
924            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
925        }
926        size += self.__buffa_unknown_fields.encoded_len() as u32;
927        size
928    }
929    fn write_to(
930        &self,
931        __cache: &mut ::buffa::SizeCache,
932        buf: &mut impl ::buffa::bytes::BufMut,
933    ) {
934        #[allow(unused_imports)]
935        use ::buffa::Enumeration as _;
936        if self.owner_id != 0u64 {
937            ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
938        }
939        if self.drawing_id != 0u64 {
940            ::buffa::types::put_fixed64_field(2u32, self.drawing_id, buf);
941        }
942        if self.layer.is_set() {
943            ::buffa::types::put_len_delimited_header(3u32, __cache.consume_next(), buf);
944            self.layer.write_to(__cache, buf);
945        }
946        if self.engine_symbol_id != 0u32 {
947            ::buffa::types::put_uint32_field(4u32, self.engine_symbol_id, buf);
948        }
949        if self.r#type != 0u32 {
950            ::buffa::types::put_uint32_field(5u32, self.r#type, buf);
951        }
952        if self.version != 0u32 {
953            ::buffa::types::put_uint32_field(6u32, self.version, buf);
954        }
955        if !self.payload.is_empty() {
956            ::buffa::types::put_bytes_field(7u32, &self.payload, buf);
957        }
958        if self.bbox_time_min_ms != 0u64 {
959            ::buffa::types::put_fixed64_field(8u32, self.bbox_time_min_ms, buf);
960        }
961        if self.bbox_time_max_ms != 0u64 {
962            ::buffa::types::put_fixed64_field(9u32, self.bbox_time_max_ms, buf);
963        }
964        if self.bbox_price_min.to_bits() != 0u64 {
965            ::buffa::types::put_double_field(10u32, self.bbox_price_min, buf);
966        }
967        if self.bbox_price_max.to_bits() != 0u64 {
968            ::buffa::types::put_double_field(11u32, self.bbox_price_max, buf);
969        }
970        if self.updated_at_ms != 0u64 {
971            ::buffa::types::put_fixed64_field(12u32, self.updated_at_ms, buf);
972        }
973        if self.deleted_at_ms != 0u64 {
974            ::buffa::types::put_fixed64_field(13u32, self.deleted_at_ms, buf);
975        }
976        if self.client_updated_at_ms != 0u64 {
977            ::buffa::types::put_fixed64_field(14u32, self.client_updated_at_ms, buf);
978        }
979        self.__buffa_unknown_fields.write_to(buf);
980    }
981    fn merge_field(
982        &mut self,
983        tag: ::buffa::encoding::Tag,
984        buf: &mut impl ::buffa::bytes::Buf,
985        ctx: ::buffa::DecodeContext<'_>,
986    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
987        #[allow(unused_imports)]
988        use ::buffa::bytes::Buf as _;
989        #[allow(unused_imports)]
990        use ::buffa::Enumeration as _;
991        match tag.field_number() {
992            1u32 => {
993                ::buffa::encoding::check_wire_type(
994                    tag,
995                    ::buffa::encoding::WireType::Fixed64,
996                )?;
997                self.owner_id = ::buffa::types::decode_fixed64(buf)?;
998            }
999            2u32 => {
1000                ::buffa::encoding::check_wire_type(
1001                    tag,
1002                    ::buffa::encoding::WireType::Fixed64,
1003                )?;
1004                self.drawing_id = ::buffa::types::decode_fixed64(buf)?;
1005            }
1006            3u32 => {
1007                ::buffa::encoding::check_wire_type(
1008                    tag,
1009                    ::buffa::encoding::WireType::LengthDelimited,
1010                )?;
1011                ::buffa::Message::merge_length_delimited(
1012                    self.layer.get_or_insert_default(),
1013                    buf,
1014                    ctx,
1015                )?;
1016            }
1017            4u32 => {
1018                ::buffa::encoding::check_wire_type(
1019                    tag,
1020                    ::buffa::encoding::WireType::Varint,
1021                )?;
1022                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
1023            }
1024            5u32 => {
1025                ::buffa::encoding::check_wire_type(
1026                    tag,
1027                    ::buffa::encoding::WireType::Varint,
1028                )?;
1029                self.r#type = ::buffa::types::decode_uint32(buf)?;
1030            }
1031            6u32 => {
1032                ::buffa::encoding::check_wire_type(
1033                    tag,
1034                    ::buffa::encoding::WireType::Varint,
1035                )?;
1036                self.version = ::buffa::types::decode_uint32(buf)?;
1037            }
1038            7u32 => {
1039                ::buffa::encoding::check_wire_type(
1040                    tag,
1041                    ::buffa::encoding::WireType::LengthDelimited,
1042                )?;
1043                ::buffa::types::merge_bytes(&mut self.payload, buf)?;
1044            }
1045            8u32 => {
1046                ::buffa::encoding::check_wire_type(
1047                    tag,
1048                    ::buffa::encoding::WireType::Fixed64,
1049                )?;
1050                self.bbox_time_min_ms = ::buffa::types::decode_fixed64(buf)?;
1051            }
1052            9u32 => {
1053                ::buffa::encoding::check_wire_type(
1054                    tag,
1055                    ::buffa::encoding::WireType::Fixed64,
1056                )?;
1057                self.bbox_time_max_ms = ::buffa::types::decode_fixed64(buf)?;
1058            }
1059            10u32 => {
1060                ::buffa::encoding::check_wire_type(
1061                    tag,
1062                    ::buffa::encoding::WireType::Fixed64,
1063                )?;
1064                self.bbox_price_min = ::buffa::types::decode_double(buf)?;
1065            }
1066            11u32 => {
1067                ::buffa::encoding::check_wire_type(
1068                    tag,
1069                    ::buffa::encoding::WireType::Fixed64,
1070                )?;
1071                self.bbox_price_max = ::buffa::types::decode_double(buf)?;
1072            }
1073            12u32 => {
1074                ::buffa::encoding::check_wire_type(
1075                    tag,
1076                    ::buffa::encoding::WireType::Fixed64,
1077                )?;
1078                self.updated_at_ms = ::buffa::types::decode_fixed64(buf)?;
1079            }
1080            13u32 => {
1081                ::buffa::encoding::check_wire_type(
1082                    tag,
1083                    ::buffa::encoding::WireType::Fixed64,
1084                )?;
1085                self.deleted_at_ms = ::buffa::types::decode_fixed64(buf)?;
1086            }
1087            14u32 => {
1088                ::buffa::encoding::check_wire_type(
1089                    tag,
1090                    ::buffa::encoding::WireType::Fixed64,
1091                )?;
1092                self.client_updated_at_ms = ::buffa::types::decode_fixed64(buf)?;
1093            }
1094            _ => {
1095                self.__buffa_unknown_fields
1096                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
1097            }
1098        }
1099        ::core::result::Result::Ok(())
1100    }
1101    fn clear(&mut self) {
1102        self.owner_id = 0u64;
1103        self.drawing_id = 0u64;
1104        self.layer = ::buffa::MessageField::none();
1105        self.engine_symbol_id = 0u32;
1106        self.r#type = 0u32;
1107        self.version = 0u32;
1108        self.payload.clear();
1109        self.bbox_time_min_ms = 0u64;
1110        self.bbox_time_max_ms = 0u64;
1111        self.bbox_price_min = 0f64;
1112        self.bbox_price_max = 0f64;
1113        self.updated_at_ms = 0u64;
1114        self.deleted_at_ms = 0u64;
1115        self.client_updated_at_ms = 0u64;
1116        self.__buffa_unknown_fields.clear();
1117    }
1118}
1119impl ::buffa::ExtensionSet for Drawing {
1120    const PROTO_FQN: &'static str = "polychart.v1.Drawing";
1121    fn unknown_fields(&self) -> &::buffa::UnknownFields {
1122        &self.__buffa_unknown_fields
1123    }
1124    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
1125        &mut self.__buffa_unknown_fields
1126    }
1127}
1128impl ::buffa::json_helpers::ProtoElemJson for Drawing {
1129    fn serialize_proto_json<S: ::serde::Serializer>(
1130        v: &Self,
1131        s: S,
1132    ) -> ::core::result::Result<S::Ok, S::Error> {
1133        ::serde::Serialize::serialize(v, s)
1134    }
1135    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
1136        d: D,
1137    ) -> ::core::result::Result<Self, D::Error> {
1138        <Self as ::serde::Deserialize>::deserialize(d)
1139    }
1140}
1141#[doc(hidden)]
1142pub const __DRAWING_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
1143    type_url: "type.googleapis.com/polychart.v1.Drawing",
1144    to_json: ::buffa::type_registry::any_to_json::<Drawing>,
1145    from_json: ::buffa::type_registry::any_from_json::<Drawing>,
1146    is_wkt: false,
1147};
1148/// LayerSubscription is the viewer's per-market preference for one accessible layer.
1149#[derive(Clone, PartialEq, Default)]
1150#[derive(::serde::Serialize, ::serde::Deserialize)]
1151#[serde(default)]
1152pub struct LayerSubscription {
1153    /// Viewer account that owns this subscription.
1154    ///
1155    /// Field 1: `viewer_id`
1156    #[serde(
1157        rename = "viewerId",
1158        alias = "viewer_id",
1159        with = "::buffa::json_helpers::uint64",
1160        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
1161    )]
1162    pub viewer_id: u64,
1163    /// Engine symbol identifier for the subscription market.
1164    ///
1165    /// Field 2: `engine_symbol_id`
1166    #[serde(
1167        rename = "engineSymbolId",
1168        alias = "engine_symbol_id",
1169        with = "::buffa::json_helpers::uint32",
1170        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
1171    )]
1172    pub engine_symbol_id: u32,
1173    /// Layer included in the viewer's market subscriptions.
1174    ///
1175    /// Field 3: `layer`
1176    #[serde(
1177        rename = "layer",
1178        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
1179    )]
1180    pub layer: ::buffa::MessageField<LayerRef>,
1181    /// Optional viewer-specific display name for the layer.
1182    ///
1183    /// Field 4: `alias_name`
1184    #[serde(
1185        rename = "aliasName",
1186        alias = "alias_name",
1187        with = "::buffa::json_helpers::proto_string",
1188        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
1189    )]
1190    pub alias_name: ::buffa::alloc::string::String,
1191    /// Viewer-defined ordering value for subscribed layers.
1192    ///
1193    /// Field 5: `sort_order`
1194    #[serde(
1195        rename = "sortOrder",
1196        alias = "sort_order",
1197        with = "::buffa::json_helpers::int32",
1198        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_i32"
1199    )]
1200    pub sort_order: i32,
1201    /// True when drawings from this layer should be loaded by default.
1202    ///
1203    /// Field 6: `is_enabled`
1204    #[serde(
1205        rename = "isEnabled",
1206        alias = "is_enabled",
1207        with = "::buffa::json_helpers::proto_bool",
1208        skip_serializing_if = "::buffa::json_helpers::skip_if::is_false"
1209    )]
1210    pub is_enabled: bool,
1211    /// True when the layer should stay pinned in the viewer's layer list.
1212    ///
1213    /// Field 7: `is_pinned`
1214    #[serde(
1215        rename = "isPinned",
1216        alias = "is_pinned",
1217        with = "::buffa::json_helpers::proto_bool",
1218        skip_serializing_if = "::buffa::json_helpers::skip_if::is_false"
1219    )]
1220    pub is_pinned: bool,
1221    /// Viewer overrides (optional).
1222    /// Visibility override for this viewer; unset means use the layer default.
1223    ///
1224    /// Field 8: `is_visible_override`
1225    #[serde(
1226        rename = "isVisibleOverride",
1227        alias = "is_visible_override",
1228        skip_serializing_if = "::core::option::Option::is_none"
1229    )]
1230    pub is_visible_override: ::core::option::Option<bool>,
1231    /// Locked-state override for this viewer; unset means use the layer default.
1232    ///
1233    /// Field 9: `is_locked_override`
1234    #[serde(
1235        rename = "isLockedOverride",
1236        alias = "is_locked_override",
1237        skip_serializing_if = "::core::option::Option::is_none"
1238    )]
1239    pub is_locked_override: ::core::option::Option<bool>,
1240    #[serde(skip)]
1241    #[doc(hidden)]
1242    pub __buffa_unknown_fields: ::buffa::UnknownFields,
1243}
1244impl ::core::fmt::Debug for LayerSubscription {
1245    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1246        f.debug_struct("LayerSubscription")
1247            .field("viewer_id", &self.viewer_id)
1248            .field("engine_symbol_id", &self.engine_symbol_id)
1249            .field("layer", &self.layer)
1250            .field("alias_name", &self.alias_name)
1251            .field("sort_order", &self.sort_order)
1252            .field("is_enabled", &self.is_enabled)
1253            .field("is_pinned", &self.is_pinned)
1254            .field("is_visible_override", &self.is_visible_override)
1255            .field("is_locked_override", &self.is_locked_override)
1256            .finish()
1257    }
1258}
1259impl LayerSubscription {
1260    /// Protobuf type URL for this message, for use with `Any::pack` and
1261    /// `Any::unpack_if`.
1262    ///
1263    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
1264    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscription";
1265}
1266impl LayerSubscription {
1267    #[must_use = "with_* setters return `self` by value; assign or chain the result"]
1268    #[inline]
1269    ///Sets [`Self::is_visible_override`] to `Some(value)`, consuming and returning `self`.
1270    pub fn with_is_visible_override(mut self, value: bool) -> Self {
1271        self.is_visible_override = Some(value);
1272        self
1273    }
1274    #[must_use = "with_* setters return `self` by value; assign or chain the result"]
1275    #[inline]
1276    ///Sets [`Self::is_locked_override`] to `Some(value)`, consuming and returning `self`.
1277    pub fn with_is_locked_override(mut self, value: bool) -> Self {
1278        self.is_locked_override = Some(value);
1279        self
1280    }
1281}
1282::buffa::impl_default_instance!(LayerSubscription);
1283impl ::buffa::MessageName for LayerSubscription {
1284    const PACKAGE: &'static str = "polychart.v1";
1285    const NAME: &'static str = "LayerSubscription";
1286    const FULL_NAME: &'static str = "polychart.v1.LayerSubscription";
1287    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscription";
1288}
1289impl ::buffa::Message for LayerSubscription {
1290    /// Returns the total encoded size in bytes.
1291    ///
1292    /// The result is a `u32`; the protobuf specification requires all
1293    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
1294    /// compliant message will never overflow this type.
1295    #[allow(clippy::let_and_return)]
1296    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
1297        #[allow(unused_imports)]
1298        use ::buffa::Enumeration as _;
1299        let mut size = 0u32;
1300        if self.viewer_id != 0u64 {
1301            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
1302        }
1303        if self.engine_symbol_id != 0u32 {
1304            size
1305                += 1u32
1306                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
1307        }
1308        if self.layer.is_set() {
1309            let __slot = __cache.reserve();
1310            let inner_size = self.layer.compute_size(__cache);
1311            __cache.set(__slot, inner_size);
1312            size
1313                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
1314                    + inner_size;
1315        }
1316        if !self.alias_name.is_empty() {
1317            size += 1u32 + ::buffa::types::string_encoded_len(&self.alias_name) as u32;
1318        }
1319        if self.sort_order != 0i32 {
1320            size += 1u32 + ::buffa::types::int32_encoded_len(self.sort_order) as u32;
1321        }
1322        if self.is_enabled {
1323            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
1324        }
1325        if self.is_pinned {
1326            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
1327        }
1328        if self.is_visible_override.is_some() {
1329            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
1330        }
1331        if self.is_locked_override.is_some() {
1332            size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
1333        }
1334        size += self.__buffa_unknown_fields.encoded_len() as u32;
1335        size
1336    }
1337    fn write_to(
1338        &self,
1339        __cache: &mut ::buffa::SizeCache,
1340        buf: &mut impl ::buffa::bytes::BufMut,
1341    ) {
1342        #[allow(unused_imports)]
1343        use ::buffa::Enumeration as _;
1344        if self.viewer_id != 0u64 {
1345            ::buffa::types::put_fixed64_field(1u32, self.viewer_id, buf);
1346        }
1347        if self.engine_symbol_id != 0u32 {
1348            ::buffa::types::put_uint32_field(2u32, self.engine_symbol_id, buf);
1349        }
1350        if self.layer.is_set() {
1351            ::buffa::types::put_len_delimited_header(3u32, __cache.consume_next(), buf);
1352            self.layer.write_to(__cache, buf);
1353        }
1354        if !self.alias_name.is_empty() {
1355            ::buffa::types::put_string_field(4u32, &self.alias_name, buf);
1356        }
1357        if self.sort_order != 0i32 {
1358            ::buffa::types::put_int32_field(5u32, self.sort_order, buf);
1359        }
1360        if self.is_enabled {
1361            ::buffa::types::put_bool_field(6u32, self.is_enabled, buf);
1362        }
1363        if self.is_pinned {
1364            ::buffa::types::put_bool_field(7u32, self.is_pinned, buf);
1365        }
1366        if let Some(v) = self.is_visible_override {
1367            ::buffa::types::put_bool_field(8u32, v, buf);
1368        }
1369        if let Some(v) = self.is_locked_override {
1370            ::buffa::types::put_bool_field(9u32, v, buf);
1371        }
1372        self.__buffa_unknown_fields.write_to(buf);
1373    }
1374    fn merge_field(
1375        &mut self,
1376        tag: ::buffa::encoding::Tag,
1377        buf: &mut impl ::buffa::bytes::Buf,
1378        ctx: ::buffa::DecodeContext<'_>,
1379    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
1380        #[allow(unused_imports)]
1381        use ::buffa::bytes::Buf as _;
1382        #[allow(unused_imports)]
1383        use ::buffa::Enumeration as _;
1384        match tag.field_number() {
1385            1u32 => {
1386                ::buffa::encoding::check_wire_type(
1387                    tag,
1388                    ::buffa::encoding::WireType::Fixed64,
1389                )?;
1390                self.viewer_id = ::buffa::types::decode_fixed64(buf)?;
1391            }
1392            2u32 => {
1393                ::buffa::encoding::check_wire_type(
1394                    tag,
1395                    ::buffa::encoding::WireType::Varint,
1396                )?;
1397                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
1398            }
1399            3u32 => {
1400                ::buffa::encoding::check_wire_type(
1401                    tag,
1402                    ::buffa::encoding::WireType::LengthDelimited,
1403                )?;
1404                ::buffa::Message::merge_length_delimited(
1405                    self.layer.get_or_insert_default(),
1406                    buf,
1407                    ctx,
1408                )?;
1409            }
1410            4u32 => {
1411                ::buffa::encoding::check_wire_type(
1412                    tag,
1413                    ::buffa::encoding::WireType::LengthDelimited,
1414                )?;
1415                ::buffa::types::merge_string(&mut self.alias_name, buf)?;
1416            }
1417            5u32 => {
1418                ::buffa::encoding::check_wire_type(
1419                    tag,
1420                    ::buffa::encoding::WireType::Varint,
1421                )?;
1422                self.sort_order = ::buffa::types::decode_int32(buf)?;
1423            }
1424            6u32 => {
1425                ::buffa::encoding::check_wire_type(
1426                    tag,
1427                    ::buffa::encoding::WireType::Varint,
1428                )?;
1429                self.is_enabled = ::buffa::types::decode_bool(buf)?;
1430            }
1431            7u32 => {
1432                ::buffa::encoding::check_wire_type(
1433                    tag,
1434                    ::buffa::encoding::WireType::Varint,
1435                )?;
1436                self.is_pinned = ::buffa::types::decode_bool(buf)?;
1437            }
1438            8u32 => {
1439                ::buffa::encoding::check_wire_type(
1440                    tag,
1441                    ::buffa::encoding::WireType::Varint,
1442                )?;
1443                self.is_visible_override = ::core::option::Option::Some(
1444                    ::buffa::types::decode_bool(buf)?,
1445                );
1446            }
1447            9u32 => {
1448                ::buffa::encoding::check_wire_type(
1449                    tag,
1450                    ::buffa::encoding::WireType::Varint,
1451                )?;
1452                self.is_locked_override = ::core::option::Option::Some(
1453                    ::buffa::types::decode_bool(buf)?,
1454                );
1455            }
1456            _ => {
1457                self.__buffa_unknown_fields
1458                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
1459            }
1460        }
1461        ::core::result::Result::Ok(())
1462    }
1463    fn clear(&mut self) {
1464        self.viewer_id = 0u64;
1465        self.engine_symbol_id = 0u32;
1466        self.layer = ::buffa::MessageField::none();
1467        self.alias_name.clear();
1468        self.sort_order = 0i32;
1469        self.is_enabled = false;
1470        self.is_pinned = false;
1471        self.is_visible_override = ::core::option::Option::None;
1472        self.is_locked_override = ::core::option::Option::None;
1473        self.__buffa_unknown_fields.clear();
1474    }
1475}
1476impl ::buffa::ExtensionSet for LayerSubscription {
1477    const PROTO_FQN: &'static str = "polychart.v1.LayerSubscription";
1478    fn unknown_fields(&self) -> &::buffa::UnknownFields {
1479        &self.__buffa_unknown_fields
1480    }
1481    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
1482        &mut self.__buffa_unknown_fields
1483    }
1484}
1485impl ::buffa::json_helpers::ProtoElemJson for LayerSubscription {
1486    fn serialize_proto_json<S: ::serde::Serializer>(
1487        v: &Self,
1488        s: S,
1489    ) -> ::core::result::Result<S::Ok, S::Error> {
1490        ::serde::Serialize::serialize(v, s)
1491    }
1492    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
1493        d: D,
1494    ) -> ::core::result::Result<Self, D::Error> {
1495        <Self as ::serde::Deserialize>::deserialize(d)
1496    }
1497}
1498#[doc(hidden)]
1499pub const __LAYER_SUBSCRIPTION_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
1500    type_url: "type.googleapis.com/polychart.v1.LayerSubscription",
1501    to_json: ::buffa::type_registry::any_to_json::<LayerSubscription>,
1502    from_json: ::buffa::type_registry::any_from_json::<LayerSubscription>,
1503    is_wkt: false,
1504};
1505/// =============================================================================
1506/// Snapshots
1507/// =============================================================================
1508///
1509/// Load viewer's subscribed layers + drawings for a market.
1510#[derive(Clone, PartialEq, Default)]
1511#[derive(::serde::Serialize, ::serde::Deserialize)]
1512#[serde(default)]
1513pub struct GetMarketLayersRequest {
1514    /// Engine symbol identifier for the market to load.
1515    ///
1516    /// Field 1: `engine_symbol_id`
1517    #[serde(
1518        rename = "engineSymbolId",
1519        alias = "engine_symbol_id",
1520        with = "::buffa::json_helpers::uint32",
1521        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
1522    )]
1523    pub engine_symbol_id: u32,
1524    #[serde(skip)]
1525    #[doc(hidden)]
1526    pub __buffa_unknown_fields: ::buffa::UnknownFields,
1527}
1528impl ::core::fmt::Debug for GetMarketLayersRequest {
1529    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1530        f.debug_struct("GetMarketLayersRequest")
1531            .field("engine_symbol_id", &self.engine_symbol_id)
1532            .finish()
1533    }
1534}
1535impl GetMarketLayersRequest {
1536    /// Protobuf type URL for this message, for use with `Any::pack` and
1537    /// `Any::unpack_if`.
1538    ///
1539    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
1540    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersRequest";
1541}
1542::buffa::impl_default_instance!(GetMarketLayersRequest);
1543impl ::buffa::MessageName for GetMarketLayersRequest {
1544    const PACKAGE: &'static str = "polychart.v1";
1545    const NAME: &'static str = "GetMarketLayersRequest";
1546    const FULL_NAME: &'static str = "polychart.v1.GetMarketLayersRequest";
1547    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersRequest";
1548}
1549impl ::buffa::Message for GetMarketLayersRequest {
1550    /// Returns the total encoded size in bytes.
1551    ///
1552    /// The result is a `u32`; the protobuf specification requires all
1553    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
1554    /// compliant message will never overflow this type.
1555    #[allow(clippy::let_and_return)]
1556    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
1557        #[allow(unused_imports)]
1558        use ::buffa::Enumeration as _;
1559        let mut size = 0u32;
1560        if self.engine_symbol_id != 0u32 {
1561            size
1562                += 1u32
1563                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
1564        }
1565        size += self.__buffa_unknown_fields.encoded_len() as u32;
1566        size
1567    }
1568    fn write_to(
1569        &self,
1570        _cache: &mut ::buffa::SizeCache,
1571        buf: &mut impl ::buffa::bytes::BufMut,
1572    ) {
1573        #[allow(unused_imports)]
1574        use ::buffa::Enumeration as _;
1575        if self.engine_symbol_id != 0u32 {
1576            ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
1577        }
1578        self.__buffa_unknown_fields.write_to(buf);
1579    }
1580    fn merge_field(
1581        &mut self,
1582        tag: ::buffa::encoding::Tag,
1583        buf: &mut impl ::buffa::bytes::Buf,
1584        ctx: ::buffa::DecodeContext<'_>,
1585    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
1586        #[allow(unused_imports)]
1587        use ::buffa::bytes::Buf as _;
1588        #[allow(unused_imports)]
1589        use ::buffa::Enumeration as _;
1590        match tag.field_number() {
1591            1u32 => {
1592                ::buffa::encoding::check_wire_type(
1593                    tag,
1594                    ::buffa::encoding::WireType::Varint,
1595                )?;
1596                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
1597            }
1598            _ => {
1599                self.__buffa_unknown_fields
1600                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
1601            }
1602        }
1603        ::core::result::Result::Ok(())
1604    }
1605    fn clear(&mut self) {
1606        self.engine_symbol_id = 0u32;
1607        self.__buffa_unknown_fields.clear();
1608    }
1609}
1610impl ::buffa::ExtensionSet for GetMarketLayersRequest {
1611    const PROTO_FQN: &'static str = "polychart.v1.GetMarketLayersRequest";
1612    fn unknown_fields(&self) -> &::buffa::UnknownFields {
1613        &self.__buffa_unknown_fields
1614    }
1615    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
1616        &mut self.__buffa_unknown_fields
1617    }
1618}
1619impl ::buffa::json_helpers::ProtoElemJson for GetMarketLayersRequest {
1620    fn serialize_proto_json<S: ::serde::Serializer>(
1621        v: &Self,
1622        s: S,
1623    ) -> ::core::result::Result<S::Ok, S::Error> {
1624        ::serde::Serialize::serialize(v, s)
1625    }
1626    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
1627        d: D,
1628    ) -> ::core::result::Result<Self, D::Error> {
1629        <Self as ::serde::Deserialize>::deserialize(d)
1630    }
1631}
1632#[doc(hidden)]
1633pub const __GET_MARKET_LAYERS_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
1634    type_url: "type.googleapis.com/polychart.v1.GetMarketLayersRequest",
1635    to_json: ::buffa::type_registry::any_to_json::<GetMarketLayersRequest>,
1636    from_json: ::buffa::type_registry::any_from_json::<GetMarketLayersRequest>,
1637    is_wkt: false,
1638};
1639/// GetMarketLayersResponse returns subscribed layer metadata and enabled drawing snapshots.
1640#[derive(Clone, PartialEq, Default)]
1641#[derive(::serde::Serialize, ::serde::Deserialize)]
1642#[serde(default)]
1643pub struct GetMarketLayersResponse {
1644    /// Engine symbol identifier for the returned market.
1645    ///
1646    /// Field 1: `engine_symbol_id`
1647    #[serde(
1648        rename = "engineSymbolId",
1649        alias = "engine_symbol_id",
1650        with = "::buffa::json_helpers::uint32",
1651        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
1652    )]
1653    pub engine_symbol_id: u32,
1654    /// Caller subscriptions for the market.
1655    ///
1656    /// Field 2: `subscriptions`
1657    #[serde(
1658        rename = "subscriptions",
1659        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
1660        deserialize_with = "::buffa::json_helpers::null_as_default"
1661    )]
1662    pub subscriptions: ::buffa::alloc::vec::Vec<LayerSubscription>,
1663    /// Only layers referenced by `subscriptions` are returned here.
1664    ///
1665    /// Field 3: `layers`
1666    #[serde(
1667        rename = "layers",
1668        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
1669        deserialize_with = "::buffa::json_helpers::null_as_default"
1670    )]
1671    pub layers: ::buffa::alloc::vec::Vec<Layer>,
1672    /// Drawings are returned only for enabled subscriptions (avoid huge payloads).
1673    ///
1674    /// Field 4: `drawings`
1675    #[serde(
1676        rename = "drawings",
1677        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
1678        deserialize_with = "::buffa::json_helpers::null_as_default"
1679    )]
1680    pub drawings: ::buffa::alloc::vec::Vec<Drawing>,
1681    #[serde(skip)]
1682    #[doc(hidden)]
1683    pub __buffa_unknown_fields: ::buffa::UnknownFields,
1684}
1685impl ::core::fmt::Debug for GetMarketLayersResponse {
1686    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1687        f.debug_struct("GetMarketLayersResponse")
1688            .field("engine_symbol_id", &self.engine_symbol_id)
1689            .field("subscriptions", &self.subscriptions)
1690            .field("layers", &self.layers)
1691            .field("drawings", &self.drawings)
1692            .finish()
1693    }
1694}
1695impl GetMarketLayersResponse {
1696    /// Protobuf type URL for this message, for use with `Any::pack` and
1697    /// `Any::unpack_if`.
1698    ///
1699    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
1700    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersResponse";
1701}
1702::buffa::impl_default_instance!(GetMarketLayersResponse);
1703impl ::buffa::MessageName for GetMarketLayersResponse {
1704    const PACKAGE: &'static str = "polychart.v1";
1705    const NAME: &'static str = "GetMarketLayersResponse";
1706    const FULL_NAME: &'static str = "polychart.v1.GetMarketLayersResponse";
1707    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersResponse";
1708}
1709impl ::buffa::Message for GetMarketLayersResponse {
1710    /// Returns the total encoded size in bytes.
1711    ///
1712    /// The result is a `u32`; the protobuf specification requires all
1713    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
1714    /// compliant message will never overflow this type.
1715    #[allow(clippy::let_and_return)]
1716    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
1717        #[allow(unused_imports)]
1718        use ::buffa::Enumeration as _;
1719        let mut size = 0u32;
1720        if self.engine_symbol_id != 0u32 {
1721            size
1722                += 1u32
1723                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
1724        }
1725        for v in &self.subscriptions {
1726            let __slot = __cache.reserve();
1727            let inner_size = v.compute_size(__cache);
1728            __cache.set(__slot, inner_size);
1729            size
1730                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
1731                    + inner_size;
1732        }
1733        for v in &self.layers {
1734            let __slot = __cache.reserve();
1735            let inner_size = v.compute_size(__cache);
1736            __cache.set(__slot, inner_size);
1737            size
1738                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
1739                    + inner_size;
1740        }
1741        for v in &self.drawings {
1742            let __slot = __cache.reserve();
1743            let inner_size = v.compute_size(__cache);
1744            __cache.set(__slot, inner_size);
1745            size
1746                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
1747                    + inner_size;
1748        }
1749        size += self.__buffa_unknown_fields.encoded_len() as u32;
1750        size
1751    }
1752    fn write_to(
1753        &self,
1754        __cache: &mut ::buffa::SizeCache,
1755        buf: &mut impl ::buffa::bytes::BufMut,
1756    ) {
1757        #[allow(unused_imports)]
1758        use ::buffa::Enumeration as _;
1759        if self.engine_symbol_id != 0u32 {
1760            ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
1761        }
1762        for v in &self.subscriptions {
1763            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
1764            v.write_to(__cache, buf);
1765        }
1766        for v in &self.layers {
1767            ::buffa::types::put_len_delimited_header(3u32, __cache.consume_next(), buf);
1768            v.write_to(__cache, buf);
1769        }
1770        for v in &self.drawings {
1771            ::buffa::types::put_len_delimited_header(4u32, __cache.consume_next(), buf);
1772            v.write_to(__cache, buf);
1773        }
1774        self.__buffa_unknown_fields.write_to(buf);
1775    }
1776    fn merge_field(
1777        &mut self,
1778        tag: ::buffa::encoding::Tag,
1779        buf: &mut impl ::buffa::bytes::Buf,
1780        ctx: ::buffa::DecodeContext<'_>,
1781    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
1782        #[allow(unused_imports)]
1783        use ::buffa::bytes::Buf as _;
1784        #[allow(unused_imports)]
1785        use ::buffa::Enumeration as _;
1786        match tag.field_number() {
1787            1u32 => {
1788                ::buffa::encoding::check_wire_type(
1789                    tag,
1790                    ::buffa::encoding::WireType::Varint,
1791                )?;
1792                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
1793            }
1794            2u32 => {
1795                ::buffa::encoding::check_wire_type(
1796                    tag,
1797                    ::buffa::encoding::WireType::LengthDelimited,
1798                )?;
1799                let mut elem = ::core::default::Default::default();
1800                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
1801                self.subscriptions.push(elem);
1802            }
1803            3u32 => {
1804                ::buffa::encoding::check_wire_type(
1805                    tag,
1806                    ::buffa::encoding::WireType::LengthDelimited,
1807                )?;
1808                let mut elem = ::core::default::Default::default();
1809                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
1810                self.layers.push(elem);
1811            }
1812            4u32 => {
1813                ::buffa::encoding::check_wire_type(
1814                    tag,
1815                    ::buffa::encoding::WireType::LengthDelimited,
1816                )?;
1817                let mut elem = ::core::default::Default::default();
1818                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
1819                self.drawings.push(elem);
1820            }
1821            _ => {
1822                self.__buffa_unknown_fields
1823                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
1824            }
1825        }
1826        ::core::result::Result::Ok(())
1827    }
1828    fn clear(&mut self) {
1829        self.engine_symbol_id = 0u32;
1830        self.subscriptions.clear();
1831        self.layers.clear();
1832        self.drawings.clear();
1833        self.__buffa_unknown_fields.clear();
1834    }
1835}
1836impl ::buffa::ExtensionSet for GetMarketLayersResponse {
1837    const PROTO_FQN: &'static str = "polychart.v1.GetMarketLayersResponse";
1838    fn unknown_fields(&self) -> &::buffa::UnknownFields {
1839        &self.__buffa_unknown_fields
1840    }
1841    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
1842        &mut self.__buffa_unknown_fields
1843    }
1844}
1845impl ::buffa::json_helpers::ProtoElemJson for GetMarketLayersResponse {
1846    fn serialize_proto_json<S: ::serde::Serializer>(
1847        v: &Self,
1848        s: S,
1849    ) -> ::core::result::Result<S::Ok, S::Error> {
1850        ::serde::Serialize::serialize(v, s)
1851    }
1852    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
1853        d: D,
1854    ) -> ::core::result::Result<Self, D::Error> {
1855        <Self as ::serde::Deserialize>::deserialize(d)
1856    }
1857}
1858#[doc(hidden)]
1859pub const __GET_MARKET_LAYERS_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
1860    type_url: "type.googleapis.com/polychart.v1.GetMarketLayersResponse",
1861    to_json: ::buffa::type_registry::any_to_json::<GetMarketLayersResponse>,
1862    from_json: ::buffa::type_registry::any_from_json::<GetMarketLayersResponse>,
1863    is_wkt: false,
1864};
1865/// List layers explicitly shared to the viewer for a market (metadata only; no drawings).
1866/// This is the viewer's "inbox" for FOLLOWERS/GROUP/USER shares.
1867/// It must NOT act as a global directory of PUBLIC layers.
1868#[derive(Clone, PartialEq, Default)]
1869#[derive(::serde::Serialize, ::serde::Deserialize)]
1870#[serde(default)]
1871pub struct ListInboxMarketLayersRequest {
1872    /// Engine symbol identifier for the market inbox.
1873    ///
1874    /// Field 1: `engine_symbol_id`
1875    #[serde(
1876        rename = "engineSymbolId",
1877        alias = "engine_symbol_id",
1878        with = "::buffa::json_helpers::uint32",
1879        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
1880    )]
1881    pub engine_symbol_id: u32,
1882    /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
1883    /// is 500.
1884    ///
1885    /// Field 2: `limit`
1886    #[serde(
1887        rename = "limit",
1888        with = "::buffa::json_helpers::uint32",
1889        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
1890    )]
1891    pub limit: u32,
1892    /// Opaque keyset cursor from a previous response. The cursor is exclusive and
1893    /// bound to caller, market, and inbox sort order.
1894    ///
1895    /// Field 3: `page_token`
1896    #[serde(
1897        rename = "pageToken",
1898        alias = "page_token",
1899        with = "::buffa::json_helpers::proto_string",
1900        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
1901    )]
1902    pub page_token: ::buffa::alloc::string::String,
1903    #[serde(skip)]
1904    #[doc(hidden)]
1905    pub __buffa_unknown_fields: ::buffa::UnknownFields,
1906}
1907impl ::core::fmt::Debug for ListInboxMarketLayersRequest {
1908    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1909        f.debug_struct("ListInboxMarketLayersRequest")
1910            .field("engine_symbol_id", &self.engine_symbol_id)
1911            .field("limit", &self.limit)
1912            .field("page_token", &self.page_token)
1913            .finish()
1914    }
1915}
1916impl ListInboxMarketLayersRequest {
1917    /// Protobuf type URL for this message, for use with `Any::pack` and
1918    /// `Any::unpack_if`.
1919    ///
1920    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
1921    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersRequest";
1922}
1923::buffa::impl_default_instance!(ListInboxMarketLayersRequest);
1924impl ::buffa::MessageName for ListInboxMarketLayersRequest {
1925    const PACKAGE: &'static str = "polychart.v1";
1926    const NAME: &'static str = "ListInboxMarketLayersRequest";
1927    const FULL_NAME: &'static str = "polychart.v1.ListInboxMarketLayersRequest";
1928    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersRequest";
1929}
1930impl ::buffa::Message for ListInboxMarketLayersRequest {
1931    /// Returns the total encoded size in bytes.
1932    ///
1933    /// The result is a `u32`; the protobuf specification requires all
1934    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
1935    /// compliant message will never overflow this type.
1936    #[allow(clippy::let_and_return)]
1937    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
1938        #[allow(unused_imports)]
1939        use ::buffa::Enumeration as _;
1940        let mut size = 0u32;
1941        if self.engine_symbol_id != 0u32 {
1942            size
1943                += 1u32
1944                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
1945        }
1946        if self.limit != 0u32 {
1947            size += 1u32 + ::buffa::types::uint32_encoded_len(self.limit) as u32;
1948        }
1949        if !self.page_token.is_empty() {
1950            size += 1u32 + ::buffa::types::string_encoded_len(&self.page_token) as u32;
1951        }
1952        size += self.__buffa_unknown_fields.encoded_len() as u32;
1953        size
1954    }
1955    fn write_to(
1956        &self,
1957        _cache: &mut ::buffa::SizeCache,
1958        buf: &mut impl ::buffa::bytes::BufMut,
1959    ) {
1960        #[allow(unused_imports)]
1961        use ::buffa::Enumeration as _;
1962        if self.engine_symbol_id != 0u32 {
1963            ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
1964        }
1965        if self.limit != 0u32 {
1966            ::buffa::types::put_uint32_field(2u32, self.limit, buf);
1967        }
1968        if !self.page_token.is_empty() {
1969            ::buffa::types::put_string_field(3u32, &self.page_token, buf);
1970        }
1971        self.__buffa_unknown_fields.write_to(buf);
1972    }
1973    fn merge_field(
1974        &mut self,
1975        tag: ::buffa::encoding::Tag,
1976        buf: &mut impl ::buffa::bytes::Buf,
1977        ctx: ::buffa::DecodeContext<'_>,
1978    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
1979        #[allow(unused_imports)]
1980        use ::buffa::bytes::Buf as _;
1981        #[allow(unused_imports)]
1982        use ::buffa::Enumeration as _;
1983        match tag.field_number() {
1984            1u32 => {
1985                ::buffa::encoding::check_wire_type(
1986                    tag,
1987                    ::buffa::encoding::WireType::Varint,
1988                )?;
1989                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
1990            }
1991            2u32 => {
1992                ::buffa::encoding::check_wire_type(
1993                    tag,
1994                    ::buffa::encoding::WireType::Varint,
1995                )?;
1996                self.limit = ::buffa::types::decode_uint32(buf)?;
1997            }
1998            3u32 => {
1999                ::buffa::encoding::check_wire_type(
2000                    tag,
2001                    ::buffa::encoding::WireType::LengthDelimited,
2002                )?;
2003                ::buffa::types::merge_string(&mut self.page_token, buf)?;
2004            }
2005            _ => {
2006                self.__buffa_unknown_fields
2007                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2008            }
2009        }
2010        ::core::result::Result::Ok(())
2011    }
2012    fn clear(&mut self) {
2013        self.engine_symbol_id = 0u32;
2014        self.limit = 0u32;
2015        self.page_token.clear();
2016        self.__buffa_unknown_fields.clear();
2017    }
2018}
2019impl ::buffa::ExtensionSet for ListInboxMarketLayersRequest {
2020    const PROTO_FQN: &'static str = "polychart.v1.ListInboxMarketLayersRequest";
2021    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2022        &self.__buffa_unknown_fields
2023    }
2024    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2025        &mut self.__buffa_unknown_fields
2026    }
2027}
2028impl ::buffa::json_helpers::ProtoElemJson for ListInboxMarketLayersRequest {
2029    fn serialize_proto_json<S: ::serde::Serializer>(
2030        v: &Self,
2031        s: S,
2032    ) -> ::core::result::Result<S::Ok, S::Error> {
2033        ::serde::Serialize::serialize(v, s)
2034    }
2035    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2036        d: D,
2037    ) -> ::core::result::Result<Self, D::Error> {
2038        <Self as ::serde::Deserialize>::deserialize(d)
2039    }
2040}
2041#[doc(hidden)]
2042pub const __LIST_INBOX_MARKET_LAYERS_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2043    type_url: "type.googleapis.com/polychart.v1.ListInboxMarketLayersRequest",
2044    to_json: ::buffa::type_registry::any_to_json::<ListInboxMarketLayersRequest>,
2045    from_json: ::buffa::type_registry::any_from_json::<ListInboxMarketLayersRequest>,
2046    is_wkt: false,
2047};
2048/// ListInboxMarketLayersResponse returns metadata-only shared layers for one market.
2049#[derive(Clone, PartialEq, Default)]
2050#[derive(::serde::Serialize, ::serde::Deserialize)]
2051#[serde(default)]
2052pub struct ListInboxMarketLayersResponse {
2053    /// Engine symbol identifier for the returned market.
2054    ///
2055    /// Field 1: `engine_symbol_id`
2056    #[serde(
2057        rename = "engineSymbolId",
2058        alias = "engine_symbol_id",
2059        with = "::buffa::json_helpers::uint32",
2060        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
2061    )]
2062    pub engine_symbol_id: u32,
2063    /// Shared layer metadata only; drawings are not included.
2064    ///
2065    /// Field 2: `layers`
2066    #[serde(
2067        rename = "layers",
2068        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
2069        deserialize_with = "::buffa::json_helpers::null_as_default"
2070    )]
2071    pub layers: ::buffa::alloc::vec::Vec<Layer>,
2072    /// Opaque cursor for the next page. Empty when no more results exist.
2073    ///
2074    /// Field 3: `next_page_token`
2075    #[serde(
2076        rename = "nextPageToken",
2077        alias = "next_page_token",
2078        with = "::buffa::json_helpers::proto_string",
2079        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
2080    )]
2081    pub next_page_token: ::buffa::alloc::string::String,
2082    #[serde(skip)]
2083    #[doc(hidden)]
2084    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2085}
2086impl ::core::fmt::Debug for ListInboxMarketLayersResponse {
2087    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2088        f.debug_struct("ListInboxMarketLayersResponse")
2089            .field("engine_symbol_id", &self.engine_symbol_id)
2090            .field("layers", &self.layers)
2091            .field("next_page_token", &self.next_page_token)
2092            .finish()
2093    }
2094}
2095impl ListInboxMarketLayersResponse {
2096    /// Protobuf type URL for this message, for use with `Any::pack` and
2097    /// `Any::unpack_if`.
2098    ///
2099    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2100    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersResponse";
2101}
2102::buffa::impl_default_instance!(ListInboxMarketLayersResponse);
2103impl ::buffa::MessageName for ListInboxMarketLayersResponse {
2104    const PACKAGE: &'static str = "polychart.v1";
2105    const NAME: &'static str = "ListInboxMarketLayersResponse";
2106    const FULL_NAME: &'static str = "polychart.v1.ListInboxMarketLayersResponse";
2107    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersResponse";
2108}
2109impl ::buffa::Message for ListInboxMarketLayersResponse {
2110    /// Returns the total encoded size in bytes.
2111    ///
2112    /// The result is a `u32`; the protobuf specification requires all
2113    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2114    /// compliant message will never overflow this type.
2115    #[allow(clippy::let_and_return)]
2116    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
2117        #[allow(unused_imports)]
2118        use ::buffa::Enumeration as _;
2119        let mut size = 0u32;
2120        if self.engine_symbol_id != 0u32 {
2121            size
2122                += 1u32
2123                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
2124        }
2125        for v in &self.layers {
2126            let __slot = __cache.reserve();
2127            let inner_size = v.compute_size(__cache);
2128            __cache.set(__slot, inner_size);
2129            size
2130                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2131                    + inner_size;
2132        }
2133        if !self.next_page_token.is_empty() {
2134            size
2135                += 1u32
2136                    + ::buffa::types::string_encoded_len(&self.next_page_token) as u32;
2137        }
2138        size += self.__buffa_unknown_fields.encoded_len() as u32;
2139        size
2140    }
2141    fn write_to(
2142        &self,
2143        __cache: &mut ::buffa::SizeCache,
2144        buf: &mut impl ::buffa::bytes::BufMut,
2145    ) {
2146        #[allow(unused_imports)]
2147        use ::buffa::Enumeration as _;
2148        if self.engine_symbol_id != 0u32 {
2149            ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
2150        }
2151        for v in &self.layers {
2152            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
2153            v.write_to(__cache, buf);
2154        }
2155        if !self.next_page_token.is_empty() {
2156            ::buffa::types::put_string_field(3u32, &self.next_page_token, buf);
2157        }
2158        self.__buffa_unknown_fields.write_to(buf);
2159    }
2160    fn merge_field(
2161        &mut self,
2162        tag: ::buffa::encoding::Tag,
2163        buf: &mut impl ::buffa::bytes::Buf,
2164        ctx: ::buffa::DecodeContext<'_>,
2165    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2166        #[allow(unused_imports)]
2167        use ::buffa::bytes::Buf as _;
2168        #[allow(unused_imports)]
2169        use ::buffa::Enumeration as _;
2170        match tag.field_number() {
2171            1u32 => {
2172                ::buffa::encoding::check_wire_type(
2173                    tag,
2174                    ::buffa::encoding::WireType::Varint,
2175                )?;
2176                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
2177            }
2178            2u32 => {
2179                ::buffa::encoding::check_wire_type(
2180                    tag,
2181                    ::buffa::encoding::WireType::LengthDelimited,
2182                )?;
2183                let mut elem = ::core::default::Default::default();
2184                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
2185                self.layers.push(elem);
2186            }
2187            3u32 => {
2188                ::buffa::encoding::check_wire_type(
2189                    tag,
2190                    ::buffa::encoding::WireType::LengthDelimited,
2191                )?;
2192                ::buffa::types::merge_string(&mut self.next_page_token, buf)?;
2193            }
2194            _ => {
2195                self.__buffa_unknown_fields
2196                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2197            }
2198        }
2199        ::core::result::Result::Ok(())
2200    }
2201    fn clear(&mut self) {
2202        self.engine_symbol_id = 0u32;
2203        self.layers.clear();
2204        self.next_page_token.clear();
2205        self.__buffa_unknown_fields.clear();
2206    }
2207}
2208impl ::buffa::ExtensionSet for ListInboxMarketLayersResponse {
2209    const PROTO_FQN: &'static str = "polychart.v1.ListInboxMarketLayersResponse";
2210    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2211        &self.__buffa_unknown_fields
2212    }
2213    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2214        &mut self.__buffa_unknown_fields
2215    }
2216}
2217impl ::buffa::json_helpers::ProtoElemJson for ListInboxMarketLayersResponse {
2218    fn serialize_proto_json<S: ::serde::Serializer>(
2219        v: &Self,
2220        s: S,
2221    ) -> ::core::result::Result<S::Ok, S::Error> {
2222        ::serde::Serialize::serialize(v, s)
2223    }
2224    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2225        d: D,
2226    ) -> ::core::result::Result<Self, D::Error> {
2227        <Self as ::serde::Deserialize>::deserialize(d)
2228    }
2229}
2230#[doc(hidden)]
2231pub const __LIST_INBOX_MARKET_LAYERS_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2232    type_url: "type.googleapis.com/polychart.v1.ListInboxMarketLayersResponse",
2233    to_json: ::buffa::type_registry::any_to_json::<ListInboxMarketLayersResponse>,
2234    from_json: ::buffa::type_registry::any_from_json::<ListInboxMarketLayersResponse>,
2235    is_wkt: false,
2236};
2237/// Fetch a single layer snapshot for realtime gap recovery and share viewing.
2238#[derive(Clone, PartialEq, Default)]
2239#[derive(::serde::Serialize, ::serde::Deserialize)]
2240#[serde(default)]
2241pub struct GetLayerSnapshotRequest {
2242    /// Layer to fetch.
2243    ///
2244    /// Field 1: `layer`
2245    #[serde(
2246        rename = "layer",
2247        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
2248    )]
2249    pub layer: ::buffa::MessageField<LayerRef>,
2250    #[serde(skip)]
2251    #[doc(hidden)]
2252    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2253}
2254impl ::core::fmt::Debug for GetLayerSnapshotRequest {
2255    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2256        f.debug_struct("GetLayerSnapshotRequest").field("layer", &self.layer).finish()
2257    }
2258}
2259impl GetLayerSnapshotRequest {
2260    /// Protobuf type URL for this message, for use with `Any::pack` and
2261    /// `Any::unpack_if`.
2262    ///
2263    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2264    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotRequest";
2265}
2266::buffa::impl_default_instance!(GetLayerSnapshotRequest);
2267impl ::buffa::MessageName for GetLayerSnapshotRequest {
2268    const PACKAGE: &'static str = "polychart.v1";
2269    const NAME: &'static str = "GetLayerSnapshotRequest";
2270    const FULL_NAME: &'static str = "polychart.v1.GetLayerSnapshotRequest";
2271    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotRequest";
2272}
2273impl ::buffa::Message for GetLayerSnapshotRequest {
2274    /// Returns the total encoded size in bytes.
2275    ///
2276    /// The result is a `u32`; the protobuf specification requires all
2277    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2278    /// compliant message will never overflow this type.
2279    #[allow(clippy::let_and_return)]
2280    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
2281        #[allow(unused_imports)]
2282        use ::buffa::Enumeration as _;
2283        let mut size = 0u32;
2284        if self.layer.is_set() {
2285            let __slot = __cache.reserve();
2286            let inner_size = self.layer.compute_size(__cache);
2287            __cache.set(__slot, inner_size);
2288            size
2289                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2290                    + inner_size;
2291        }
2292        size += self.__buffa_unknown_fields.encoded_len() as u32;
2293        size
2294    }
2295    fn write_to(
2296        &self,
2297        __cache: &mut ::buffa::SizeCache,
2298        buf: &mut impl ::buffa::bytes::BufMut,
2299    ) {
2300        #[allow(unused_imports)]
2301        use ::buffa::Enumeration as _;
2302        if self.layer.is_set() {
2303            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
2304            self.layer.write_to(__cache, buf);
2305        }
2306        self.__buffa_unknown_fields.write_to(buf);
2307    }
2308    fn merge_field(
2309        &mut self,
2310        tag: ::buffa::encoding::Tag,
2311        buf: &mut impl ::buffa::bytes::Buf,
2312        ctx: ::buffa::DecodeContext<'_>,
2313    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2314        #[allow(unused_imports)]
2315        use ::buffa::bytes::Buf as _;
2316        #[allow(unused_imports)]
2317        use ::buffa::Enumeration as _;
2318        match tag.field_number() {
2319            1u32 => {
2320                ::buffa::encoding::check_wire_type(
2321                    tag,
2322                    ::buffa::encoding::WireType::LengthDelimited,
2323                )?;
2324                ::buffa::Message::merge_length_delimited(
2325                    self.layer.get_or_insert_default(),
2326                    buf,
2327                    ctx,
2328                )?;
2329            }
2330            _ => {
2331                self.__buffa_unknown_fields
2332                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2333            }
2334        }
2335        ::core::result::Result::Ok(())
2336    }
2337    fn clear(&mut self) {
2338        self.layer = ::buffa::MessageField::none();
2339        self.__buffa_unknown_fields.clear();
2340    }
2341}
2342impl ::buffa::ExtensionSet for GetLayerSnapshotRequest {
2343    const PROTO_FQN: &'static str = "polychart.v1.GetLayerSnapshotRequest";
2344    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2345        &self.__buffa_unknown_fields
2346    }
2347    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2348        &mut self.__buffa_unknown_fields
2349    }
2350}
2351impl ::buffa::json_helpers::ProtoElemJson for GetLayerSnapshotRequest {
2352    fn serialize_proto_json<S: ::serde::Serializer>(
2353        v: &Self,
2354        s: S,
2355    ) -> ::core::result::Result<S::Ok, S::Error> {
2356        ::serde::Serialize::serialize(v, s)
2357    }
2358    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2359        d: D,
2360    ) -> ::core::result::Result<Self, D::Error> {
2361        <Self as ::serde::Deserialize>::deserialize(d)
2362    }
2363}
2364#[doc(hidden)]
2365pub const __GET_LAYER_SNAPSHOT_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2366    type_url: "type.googleapis.com/polychart.v1.GetLayerSnapshotRequest",
2367    to_json: ::buffa::type_registry::any_to_json::<GetLayerSnapshotRequest>,
2368    from_json: ::buffa::type_registry::any_from_json::<GetLayerSnapshotRequest>,
2369    is_wkt: false,
2370};
2371/// GetLayerSnapshotResponse returns a layer and all non-deleted drawings in it.
2372#[derive(Clone, PartialEq, Default)]
2373#[derive(::serde::Serialize, ::serde::Deserialize)]
2374#[serde(default)]
2375pub struct GetLayerSnapshotResponse {
2376    /// Current layer metadata.
2377    ///
2378    /// Field 1: `layer`
2379    #[serde(
2380        rename = "layer",
2381        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
2382    )]
2383    pub layer: ::buffa::MessageField<Layer>,
2384    /// Drawings currently in the layer.
2385    ///
2386    /// Field 2: `drawings`
2387    #[serde(
2388        rename = "drawings",
2389        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
2390        deserialize_with = "::buffa::json_helpers::null_as_default"
2391    )]
2392    pub drawings: ::buffa::alloc::vec::Vec<Drawing>,
2393    #[serde(skip)]
2394    #[doc(hidden)]
2395    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2396}
2397impl ::core::fmt::Debug for GetLayerSnapshotResponse {
2398    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2399        f.debug_struct("GetLayerSnapshotResponse")
2400            .field("layer", &self.layer)
2401            .field("drawings", &self.drawings)
2402            .finish()
2403    }
2404}
2405impl GetLayerSnapshotResponse {
2406    /// Protobuf type URL for this message, for use with `Any::pack` and
2407    /// `Any::unpack_if`.
2408    ///
2409    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2410    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotResponse";
2411}
2412::buffa::impl_default_instance!(GetLayerSnapshotResponse);
2413impl ::buffa::MessageName for GetLayerSnapshotResponse {
2414    const PACKAGE: &'static str = "polychart.v1";
2415    const NAME: &'static str = "GetLayerSnapshotResponse";
2416    const FULL_NAME: &'static str = "polychart.v1.GetLayerSnapshotResponse";
2417    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotResponse";
2418}
2419impl ::buffa::Message for GetLayerSnapshotResponse {
2420    /// Returns the total encoded size in bytes.
2421    ///
2422    /// The result is a `u32`; the protobuf specification requires all
2423    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2424    /// compliant message will never overflow this type.
2425    #[allow(clippy::let_and_return)]
2426    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
2427        #[allow(unused_imports)]
2428        use ::buffa::Enumeration as _;
2429        let mut size = 0u32;
2430        if self.layer.is_set() {
2431            let __slot = __cache.reserve();
2432            let inner_size = self.layer.compute_size(__cache);
2433            __cache.set(__slot, inner_size);
2434            size
2435                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2436                    + inner_size;
2437        }
2438        for v in &self.drawings {
2439            let __slot = __cache.reserve();
2440            let inner_size = v.compute_size(__cache);
2441            __cache.set(__slot, inner_size);
2442            size
2443                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2444                    + inner_size;
2445        }
2446        size += self.__buffa_unknown_fields.encoded_len() as u32;
2447        size
2448    }
2449    fn write_to(
2450        &self,
2451        __cache: &mut ::buffa::SizeCache,
2452        buf: &mut impl ::buffa::bytes::BufMut,
2453    ) {
2454        #[allow(unused_imports)]
2455        use ::buffa::Enumeration as _;
2456        if self.layer.is_set() {
2457            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
2458            self.layer.write_to(__cache, buf);
2459        }
2460        for v in &self.drawings {
2461            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
2462            v.write_to(__cache, buf);
2463        }
2464        self.__buffa_unknown_fields.write_to(buf);
2465    }
2466    fn merge_field(
2467        &mut self,
2468        tag: ::buffa::encoding::Tag,
2469        buf: &mut impl ::buffa::bytes::Buf,
2470        ctx: ::buffa::DecodeContext<'_>,
2471    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2472        #[allow(unused_imports)]
2473        use ::buffa::bytes::Buf as _;
2474        #[allow(unused_imports)]
2475        use ::buffa::Enumeration as _;
2476        match tag.field_number() {
2477            1u32 => {
2478                ::buffa::encoding::check_wire_type(
2479                    tag,
2480                    ::buffa::encoding::WireType::LengthDelimited,
2481                )?;
2482                ::buffa::Message::merge_length_delimited(
2483                    self.layer.get_or_insert_default(),
2484                    buf,
2485                    ctx,
2486                )?;
2487            }
2488            2u32 => {
2489                ::buffa::encoding::check_wire_type(
2490                    tag,
2491                    ::buffa::encoding::WireType::LengthDelimited,
2492                )?;
2493                let mut elem = ::core::default::Default::default();
2494                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
2495                self.drawings.push(elem);
2496            }
2497            _ => {
2498                self.__buffa_unknown_fields
2499                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2500            }
2501        }
2502        ::core::result::Result::Ok(())
2503    }
2504    fn clear(&mut self) {
2505        self.layer = ::buffa::MessageField::none();
2506        self.drawings.clear();
2507        self.__buffa_unknown_fields.clear();
2508    }
2509}
2510impl ::buffa::ExtensionSet for GetLayerSnapshotResponse {
2511    const PROTO_FQN: &'static str = "polychart.v1.GetLayerSnapshotResponse";
2512    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2513        &self.__buffa_unknown_fields
2514    }
2515    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2516        &mut self.__buffa_unknown_fields
2517    }
2518}
2519impl ::buffa::json_helpers::ProtoElemJson for GetLayerSnapshotResponse {
2520    fn serialize_proto_json<S: ::serde::Serializer>(
2521        v: &Self,
2522        s: S,
2523    ) -> ::core::result::Result<S::Ok, S::Error> {
2524        ::serde::Serialize::serialize(v, s)
2525    }
2526    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2527        d: D,
2528    ) -> ::core::result::Result<Self, D::Error> {
2529        <Self as ::serde::Deserialize>::deserialize(d)
2530    }
2531}
2532#[doc(hidden)]
2533pub const __GET_LAYER_SNAPSHOT_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2534    type_url: "type.googleapis.com/polychart.v1.GetLayerSnapshotResponse",
2535    to_json: ::buffa::type_registry::any_to_json::<GetLayerSnapshotResponse>,
2536    from_json: ::buffa::type_registry::any_from_json::<GetLayerSnapshotResponse>,
2537    is_wkt: false,
2538};
2539/// =============================================================================
2540/// Share links (create/revoke) and share token resolution (no auth)
2541/// =============================================================================
2542///
2543/// Resolve a share token to a layer snapshot. No auth required.
2544/// This is the ONLY unauthenticated API for layers.
2545#[derive(Clone, PartialEq, Default)]
2546#[derive(::serde::Serialize, ::serde::Deserialize)]
2547#[serde(default)]
2548pub struct ResolveLayerShareTokenRequest {
2549    /// Opaque share token from a layer share link.
2550    ///
2551    /// Field 1: `token`
2552    #[serde(
2553        rename = "token",
2554        with = "::buffa::json_helpers::proto_string",
2555        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
2556    )]
2557    pub token: ::buffa::alloc::string::String,
2558    #[serde(skip)]
2559    #[doc(hidden)]
2560    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2561}
2562impl ::core::fmt::Debug for ResolveLayerShareTokenRequest {
2563    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2564        f.debug_struct("ResolveLayerShareTokenRequest")
2565            .field("token", &self.token)
2566            .finish()
2567    }
2568}
2569impl ResolveLayerShareTokenRequest {
2570    /// Protobuf type URL for this message, for use with `Any::pack` and
2571    /// `Any::unpack_if`.
2572    ///
2573    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2574    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenRequest";
2575}
2576::buffa::impl_default_instance!(ResolveLayerShareTokenRequest);
2577impl ::buffa::MessageName for ResolveLayerShareTokenRequest {
2578    const PACKAGE: &'static str = "polychart.v1";
2579    const NAME: &'static str = "ResolveLayerShareTokenRequest";
2580    const FULL_NAME: &'static str = "polychart.v1.ResolveLayerShareTokenRequest";
2581    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenRequest";
2582}
2583impl ::buffa::Message for ResolveLayerShareTokenRequest {
2584    /// Returns the total encoded size in bytes.
2585    ///
2586    /// The result is a `u32`; the protobuf specification requires all
2587    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2588    /// compliant message will never overflow this type.
2589    #[allow(clippy::let_and_return)]
2590    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
2591        #[allow(unused_imports)]
2592        use ::buffa::Enumeration as _;
2593        let mut size = 0u32;
2594        if !self.token.is_empty() {
2595            size += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
2596        }
2597        size += self.__buffa_unknown_fields.encoded_len() as u32;
2598        size
2599    }
2600    fn write_to(
2601        &self,
2602        _cache: &mut ::buffa::SizeCache,
2603        buf: &mut impl ::buffa::bytes::BufMut,
2604    ) {
2605        #[allow(unused_imports)]
2606        use ::buffa::Enumeration as _;
2607        if !self.token.is_empty() {
2608            ::buffa::types::put_string_field(1u32, &self.token, buf);
2609        }
2610        self.__buffa_unknown_fields.write_to(buf);
2611    }
2612    fn merge_field(
2613        &mut self,
2614        tag: ::buffa::encoding::Tag,
2615        buf: &mut impl ::buffa::bytes::Buf,
2616        ctx: ::buffa::DecodeContext<'_>,
2617    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2618        #[allow(unused_imports)]
2619        use ::buffa::bytes::Buf as _;
2620        #[allow(unused_imports)]
2621        use ::buffa::Enumeration as _;
2622        match tag.field_number() {
2623            1u32 => {
2624                ::buffa::encoding::check_wire_type(
2625                    tag,
2626                    ::buffa::encoding::WireType::LengthDelimited,
2627                )?;
2628                ::buffa::types::merge_string(&mut self.token, buf)?;
2629            }
2630            _ => {
2631                self.__buffa_unknown_fields
2632                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2633            }
2634        }
2635        ::core::result::Result::Ok(())
2636    }
2637    fn clear(&mut self) {
2638        self.token.clear();
2639        self.__buffa_unknown_fields.clear();
2640    }
2641}
2642impl ::buffa::ExtensionSet for ResolveLayerShareTokenRequest {
2643    const PROTO_FQN: &'static str = "polychart.v1.ResolveLayerShareTokenRequest";
2644    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2645        &self.__buffa_unknown_fields
2646    }
2647    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2648        &mut self.__buffa_unknown_fields
2649    }
2650}
2651impl ::buffa::json_helpers::ProtoElemJson for ResolveLayerShareTokenRequest {
2652    fn serialize_proto_json<S: ::serde::Serializer>(
2653        v: &Self,
2654        s: S,
2655    ) -> ::core::result::Result<S::Ok, S::Error> {
2656        ::serde::Serialize::serialize(v, s)
2657    }
2658    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2659        d: D,
2660    ) -> ::core::result::Result<Self, D::Error> {
2661        <Self as ::serde::Deserialize>::deserialize(d)
2662    }
2663}
2664#[doc(hidden)]
2665pub const __RESOLVE_LAYER_SHARE_TOKEN_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2666    type_url: "type.googleapis.com/polychart.v1.ResolveLayerShareTokenRequest",
2667    to_json: ::buffa::type_registry::any_to_json::<ResolveLayerShareTokenRequest>,
2668    from_json: ::buffa::type_registry::any_from_json::<ResolveLayerShareTokenRequest>,
2669    is_wkt: false,
2670};
2671/// ResolveLayerShareTokenResponse returns a view-only layer snapshot for a valid share token.
2672#[derive(Clone, PartialEq, Default)]
2673#[derive(::serde::Serialize, ::serde::Deserialize)]
2674#[serde(default)]
2675pub struct ResolveLayerShareTokenResponse {
2676    /// Shared layer metadata.
2677    ///
2678    /// Field 1: `layer`
2679    #[serde(
2680        rename = "layer",
2681        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
2682    )]
2683    pub layer: ::buffa::MessageField<Layer>,
2684    /// Drawings currently in the shared layer.
2685    ///
2686    /// Field 2: `drawings`
2687    #[serde(
2688        rename = "drawings",
2689        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
2690        deserialize_with = "::buffa::json_helpers::null_as_default"
2691    )]
2692    pub drawings: ::buffa::alloc::vec::Vec<Drawing>,
2693    /// Optional short-lived realtime subscribe token scoped to this layer.
2694    ///
2695    /// Field 3: `centrifugo_sub_token`
2696    #[serde(
2697        rename = "centrifugoSubToken",
2698        alias = "centrifugo_sub_token",
2699        with = "::buffa::json_helpers::proto_string",
2700        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
2701    )]
2702    pub centrifugo_sub_token: ::buffa::alloc::string::String,
2703    #[serde(skip)]
2704    #[doc(hidden)]
2705    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2706}
2707impl ::core::fmt::Debug for ResolveLayerShareTokenResponse {
2708    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2709        f.debug_struct("ResolveLayerShareTokenResponse")
2710            .field("layer", &self.layer)
2711            .field("drawings", &self.drawings)
2712            .field("centrifugo_sub_token", &self.centrifugo_sub_token)
2713            .finish()
2714    }
2715}
2716impl ResolveLayerShareTokenResponse {
2717    /// Protobuf type URL for this message, for use with `Any::pack` and
2718    /// `Any::unpack_if`.
2719    ///
2720    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2721    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenResponse";
2722}
2723::buffa::impl_default_instance!(ResolveLayerShareTokenResponse);
2724impl ::buffa::MessageName for ResolveLayerShareTokenResponse {
2725    const PACKAGE: &'static str = "polychart.v1";
2726    const NAME: &'static str = "ResolveLayerShareTokenResponse";
2727    const FULL_NAME: &'static str = "polychart.v1.ResolveLayerShareTokenResponse";
2728    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenResponse";
2729}
2730impl ::buffa::Message for ResolveLayerShareTokenResponse {
2731    /// Returns the total encoded size in bytes.
2732    ///
2733    /// The result is a `u32`; the protobuf specification requires all
2734    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2735    /// compliant message will never overflow this type.
2736    #[allow(clippy::let_and_return)]
2737    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
2738        #[allow(unused_imports)]
2739        use ::buffa::Enumeration as _;
2740        let mut size = 0u32;
2741        if self.layer.is_set() {
2742            let __slot = __cache.reserve();
2743            let inner_size = self.layer.compute_size(__cache);
2744            __cache.set(__slot, inner_size);
2745            size
2746                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2747                    + inner_size;
2748        }
2749        for v in &self.drawings {
2750            let __slot = __cache.reserve();
2751            let inner_size = v.compute_size(__cache);
2752            __cache.set(__slot, inner_size);
2753            size
2754                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2755                    + inner_size;
2756        }
2757        if !self.centrifugo_sub_token.is_empty() {
2758            size
2759                += 1u32
2760                    + ::buffa::types::string_encoded_len(&self.centrifugo_sub_token)
2761                        as u32;
2762        }
2763        size += self.__buffa_unknown_fields.encoded_len() as u32;
2764        size
2765    }
2766    fn write_to(
2767        &self,
2768        __cache: &mut ::buffa::SizeCache,
2769        buf: &mut impl ::buffa::bytes::BufMut,
2770    ) {
2771        #[allow(unused_imports)]
2772        use ::buffa::Enumeration as _;
2773        if self.layer.is_set() {
2774            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
2775            self.layer.write_to(__cache, buf);
2776        }
2777        for v in &self.drawings {
2778            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
2779            v.write_to(__cache, buf);
2780        }
2781        if !self.centrifugo_sub_token.is_empty() {
2782            ::buffa::types::put_string_field(3u32, &self.centrifugo_sub_token, buf);
2783        }
2784        self.__buffa_unknown_fields.write_to(buf);
2785    }
2786    fn merge_field(
2787        &mut self,
2788        tag: ::buffa::encoding::Tag,
2789        buf: &mut impl ::buffa::bytes::Buf,
2790        ctx: ::buffa::DecodeContext<'_>,
2791    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2792        #[allow(unused_imports)]
2793        use ::buffa::bytes::Buf as _;
2794        #[allow(unused_imports)]
2795        use ::buffa::Enumeration as _;
2796        match tag.field_number() {
2797            1u32 => {
2798                ::buffa::encoding::check_wire_type(
2799                    tag,
2800                    ::buffa::encoding::WireType::LengthDelimited,
2801                )?;
2802                ::buffa::Message::merge_length_delimited(
2803                    self.layer.get_or_insert_default(),
2804                    buf,
2805                    ctx,
2806                )?;
2807            }
2808            2u32 => {
2809                ::buffa::encoding::check_wire_type(
2810                    tag,
2811                    ::buffa::encoding::WireType::LengthDelimited,
2812                )?;
2813                let mut elem = ::core::default::Default::default();
2814                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
2815                self.drawings.push(elem);
2816            }
2817            3u32 => {
2818                ::buffa::encoding::check_wire_type(
2819                    tag,
2820                    ::buffa::encoding::WireType::LengthDelimited,
2821                )?;
2822                ::buffa::types::merge_string(&mut self.centrifugo_sub_token, buf)?;
2823            }
2824            _ => {
2825                self.__buffa_unknown_fields
2826                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2827            }
2828        }
2829        ::core::result::Result::Ok(())
2830    }
2831    fn clear(&mut self) {
2832        self.layer = ::buffa::MessageField::none();
2833        self.drawings.clear();
2834        self.centrifugo_sub_token.clear();
2835        self.__buffa_unknown_fields.clear();
2836    }
2837}
2838impl ::buffa::ExtensionSet for ResolveLayerShareTokenResponse {
2839    const PROTO_FQN: &'static str = "polychart.v1.ResolveLayerShareTokenResponse";
2840    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2841        &self.__buffa_unknown_fields
2842    }
2843    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2844        &mut self.__buffa_unknown_fields
2845    }
2846}
2847impl ::buffa::json_helpers::ProtoElemJson for ResolveLayerShareTokenResponse {
2848    fn serialize_proto_json<S: ::serde::Serializer>(
2849        v: &Self,
2850        s: S,
2851    ) -> ::core::result::Result<S::Ok, S::Error> {
2852        ::serde::Serialize::serialize(v, s)
2853    }
2854    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2855        d: D,
2856    ) -> ::core::result::Result<Self, D::Error> {
2857        <Self as ::serde::Deserialize>::deserialize(d)
2858    }
2859}
2860#[doc(hidden)]
2861pub const __RESOLVE_LAYER_SHARE_TOKEN_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2862    type_url: "type.googleapis.com/polychart.v1.ResolveLayerShareTokenResponse",
2863    to_json: ::buffa::type_registry::any_to_json::<ResolveLayerShareTokenResponse>,
2864    from_json: ::buffa::type_registry::any_from_json::<ResolveLayerShareTokenResponse>,
2865    is_wkt: false,
2866};
2867/// Authenticated viewers request realtime subscribe tokens for layer channels.
2868#[derive(Clone, PartialEq, Default)]
2869#[derive(::serde::Serialize, ::serde::Deserialize)]
2870#[serde(default)]
2871pub struct GetLayerSubscribeTokensRequest {
2872    /// Layers for which the caller needs subscribe tokens.
2873    ///
2874    /// Field 1: `layers`
2875    #[serde(
2876        rename = "layers",
2877        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
2878        deserialize_with = "::buffa::json_helpers::null_as_default"
2879    )]
2880    pub layers: ::buffa::alloc::vec::Vec<LayerRef>,
2881    #[serde(skip)]
2882    #[doc(hidden)]
2883    pub __buffa_unknown_fields: ::buffa::UnknownFields,
2884}
2885impl ::core::fmt::Debug for GetLayerSubscribeTokensRequest {
2886    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2887        f.debug_struct("GetLayerSubscribeTokensRequest")
2888            .field("layers", &self.layers)
2889            .finish()
2890    }
2891}
2892impl GetLayerSubscribeTokensRequest {
2893    /// Protobuf type URL for this message, for use with `Any::pack` and
2894    /// `Any::unpack_if`.
2895    ///
2896    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
2897    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensRequest";
2898}
2899::buffa::impl_default_instance!(GetLayerSubscribeTokensRequest);
2900impl ::buffa::MessageName for GetLayerSubscribeTokensRequest {
2901    const PACKAGE: &'static str = "polychart.v1";
2902    const NAME: &'static str = "GetLayerSubscribeTokensRequest";
2903    const FULL_NAME: &'static str = "polychart.v1.GetLayerSubscribeTokensRequest";
2904    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensRequest";
2905}
2906impl ::buffa::Message for GetLayerSubscribeTokensRequest {
2907    /// Returns the total encoded size in bytes.
2908    ///
2909    /// The result is a `u32`; the protobuf specification requires all
2910    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
2911    /// compliant message will never overflow this type.
2912    #[allow(clippy::let_and_return)]
2913    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
2914        #[allow(unused_imports)]
2915        use ::buffa::Enumeration as _;
2916        let mut size = 0u32;
2917        for v in &self.layers {
2918            let __slot = __cache.reserve();
2919            let inner_size = v.compute_size(__cache);
2920            __cache.set(__slot, inner_size);
2921            size
2922                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
2923                    + inner_size;
2924        }
2925        size += self.__buffa_unknown_fields.encoded_len() as u32;
2926        size
2927    }
2928    fn write_to(
2929        &self,
2930        __cache: &mut ::buffa::SizeCache,
2931        buf: &mut impl ::buffa::bytes::BufMut,
2932    ) {
2933        #[allow(unused_imports)]
2934        use ::buffa::Enumeration as _;
2935        for v in &self.layers {
2936            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
2937            v.write_to(__cache, buf);
2938        }
2939        self.__buffa_unknown_fields.write_to(buf);
2940    }
2941    fn merge_field(
2942        &mut self,
2943        tag: ::buffa::encoding::Tag,
2944        buf: &mut impl ::buffa::bytes::Buf,
2945        ctx: ::buffa::DecodeContext<'_>,
2946    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
2947        #[allow(unused_imports)]
2948        use ::buffa::bytes::Buf as _;
2949        #[allow(unused_imports)]
2950        use ::buffa::Enumeration as _;
2951        match tag.field_number() {
2952            1u32 => {
2953                ::buffa::encoding::check_wire_type(
2954                    tag,
2955                    ::buffa::encoding::WireType::LengthDelimited,
2956                )?;
2957                let mut elem = ::core::default::Default::default();
2958                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
2959                self.layers.push(elem);
2960            }
2961            _ => {
2962                self.__buffa_unknown_fields
2963                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
2964            }
2965        }
2966        ::core::result::Result::Ok(())
2967    }
2968    fn clear(&mut self) {
2969        self.layers.clear();
2970        self.__buffa_unknown_fields.clear();
2971    }
2972}
2973impl ::buffa::ExtensionSet for GetLayerSubscribeTokensRequest {
2974    const PROTO_FQN: &'static str = "polychart.v1.GetLayerSubscribeTokensRequest";
2975    fn unknown_fields(&self) -> &::buffa::UnknownFields {
2976        &self.__buffa_unknown_fields
2977    }
2978    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
2979        &mut self.__buffa_unknown_fields
2980    }
2981}
2982impl ::buffa::json_helpers::ProtoElemJson for GetLayerSubscribeTokensRequest {
2983    fn serialize_proto_json<S: ::serde::Serializer>(
2984        v: &Self,
2985        s: S,
2986    ) -> ::core::result::Result<S::Ok, S::Error> {
2987        ::serde::Serialize::serialize(v, s)
2988    }
2989    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
2990        d: D,
2991    ) -> ::core::result::Result<Self, D::Error> {
2992        <Self as ::serde::Deserialize>::deserialize(d)
2993    }
2994}
2995#[doc(hidden)]
2996pub const __GET_LAYER_SUBSCRIBE_TOKENS_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
2997    type_url: "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensRequest",
2998    to_json: ::buffa::type_registry::any_to_json::<GetLayerSubscribeTokensRequest>,
2999    from_json: ::buffa::type_registry::any_from_json::<GetLayerSubscribeTokensRequest>,
3000    is_wkt: false,
3001};
3002/// LayerSubscribeToken contains a subscribe token for one layer.
3003#[derive(Clone, PartialEq, Default)]
3004#[derive(::serde::Serialize, ::serde::Deserialize)]
3005#[serde(default)]
3006pub struct LayerSubscribeToken {
3007    /// Layer the token authorizes.
3008    ///
3009    /// Field 1: `layer`
3010    #[serde(
3011        rename = "layer",
3012        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
3013    )]
3014    pub layer: ::buffa::MessageField<LayerRef>,
3015    /// Short-lived realtime subscribe token for the layer.
3016    ///
3017    /// Field 2: `centrifugo_sub_token`
3018    #[serde(
3019        rename = "centrifugoSubToken",
3020        alias = "centrifugo_sub_token",
3021        with = "::buffa::json_helpers::proto_string",
3022        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
3023    )]
3024    pub centrifugo_sub_token: ::buffa::alloc::string::String,
3025    #[serde(skip)]
3026    #[doc(hidden)]
3027    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3028}
3029impl ::core::fmt::Debug for LayerSubscribeToken {
3030    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3031        f.debug_struct("LayerSubscribeToken")
3032            .field("layer", &self.layer)
3033            .field("centrifugo_sub_token", &self.centrifugo_sub_token)
3034            .finish()
3035    }
3036}
3037impl LayerSubscribeToken {
3038    /// Protobuf type URL for this message, for use with `Any::pack` and
3039    /// `Any::unpack_if`.
3040    ///
3041    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3042    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscribeToken";
3043}
3044::buffa::impl_default_instance!(LayerSubscribeToken);
3045impl ::buffa::MessageName for LayerSubscribeToken {
3046    const PACKAGE: &'static str = "polychart.v1";
3047    const NAME: &'static str = "LayerSubscribeToken";
3048    const FULL_NAME: &'static str = "polychart.v1.LayerSubscribeToken";
3049    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscribeToken";
3050}
3051impl ::buffa::Message for LayerSubscribeToken {
3052    /// Returns the total encoded size in bytes.
3053    ///
3054    /// The result is a `u32`; the protobuf specification requires all
3055    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3056    /// compliant message will never overflow this type.
3057    #[allow(clippy::let_and_return)]
3058    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
3059        #[allow(unused_imports)]
3060        use ::buffa::Enumeration as _;
3061        let mut size = 0u32;
3062        if self.layer.is_set() {
3063            let __slot = __cache.reserve();
3064            let inner_size = self.layer.compute_size(__cache);
3065            __cache.set(__slot, inner_size);
3066            size
3067                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
3068                    + inner_size;
3069        }
3070        if !self.centrifugo_sub_token.is_empty() {
3071            size
3072                += 1u32
3073                    + ::buffa::types::string_encoded_len(&self.centrifugo_sub_token)
3074                        as u32;
3075        }
3076        size += self.__buffa_unknown_fields.encoded_len() as u32;
3077        size
3078    }
3079    fn write_to(
3080        &self,
3081        __cache: &mut ::buffa::SizeCache,
3082        buf: &mut impl ::buffa::bytes::BufMut,
3083    ) {
3084        #[allow(unused_imports)]
3085        use ::buffa::Enumeration as _;
3086        if self.layer.is_set() {
3087            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
3088            self.layer.write_to(__cache, buf);
3089        }
3090        if !self.centrifugo_sub_token.is_empty() {
3091            ::buffa::types::put_string_field(2u32, &self.centrifugo_sub_token, buf);
3092        }
3093        self.__buffa_unknown_fields.write_to(buf);
3094    }
3095    fn merge_field(
3096        &mut self,
3097        tag: ::buffa::encoding::Tag,
3098        buf: &mut impl ::buffa::bytes::Buf,
3099        ctx: ::buffa::DecodeContext<'_>,
3100    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3101        #[allow(unused_imports)]
3102        use ::buffa::bytes::Buf as _;
3103        #[allow(unused_imports)]
3104        use ::buffa::Enumeration as _;
3105        match tag.field_number() {
3106            1u32 => {
3107                ::buffa::encoding::check_wire_type(
3108                    tag,
3109                    ::buffa::encoding::WireType::LengthDelimited,
3110                )?;
3111                ::buffa::Message::merge_length_delimited(
3112                    self.layer.get_or_insert_default(),
3113                    buf,
3114                    ctx,
3115                )?;
3116            }
3117            2u32 => {
3118                ::buffa::encoding::check_wire_type(
3119                    tag,
3120                    ::buffa::encoding::WireType::LengthDelimited,
3121                )?;
3122                ::buffa::types::merge_string(&mut self.centrifugo_sub_token, buf)?;
3123            }
3124            _ => {
3125                self.__buffa_unknown_fields
3126                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3127            }
3128        }
3129        ::core::result::Result::Ok(())
3130    }
3131    fn clear(&mut self) {
3132        self.layer = ::buffa::MessageField::none();
3133        self.centrifugo_sub_token.clear();
3134        self.__buffa_unknown_fields.clear();
3135    }
3136}
3137impl ::buffa::ExtensionSet for LayerSubscribeToken {
3138    const PROTO_FQN: &'static str = "polychart.v1.LayerSubscribeToken";
3139    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3140        &self.__buffa_unknown_fields
3141    }
3142    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3143        &mut self.__buffa_unknown_fields
3144    }
3145}
3146impl ::buffa::json_helpers::ProtoElemJson for LayerSubscribeToken {
3147    fn serialize_proto_json<S: ::serde::Serializer>(
3148        v: &Self,
3149        s: S,
3150    ) -> ::core::result::Result<S::Ok, S::Error> {
3151        ::serde::Serialize::serialize(v, s)
3152    }
3153    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3154        d: D,
3155    ) -> ::core::result::Result<Self, D::Error> {
3156        <Self as ::serde::Deserialize>::deserialize(d)
3157    }
3158}
3159#[doc(hidden)]
3160pub const __LAYER_SUBSCRIBE_TOKEN_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3161    type_url: "type.googleapis.com/polychart.v1.LayerSubscribeToken",
3162    to_json: ::buffa::type_registry::any_to_json::<LayerSubscribeToken>,
3163    from_json: ::buffa::type_registry::any_from_json::<LayerSubscribeToken>,
3164    is_wkt: false,
3165};
3166/// GetLayerSubscribeTokensResponse contains subscribe tokens for authorized layers.
3167#[derive(Clone, PartialEq, Default)]
3168#[derive(::serde::Serialize, ::serde::Deserialize)]
3169#[serde(default)]
3170pub struct GetLayerSubscribeTokensResponse {
3171    /// Subscribe tokens keyed by layer.
3172    ///
3173    /// Field 1: `tokens`
3174    #[serde(
3175        rename = "tokens",
3176        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
3177        deserialize_with = "::buffa::json_helpers::null_as_default"
3178    )]
3179    pub tokens: ::buffa::alloc::vec::Vec<LayerSubscribeToken>,
3180    #[serde(skip)]
3181    #[doc(hidden)]
3182    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3183}
3184impl ::core::fmt::Debug for GetLayerSubscribeTokensResponse {
3185    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3186        f.debug_struct("GetLayerSubscribeTokensResponse")
3187            .field("tokens", &self.tokens)
3188            .finish()
3189    }
3190}
3191impl GetLayerSubscribeTokensResponse {
3192    /// Protobuf type URL for this message, for use with `Any::pack` and
3193    /// `Any::unpack_if`.
3194    ///
3195    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3196    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensResponse";
3197}
3198::buffa::impl_default_instance!(GetLayerSubscribeTokensResponse);
3199impl ::buffa::MessageName for GetLayerSubscribeTokensResponse {
3200    const PACKAGE: &'static str = "polychart.v1";
3201    const NAME: &'static str = "GetLayerSubscribeTokensResponse";
3202    const FULL_NAME: &'static str = "polychart.v1.GetLayerSubscribeTokensResponse";
3203    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensResponse";
3204}
3205impl ::buffa::Message for GetLayerSubscribeTokensResponse {
3206    /// Returns the total encoded size in bytes.
3207    ///
3208    /// The result is a `u32`; the protobuf specification requires all
3209    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3210    /// compliant message will never overflow this type.
3211    #[allow(clippy::let_and_return)]
3212    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
3213        #[allow(unused_imports)]
3214        use ::buffa::Enumeration as _;
3215        let mut size = 0u32;
3216        for v in &self.tokens {
3217            let __slot = __cache.reserve();
3218            let inner_size = v.compute_size(__cache);
3219            __cache.set(__slot, inner_size);
3220            size
3221                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
3222                    + inner_size;
3223        }
3224        size += self.__buffa_unknown_fields.encoded_len() as u32;
3225        size
3226    }
3227    fn write_to(
3228        &self,
3229        __cache: &mut ::buffa::SizeCache,
3230        buf: &mut impl ::buffa::bytes::BufMut,
3231    ) {
3232        #[allow(unused_imports)]
3233        use ::buffa::Enumeration as _;
3234        for v in &self.tokens {
3235            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
3236            v.write_to(__cache, buf);
3237        }
3238        self.__buffa_unknown_fields.write_to(buf);
3239    }
3240    fn merge_field(
3241        &mut self,
3242        tag: ::buffa::encoding::Tag,
3243        buf: &mut impl ::buffa::bytes::Buf,
3244        ctx: ::buffa::DecodeContext<'_>,
3245    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3246        #[allow(unused_imports)]
3247        use ::buffa::bytes::Buf as _;
3248        #[allow(unused_imports)]
3249        use ::buffa::Enumeration as _;
3250        match tag.field_number() {
3251            1u32 => {
3252                ::buffa::encoding::check_wire_type(
3253                    tag,
3254                    ::buffa::encoding::WireType::LengthDelimited,
3255                )?;
3256                let mut elem = ::core::default::Default::default();
3257                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
3258                self.tokens.push(elem);
3259            }
3260            _ => {
3261                self.__buffa_unknown_fields
3262                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3263            }
3264        }
3265        ::core::result::Result::Ok(())
3266    }
3267    fn clear(&mut self) {
3268        self.tokens.clear();
3269        self.__buffa_unknown_fields.clear();
3270    }
3271}
3272impl ::buffa::ExtensionSet for GetLayerSubscribeTokensResponse {
3273    const PROTO_FQN: &'static str = "polychart.v1.GetLayerSubscribeTokensResponse";
3274    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3275        &self.__buffa_unknown_fields
3276    }
3277    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3278        &mut self.__buffa_unknown_fields
3279    }
3280}
3281impl ::buffa::json_helpers::ProtoElemJson for GetLayerSubscribeTokensResponse {
3282    fn serialize_proto_json<S: ::serde::Serializer>(
3283        v: &Self,
3284        s: S,
3285    ) -> ::core::result::Result<S::Ok, S::Error> {
3286        ::serde::Serialize::serialize(v, s)
3287    }
3288    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3289        d: D,
3290    ) -> ::core::result::Result<Self, D::Error> {
3291        <Self as ::serde::Deserialize>::deserialize(d)
3292    }
3293}
3294#[doc(hidden)]
3295pub const __GET_LAYER_SUBSCRIBE_TOKENS_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3296    type_url: "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensResponse",
3297    to_json: ::buffa::type_registry::any_to_json::<GetLayerSubscribeTokensResponse>,
3298    from_json: ::buffa::type_registry::any_from_json::<GetLayerSubscribeTokensResponse>,
3299    is_wkt: false,
3300};
3301/// CreateLayerShareLinkRequest creates a token-gated share link for a layer.
3302#[derive(Clone, PartialEq, Default)]
3303#[derive(::serde::Serialize, ::serde::Deserialize)]
3304#[serde(default)]
3305pub struct CreateLayerShareLinkRequest {
3306    /// Layer to share.
3307    ///
3308    /// Field 1: `layer`
3309    #[serde(
3310        rename = "layer",
3311        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
3312    )]
3313    pub layer: ::buffa::MessageField<LayerRef>,
3314    /// Permission bitmask for the share link: VIEW=1, EDIT=2, SHARE=4, MANAGE=8.
3315    ///
3316    /// Field 2: `perms`
3317    #[serde(
3318        rename = "perms",
3319        with = "::buffa::json_helpers::uint32",
3320        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
3321    )]
3322    pub perms: u32,
3323    /// Expiration time in milliseconds since epoch (UTC); 0 means the link does not expire.
3324    ///
3325    /// Field 3: `expires_at_ms`
3326    #[serde(
3327        rename = "expiresAtMs",
3328        alias = "expires_at_ms",
3329        with = "::buffa::json_helpers::uint64",
3330        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
3331    )]
3332    pub expires_at_ms: u64,
3333    #[serde(skip)]
3334    #[doc(hidden)]
3335    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3336}
3337impl ::core::fmt::Debug for CreateLayerShareLinkRequest {
3338    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3339        f.debug_struct("CreateLayerShareLinkRequest")
3340            .field("layer", &self.layer)
3341            .field("perms", &self.perms)
3342            .field("expires_at_ms", &self.expires_at_ms)
3343            .finish()
3344    }
3345}
3346impl CreateLayerShareLinkRequest {
3347    /// Protobuf type URL for this message, for use with `Any::pack` and
3348    /// `Any::unpack_if`.
3349    ///
3350    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3351    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkRequest";
3352}
3353::buffa::impl_default_instance!(CreateLayerShareLinkRequest);
3354impl ::buffa::MessageName for CreateLayerShareLinkRequest {
3355    const PACKAGE: &'static str = "polychart.v1";
3356    const NAME: &'static str = "CreateLayerShareLinkRequest";
3357    const FULL_NAME: &'static str = "polychart.v1.CreateLayerShareLinkRequest";
3358    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkRequest";
3359}
3360impl ::buffa::Message for CreateLayerShareLinkRequest {
3361    /// Returns the total encoded size in bytes.
3362    ///
3363    /// The result is a `u32`; the protobuf specification requires all
3364    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3365    /// compliant message will never overflow this type.
3366    #[allow(clippy::let_and_return)]
3367    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
3368        #[allow(unused_imports)]
3369        use ::buffa::Enumeration as _;
3370        let mut size = 0u32;
3371        if self.layer.is_set() {
3372            let __slot = __cache.reserve();
3373            let inner_size = self.layer.compute_size(__cache);
3374            __cache.set(__slot, inner_size);
3375            size
3376                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
3377                    + inner_size;
3378        }
3379        if self.perms != 0u32 {
3380            size += 1u32 + ::buffa::types::uint32_encoded_len(self.perms) as u32;
3381        }
3382        if self.expires_at_ms != 0u64 {
3383            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
3384        }
3385        size += self.__buffa_unknown_fields.encoded_len() as u32;
3386        size
3387    }
3388    fn write_to(
3389        &self,
3390        __cache: &mut ::buffa::SizeCache,
3391        buf: &mut impl ::buffa::bytes::BufMut,
3392    ) {
3393        #[allow(unused_imports)]
3394        use ::buffa::Enumeration as _;
3395        if self.layer.is_set() {
3396            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
3397            self.layer.write_to(__cache, buf);
3398        }
3399        if self.perms != 0u32 {
3400            ::buffa::types::put_uint32_field(2u32, self.perms, buf);
3401        }
3402        if self.expires_at_ms != 0u64 {
3403            ::buffa::types::put_fixed64_field(3u32, self.expires_at_ms, buf);
3404        }
3405        self.__buffa_unknown_fields.write_to(buf);
3406    }
3407    fn merge_field(
3408        &mut self,
3409        tag: ::buffa::encoding::Tag,
3410        buf: &mut impl ::buffa::bytes::Buf,
3411        ctx: ::buffa::DecodeContext<'_>,
3412    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3413        #[allow(unused_imports)]
3414        use ::buffa::bytes::Buf as _;
3415        #[allow(unused_imports)]
3416        use ::buffa::Enumeration as _;
3417        match tag.field_number() {
3418            1u32 => {
3419                ::buffa::encoding::check_wire_type(
3420                    tag,
3421                    ::buffa::encoding::WireType::LengthDelimited,
3422                )?;
3423                ::buffa::Message::merge_length_delimited(
3424                    self.layer.get_or_insert_default(),
3425                    buf,
3426                    ctx,
3427                )?;
3428            }
3429            2u32 => {
3430                ::buffa::encoding::check_wire_type(
3431                    tag,
3432                    ::buffa::encoding::WireType::Varint,
3433                )?;
3434                self.perms = ::buffa::types::decode_uint32(buf)?;
3435            }
3436            3u32 => {
3437                ::buffa::encoding::check_wire_type(
3438                    tag,
3439                    ::buffa::encoding::WireType::Fixed64,
3440                )?;
3441                self.expires_at_ms = ::buffa::types::decode_fixed64(buf)?;
3442            }
3443            _ => {
3444                self.__buffa_unknown_fields
3445                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3446            }
3447        }
3448        ::core::result::Result::Ok(())
3449    }
3450    fn clear(&mut self) {
3451        self.layer = ::buffa::MessageField::none();
3452        self.perms = 0u32;
3453        self.expires_at_ms = 0u64;
3454        self.__buffa_unknown_fields.clear();
3455    }
3456}
3457impl ::buffa::ExtensionSet for CreateLayerShareLinkRequest {
3458    const PROTO_FQN: &'static str = "polychart.v1.CreateLayerShareLinkRequest";
3459    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3460        &self.__buffa_unknown_fields
3461    }
3462    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3463        &mut self.__buffa_unknown_fields
3464    }
3465}
3466impl ::buffa::json_helpers::ProtoElemJson for CreateLayerShareLinkRequest {
3467    fn serialize_proto_json<S: ::serde::Serializer>(
3468        v: &Self,
3469        s: S,
3470    ) -> ::core::result::Result<S::Ok, S::Error> {
3471        ::serde::Serialize::serialize(v, s)
3472    }
3473    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3474        d: D,
3475    ) -> ::core::result::Result<Self, D::Error> {
3476        <Self as ::serde::Deserialize>::deserialize(d)
3477    }
3478}
3479#[doc(hidden)]
3480pub const __CREATE_LAYER_SHARE_LINK_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3481    type_url: "type.googleapis.com/polychart.v1.CreateLayerShareLinkRequest",
3482    to_json: ::buffa::type_registry::any_to_json::<CreateLayerShareLinkRequest>,
3483    from_json: ::buffa::type_registry::any_from_json::<CreateLayerShareLinkRequest>,
3484    is_wkt: false,
3485};
3486/// CreateLayerShareLinkResponse returns the minted share token.
3487#[derive(Clone, PartialEq, Default)]
3488#[derive(::serde::Serialize, ::serde::Deserialize)]
3489#[serde(default)]
3490pub struct CreateLayerShareLinkResponse {
3491    /// Opaque share token.
3492    ///
3493    /// Field 1: `token`
3494    #[serde(
3495        rename = "token",
3496        with = "::buffa::json_helpers::proto_string",
3497        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
3498    )]
3499    pub token: ::buffa::alloc::string::String,
3500    #[serde(skip)]
3501    #[doc(hidden)]
3502    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3503}
3504impl ::core::fmt::Debug for CreateLayerShareLinkResponse {
3505    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3506        f.debug_struct("CreateLayerShareLinkResponse")
3507            .field("token", &self.token)
3508            .finish()
3509    }
3510}
3511impl CreateLayerShareLinkResponse {
3512    /// Protobuf type URL for this message, for use with `Any::pack` and
3513    /// `Any::unpack_if`.
3514    ///
3515    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3516    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkResponse";
3517}
3518::buffa::impl_default_instance!(CreateLayerShareLinkResponse);
3519impl ::buffa::MessageName for CreateLayerShareLinkResponse {
3520    const PACKAGE: &'static str = "polychart.v1";
3521    const NAME: &'static str = "CreateLayerShareLinkResponse";
3522    const FULL_NAME: &'static str = "polychart.v1.CreateLayerShareLinkResponse";
3523    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkResponse";
3524}
3525impl ::buffa::Message for CreateLayerShareLinkResponse {
3526    /// Returns the total encoded size in bytes.
3527    ///
3528    /// The result is a `u32`; the protobuf specification requires all
3529    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3530    /// compliant message will never overflow this type.
3531    #[allow(clippy::let_and_return)]
3532    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
3533        #[allow(unused_imports)]
3534        use ::buffa::Enumeration as _;
3535        let mut size = 0u32;
3536        if !self.token.is_empty() {
3537            size += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
3538        }
3539        size += self.__buffa_unknown_fields.encoded_len() as u32;
3540        size
3541    }
3542    fn write_to(
3543        &self,
3544        _cache: &mut ::buffa::SizeCache,
3545        buf: &mut impl ::buffa::bytes::BufMut,
3546    ) {
3547        #[allow(unused_imports)]
3548        use ::buffa::Enumeration as _;
3549        if !self.token.is_empty() {
3550            ::buffa::types::put_string_field(1u32, &self.token, buf);
3551        }
3552        self.__buffa_unknown_fields.write_to(buf);
3553    }
3554    fn merge_field(
3555        &mut self,
3556        tag: ::buffa::encoding::Tag,
3557        buf: &mut impl ::buffa::bytes::Buf,
3558        ctx: ::buffa::DecodeContext<'_>,
3559    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3560        #[allow(unused_imports)]
3561        use ::buffa::bytes::Buf as _;
3562        #[allow(unused_imports)]
3563        use ::buffa::Enumeration as _;
3564        match tag.field_number() {
3565            1u32 => {
3566                ::buffa::encoding::check_wire_type(
3567                    tag,
3568                    ::buffa::encoding::WireType::LengthDelimited,
3569                )?;
3570                ::buffa::types::merge_string(&mut self.token, buf)?;
3571            }
3572            _ => {
3573                self.__buffa_unknown_fields
3574                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3575            }
3576        }
3577        ::core::result::Result::Ok(())
3578    }
3579    fn clear(&mut self) {
3580        self.token.clear();
3581        self.__buffa_unknown_fields.clear();
3582    }
3583}
3584impl ::buffa::ExtensionSet for CreateLayerShareLinkResponse {
3585    const PROTO_FQN: &'static str = "polychart.v1.CreateLayerShareLinkResponse";
3586    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3587        &self.__buffa_unknown_fields
3588    }
3589    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3590        &mut self.__buffa_unknown_fields
3591    }
3592}
3593impl ::buffa::json_helpers::ProtoElemJson for CreateLayerShareLinkResponse {
3594    fn serialize_proto_json<S: ::serde::Serializer>(
3595        v: &Self,
3596        s: S,
3597    ) -> ::core::result::Result<S::Ok, S::Error> {
3598        ::serde::Serialize::serialize(v, s)
3599    }
3600    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3601        d: D,
3602    ) -> ::core::result::Result<Self, D::Error> {
3603        <Self as ::serde::Deserialize>::deserialize(d)
3604    }
3605}
3606#[doc(hidden)]
3607pub const __CREATE_LAYER_SHARE_LINK_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3608    type_url: "type.googleapis.com/polychart.v1.CreateLayerShareLinkResponse",
3609    to_json: ::buffa::type_registry::any_to_json::<CreateLayerShareLinkResponse>,
3610    from_json: ::buffa::type_registry::any_from_json::<CreateLayerShareLinkResponse>,
3611    is_wkt: false,
3612};
3613/// RevokeLayerShareLinkRequest revokes one previously minted layer share token.
3614#[derive(Clone, PartialEq, Default)]
3615#[derive(::serde::Serialize, ::serde::Deserialize)]
3616#[serde(default)]
3617pub struct RevokeLayerShareLinkRequest {
3618    /// Opaque share token to revoke.
3619    ///
3620    /// Field 1: `token`
3621    #[serde(
3622        rename = "token",
3623        with = "::buffa::json_helpers::proto_string",
3624        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
3625    )]
3626    pub token: ::buffa::alloc::string::String,
3627    #[serde(skip)]
3628    #[doc(hidden)]
3629    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3630}
3631impl ::core::fmt::Debug for RevokeLayerShareLinkRequest {
3632    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3633        f.debug_struct("RevokeLayerShareLinkRequest")
3634            .field("token", &self.token)
3635            .finish()
3636    }
3637}
3638impl RevokeLayerShareLinkRequest {
3639    /// Protobuf type URL for this message, for use with `Any::pack` and
3640    /// `Any::unpack_if`.
3641    ///
3642    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3643    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkRequest";
3644}
3645::buffa::impl_default_instance!(RevokeLayerShareLinkRequest);
3646impl ::buffa::MessageName for RevokeLayerShareLinkRequest {
3647    const PACKAGE: &'static str = "polychart.v1";
3648    const NAME: &'static str = "RevokeLayerShareLinkRequest";
3649    const FULL_NAME: &'static str = "polychart.v1.RevokeLayerShareLinkRequest";
3650    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkRequest";
3651}
3652impl ::buffa::Message for RevokeLayerShareLinkRequest {
3653    /// Returns the total encoded size in bytes.
3654    ///
3655    /// The result is a `u32`; the protobuf specification requires all
3656    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3657    /// compliant message will never overflow this type.
3658    #[allow(clippy::let_and_return)]
3659    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
3660        #[allow(unused_imports)]
3661        use ::buffa::Enumeration as _;
3662        let mut size = 0u32;
3663        if !self.token.is_empty() {
3664            size += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
3665        }
3666        size += self.__buffa_unknown_fields.encoded_len() as u32;
3667        size
3668    }
3669    fn write_to(
3670        &self,
3671        _cache: &mut ::buffa::SizeCache,
3672        buf: &mut impl ::buffa::bytes::BufMut,
3673    ) {
3674        #[allow(unused_imports)]
3675        use ::buffa::Enumeration as _;
3676        if !self.token.is_empty() {
3677            ::buffa::types::put_string_field(1u32, &self.token, buf);
3678        }
3679        self.__buffa_unknown_fields.write_to(buf);
3680    }
3681    fn merge_field(
3682        &mut self,
3683        tag: ::buffa::encoding::Tag,
3684        buf: &mut impl ::buffa::bytes::Buf,
3685        ctx: ::buffa::DecodeContext<'_>,
3686    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3687        #[allow(unused_imports)]
3688        use ::buffa::bytes::Buf as _;
3689        #[allow(unused_imports)]
3690        use ::buffa::Enumeration as _;
3691        match tag.field_number() {
3692            1u32 => {
3693                ::buffa::encoding::check_wire_type(
3694                    tag,
3695                    ::buffa::encoding::WireType::LengthDelimited,
3696                )?;
3697                ::buffa::types::merge_string(&mut self.token, buf)?;
3698            }
3699            _ => {
3700                self.__buffa_unknown_fields
3701                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3702            }
3703        }
3704        ::core::result::Result::Ok(())
3705    }
3706    fn clear(&mut self) {
3707        self.token.clear();
3708        self.__buffa_unknown_fields.clear();
3709    }
3710}
3711impl ::buffa::ExtensionSet for RevokeLayerShareLinkRequest {
3712    const PROTO_FQN: &'static str = "polychart.v1.RevokeLayerShareLinkRequest";
3713    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3714        &self.__buffa_unknown_fields
3715    }
3716    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3717        &mut self.__buffa_unknown_fields
3718    }
3719}
3720impl ::buffa::json_helpers::ProtoElemJson for RevokeLayerShareLinkRequest {
3721    fn serialize_proto_json<S: ::serde::Serializer>(
3722        v: &Self,
3723        s: S,
3724    ) -> ::core::result::Result<S::Ok, S::Error> {
3725        ::serde::Serialize::serialize(v, s)
3726    }
3727    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3728        d: D,
3729    ) -> ::core::result::Result<Self, D::Error> {
3730        <Self as ::serde::Deserialize>::deserialize(d)
3731    }
3732}
3733#[doc(hidden)]
3734pub const __REVOKE_LAYER_SHARE_LINK_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3735    type_url: "type.googleapis.com/polychart.v1.RevokeLayerShareLinkRequest",
3736    to_json: ::buffa::type_registry::any_to_json::<RevokeLayerShareLinkRequest>,
3737    from_json: ::buffa::type_registry::any_from_json::<RevokeLayerShareLinkRequest>,
3738    is_wkt: false,
3739};
3740/// RevokeLayerShareLinkResponse is empty when the token was revoked.
3741#[derive(Clone, PartialEq, Default)]
3742#[derive(::serde::Serialize, ::serde::Deserialize)]
3743#[serde(default)]
3744pub struct RevokeLayerShareLinkResponse {
3745    #[serde(skip)]
3746    #[doc(hidden)]
3747    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3748}
3749impl ::core::fmt::Debug for RevokeLayerShareLinkResponse {
3750    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3751        f.debug_struct("RevokeLayerShareLinkResponse").finish()
3752    }
3753}
3754impl RevokeLayerShareLinkResponse {
3755    /// Protobuf type URL for this message, for use with `Any::pack` and
3756    /// `Any::unpack_if`.
3757    ///
3758    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3759    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkResponse";
3760}
3761::buffa::impl_default_instance!(RevokeLayerShareLinkResponse);
3762impl ::buffa::MessageName for RevokeLayerShareLinkResponse {
3763    const PACKAGE: &'static str = "polychart.v1";
3764    const NAME: &'static str = "RevokeLayerShareLinkResponse";
3765    const FULL_NAME: &'static str = "polychart.v1.RevokeLayerShareLinkResponse";
3766    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkResponse";
3767}
3768impl ::buffa::Message for RevokeLayerShareLinkResponse {
3769    /// Returns the total encoded size in bytes.
3770    ///
3771    /// The result is a `u32`; the protobuf specification requires all
3772    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3773    /// compliant message will never overflow this type.
3774    #[allow(clippy::let_and_return)]
3775    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
3776        #[allow(unused_imports)]
3777        use ::buffa::Enumeration as _;
3778        let mut size = 0u32;
3779        size += self.__buffa_unknown_fields.encoded_len() as u32;
3780        size
3781    }
3782    fn write_to(
3783        &self,
3784        _cache: &mut ::buffa::SizeCache,
3785        buf: &mut impl ::buffa::bytes::BufMut,
3786    ) {
3787        #[allow(unused_imports)]
3788        use ::buffa::Enumeration as _;
3789        self.__buffa_unknown_fields.write_to(buf);
3790    }
3791    fn merge_field(
3792        &mut self,
3793        tag: ::buffa::encoding::Tag,
3794        buf: &mut impl ::buffa::bytes::Buf,
3795        ctx: ::buffa::DecodeContext<'_>,
3796    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3797        #[allow(unused_imports)]
3798        use ::buffa::bytes::Buf as _;
3799        #[allow(unused_imports)]
3800        use ::buffa::Enumeration as _;
3801        match tag.field_number() {
3802            _ => {
3803                self.__buffa_unknown_fields
3804                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
3805            }
3806        }
3807        ::core::result::Result::Ok(())
3808    }
3809    fn clear(&mut self) {
3810        self.__buffa_unknown_fields.clear();
3811    }
3812}
3813impl ::buffa::ExtensionSet for RevokeLayerShareLinkResponse {
3814    const PROTO_FQN: &'static str = "polychart.v1.RevokeLayerShareLinkResponse";
3815    fn unknown_fields(&self) -> &::buffa::UnknownFields {
3816        &self.__buffa_unknown_fields
3817    }
3818    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
3819        &mut self.__buffa_unknown_fields
3820    }
3821}
3822impl ::buffa::json_helpers::ProtoElemJson for RevokeLayerShareLinkResponse {
3823    fn serialize_proto_json<S: ::serde::Serializer>(
3824        v: &Self,
3825        s: S,
3826    ) -> ::core::result::Result<S::Ok, S::Error> {
3827        ::serde::Serialize::serialize(v, s)
3828    }
3829    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
3830        d: D,
3831    ) -> ::core::result::Result<Self, D::Error> {
3832        <Self as ::serde::Deserialize>::deserialize(d)
3833    }
3834}
3835#[doc(hidden)]
3836pub const __REVOKE_LAYER_SHARE_LINK_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
3837    type_url: "type.googleapis.com/polychart.v1.RevokeLayerShareLinkResponse",
3838    to_json: ::buffa::type_registry::any_to_json::<RevokeLayerShareLinkResponse>,
3839    from_json: ::buffa::type_registry::any_from_json::<RevokeLayerShareLinkResponse>,
3840    is_wkt: false,
3841};
3842/// =============================================================================
3843/// Publications (listed discovery)
3844/// =============================================================================
3845///
3846/// PublishedLayer contains discovery metadata for a listed layer.
3847#[derive(Clone, PartialEq, Default)]
3848#[derive(::serde::Serialize, ::serde::Deserialize)]
3849#[serde(default)]
3850pub struct PublishedLayer {
3851    /// Listed layer metadata.
3852    ///
3853    /// Field 1: `layer`
3854    #[serde(
3855        rename = "layer",
3856        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
3857    )]
3858    pub layer: ::buffa::MessageField<Layer>,
3859    /// Public display title.
3860    ///
3861    /// Field 2: `title`
3862    #[serde(
3863        rename = "title",
3864        with = "::buffa::json_helpers::proto_string",
3865        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
3866    )]
3867    pub title: ::buffa::alloc::string::String,
3868    /// Public description shown with the layer.
3869    ///
3870    /// Field 3: `description`
3871    #[serde(
3872        rename = "description",
3873        with = "::buffa::json_helpers::proto_string",
3874        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
3875    )]
3876    pub description: ::buffa::alloc::string::String,
3877    /// Public tags used for grouping or filtering.
3878    ///
3879    /// Field 4: `tags`
3880    #[serde(
3881        rename = "tags",
3882        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
3883        deserialize_with = "::buffa::json_helpers::null_as_default"
3884    )]
3885    pub tags: ::buffa::alloc::vec::Vec<::buffa::alloc::string::String>,
3886    /// Publication time in milliseconds since epoch (UTC).
3887    ///
3888    /// Field 5: `published_at_ms`
3889    #[serde(
3890        rename = "publishedAtMs",
3891        alias = "published_at_ms",
3892        with = "::buffa::json_helpers::uint64",
3893        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
3894    )]
3895    pub published_at_ms: u64,
3896    #[serde(skip)]
3897    #[doc(hidden)]
3898    pub __buffa_unknown_fields: ::buffa::UnknownFields,
3899}
3900impl ::core::fmt::Debug for PublishedLayer {
3901    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3902        f.debug_struct("PublishedLayer")
3903            .field("layer", &self.layer)
3904            .field("title", &self.title)
3905            .field("description", &self.description)
3906            .field("tags", &self.tags)
3907            .field("published_at_ms", &self.published_at_ms)
3908            .finish()
3909    }
3910}
3911impl PublishedLayer {
3912    /// Protobuf type URL for this message, for use with `Any::pack` and
3913    /// `Any::unpack_if`.
3914    ///
3915    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
3916    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishedLayer";
3917}
3918::buffa::impl_default_instance!(PublishedLayer);
3919impl ::buffa::MessageName for PublishedLayer {
3920    const PACKAGE: &'static str = "polychart.v1";
3921    const NAME: &'static str = "PublishedLayer";
3922    const FULL_NAME: &'static str = "polychart.v1.PublishedLayer";
3923    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishedLayer";
3924}
3925impl ::buffa::Message for PublishedLayer {
3926    /// Returns the total encoded size in bytes.
3927    ///
3928    /// The result is a `u32`; the protobuf specification requires all
3929    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
3930    /// compliant message will never overflow this type.
3931    #[allow(clippy::let_and_return)]
3932    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
3933        #[allow(unused_imports)]
3934        use ::buffa::Enumeration as _;
3935        let mut size = 0u32;
3936        if self.layer.is_set() {
3937            let __slot = __cache.reserve();
3938            let inner_size = self.layer.compute_size(__cache);
3939            __cache.set(__slot, inner_size);
3940            size
3941                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
3942                    + inner_size;
3943        }
3944        if !self.title.is_empty() {
3945            size += 1u32 + ::buffa::types::string_encoded_len(&self.title) as u32;
3946        }
3947        if !self.description.is_empty() {
3948            size += 1u32 + ::buffa::types::string_encoded_len(&self.description) as u32;
3949        }
3950        for v in &self.tags {
3951            size += 1u32 + ::buffa::types::string_encoded_len(v) as u32;
3952        }
3953        if self.published_at_ms != 0u64 {
3954            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
3955        }
3956        size += self.__buffa_unknown_fields.encoded_len() as u32;
3957        size
3958    }
3959    fn write_to(
3960        &self,
3961        __cache: &mut ::buffa::SizeCache,
3962        buf: &mut impl ::buffa::bytes::BufMut,
3963    ) {
3964        #[allow(unused_imports)]
3965        use ::buffa::Enumeration as _;
3966        if self.layer.is_set() {
3967            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
3968            self.layer.write_to(__cache, buf);
3969        }
3970        if !self.title.is_empty() {
3971            ::buffa::types::put_string_field(2u32, &self.title, buf);
3972        }
3973        if !self.description.is_empty() {
3974            ::buffa::types::put_string_field(3u32, &self.description, buf);
3975        }
3976        for v in &self.tags {
3977            ::buffa::types::put_string_field(4u32, v, buf);
3978        }
3979        if self.published_at_ms != 0u64 {
3980            ::buffa::types::put_fixed64_field(5u32, self.published_at_ms, buf);
3981        }
3982        self.__buffa_unknown_fields.write_to(buf);
3983    }
3984    fn merge_field(
3985        &mut self,
3986        tag: ::buffa::encoding::Tag,
3987        buf: &mut impl ::buffa::bytes::Buf,
3988        ctx: ::buffa::DecodeContext<'_>,
3989    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
3990        #[allow(unused_imports)]
3991        use ::buffa::bytes::Buf as _;
3992        #[allow(unused_imports)]
3993        use ::buffa::Enumeration as _;
3994        match tag.field_number() {
3995            1u32 => {
3996                ::buffa::encoding::check_wire_type(
3997                    tag,
3998                    ::buffa::encoding::WireType::LengthDelimited,
3999                )?;
4000                ::buffa::Message::merge_length_delimited(
4001                    self.layer.get_or_insert_default(),
4002                    buf,
4003                    ctx,
4004                )?;
4005            }
4006            2u32 => {
4007                ::buffa::encoding::check_wire_type(
4008                    tag,
4009                    ::buffa::encoding::WireType::LengthDelimited,
4010                )?;
4011                ::buffa::types::merge_string(&mut self.title, buf)?;
4012            }
4013            3u32 => {
4014                ::buffa::encoding::check_wire_type(
4015                    tag,
4016                    ::buffa::encoding::WireType::LengthDelimited,
4017                )?;
4018                ::buffa::types::merge_string(&mut self.description, buf)?;
4019            }
4020            4u32 => {
4021                ::buffa::encoding::check_wire_type(
4022                    tag,
4023                    ::buffa::encoding::WireType::LengthDelimited,
4024                )?;
4025                self.tags.push(::buffa::types::decode_string(buf)?);
4026            }
4027            5u32 => {
4028                ::buffa::encoding::check_wire_type(
4029                    tag,
4030                    ::buffa::encoding::WireType::Fixed64,
4031                )?;
4032                self.published_at_ms = ::buffa::types::decode_fixed64(buf)?;
4033            }
4034            _ => {
4035                self.__buffa_unknown_fields
4036                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4037            }
4038        }
4039        ::core::result::Result::Ok(())
4040    }
4041    fn clear(&mut self) {
4042        self.layer = ::buffa::MessageField::none();
4043        self.title.clear();
4044        self.description.clear();
4045        self.tags.clear();
4046        self.published_at_ms = 0u64;
4047        self.__buffa_unknown_fields.clear();
4048    }
4049}
4050impl ::buffa::ExtensionSet for PublishedLayer {
4051    const PROTO_FQN: &'static str = "polychart.v1.PublishedLayer";
4052    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4053        &self.__buffa_unknown_fields
4054    }
4055    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4056        &mut self.__buffa_unknown_fields
4057    }
4058}
4059impl ::buffa::json_helpers::ProtoElemJson for PublishedLayer {
4060    fn serialize_proto_json<S: ::serde::Serializer>(
4061        v: &Self,
4062        s: S,
4063    ) -> ::core::result::Result<S::Ok, S::Error> {
4064        ::serde::Serialize::serialize(v, s)
4065    }
4066    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4067        d: D,
4068    ) -> ::core::result::Result<Self, D::Error> {
4069        <Self as ::serde::Deserialize>::deserialize(d)
4070    }
4071}
4072#[doc(hidden)]
4073pub const __PUBLISHED_LAYER_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4074    type_url: "type.googleapis.com/polychart.v1.PublishedLayer",
4075    to_json: ::buffa::type_registry::any_to_json::<PublishedLayer>,
4076    from_json: ::buffa::type_registry::any_from_json::<PublishedLayer>,
4077    is_wkt: false,
4078};
4079/// ListOwnerPublishedLayersRequest lists discoverable layers for one owner.
4080#[derive(Clone, PartialEq, Default)]
4081#[derive(::serde::Serialize, ::serde::Deserialize)]
4082#[serde(default)]
4083pub struct ListOwnerPublishedLayersRequest {
4084    /// Owner account whose published layers should be listed.
4085    ///
4086    /// Field 1: `owner_id`
4087    #[serde(
4088        rename = "ownerId",
4089        alias = "owner_id",
4090        with = "::buffa::json_helpers::uint64",
4091        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
4092    )]
4093    pub owner_id: u64,
4094    /// Optional market filter.
4095    ///
4096    /// Field 2: `engine_symbol_id`
4097    #[serde(
4098        rename = "engineSymbolId",
4099        alias = "engine_symbol_id",
4100        with = "::buffa::json_helpers::opt_uint32",
4101        skip_serializing_if = "::core::option::Option::is_none"
4102    )]
4103    pub engine_symbol_id: ::core::option::Option<u32>,
4104    /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
4105    /// is 500.
4106    ///
4107    /// Field 3: `limit`
4108    #[serde(
4109        rename = "limit",
4110        with = "::buffa::json_helpers::uint32",
4111        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
4112    )]
4113    pub limit: u32,
4114    /// Opaque keyset cursor from a previous response. The cursor is exclusive and
4115    /// bound to owner, market filter, and newest-published sort order.
4116    ///
4117    /// Field 4: `page_token`
4118    #[serde(
4119        rename = "pageToken",
4120        alias = "page_token",
4121        with = "::buffa::json_helpers::proto_string",
4122        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
4123    )]
4124    pub page_token: ::buffa::alloc::string::String,
4125    #[serde(skip)]
4126    #[doc(hidden)]
4127    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4128}
4129impl ::core::fmt::Debug for ListOwnerPublishedLayersRequest {
4130    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4131        f.debug_struct("ListOwnerPublishedLayersRequest")
4132            .field("owner_id", &self.owner_id)
4133            .field("engine_symbol_id", &self.engine_symbol_id)
4134            .field("limit", &self.limit)
4135            .field("page_token", &self.page_token)
4136            .finish()
4137    }
4138}
4139impl ListOwnerPublishedLayersRequest {
4140    /// Protobuf type URL for this message, for use with `Any::pack` and
4141    /// `Any::unpack_if`.
4142    ///
4143    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4144    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersRequest";
4145}
4146impl ListOwnerPublishedLayersRequest {
4147    #[must_use = "with_* setters return `self` by value; assign or chain the result"]
4148    #[inline]
4149    ///Sets [`Self::engine_symbol_id`] to `Some(value)`, consuming and returning `self`.
4150    pub fn with_engine_symbol_id(mut self, value: u32) -> Self {
4151        self.engine_symbol_id = Some(value);
4152        self
4153    }
4154}
4155::buffa::impl_default_instance!(ListOwnerPublishedLayersRequest);
4156impl ::buffa::MessageName for ListOwnerPublishedLayersRequest {
4157    const PACKAGE: &'static str = "polychart.v1";
4158    const NAME: &'static str = "ListOwnerPublishedLayersRequest";
4159    const FULL_NAME: &'static str = "polychart.v1.ListOwnerPublishedLayersRequest";
4160    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersRequest";
4161}
4162impl ::buffa::Message for ListOwnerPublishedLayersRequest {
4163    /// Returns the total encoded size in bytes.
4164    ///
4165    /// The result is a `u32`; the protobuf specification requires all
4166    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4167    /// compliant message will never overflow this type.
4168    #[allow(clippy::let_and_return)]
4169    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
4170        #[allow(unused_imports)]
4171        use ::buffa::Enumeration as _;
4172        let mut size = 0u32;
4173        if self.owner_id != 0u64 {
4174            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
4175        }
4176        if let Some(v) = self.engine_symbol_id {
4177            size += 1u32 + ::buffa::types::uint32_encoded_len(v) as u32;
4178        }
4179        if self.limit != 0u32 {
4180            size += 1u32 + ::buffa::types::uint32_encoded_len(self.limit) as u32;
4181        }
4182        if !self.page_token.is_empty() {
4183            size += 1u32 + ::buffa::types::string_encoded_len(&self.page_token) as u32;
4184        }
4185        size += self.__buffa_unknown_fields.encoded_len() as u32;
4186        size
4187    }
4188    fn write_to(
4189        &self,
4190        _cache: &mut ::buffa::SizeCache,
4191        buf: &mut impl ::buffa::bytes::BufMut,
4192    ) {
4193        #[allow(unused_imports)]
4194        use ::buffa::Enumeration as _;
4195        if self.owner_id != 0u64 {
4196            ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
4197        }
4198        if let Some(v) = self.engine_symbol_id {
4199            ::buffa::types::put_uint32_field(2u32, v, buf);
4200        }
4201        if self.limit != 0u32 {
4202            ::buffa::types::put_uint32_field(3u32, self.limit, buf);
4203        }
4204        if !self.page_token.is_empty() {
4205            ::buffa::types::put_string_field(4u32, &self.page_token, buf);
4206        }
4207        self.__buffa_unknown_fields.write_to(buf);
4208    }
4209    fn merge_field(
4210        &mut self,
4211        tag: ::buffa::encoding::Tag,
4212        buf: &mut impl ::buffa::bytes::Buf,
4213        ctx: ::buffa::DecodeContext<'_>,
4214    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4215        #[allow(unused_imports)]
4216        use ::buffa::bytes::Buf as _;
4217        #[allow(unused_imports)]
4218        use ::buffa::Enumeration as _;
4219        match tag.field_number() {
4220            1u32 => {
4221                ::buffa::encoding::check_wire_type(
4222                    tag,
4223                    ::buffa::encoding::WireType::Fixed64,
4224                )?;
4225                self.owner_id = ::buffa::types::decode_fixed64(buf)?;
4226            }
4227            2u32 => {
4228                ::buffa::encoding::check_wire_type(
4229                    tag,
4230                    ::buffa::encoding::WireType::Varint,
4231                )?;
4232                self.engine_symbol_id = ::core::option::Option::Some(
4233                    ::buffa::types::decode_uint32(buf)?,
4234                );
4235            }
4236            3u32 => {
4237                ::buffa::encoding::check_wire_type(
4238                    tag,
4239                    ::buffa::encoding::WireType::Varint,
4240                )?;
4241                self.limit = ::buffa::types::decode_uint32(buf)?;
4242            }
4243            4u32 => {
4244                ::buffa::encoding::check_wire_type(
4245                    tag,
4246                    ::buffa::encoding::WireType::LengthDelimited,
4247                )?;
4248                ::buffa::types::merge_string(&mut self.page_token, buf)?;
4249            }
4250            _ => {
4251                self.__buffa_unknown_fields
4252                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4253            }
4254        }
4255        ::core::result::Result::Ok(())
4256    }
4257    fn clear(&mut self) {
4258        self.owner_id = 0u64;
4259        self.engine_symbol_id = ::core::option::Option::None;
4260        self.limit = 0u32;
4261        self.page_token.clear();
4262        self.__buffa_unknown_fields.clear();
4263    }
4264}
4265impl ::buffa::ExtensionSet for ListOwnerPublishedLayersRequest {
4266    const PROTO_FQN: &'static str = "polychart.v1.ListOwnerPublishedLayersRequest";
4267    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4268        &self.__buffa_unknown_fields
4269    }
4270    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4271        &mut self.__buffa_unknown_fields
4272    }
4273}
4274impl ::buffa::json_helpers::ProtoElemJson for ListOwnerPublishedLayersRequest {
4275    fn serialize_proto_json<S: ::serde::Serializer>(
4276        v: &Self,
4277        s: S,
4278    ) -> ::core::result::Result<S::Ok, S::Error> {
4279        ::serde::Serialize::serialize(v, s)
4280    }
4281    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4282        d: D,
4283    ) -> ::core::result::Result<Self, D::Error> {
4284        <Self as ::serde::Deserialize>::deserialize(d)
4285    }
4286}
4287#[doc(hidden)]
4288pub const __LIST_OWNER_PUBLISHED_LAYERS_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4289    type_url: "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersRequest",
4290    to_json: ::buffa::type_registry::any_to_json::<ListOwnerPublishedLayersRequest>,
4291    from_json: ::buffa::type_registry::any_from_json::<ListOwnerPublishedLayersRequest>,
4292    is_wkt: false,
4293};
4294/// ListOwnerPublishedLayersResponse contains one page of discoverable layers.
4295#[derive(Clone, PartialEq, Default)]
4296#[derive(::serde::Serialize, ::serde::Deserialize)]
4297#[serde(default)]
4298pub struct ListOwnerPublishedLayersResponse {
4299    /// Published layers, returned newest-published first.
4300    ///
4301    /// Field 1: `layers`
4302    #[serde(
4303        rename = "layers",
4304        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
4305        deserialize_with = "::buffa::json_helpers::null_as_default"
4306    )]
4307    pub layers: ::buffa::alloc::vec::Vec<PublishedLayer>,
4308    /// Opaque cursor for the next page. Empty when no more results exist.
4309    ///
4310    /// Field 2: `next_page_token`
4311    #[serde(
4312        rename = "nextPageToken",
4313        alias = "next_page_token",
4314        with = "::buffa::json_helpers::proto_string",
4315        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
4316    )]
4317    pub next_page_token: ::buffa::alloc::string::String,
4318    #[serde(skip)]
4319    #[doc(hidden)]
4320    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4321}
4322impl ::core::fmt::Debug for ListOwnerPublishedLayersResponse {
4323    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4324        f.debug_struct("ListOwnerPublishedLayersResponse")
4325            .field("layers", &self.layers)
4326            .field("next_page_token", &self.next_page_token)
4327            .finish()
4328    }
4329}
4330impl ListOwnerPublishedLayersResponse {
4331    /// Protobuf type URL for this message, for use with `Any::pack` and
4332    /// `Any::unpack_if`.
4333    ///
4334    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4335    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersResponse";
4336}
4337::buffa::impl_default_instance!(ListOwnerPublishedLayersResponse);
4338impl ::buffa::MessageName for ListOwnerPublishedLayersResponse {
4339    const PACKAGE: &'static str = "polychart.v1";
4340    const NAME: &'static str = "ListOwnerPublishedLayersResponse";
4341    const FULL_NAME: &'static str = "polychart.v1.ListOwnerPublishedLayersResponse";
4342    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersResponse";
4343}
4344impl ::buffa::Message for ListOwnerPublishedLayersResponse {
4345    /// Returns the total encoded size in bytes.
4346    ///
4347    /// The result is a `u32`; the protobuf specification requires all
4348    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4349    /// compliant message will never overflow this type.
4350    #[allow(clippy::let_and_return)]
4351    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
4352        #[allow(unused_imports)]
4353        use ::buffa::Enumeration as _;
4354        let mut size = 0u32;
4355        for v in &self.layers {
4356            let __slot = __cache.reserve();
4357            let inner_size = v.compute_size(__cache);
4358            __cache.set(__slot, inner_size);
4359            size
4360                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
4361                    + inner_size;
4362        }
4363        if !self.next_page_token.is_empty() {
4364            size
4365                += 1u32
4366                    + ::buffa::types::string_encoded_len(&self.next_page_token) as u32;
4367        }
4368        size += self.__buffa_unknown_fields.encoded_len() as u32;
4369        size
4370    }
4371    fn write_to(
4372        &self,
4373        __cache: &mut ::buffa::SizeCache,
4374        buf: &mut impl ::buffa::bytes::BufMut,
4375    ) {
4376        #[allow(unused_imports)]
4377        use ::buffa::Enumeration as _;
4378        for v in &self.layers {
4379            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
4380            v.write_to(__cache, buf);
4381        }
4382        if !self.next_page_token.is_empty() {
4383            ::buffa::types::put_string_field(2u32, &self.next_page_token, buf);
4384        }
4385        self.__buffa_unknown_fields.write_to(buf);
4386    }
4387    fn merge_field(
4388        &mut self,
4389        tag: ::buffa::encoding::Tag,
4390        buf: &mut impl ::buffa::bytes::Buf,
4391        ctx: ::buffa::DecodeContext<'_>,
4392    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4393        #[allow(unused_imports)]
4394        use ::buffa::bytes::Buf as _;
4395        #[allow(unused_imports)]
4396        use ::buffa::Enumeration as _;
4397        match tag.field_number() {
4398            1u32 => {
4399                ::buffa::encoding::check_wire_type(
4400                    tag,
4401                    ::buffa::encoding::WireType::LengthDelimited,
4402                )?;
4403                let mut elem = ::core::default::Default::default();
4404                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
4405                self.layers.push(elem);
4406            }
4407            2u32 => {
4408                ::buffa::encoding::check_wire_type(
4409                    tag,
4410                    ::buffa::encoding::WireType::LengthDelimited,
4411                )?;
4412                ::buffa::types::merge_string(&mut self.next_page_token, buf)?;
4413            }
4414            _ => {
4415                self.__buffa_unknown_fields
4416                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4417            }
4418        }
4419        ::core::result::Result::Ok(())
4420    }
4421    fn clear(&mut self) {
4422        self.layers.clear();
4423        self.next_page_token.clear();
4424        self.__buffa_unknown_fields.clear();
4425    }
4426}
4427impl ::buffa::ExtensionSet for ListOwnerPublishedLayersResponse {
4428    const PROTO_FQN: &'static str = "polychart.v1.ListOwnerPublishedLayersResponse";
4429    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4430        &self.__buffa_unknown_fields
4431    }
4432    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4433        &mut self.__buffa_unknown_fields
4434    }
4435}
4436impl ::buffa::json_helpers::ProtoElemJson for ListOwnerPublishedLayersResponse {
4437    fn serialize_proto_json<S: ::serde::Serializer>(
4438        v: &Self,
4439        s: S,
4440    ) -> ::core::result::Result<S::Ok, S::Error> {
4441        ::serde::Serialize::serialize(v, s)
4442    }
4443    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4444        d: D,
4445    ) -> ::core::result::Result<Self, D::Error> {
4446        <Self as ::serde::Deserialize>::deserialize(d)
4447    }
4448}
4449#[doc(hidden)]
4450pub const __LIST_OWNER_PUBLISHED_LAYERS_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4451    type_url: "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersResponse",
4452    to_json: ::buffa::type_registry::any_to_json::<ListOwnerPublishedLayersResponse>,
4453    from_json: ::buffa::type_registry::any_from_json::<ListOwnerPublishedLayersResponse>,
4454    is_wkt: false,
4455};
4456/// PublishLayerRequest lists a layer for discovery. Publishing implies PUBLIC view access.
4457#[derive(Clone, PartialEq, Default)]
4458#[derive(::serde::Serialize, ::serde::Deserialize)]
4459#[serde(default)]
4460pub struct PublishLayerRequest {
4461    /// Layer to publish.
4462    ///
4463    /// Field 1: `layer`
4464    #[serde(
4465        rename = "layer",
4466        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
4467    )]
4468    pub layer: ::buffa::MessageField<LayerRef>,
4469    /// Public display title.
4470    ///
4471    /// Field 2: `title`
4472    #[serde(
4473        rename = "title",
4474        with = "::buffa::json_helpers::proto_string",
4475        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
4476    )]
4477    pub title: ::buffa::alloc::string::String,
4478    /// Public description shown with the layer.
4479    ///
4480    /// Field 3: `description`
4481    #[serde(
4482        rename = "description",
4483        with = "::buffa::json_helpers::proto_string",
4484        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_str"
4485    )]
4486    pub description: ::buffa::alloc::string::String,
4487    /// Public tags used for grouping or filtering.
4488    ///
4489    /// Field 4: `tags`
4490    #[serde(
4491        rename = "tags",
4492        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
4493        deserialize_with = "::buffa::json_helpers::null_as_default"
4494    )]
4495    pub tags: ::buffa::alloc::vec::Vec<::buffa::alloc::string::String>,
4496    #[serde(skip)]
4497    #[doc(hidden)]
4498    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4499}
4500impl ::core::fmt::Debug for PublishLayerRequest {
4501    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4502        f.debug_struct("PublishLayerRequest")
4503            .field("layer", &self.layer)
4504            .field("title", &self.title)
4505            .field("description", &self.description)
4506            .field("tags", &self.tags)
4507            .finish()
4508    }
4509}
4510impl PublishLayerRequest {
4511    /// Protobuf type URL for this message, for use with `Any::pack` and
4512    /// `Any::unpack_if`.
4513    ///
4514    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4515    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerRequest";
4516}
4517::buffa::impl_default_instance!(PublishLayerRequest);
4518impl ::buffa::MessageName for PublishLayerRequest {
4519    const PACKAGE: &'static str = "polychart.v1";
4520    const NAME: &'static str = "PublishLayerRequest";
4521    const FULL_NAME: &'static str = "polychart.v1.PublishLayerRequest";
4522    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerRequest";
4523}
4524impl ::buffa::Message for PublishLayerRequest {
4525    /// Returns the total encoded size in bytes.
4526    ///
4527    /// The result is a `u32`; the protobuf specification requires all
4528    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4529    /// compliant message will never overflow this type.
4530    #[allow(clippy::let_and_return)]
4531    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
4532        #[allow(unused_imports)]
4533        use ::buffa::Enumeration as _;
4534        let mut size = 0u32;
4535        if self.layer.is_set() {
4536            let __slot = __cache.reserve();
4537            let inner_size = self.layer.compute_size(__cache);
4538            __cache.set(__slot, inner_size);
4539            size
4540                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
4541                    + inner_size;
4542        }
4543        if !self.title.is_empty() {
4544            size += 1u32 + ::buffa::types::string_encoded_len(&self.title) as u32;
4545        }
4546        if !self.description.is_empty() {
4547            size += 1u32 + ::buffa::types::string_encoded_len(&self.description) as u32;
4548        }
4549        for v in &self.tags {
4550            size += 1u32 + ::buffa::types::string_encoded_len(v) as u32;
4551        }
4552        size += self.__buffa_unknown_fields.encoded_len() as u32;
4553        size
4554    }
4555    fn write_to(
4556        &self,
4557        __cache: &mut ::buffa::SizeCache,
4558        buf: &mut impl ::buffa::bytes::BufMut,
4559    ) {
4560        #[allow(unused_imports)]
4561        use ::buffa::Enumeration as _;
4562        if self.layer.is_set() {
4563            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
4564            self.layer.write_to(__cache, buf);
4565        }
4566        if !self.title.is_empty() {
4567            ::buffa::types::put_string_field(2u32, &self.title, buf);
4568        }
4569        if !self.description.is_empty() {
4570            ::buffa::types::put_string_field(3u32, &self.description, buf);
4571        }
4572        for v in &self.tags {
4573            ::buffa::types::put_string_field(4u32, v, buf);
4574        }
4575        self.__buffa_unknown_fields.write_to(buf);
4576    }
4577    fn merge_field(
4578        &mut self,
4579        tag: ::buffa::encoding::Tag,
4580        buf: &mut impl ::buffa::bytes::Buf,
4581        ctx: ::buffa::DecodeContext<'_>,
4582    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4583        #[allow(unused_imports)]
4584        use ::buffa::bytes::Buf as _;
4585        #[allow(unused_imports)]
4586        use ::buffa::Enumeration as _;
4587        match tag.field_number() {
4588            1u32 => {
4589                ::buffa::encoding::check_wire_type(
4590                    tag,
4591                    ::buffa::encoding::WireType::LengthDelimited,
4592                )?;
4593                ::buffa::Message::merge_length_delimited(
4594                    self.layer.get_or_insert_default(),
4595                    buf,
4596                    ctx,
4597                )?;
4598            }
4599            2u32 => {
4600                ::buffa::encoding::check_wire_type(
4601                    tag,
4602                    ::buffa::encoding::WireType::LengthDelimited,
4603                )?;
4604                ::buffa::types::merge_string(&mut self.title, buf)?;
4605            }
4606            3u32 => {
4607                ::buffa::encoding::check_wire_type(
4608                    tag,
4609                    ::buffa::encoding::WireType::LengthDelimited,
4610                )?;
4611                ::buffa::types::merge_string(&mut self.description, buf)?;
4612            }
4613            4u32 => {
4614                ::buffa::encoding::check_wire_type(
4615                    tag,
4616                    ::buffa::encoding::WireType::LengthDelimited,
4617                )?;
4618                self.tags.push(::buffa::types::decode_string(buf)?);
4619            }
4620            _ => {
4621                self.__buffa_unknown_fields
4622                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4623            }
4624        }
4625        ::core::result::Result::Ok(())
4626    }
4627    fn clear(&mut self) {
4628        self.layer = ::buffa::MessageField::none();
4629        self.title.clear();
4630        self.description.clear();
4631        self.tags.clear();
4632        self.__buffa_unknown_fields.clear();
4633    }
4634}
4635impl ::buffa::ExtensionSet for PublishLayerRequest {
4636    const PROTO_FQN: &'static str = "polychart.v1.PublishLayerRequest";
4637    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4638        &self.__buffa_unknown_fields
4639    }
4640    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4641        &mut self.__buffa_unknown_fields
4642    }
4643}
4644impl ::buffa::json_helpers::ProtoElemJson for PublishLayerRequest {
4645    fn serialize_proto_json<S: ::serde::Serializer>(
4646        v: &Self,
4647        s: S,
4648    ) -> ::core::result::Result<S::Ok, S::Error> {
4649        ::serde::Serialize::serialize(v, s)
4650    }
4651    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4652        d: D,
4653    ) -> ::core::result::Result<Self, D::Error> {
4654        <Self as ::serde::Deserialize>::deserialize(d)
4655    }
4656}
4657#[doc(hidden)]
4658pub const __PUBLISH_LAYER_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4659    type_url: "type.googleapis.com/polychart.v1.PublishLayerRequest",
4660    to_json: ::buffa::type_registry::any_to_json::<PublishLayerRequest>,
4661    from_json: ::buffa::type_registry::any_from_json::<PublishLayerRequest>,
4662    is_wkt: false,
4663};
4664/// PublishLayerResponse returns the published layer metadata.
4665#[derive(Clone, PartialEq, Default)]
4666#[derive(::serde::Serialize, ::serde::Deserialize)]
4667#[serde(default)]
4668pub struct PublishLayerResponse {
4669    /// Published layer metadata.
4670    ///
4671    /// Field 1: `layer`
4672    #[serde(
4673        rename = "layer",
4674        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
4675    )]
4676    pub layer: ::buffa::MessageField<PublishedLayer>,
4677    #[serde(skip)]
4678    #[doc(hidden)]
4679    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4680}
4681impl ::core::fmt::Debug for PublishLayerResponse {
4682    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4683        f.debug_struct("PublishLayerResponse").field("layer", &self.layer).finish()
4684    }
4685}
4686impl PublishLayerResponse {
4687    /// Protobuf type URL for this message, for use with `Any::pack` and
4688    /// `Any::unpack_if`.
4689    ///
4690    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4691    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerResponse";
4692}
4693::buffa::impl_default_instance!(PublishLayerResponse);
4694impl ::buffa::MessageName for PublishLayerResponse {
4695    const PACKAGE: &'static str = "polychart.v1";
4696    const NAME: &'static str = "PublishLayerResponse";
4697    const FULL_NAME: &'static str = "polychart.v1.PublishLayerResponse";
4698    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerResponse";
4699}
4700impl ::buffa::Message for PublishLayerResponse {
4701    /// Returns the total encoded size in bytes.
4702    ///
4703    /// The result is a `u32`; the protobuf specification requires all
4704    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4705    /// compliant message will never overflow this type.
4706    #[allow(clippy::let_and_return)]
4707    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
4708        #[allow(unused_imports)]
4709        use ::buffa::Enumeration as _;
4710        let mut size = 0u32;
4711        if self.layer.is_set() {
4712            let __slot = __cache.reserve();
4713            let inner_size = self.layer.compute_size(__cache);
4714            __cache.set(__slot, inner_size);
4715            size
4716                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
4717                    + inner_size;
4718        }
4719        size += self.__buffa_unknown_fields.encoded_len() as u32;
4720        size
4721    }
4722    fn write_to(
4723        &self,
4724        __cache: &mut ::buffa::SizeCache,
4725        buf: &mut impl ::buffa::bytes::BufMut,
4726    ) {
4727        #[allow(unused_imports)]
4728        use ::buffa::Enumeration as _;
4729        if self.layer.is_set() {
4730            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
4731            self.layer.write_to(__cache, buf);
4732        }
4733        self.__buffa_unknown_fields.write_to(buf);
4734    }
4735    fn merge_field(
4736        &mut self,
4737        tag: ::buffa::encoding::Tag,
4738        buf: &mut impl ::buffa::bytes::Buf,
4739        ctx: ::buffa::DecodeContext<'_>,
4740    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4741        #[allow(unused_imports)]
4742        use ::buffa::bytes::Buf as _;
4743        #[allow(unused_imports)]
4744        use ::buffa::Enumeration as _;
4745        match tag.field_number() {
4746            1u32 => {
4747                ::buffa::encoding::check_wire_type(
4748                    tag,
4749                    ::buffa::encoding::WireType::LengthDelimited,
4750                )?;
4751                ::buffa::Message::merge_length_delimited(
4752                    self.layer.get_or_insert_default(),
4753                    buf,
4754                    ctx,
4755                )?;
4756            }
4757            _ => {
4758                self.__buffa_unknown_fields
4759                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4760            }
4761        }
4762        ::core::result::Result::Ok(())
4763    }
4764    fn clear(&mut self) {
4765        self.layer = ::buffa::MessageField::none();
4766        self.__buffa_unknown_fields.clear();
4767    }
4768}
4769impl ::buffa::ExtensionSet for PublishLayerResponse {
4770    const PROTO_FQN: &'static str = "polychart.v1.PublishLayerResponse";
4771    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4772        &self.__buffa_unknown_fields
4773    }
4774    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4775        &mut self.__buffa_unknown_fields
4776    }
4777}
4778impl ::buffa::json_helpers::ProtoElemJson for PublishLayerResponse {
4779    fn serialize_proto_json<S: ::serde::Serializer>(
4780        v: &Self,
4781        s: S,
4782    ) -> ::core::result::Result<S::Ok, S::Error> {
4783        ::serde::Serialize::serialize(v, s)
4784    }
4785    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4786        d: D,
4787    ) -> ::core::result::Result<Self, D::Error> {
4788        <Self as ::serde::Deserialize>::deserialize(d)
4789    }
4790}
4791#[doc(hidden)]
4792pub const __PUBLISH_LAYER_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4793    type_url: "type.googleapis.com/polychart.v1.PublishLayerResponse",
4794    to_json: ::buffa::type_registry::any_to_json::<PublishLayerResponse>,
4795    from_json: ::buffa::type_registry::any_from_json::<PublishLayerResponse>,
4796    is_wkt: false,
4797};
4798/// UnpublishLayerRequest removes a layer from discovery listings.
4799#[derive(Clone, PartialEq, Default)]
4800#[derive(::serde::Serialize, ::serde::Deserialize)]
4801#[serde(default)]
4802pub struct UnpublishLayerRequest {
4803    /// Layer to remove from discovery.
4804    ///
4805    /// Field 1: `layer`
4806    #[serde(
4807        rename = "layer",
4808        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
4809    )]
4810    pub layer: ::buffa::MessageField<LayerRef>,
4811    #[serde(skip)]
4812    #[doc(hidden)]
4813    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4814}
4815impl ::core::fmt::Debug for UnpublishLayerRequest {
4816    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4817        f.debug_struct("UnpublishLayerRequest").field("layer", &self.layer).finish()
4818    }
4819}
4820impl UnpublishLayerRequest {
4821    /// Protobuf type URL for this message, for use with `Any::pack` and
4822    /// `Any::unpack_if`.
4823    ///
4824    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4825    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerRequest";
4826}
4827::buffa::impl_default_instance!(UnpublishLayerRequest);
4828impl ::buffa::MessageName for UnpublishLayerRequest {
4829    const PACKAGE: &'static str = "polychart.v1";
4830    const NAME: &'static str = "UnpublishLayerRequest";
4831    const FULL_NAME: &'static str = "polychart.v1.UnpublishLayerRequest";
4832    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerRequest";
4833}
4834impl ::buffa::Message for UnpublishLayerRequest {
4835    /// Returns the total encoded size in bytes.
4836    ///
4837    /// The result is a `u32`; the protobuf specification requires all
4838    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4839    /// compliant message will never overflow this type.
4840    #[allow(clippy::let_and_return)]
4841    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
4842        #[allow(unused_imports)]
4843        use ::buffa::Enumeration as _;
4844        let mut size = 0u32;
4845        if self.layer.is_set() {
4846            let __slot = __cache.reserve();
4847            let inner_size = self.layer.compute_size(__cache);
4848            __cache.set(__slot, inner_size);
4849            size
4850                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
4851                    + inner_size;
4852        }
4853        size += self.__buffa_unknown_fields.encoded_len() as u32;
4854        size
4855    }
4856    fn write_to(
4857        &self,
4858        __cache: &mut ::buffa::SizeCache,
4859        buf: &mut impl ::buffa::bytes::BufMut,
4860    ) {
4861        #[allow(unused_imports)]
4862        use ::buffa::Enumeration as _;
4863        if self.layer.is_set() {
4864            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
4865            self.layer.write_to(__cache, buf);
4866        }
4867        self.__buffa_unknown_fields.write_to(buf);
4868    }
4869    fn merge_field(
4870        &mut self,
4871        tag: ::buffa::encoding::Tag,
4872        buf: &mut impl ::buffa::bytes::Buf,
4873        ctx: ::buffa::DecodeContext<'_>,
4874    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4875        #[allow(unused_imports)]
4876        use ::buffa::bytes::Buf as _;
4877        #[allow(unused_imports)]
4878        use ::buffa::Enumeration as _;
4879        match tag.field_number() {
4880            1u32 => {
4881                ::buffa::encoding::check_wire_type(
4882                    tag,
4883                    ::buffa::encoding::WireType::LengthDelimited,
4884                )?;
4885                ::buffa::Message::merge_length_delimited(
4886                    self.layer.get_or_insert_default(),
4887                    buf,
4888                    ctx,
4889                )?;
4890            }
4891            _ => {
4892                self.__buffa_unknown_fields
4893                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4894            }
4895        }
4896        ::core::result::Result::Ok(())
4897    }
4898    fn clear(&mut self) {
4899        self.layer = ::buffa::MessageField::none();
4900        self.__buffa_unknown_fields.clear();
4901    }
4902}
4903impl ::buffa::ExtensionSet for UnpublishLayerRequest {
4904    const PROTO_FQN: &'static str = "polychart.v1.UnpublishLayerRequest";
4905    fn unknown_fields(&self) -> &::buffa::UnknownFields {
4906        &self.__buffa_unknown_fields
4907    }
4908    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
4909        &mut self.__buffa_unknown_fields
4910    }
4911}
4912impl ::buffa::json_helpers::ProtoElemJson for UnpublishLayerRequest {
4913    fn serialize_proto_json<S: ::serde::Serializer>(
4914        v: &Self,
4915        s: S,
4916    ) -> ::core::result::Result<S::Ok, S::Error> {
4917        ::serde::Serialize::serialize(v, s)
4918    }
4919    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
4920        d: D,
4921    ) -> ::core::result::Result<Self, D::Error> {
4922        <Self as ::serde::Deserialize>::deserialize(d)
4923    }
4924}
4925#[doc(hidden)]
4926pub const __UNPUBLISH_LAYER_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
4927    type_url: "type.googleapis.com/polychart.v1.UnpublishLayerRequest",
4928    to_json: ::buffa::type_registry::any_to_json::<UnpublishLayerRequest>,
4929    from_json: ::buffa::type_registry::any_from_json::<UnpublishLayerRequest>,
4930    is_wkt: false,
4931};
4932/// UnpublishLayerResponse is empty when the layer was removed from discovery.
4933#[derive(Clone, PartialEq, Default)]
4934#[derive(::serde::Serialize, ::serde::Deserialize)]
4935#[serde(default)]
4936pub struct UnpublishLayerResponse {
4937    #[serde(skip)]
4938    #[doc(hidden)]
4939    pub __buffa_unknown_fields: ::buffa::UnknownFields,
4940}
4941impl ::core::fmt::Debug for UnpublishLayerResponse {
4942    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
4943        f.debug_struct("UnpublishLayerResponse").finish()
4944    }
4945}
4946impl UnpublishLayerResponse {
4947    /// Protobuf type URL for this message, for use with `Any::pack` and
4948    /// `Any::unpack_if`.
4949    ///
4950    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
4951    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerResponse";
4952}
4953::buffa::impl_default_instance!(UnpublishLayerResponse);
4954impl ::buffa::MessageName for UnpublishLayerResponse {
4955    const PACKAGE: &'static str = "polychart.v1";
4956    const NAME: &'static str = "UnpublishLayerResponse";
4957    const FULL_NAME: &'static str = "polychart.v1.UnpublishLayerResponse";
4958    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerResponse";
4959}
4960impl ::buffa::Message for UnpublishLayerResponse {
4961    /// Returns the total encoded size in bytes.
4962    ///
4963    /// The result is a `u32`; the protobuf specification requires all
4964    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
4965    /// compliant message will never overflow this type.
4966    #[allow(clippy::let_and_return)]
4967    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
4968        #[allow(unused_imports)]
4969        use ::buffa::Enumeration as _;
4970        let mut size = 0u32;
4971        size += self.__buffa_unknown_fields.encoded_len() as u32;
4972        size
4973    }
4974    fn write_to(
4975        &self,
4976        _cache: &mut ::buffa::SizeCache,
4977        buf: &mut impl ::buffa::bytes::BufMut,
4978    ) {
4979        #[allow(unused_imports)]
4980        use ::buffa::Enumeration as _;
4981        self.__buffa_unknown_fields.write_to(buf);
4982    }
4983    fn merge_field(
4984        &mut self,
4985        tag: ::buffa::encoding::Tag,
4986        buf: &mut impl ::buffa::bytes::Buf,
4987        ctx: ::buffa::DecodeContext<'_>,
4988    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
4989        #[allow(unused_imports)]
4990        use ::buffa::bytes::Buf as _;
4991        #[allow(unused_imports)]
4992        use ::buffa::Enumeration as _;
4993        match tag.field_number() {
4994            _ => {
4995                self.__buffa_unknown_fields
4996                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
4997            }
4998        }
4999        ::core::result::Result::Ok(())
5000    }
5001    fn clear(&mut self) {
5002        self.__buffa_unknown_fields.clear();
5003    }
5004}
5005impl ::buffa::ExtensionSet for UnpublishLayerResponse {
5006    const PROTO_FQN: &'static str = "polychart.v1.UnpublishLayerResponse";
5007    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5008        &self.__buffa_unknown_fields
5009    }
5010    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5011        &mut self.__buffa_unknown_fields
5012    }
5013}
5014impl ::buffa::json_helpers::ProtoElemJson for UnpublishLayerResponse {
5015    fn serialize_proto_json<S: ::serde::Serializer>(
5016        v: &Self,
5017        s: S,
5018    ) -> ::core::result::Result<S::Ok, S::Error> {
5019        ::serde::Serialize::serialize(v, s)
5020    }
5021    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5022        d: D,
5023    ) -> ::core::result::Result<Self, D::Error> {
5024        <Self as ::serde::Deserialize>::deserialize(d)
5025    }
5026}
5027#[doc(hidden)]
5028pub const __UNPUBLISH_LAYER_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5029    type_url: "type.googleapis.com/polychart.v1.UnpublishLayerResponse",
5030    to_json: ::buffa::type_registry::any_to_json::<UnpublishLayerResponse>,
5031    from_json: ::buffa::type_registry::any_from_json::<UnpublishLayerResponse>,
5032    is_wkt: false,
5033};
5034/// =============================================================================
5035/// Mutations
5036/// =============================================================================
5037///
5038/// UpsertLayerRequest creates or updates a layer using optimistic concurrency.
5039#[derive(Clone, PartialEq, Default)]
5040#[derive(::serde::Serialize, ::serde::Deserialize)]
5041#[serde(default)]
5042pub struct UpsertLayerRequest {
5043    /// Layer payload to create or update.
5044    ///
5045    /// Field 1: `layer`
5046    #[serde(
5047        rename = "layer",
5048        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5049    )]
5050    pub layer: ::buffa::MessageField<Layer>,
5051    /// Expected current layer revision; 0 creates a new layer.
5052    ///
5053    /// Field 2: `expected_revision`
5054    #[serde(
5055        rename = "expectedRevision",
5056        alias = "expected_revision",
5057        with = "::buffa::json_helpers::uint64",
5058        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5059    )]
5060    pub expected_revision: u64,
5061    #[serde(skip)]
5062    #[doc(hidden)]
5063    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5064}
5065impl ::core::fmt::Debug for UpsertLayerRequest {
5066    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5067        f.debug_struct("UpsertLayerRequest")
5068            .field("layer", &self.layer)
5069            .field("expected_revision", &self.expected_revision)
5070            .finish()
5071    }
5072}
5073impl UpsertLayerRequest {
5074    /// Protobuf type URL for this message, for use with `Any::pack` and
5075    /// `Any::unpack_if`.
5076    ///
5077    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5078    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerRequest";
5079}
5080::buffa::impl_default_instance!(UpsertLayerRequest);
5081impl ::buffa::MessageName for UpsertLayerRequest {
5082    const PACKAGE: &'static str = "polychart.v1";
5083    const NAME: &'static str = "UpsertLayerRequest";
5084    const FULL_NAME: &'static str = "polychart.v1.UpsertLayerRequest";
5085    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerRequest";
5086}
5087impl ::buffa::Message for UpsertLayerRequest {
5088    /// Returns the total encoded size in bytes.
5089    ///
5090    /// The result is a `u32`; the protobuf specification requires all
5091    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5092    /// compliant message will never overflow this type.
5093    #[allow(clippy::let_and_return)]
5094    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
5095        #[allow(unused_imports)]
5096        use ::buffa::Enumeration as _;
5097        let mut size = 0u32;
5098        if self.layer.is_set() {
5099            let __slot = __cache.reserve();
5100            let inner_size = self.layer.compute_size(__cache);
5101            __cache.set(__slot, inner_size);
5102            size
5103                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
5104                    + inner_size;
5105        }
5106        if self.expected_revision != 0u64 {
5107            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
5108        }
5109        size += self.__buffa_unknown_fields.encoded_len() as u32;
5110        size
5111    }
5112    fn write_to(
5113        &self,
5114        __cache: &mut ::buffa::SizeCache,
5115        buf: &mut impl ::buffa::bytes::BufMut,
5116    ) {
5117        #[allow(unused_imports)]
5118        use ::buffa::Enumeration as _;
5119        if self.layer.is_set() {
5120            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
5121            self.layer.write_to(__cache, buf);
5122        }
5123        if self.expected_revision != 0u64 {
5124            ::buffa::types::put_fixed64_field(2u32, self.expected_revision, buf);
5125        }
5126        self.__buffa_unknown_fields.write_to(buf);
5127    }
5128    fn merge_field(
5129        &mut self,
5130        tag: ::buffa::encoding::Tag,
5131        buf: &mut impl ::buffa::bytes::Buf,
5132        ctx: ::buffa::DecodeContext<'_>,
5133    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5134        #[allow(unused_imports)]
5135        use ::buffa::bytes::Buf as _;
5136        #[allow(unused_imports)]
5137        use ::buffa::Enumeration as _;
5138        match tag.field_number() {
5139            1u32 => {
5140                ::buffa::encoding::check_wire_type(
5141                    tag,
5142                    ::buffa::encoding::WireType::LengthDelimited,
5143                )?;
5144                ::buffa::Message::merge_length_delimited(
5145                    self.layer.get_or_insert_default(),
5146                    buf,
5147                    ctx,
5148                )?;
5149            }
5150            2u32 => {
5151                ::buffa::encoding::check_wire_type(
5152                    tag,
5153                    ::buffa::encoding::WireType::Fixed64,
5154                )?;
5155                self.expected_revision = ::buffa::types::decode_fixed64(buf)?;
5156            }
5157            _ => {
5158                self.__buffa_unknown_fields
5159                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5160            }
5161        }
5162        ::core::result::Result::Ok(())
5163    }
5164    fn clear(&mut self) {
5165        self.layer = ::buffa::MessageField::none();
5166        self.expected_revision = 0u64;
5167        self.__buffa_unknown_fields.clear();
5168    }
5169}
5170impl ::buffa::ExtensionSet for UpsertLayerRequest {
5171    const PROTO_FQN: &'static str = "polychart.v1.UpsertLayerRequest";
5172    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5173        &self.__buffa_unknown_fields
5174    }
5175    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5176        &mut self.__buffa_unknown_fields
5177    }
5178}
5179impl ::buffa::json_helpers::ProtoElemJson for UpsertLayerRequest {
5180    fn serialize_proto_json<S: ::serde::Serializer>(
5181        v: &Self,
5182        s: S,
5183    ) -> ::core::result::Result<S::Ok, S::Error> {
5184        ::serde::Serialize::serialize(v, s)
5185    }
5186    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5187        d: D,
5188    ) -> ::core::result::Result<Self, D::Error> {
5189        <Self as ::serde::Deserialize>::deserialize(d)
5190    }
5191}
5192#[doc(hidden)]
5193pub const __UPSERT_LAYER_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5194    type_url: "type.googleapis.com/polychart.v1.UpsertLayerRequest",
5195    to_json: ::buffa::type_registry::any_to_json::<UpsertLayerRequest>,
5196    from_json: ::buffa::type_registry::any_from_json::<UpsertLayerRequest>,
5197    is_wkt: false,
5198};
5199/// UpsertLayerResponse returns the committed layer.
5200#[derive(Clone, PartialEq, Default)]
5201#[derive(::serde::Serialize, ::serde::Deserialize)]
5202#[serde(default)]
5203pub struct UpsertLayerResponse {
5204    /// Layer after server-side commit handling.
5205    ///
5206    /// Field 1: `layer`
5207    #[serde(
5208        rename = "layer",
5209        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5210    )]
5211    pub layer: ::buffa::MessageField<Layer>,
5212    #[serde(skip)]
5213    #[doc(hidden)]
5214    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5215}
5216impl ::core::fmt::Debug for UpsertLayerResponse {
5217    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5218        f.debug_struct("UpsertLayerResponse").field("layer", &self.layer).finish()
5219    }
5220}
5221impl UpsertLayerResponse {
5222    /// Protobuf type URL for this message, for use with `Any::pack` and
5223    /// `Any::unpack_if`.
5224    ///
5225    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5226    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerResponse";
5227}
5228::buffa::impl_default_instance!(UpsertLayerResponse);
5229impl ::buffa::MessageName for UpsertLayerResponse {
5230    const PACKAGE: &'static str = "polychart.v1";
5231    const NAME: &'static str = "UpsertLayerResponse";
5232    const FULL_NAME: &'static str = "polychart.v1.UpsertLayerResponse";
5233    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerResponse";
5234}
5235impl ::buffa::Message for UpsertLayerResponse {
5236    /// Returns the total encoded size in bytes.
5237    ///
5238    /// The result is a `u32`; the protobuf specification requires all
5239    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5240    /// compliant message will never overflow this type.
5241    #[allow(clippy::let_and_return)]
5242    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
5243        #[allow(unused_imports)]
5244        use ::buffa::Enumeration as _;
5245        let mut size = 0u32;
5246        if self.layer.is_set() {
5247            let __slot = __cache.reserve();
5248            let inner_size = self.layer.compute_size(__cache);
5249            __cache.set(__slot, inner_size);
5250            size
5251                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
5252                    + inner_size;
5253        }
5254        size += self.__buffa_unknown_fields.encoded_len() as u32;
5255        size
5256    }
5257    fn write_to(
5258        &self,
5259        __cache: &mut ::buffa::SizeCache,
5260        buf: &mut impl ::buffa::bytes::BufMut,
5261    ) {
5262        #[allow(unused_imports)]
5263        use ::buffa::Enumeration as _;
5264        if self.layer.is_set() {
5265            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
5266            self.layer.write_to(__cache, buf);
5267        }
5268        self.__buffa_unknown_fields.write_to(buf);
5269    }
5270    fn merge_field(
5271        &mut self,
5272        tag: ::buffa::encoding::Tag,
5273        buf: &mut impl ::buffa::bytes::Buf,
5274        ctx: ::buffa::DecodeContext<'_>,
5275    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5276        #[allow(unused_imports)]
5277        use ::buffa::bytes::Buf as _;
5278        #[allow(unused_imports)]
5279        use ::buffa::Enumeration as _;
5280        match tag.field_number() {
5281            1u32 => {
5282                ::buffa::encoding::check_wire_type(
5283                    tag,
5284                    ::buffa::encoding::WireType::LengthDelimited,
5285                )?;
5286                ::buffa::Message::merge_length_delimited(
5287                    self.layer.get_or_insert_default(),
5288                    buf,
5289                    ctx,
5290                )?;
5291            }
5292            _ => {
5293                self.__buffa_unknown_fields
5294                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5295            }
5296        }
5297        ::core::result::Result::Ok(())
5298    }
5299    fn clear(&mut self) {
5300        self.layer = ::buffa::MessageField::none();
5301        self.__buffa_unknown_fields.clear();
5302    }
5303}
5304impl ::buffa::ExtensionSet for UpsertLayerResponse {
5305    const PROTO_FQN: &'static str = "polychart.v1.UpsertLayerResponse";
5306    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5307        &self.__buffa_unknown_fields
5308    }
5309    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5310        &mut self.__buffa_unknown_fields
5311    }
5312}
5313impl ::buffa::json_helpers::ProtoElemJson for UpsertLayerResponse {
5314    fn serialize_proto_json<S: ::serde::Serializer>(
5315        v: &Self,
5316        s: S,
5317    ) -> ::core::result::Result<S::Ok, S::Error> {
5318        ::serde::Serialize::serialize(v, s)
5319    }
5320    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5321        d: D,
5322    ) -> ::core::result::Result<Self, D::Error> {
5323        <Self as ::serde::Deserialize>::deserialize(d)
5324    }
5325}
5326#[doc(hidden)]
5327pub const __UPSERT_LAYER_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5328    type_url: "type.googleapis.com/polychart.v1.UpsertLayerResponse",
5329    to_json: ::buffa::type_registry::any_to_json::<UpsertLayerResponse>,
5330    from_json: ::buffa::type_registry::any_from_json::<UpsertLayerResponse>,
5331    is_wkt: false,
5332};
5333/// DeleteLayerRequest soft-deletes a layer and its drawings using optimistic concurrency.
5334#[derive(Clone, PartialEq, Default)]
5335#[derive(::serde::Serialize, ::serde::Deserialize)]
5336#[serde(default)]
5337pub struct DeleteLayerRequest {
5338    /// Layer to delete.
5339    ///
5340    /// Field 1: `layer`
5341    #[serde(
5342        rename = "layer",
5343        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5344    )]
5345    pub layer: ::buffa::MessageField<LayerRef>,
5346    /// Expected current layer revision.
5347    ///
5348    /// Field 2: `expected_revision`
5349    #[serde(
5350        rename = "expectedRevision",
5351        alias = "expected_revision",
5352        with = "::buffa::json_helpers::uint64",
5353        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5354    )]
5355    pub expected_revision: u64,
5356    #[serde(skip)]
5357    #[doc(hidden)]
5358    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5359}
5360impl ::core::fmt::Debug for DeleteLayerRequest {
5361    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5362        f.debug_struct("DeleteLayerRequest")
5363            .field("layer", &self.layer)
5364            .field("expected_revision", &self.expected_revision)
5365            .finish()
5366    }
5367}
5368impl DeleteLayerRequest {
5369    /// Protobuf type URL for this message, for use with `Any::pack` and
5370    /// `Any::unpack_if`.
5371    ///
5372    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5373    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerRequest";
5374}
5375::buffa::impl_default_instance!(DeleteLayerRequest);
5376impl ::buffa::MessageName for DeleteLayerRequest {
5377    const PACKAGE: &'static str = "polychart.v1";
5378    const NAME: &'static str = "DeleteLayerRequest";
5379    const FULL_NAME: &'static str = "polychart.v1.DeleteLayerRequest";
5380    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerRequest";
5381}
5382impl ::buffa::Message for DeleteLayerRequest {
5383    /// Returns the total encoded size in bytes.
5384    ///
5385    /// The result is a `u32`; the protobuf specification requires all
5386    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5387    /// compliant message will never overflow this type.
5388    #[allow(clippy::let_and_return)]
5389    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
5390        #[allow(unused_imports)]
5391        use ::buffa::Enumeration as _;
5392        let mut size = 0u32;
5393        if self.layer.is_set() {
5394            let __slot = __cache.reserve();
5395            let inner_size = self.layer.compute_size(__cache);
5396            __cache.set(__slot, inner_size);
5397            size
5398                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
5399                    + inner_size;
5400        }
5401        if self.expected_revision != 0u64 {
5402            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
5403        }
5404        size += self.__buffa_unknown_fields.encoded_len() as u32;
5405        size
5406    }
5407    fn write_to(
5408        &self,
5409        __cache: &mut ::buffa::SizeCache,
5410        buf: &mut impl ::buffa::bytes::BufMut,
5411    ) {
5412        #[allow(unused_imports)]
5413        use ::buffa::Enumeration as _;
5414        if self.layer.is_set() {
5415            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
5416            self.layer.write_to(__cache, buf);
5417        }
5418        if self.expected_revision != 0u64 {
5419            ::buffa::types::put_fixed64_field(2u32, self.expected_revision, buf);
5420        }
5421        self.__buffa_unknown_fields.write_to(buf);
5422    }
5423    fn merge_field(
5424        &mut self,
5425        tag: ::buffa::encoding::Tag,
5426        buf: &mut impl ::buffa::bytes::Buf,
5427        ctx: ::buffa::DecodeContext<'_>,
5428    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5429        #[allow(unused_imports)]
5430        use ::buffa::bytes::Buf as _;
5431        #[allow(unused_imports)]
5432        use ::buffa::Enumeration as _;
5433        match tag.field_number() {
5434            1u32 => {
5435                ::buffa::encoding::check_wire_type(
5436                    tag,
5437                    ::buffa::encoding::WireType::LengthDelimited,
5438                )?;
5439                ::buffa::Message::merge_length_delimited(
5440                    self.layer.get_or_insert_default(),
5441                    buf,
5442                    ctx,
5443                )?;
5444            }
5445            2u32 => {
5446                ::buffa::encoding::check_wire_type(
5447                    tag,
5448                    ::buffa::encoding::WireType::Fixed64,
5449                )?;
5450                self.expected_revision = ::buffa::types::decode_fixed64(buf)?;
5451            }
5452            _ => {
5453                self.__buffa_unknown_fields
5454                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5455            }
5456        }
5457        ::core::result::Result::Ok(())
5458    }
5459    fn clear(&mut self) {
5460        self.layer = ::buffa::MessageField::none();
5461        self.expected_revision = 0u64;
5462        self.__buffa_unknown_fields.clear();
5463    }
5464}
5465impl ::buffa::ExtensionSet for DeleteLayerRequest {
5466    const PROTO_FQN: &'static str = "polychart.v1.DeleteLayerRequest";
5467    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5468        &self.__buffa_unknown_fields
5469    }
5470    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5471        &mut self.__buffa_unknown_fields
5472    }
5473}
5474impl ::buffa::json_helpers::ProtoElemJson for DeleteLayerRequest {
5475    fn serialize_proto_json<S: ::serde::Serializer>(
5476        v: &Self,
5477        s: S,
5478    ) -> ::core::result::Result<S::Ok, S::Error> {
5479        ::serde::Serialize::serialize(v, s)
5480    }
5481    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5482        d: D,
5483    ) -> ::core::result::Result<Self, D::Error> {
5484        <Self as ::serde::Deserialize>::deserialize(d)
5485    }
5486}
5487#[doc(hidden)]
5488pub const __DELETE_LAYER_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5489    type_url: "type.googleapis.com/polychart.v1.DeleteLayerRequest",
5490    to_json: ::buffa::type_registry::any_to_json::<DeleteLayerRequest>,
5491    from_json: ::buffa::type_registry::any_from_json::<DeleteLayerRequest>,
5492    is_wkt: false,
5493};
5494/// DeleteLayerResponse returns the final layer revision after deletion.
5495#[derive(Clone, PartialEq, Default)]
5496#[derive(::serde::Serialize, ::serde::Deserialize)]
5497#[serde(default)]
5498pub struct DeleteLayerResponse {
5499    /// Final layer revision after delete.
5500    ///
5501    /// Field 1: `layer_revision`
5502    #[serde(
5503        rename = "layerRevision",
5504        alias = "layer_revision",
5505        with = "::buffa::json_helpers::uint64",
5506        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5507    )]
5508    pub layer_revision: u64,
5509    #[serde(skip)]
5510    #[doc(hidden)]
5511    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5512}
5513impl ::core::fmt::Debug for DeleteLayerResponse {
5514    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5515        f.debug_struct("DeleteLayerResponse")
5516            .field("layer_revision", &self.layer_revision)
5517            .finish()
5518    }
5519}
5520impl DeleteLayerResponse {
5521    /// Protobuf type URL for this message, for use with `Any::pack` and
5522    /// `Any::unpack_if`.
5523    ///
5524    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5525    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerResponse";
5526}
5527::buffa::impl_default_instance!(DeleteLayerResponse);
5528impl ::buffa::MessageName for DeleteLayerResponse {
5529    const PACKAGE: &'static str = "polychart.v1";
5530    const NAME: &'static str = "DeleteLayerResponse";
5531    const FULL_NAME: &'static str = "polychart.v1.DeleteLayerResponse";
5532    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerResponse";
5533}
5534impl ::buffa::Message for DeleteLayerResponse {
5535    /// Returns the total encoded size in bytes.
5536    ///
5537    /// The result is a `u32`; the protobuf specification requires all
5538    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5539    /// compliant message will never overflow this type.
5540    #[allow(clippy::let_and_return)]
5541    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
5542        #[allow(unused_imports)]
5543        use ::buffa::Enumeration as _;
5544        let mut size = 0u32;
5545        if self.layer_revision != 0u64 {
5546            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
5547        }
5548        size += self.__buffa_unknown_fields.encoded_len() as u32;
5549        size
5550    }
5551    fn write_to(
5552        &self,
5553        _cache: &mut ::buffa::SizeCache,
5554        buf: &mut impl ::buffa::bytes::BufMut,
5555    ) {
5556        #[allow(unused_imports)]
5557        use ::buffa::Enumeration as _;
5558        if self.layer_revision != 0u64 {
5559            ::buffa::types::put_fixed64_field(1u32, self.layer_revision, buf);
5560        }
5561        self.__buffa_unknown_fields.write_to(buf);
5562    }
5563    fn merge_field(
5564        &mut self,
5565        tag: ::buffa::encoding::Tag,
5566        buf: &mut impl ::buffa::bytes::Buf,
5567        ctx: ::buffa::DecodeContext<'_>,
5568    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5569        #[allow(unused_imports)]
5570        use ::buffa::bytes::Buf as _;
5571        #[allow(unused_imports)]
5572        use ::buffa::Enumeration as _;
5573        match tag.field_number() {
5574            1u32 => {
5575                ::buffa::encoding::check_wire_type(
5576                    tag,
5577                    ::buffa::encoding::WireType::Fixed64,
5578                )?;
5579                self.layer_revision = ::buffa::types::decode_fixed64(buf)?;
5580            }
5581            _ => {
5582                self.__buffa_unknown_fields
5583                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5584            }
5585        }
5586        ::core::result::Result::Ok(())
5587    }
5588    fn clear(&mut self) {
5589        self.layer_revision = 0u64;
5590        self.__buffa_unknown_fields.clear();
5591    }
5592}
5593impl ::buffa::ExtensionSet for DeleteLayerResponse {
5594    const PROTO_FQN: &'static str = "polychart.v1.DeleteLayerResponse";
5595    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5596        &self.__buffa_unknown_fields
5597    }
5598    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5599        &mut self.__buffa_unknown_fields
5600    }
5601}
5602impl ::buffa::json_helpers::ProtoElemJson for DeleteLayerResponse {
5603    fn serialize_proto_json<S: ::serde::Serializer>(
5604        v: &Self,
5605        s: S,
5606    ) -> ::core::result::Result<S::Ok, S::Error> {
5607        ::serde::Serialize::serialize(v, s)
5608    }
5609    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5610        d: D,
5611    ) -> ::core::result::Result<Self, D::Error> {
5612        <Self as ::serde::Deserialize>::deserialize(d)
5613    }
5614}
5615#[doc(hidden)]
5616pub const __DELETE_LAYER_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5617    type_url: "type.googleapis.com/polychart.v1.DeleteLayerResponse",
5618    to_json: ::buffa::type_registry::any_to_json::<DeleteLayerResponse>,
5619    from_json: ::buffa::type_registry::any_from_json::<DeleteLayerResponse>,
5620    is_wkt: false,
5621};
5622/// UpsertDrawingRequest creates or updates one drawing using the parent layer revision.
5623#[derive(Clone, PartialEq, Default)]
5624#[derive(::serde::Serialize, ::serde::Deserialize)]
5625#[serde(default)]
5626pub struct UpsertDrawingRequest {
5627    /// Drawing payload to create or update.
5628    ///
5629    /// Field 1: `drawing`
5630    #[serde(
5631        rename = "drawing",
5632        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5633    )]
5634    pub drawing: ::buffa::MessageField<Drawing>,
5635    /// Expected current revision of the parent layer.
5636    ///
5637    /// Field 2: `expected_layer_revision`
5638    #[serde(
5639        rename = "expectedLayerRevision",
5640        alias = "expected_layer_revision",
5641        with = "::buffa::json_helpers::uint64",
5642        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5643    )]
5644    pub expected_layer_revision: u64,
5645    #[serde(skip)]
5646    #[doc(hidden)]
5647    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5648}
5649impl ::core::fmt::Debug for UpsertDrawingRequest {
5650    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5651        f.debug_struct("UpsertDrawingRequest")
5652            .field("drawing", &self.drawing)
5653            .field("expected_layer_revision", &self.expected_layer_revision)
5654            .finish()
5655    }
5656}
5657impl UpsertDrawingRequest {
5658    /// Protobuf type URL for this message, for use with `Any::pack` and
5659    /// `Any::unpack_if`.
5660    ///
5661    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5662    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingRequest";
5663}
5664::buffa::impl_default_instance!(UpsertDrawingRequest);
5665impl ::buffa::MessageName for UpsertDrawingRequest {
5666    const PACKAGE: &'static str = "polychart.v1";
5667    const NAME: &'static str = "UpsertDrawingRequest";
5668    const FULL_NAME: &'static str = "polychart.v1.UpsertDrawingRequest";
5669    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingRequest";
5670}
5671impl ::buffa::Message for UpsertDrawingRequest {
5672    /// Returns the total encoded size in bytes.
5673    ///
5674    /// The result is a `u32`; the protobuf specification requires all
5675    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5676    /// compliant message will never overflow this type.
5677    #[allow(clippy::let_and_return)]
5678    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
5679        #[allow(unused_imports)]
5680        use ::buffa::Enumeration as _;
5681        let mut size = 0u32;
5682        if self.drawing.is_set() {
5683            let __slot = __cache.reserve();
5684            let inner_size = self.drawing.compute_size(__cache);
5685            __cache.set(__slot, inner_size);
5686            size
5687                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
5688                    + inner_size;
5689        }
5690        if self.expected_layer_revision != 0u64 {
5691            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
5692        }
5693        size += self.__buffa_unknown_fields.encoded_len() as u32;
5694        size
5695    }
5696    fn write_to(
5697        &self,
5698        __cache: &mut ::buffa::SizeCache,
5699        buf: &mut impl ::buffa::bytes::BufMut,
5700    ) {
5701        #[allow(unused_imports)]
5702        use ::buffa::Enumeration as _;
5703        if self.drawing.is_set() {
5704            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
5705            self.drawing.write_to(__cache, buf);
5706        }
5707        if self.expected_layer_revision != 0u64 {
5708            ::buffa::types::put_fixed64_field(2u32, self.expected_layer_revision, buf);
5709        }
5710        self.__buffa_unknown_fields.write_to(buf);
5711    }
5712    fn merge_field(
5713        &mut self,
5714        tag: ::buffa::encoding::Tag,
5715        buf: &mut impl ::buffa::bytes::Buf,
5716        ctx: ::buffa::DecodeContext<'_>,
5717    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5718        #[allow(unused_imports)]
5719        use ::buffa::bytes::Buf as _;
5720        #[allow(unused_imports)]
5721        use ::buffa::Enumeration as _;
5722        match tag.field_number() {
5723            1u32 => {
5724                ::buffa::encoding::check_wire_type(
5725                    tag,
5726                    ::buffa::encoding::WireType::LengthDelimited,
5727                )?;
5728                ::buffa::Message::merge_length_delimited(
5729                    self.drawing.get_or_insert_default(),
5730                    buf,
5731                    ctx,
5732                )?;
5733            }
5734            2u32 => {
5735                ::buffa::encoding::check_wire_type(
5736                    tag,
5737                    ::buffa::encoding::WireType::Fixed64,
5738                )?;
5739                self.expected_layer_revision = ::buffa::types::decode_fixed64(buf)?;
5740            }
5741            _ => {
5742                self.__buffa_unknown_fields
5743                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5744            }
5745        }
5746        ::core::result::Result::Ok(())
5747    }
5748    fn clear(&mut self) {
5749        self.drawing = ::buffa::MessageField::none();
5750        self.expected_layer_revision = 0u64;
5751        self.__buffa_unknown_fields.clear();
5752    }
5753}
5754impl ::buffa::ExtensionSet for UpsertDrawingRequest {
5755    const PROTO_FQN: &'static str = "polychart.v1.UpsertDrawingRequest";
5756    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5757        &self.__buffa_unknown_fields
5758    }
5759    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5760        &mut self.__buffa_unknown_fields
5761    }
5762}
5763impl ::buffa::json_helpers::ProtoElemJson for UpsertDrawingRequest {
5764    fn serialize_proto_json<S: ::serde::Serializer>(
5765        v: &Self,
5766        s: S,
5767    ) -> ::core::result::Result<S::Ok, S::Error> {
5768        ::serde::Serialize::serialize(v, s)
5769    }
5770    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5771        d: D,
5772    ) -> ::core::result::Result<Self, D::Error> {
5773        <Self as ::serde::Deserialize>::deserialize(d)
5774    }
5775}
5776#[doc(hidden)]
5777pub const __UPSERT_DRAWING_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5778    type_url: "type.googleapis.com/polychart.v1.UpsertDrawingRequest",
5779    to_json: ::buffa::type_registry::any_to_json::<UpsertDrawingRequest>,
5780    from_json: ::buffa::type_registry::any_from_json::<UpsertDrawingRequest>,
5781    is_wkt: false,
5782};
5783/// UpsertDrawingResponse returns the committed drawing and new parent layer revision.
5784#[derive(Clone, PartialEq, Default)]
5785#[derive(::serde::Serialize, ::serde::Deserialize)]
5786#[serde(default)]
5787pub struct UpsertDrawingResponse {
5788    /// Drawing after server-side commit handling.
5789    ///
5790    /// Field 1: `drawing`
5791    #[serde(
5792        rename = "drawing",
5793        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5794    )]
5795    pub drawing: ::buffa::MessageField<Drawing>,
5796    /// New parent layer revision after mutation.
5797    ///
5798    /// Field 2: `layer_revision`
5799    #[serde(
5800        rename = "layerRevision",
5801        alias = "layer_revision",
5802        with = "::buffa::json_helpers::uint64",
5803        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5804    )]
5805    pub layer_revision: u64,
5806    #[serde(skip)]
5807    #[doc(hidden)]
5808    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5809}
5810impl ::core::fmt::Debug for UpsertDrawingResponse {
5811    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5812        f.debug_struct("UpsertDrawingResponse")
5813            .field("drawing", &self.drawing)
5814            .field("layer_revision", &self.layer_revision)
5815            .finish()
5816    }
5817}
5818impl UpsertDrawingResponse {
5819    /// Protobuf type URL for this message, for use with `Any::pack` and
5820    /// `Any::unpack_if`.
5821    ///
5822    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5823    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingResponse";
5824}
5825::buffa::impl_default_instance!(UpsertDrawingResponse);
5826impl ::buffa::MessageName for UpsertDrawingResponse {
5827    const PACKAGE: &'static str = "polychart.v1";
5828    const NAME: &'static str = "UpsertDrawingResponse";
5829    const FULL_NAME: &'static str = "polychart.v1.UpsertDrawingResponse";
5830    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingResponse";
5831}
5832impl ::buffa::Message for UpsertDrawingResponse {
5833    /// Returns the total encoded size in bytes.
5834    ///
5835    /// The result is a `u32`; the protobuf specification requires all
5836    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
5837    /// compliant message will never overflow this type.
5838    #[allow(clippy::let_and_return)]
5839    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
5840        #[allow(unused_imports)]
5841        use ::buffa::Enumeration as _;
5842        let mut size = 0u32;
5843        if self.drawing.is_set() {
5844            let __slot = __cache.reserve();
5845            let inner_size = self.drawing.compute_size(__cache);
5846            __cache.set(__slot, inner_size);
5847            size
5848                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
5849                    + inner_size;
5850        }
5851        if self.layer_revision != 0u64 {
5852            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
5853        }
5854        size += self.__buffa_unknown_fields.encoded_len() as u32;
5855        size
5856    }
5857    fn write_to(
5858        &self,
5859        __cache: &mut ::buffa::SizeCache,
5860        buf: &mut impl ::buffa::bytes::BufMut,
5861    ) {
5862        #[allow(unused_imports)]
5863        use ::buffa::Enumeration as _;
5864        if self.drawing.is_set() {
5865            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
5866            self.drawing.write_to(__cache, buf);
5867        }
5868        if self.layer_revision != 0u64 {
5869            ::buffa::types::put_fixed64_field(2u32, self.layer_revision, buf);
5870        }
5871        self.__buffa_unknown_fields.write_to(buf);
5872    }
5873    fn merge_field(
5874        &mut self,
5875        tag: ::buffa::encoding::Tag,
5876        buf: &mut impl ::buffa::bytes::Buf,
5877        ctx: ::buffa::DecodeContext<'_>,
5878    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
5879        #[allow(unused_imports)]
5880        use ::buffa::bytes::Buf as _;
5881        #[allow(unused_imports)]
5882        use ::buffa::Enumeration as _;
5883        match tag.field_number() {
5884            1u32 => {
5885                ::buffa::encoding::check_wire_type(
5886                    tag,
5887                    ::buffa::encoding::WireType::LengthDelimited,
5888                )?;
5889                ::buffa::Message::merge_length_delimited(
5890                    self.drawing.get_or_insert_default(),
5891                    buf,
5892                    ctx,
5893                )?;
5894            }
5895            2u32 => {
5896                ::buffa::encoding::check_wire_type(
5897                    tag,
5898                    ::buffa::encoding::WireType::Fixed64,
5899                )?;
5900                self.layer_revision = ::buffa::types::decode_fixed64(buf)?;
5901            }
5902            _ => {
5903                self.__buffa_unknown_fields
5904                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
5905            }
5906        }
5907        ::core::result::Result::Ok(())
5908    }
5909    fn clear(&mut self) {
5910        self.drawing = ::buffa::MessageField::none();
5911        self.layer_revision = 0u64;
5912        self.__buffa_unknown_fields.clear();
5913    }
5914}
5915impl ::buffa::ExtensionSet for UpsertDrawingResponse {
5916    const PROTO_FQN: &'static str = "polychart.v1.UpsertDrawingResponse";
5917    fn unknown_fields(&self) -> &::buffa::UnknownFields {
5918        &self.__buffa_unknown_fields
5919    }
5920    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
5921        &mut self.__buffa_unknown_fields
5922    }
5923}
5924impl ::buffa::json_helpers::ProtoElemJson for UpsertDrawingResponse {
5925    fn serialize_proto_json<S: ::serde::Serializer>(
5926        v: &Self,
5927        s: S,
5928    ) -> ::core::result::Result<S::Ok, S::Error> {
5929        ::serde::Serialize::serialize(v, s)
5930    }
5931    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
5932        d: D,
5933    ) -> ::core::result::Result<Self, D::Error> {
5934        <Self as ::serde::Deserialize>::deserialize(d)
5935    }
5936}
5937#[doc(hidden)]
5938pub const __UPSERT_DRAWING_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
5939    type_url: "type.googleapis.com/polychart.v1.UpsertDrawingResponse",
5940    to_json: ::buffa::type_registry::any_to_json::<UpsertDrawingResponse>,
5941    from_json: ::buffa::type_registry::any_from_json::<UpsertDrawingResponse>,
5942    is_wkt: false,
5943};
5944/// DeleteDrawingRequest soft-deletes one drawing using the parent layer revision.
5945#[derive(Clone, PartialEq, Default)]
5946#[derive(::serde::Serialize, ::serde::Deserialize)]
5947#[serde(default)]
5948pub struct DeleteDrawingRequest {
5949    /// Drawing to delete.
5950    ///
5951    /// Field 1: `drawing`
5952    #[serde(
5953        rename = "drawing",
5954        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5955    )]
5956    pub drawing: ::buffa::MessageField<DrawingRef>,
5957    /// Parent layer that contains the drawing.
5958    ///
5959    /// Field 2: `layer`
5960    #[serde(
5961        rename = "layer",
5962        skip_serializing_if = "::buffa::json_helpers::skip_if::is_unset_message_field"
5963    )]
5964    pub layer: ::buffa::MessageField<LayerRef>,
5965    /// Expected current revision of the parent layer.
5966    ///
5967    /// Field 3: `expected_layer_revision`
5968    #[serde(
5969        rename = "expectedLayerRevision",
5970        alias = "expected_layer_revision",
5971        with = "::buffa::json_helpers::uint64",
5972        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
5973    )]
5974    pub expected_layer_revision: u64,
5975    #[serde(skip)]
5976    #[doc(hidden)]
5977    pub __buffa_unknown_fields: ::buffa::UnknownFields,
5978}
5979impl ::core::fmt::Debug for DeleteDrawingRequest {
5980    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
5981        f.debug_struct("DeleteDrawingRequest")
5982            .field("drawing", &self.drawing)
5983            .field("layer", &self.layer)
5984            .field("expected_layer_revision", &self.expected_layer_revision)
5985            .finish()
5986    }
5987}
5988impl DeleteDrawingRequest {
5989    /// Protobuf type URL for this message, for use with `Any::pack` and
5990    /// `Any::unpack_if`.
5991    ///
5992    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
5993    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingRequest";
5994}
5995::buffa::impl_default_instance!(DeleteDrawingRequest);
5996impl ::buffa::MessageName for DeleteDrawingRequest {
5997    const PACKAGE: &'static str = "polychart.v1";
5998    const NAME: &'static str = "DeleteDrawingRequest";
5999    const FULL_NAME: &'static str = "polychart.v1.DeleteDrawingRequest";
6000    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingRequest";
6001}
6002impl ::buffa::Message for DeleteDrawingRequest {
6003    /// Returns the total encoded size in bytes.
6004    ///
6005    /// The result is a `u32`; the protobuf specification requires all
6006    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
6007    /// compliant message will never overflow this type.
6008    #[allow(clippy::let_and_return)]
6009    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
6010        #[allow(unused_imports)]
6011        use ::buffa::Enumeration as _;
6012        let mut size = 0u32;
6013        if self.drawing.is_set() {
6014            let __slot = __cache.reserve();
6015            let inner_size = self.drawing.compute_size(__cache);
6016            __cache.set(__slot, inner_size);
6017            size
6018                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
6019                    + inner_size;
6020        }
6021        if self.layer.is_set() {
6022            let __slot = __cache.reserve();
6023            let inner_size = self.layer.compute_size(__cache);
6024            __cache.set(__slot, inner_size);
6025            size
6026                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
6027                    + inner_size;
6028        }
6029        if self.expected_layer_revision != 0u64 {
6030            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6031        }
6032        size += self.__buffa_unknown_fields.encoded_len() as u32;
6033        size
6034    }
6035    fn write_to(
6036        &self,
6037        __cache: &mut ::buffa::SizeCache,
6038        buf: &mut impl ::buffa::bytes::BufMut,
6039    ) {
6040        #[allow(unused_imports)]
6041        use ::buffa::Enumeration as _;
6042        if self.drawing.is_set() {
6043            ::buffa::types::put_len_delimited_header(1u32, __cache.consume_next(), buf);
6044            self.drawing.write_to(__cache, buf);
6045        }
6046        if self.layer.is_set() {
6047            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
6048            self.layer.write_to(__cache, buf);
6049        }
6050        if self.expected_layer_revision != 0u64 {
6051            ::buffa::types::put_fixed64_field(3u32, self.expected_layer_revision, buf);
6052        }
6053        self.__buffa_unknown_fields.write_to(buf);
6054    }
6055    fn merge_field(
6056        &mut self,
6057        tag: ::buffa::encoding::Tag,
6058        buf: &mut impl ::buffa::bytes::Buf,
6059        ctx: ::buffa::DecodeContext<'_>,
6060    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
6061        #[allow(unused_imports)]
6062        use ::buffa::bytes::Buf as _;
6063        #[allow(unused_imports)]
6064        use ::buffa::Enumeration as _;
6065        match tag.field_number() {
6066            1u32 => {
6067                ::buffa::encoding::check_wire_type(
6068                    tag,
6069                    ::buffa::encoding::WireType::LengthDelimited,
6070                )?;
6071                ::buffa::Message::merge_length_delimited(
6072                    self.drawing.get_or_insert_default(),
6073                    buf,
6074                    ctx,
6075                )?;
6076            }
6077            2u32 => {
6078                ::buffa::encoding::check_wire_type(
6079                    tag,
6080                    ::buffa::encoding::WireType::LengthDelimited,
6081                )?;
6082                ::buffa::Message::merge_length_delimited(
6083                    self.layer.get_or_insert_default(),
6084                    buf,
6085                    ctx,
6086                )?;
6087            }
6088            3u32 => {
6089                ::buffa::encoding::check_wire_type(
6090                    tag,
6091                    ::buffa::encoding::WireType::Fixed64,
6092                )?;
6093                self.expected_layer_revision = ::buffa::types::decode_fixed64(buf)?;
6094            }
6095            _ => {
6096                self.__buffa_unknown_fields
6097                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
6098            }
6099        }
6100        ::core::result::Result::Ok(())
6101    }
6102    fn clear(&mut self) {
6103        self.drawing = ::buffa::MessageField::none();
6104        self.layer = ::buffa::MessageField::none();
6105        self.expected_layer_revision = 0u64;
6106        self.__buffa_unknown_fields.clear();
6107    }
6108}
6109impl ::buffa::ExtensionSet for DeleteDrawingRequest {
6110    const PROTO_FQN: &'static str = "polychart.v1.DeleteDrawingRequest";
6111    fn unknown_fields(&self) -> &::buffa::UnknownFields {
6112        &self.__buffa_unknown_fields
6113    }
6114    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
6115        &mut self.__buffa_unknown_fields
6116    }
6117}
6118impl ::buffa::json_helpers::ProtoElemJson for DeleteDrawingRequest {
6119    fn serialize_proto_json<S: ::serde::Serializer>(
6120        v: &Self,
6121        s: S,
6122    ) -> ::core::result::Result<S::Ok, S::Error> {
6123        ::serde::Serialize::serialize(v, s)
6124    }
6125    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
6126        d: D,
6127    ) -> ::core::result::Result<Self, D::Error> {
6128        <Self as ::serde::Deserialize>::deserialize(d)
6129    }
6130}
6131#[doc(hidden)]
6132pub const __DELETE_DRAWING_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
6133    type_url: "type.googleapis.com/polychart.v1.DeleteDrawingRequest",
6134    to_json: ::buffa::type_registry::any_to_json::<DeleteDrawingRequest>,
6135    from_json: ::buffa::type_registry::any_from_json::<DeleteDrawingRequest>,
6136    is_wkt: false,
6137};
6138/// DeleteDrawingResponse returns the new parent layer revision.
6139#[derive(Clone, PartialEq, Default)]
6140#[derive(::serde::Serialize, ::serde::Deserialize)]
6141#[serde(default)]
6142pub struct DeleteDrawingResponse {
6143    /// New parent layer revision after deletion.
6144    ///
6145    /// Field 1: `layer_revision`
6146    #[serde(
6147        rename = "layerRevision",
6148        alias = "layer_revision",
6149        with = "::buffa::json_helpers::uint64",
6150        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u64"
6151    )]
6152    pub layer_revision: u64,
6153    #[serde(skip)]
6154    #[doc(hidden)]
6155    pub __buffa_unknown_fields: ::buffa::UnknownFields,
6156}
6157impl ::core::fmt::Debug for DeleteDrawingResponse {
6158    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6159        f.debug_struct("DeleteDrawingResponse")
6160            .field("layer_revision", &self.layer_revision)
6161            .finish()
6162    }
6163}
6164impl DeleteDrawingResponse {
6165    /// Protobuf type URL for this message, for use with `Any::pack` and
6166    /// `Any::unpack_if`.
6167    ///
6168    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
6169    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingResponse";
6170}
6171::buffa::impl_default_instance!(DeleteDrawingResponse);
6172impl ::buffa::MessageName for DeleteDrawingResponse {
6173    const PACKAGE: &'static str = "polychart.v1";
6174    const NAME: &'static str = "DeleteDrawingResponse";
6175    const FULL_NAME: &'static str = "polychart.v1.DeleteDrawingResponse";
6176    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingResponse";
6177}
6178impl ::buffa::Message for DeleteDrawingResponse {
6179    /// Returns the total encoded size in bytes.
6180    ///
6181    /// The result is a `u32`; the protobuf specification requires all
6182    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
6183    /// compliant message will never overflow this type.
6184    #[allow(clippy::let_and_return)]
6185    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
6186        #[allow(unused_imports)]
6187        use ::buffa::Enumeration as _;
6188        let mut size = 0u32;
6189        if self.layer_revision != 0u64 {
6190            size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6191        }
6192        size += self.__buffa_unknown_fields.encoded_len() as u32;
6193        size
6194    }
6195    fn write_to(
6196        &self,
6197        _cache: &mut ::buffa::SizeCache,
6198        buf: &mut impl ::buffa::bytes::BufMut,
6199    ) {
6200        #[allow(unused_imports)]
6201        use ::buffa::Enumeration as _;
6202        if self.layer_revision != 0u64 {
6203            ::buffa::types::put_fixed64_field(1u32, self.layer_revision, buf);
6204        }
6205        self.__buffa_unknown_fields.write_to(buf);
6206    }
6207    fn merge_field(
6208        &mut self,
6209        tag: ::buffa::encoding::Tag,
6210        buf: &mut impl ::buffa::bytes::Buf,
6211        ctx: ::buffa::DecodeContext<'_>,
6212    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
6213        #[allow(unused_imports)]
6214        use ::buffa::bytes::Buf as _;
6215        #[allow(unused_imports)]
6216        use ::buffa::Enumeration as _;
6217        match tag.field_number() {
6218            1u32 => {
6219                ::buffa::encoding::check_wire_type(
6220                    tag,
6221                    ::buffa::encoding::WireType::Fixed64,
6222                )?;
6223                self.layer_revision = ::buffa::types::decode_fixed64(buf)?;
6224            }
6225            _ => {
6226                self.__buffa_unknown_fields
6227                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
6228            }
6229        }
6230        ::core::result::Result::Ok(())
6231    }
6232    fn clear(&mut self) {
6233        self.layer_revision = 0u64;
6234        self.__buffa_unknown_fields.clear();
6235    }
6236}
6237impl ::buffa::ExtensionSet for DeleteDrawingResponse {
6238    const PROTO_FQN: &'static str = "polychart.v1.DeleteDrawingResponse";
6239    fn unknown_fields(&self) -> &::buffa::UnknownFields {
6240        &self.__buffa_unknown_fields
6241    }
6242    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
6243        &mut self.__buffa_unknown_fields
6244    }
6245}
6246impl ::buffa::json_helpers::ProtoElemJson for DeleteDrawingResponse {
6247    fn serialize_proto_json<S: ::serde::Serializer>(
6248        v: &Self,
6249        s: S,
6250    ) -> ::core::result::Result<S::Ok, S::Error> {
6251        ::serde::Serialize::serialize(v, s)
6252    }
6253    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
6254        d: D,
6255    ) -> ::core::result::Result<Self, D::Error> {
6256        <Self as ::serde::Deserialize>::deserialize(d)
6257    }
6258}
6259#[doc(hidden)]
6260pub const __DELETE_DRAWING_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
6261    type_url: "type.googleapis.com/polychart.v1.DeleteDrawingResponse",
6262    to_json: ::buffa::type_registry::any_to_json::<DeleteDrawingResponse>,
6263    from_json: ::buffa::type_registry::any_from_json::<DeleteDrawingResponse>,
6264    is_wkt: false,
6265};
6266/// SetLayerSubscriptionsRequest replaces the caller's layer subscriptions for one market.
6267#[derive(Clone, PartialEq, Default)]
6268#[derive(::serde::Serialize, ::serde::Deserialize)]
6269#[serde(default)]
6270pub struct SetLayerSubscriptionsRequest {
6271    /// Engine symbol identifier for the market whose subscriptions should be replaced.
6272    ///
6273    /// Field 1: `engine_symbol_id`
6274    #[serde(
6275        rename = "engineSymbolId",
6276        alias = "engine_symbol_id",
6277        with = "::buffa::json_helpers::uint32",
6278        skip_serializing_if = "::buffa::json_helpers::skip_if::is_zero_u32"
6279    )]
6280    pub engine_symbol_id: u32,
6281    /// Full replace for (viewer_id, engine_symbol_id).
6282    /// Server replaces all existing rows for the market with this list.
6283    ///
6284    /// Field 2: `subscriptions`
6285    #[serde(
6286        rename = "subscriptions",
6287        skip_serializing_if = "::buffa::json_helpers::skip_if::is_empty_vec",
6288        deserialize_with = "::buffa::json_helpers::null_as_default"
6289    )]
6290    pub subscriptions: ::buffa::alloc::vec::Vec<LayerSubscription>,
6291    #[serde(skip)]
6292    #[doc(hidden)]
6293    pub __buffa_unknown_fields: ::buffa::UnknownFields,
6294}
6295impl ::core::fmt::Debug for SetLayerSubscriptionsRequest {
6296    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6297        f.debug_struct("SetLayerSubscriptionsRequest")
6298            .field("engine_symbol_id", &self.engine_symbol_id)
6299            .field("subscriptions", &self.subscriptions)
6300            .finish()
6301    }
6302}
6303impl SetLayerSubscriptionsRequest {
6304    /// Protobuf type URL for this message, for use with `Any::pack` and
6305    /// `Any::unpack_if`.
6306    ///
6307    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
6308    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsRequest";
6309}
6310::buffa::impl_default_instance!(SetLayerSubscriptionsRequest);
6311impl ::buffa::MessageName for SetLayerSubscriptionsRequest {
6312    const PACKAGE: &'static str = "polychart.v1";
6313    const NAME: &'static str = "SetLayerSubscriptionsRequest";
6314    const FULL_NAME: &'static str = "polychart.v1.SetLayerSubscriptionsRequest";
6315    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsRequest";
6316}
6317impl ::buffa::Message for SetLayerSubscriptionsRequest {
6318    /// Returns the total encoded size in bytes.
6319    ///
6320    /// The result is a `u32`; the protobuf specification requires all
6321    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
6322    /// compliant message will never overflow this type.
6323    #[allow(clippy::let_and_return)]
6324    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
6325        #[allow(unused_imports)]
6326        use ::buffa::Enumeration as _;
6327        let mut size = 0u32;
6328        if self.engine_symbol_id != 0u32 {
6329            size
6330                += 1u32
6331                    + ::buffa::types::uint32_encoded_len(self.engine_symbol_id) as u32;
6332        }
6333        for v in &self.subscriptions {
6334            let __slot = __cache.reserve();
6335            let inner_size = v.compute_size(__cache);
6336            __cache.set(__slot, inner_size);
6337            size
6338                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
6339                    + inner_size;
6340        }
6341        size += self.__buffa_unknown_fields.encoded_len() as u32;
6342        size
6343    }
6344    fn write_to(
6345        &self,
6346        __cache: &mut ::buffa::SizeCache,
6347        buf: &mut impl ::buffa::bytes::BufMut,
6348    ) {
6349        #[allow(unused_imports)]
6350        use ::buffa::Enumeration as _;
6351        if self.engine_symbol_id != 0u32 {
6352            ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
6353        }
6354        for v in &self.subscriptions {
6355            ::buffa::types::put_len_delimited_header(2u32, __cache.consume_next(), buf);
6356            v.write_to(__cache, buf);
6357        }
6358        self.__buffa_unknown_fields.write_to(buf);
6359    }
6360    fn merge_field(
6361        &mut self,
6362        tag: ::buffa::encoding::Tag,
6363        buf: &mut impl ::buffa::bytes::Buf,
6364        ctx: ::buffa::DecodeContext<'_>,
6365    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
6366        #[allow(unused_imports)]
6367        use ::buffa::bytes::Buf as _;
6368        #[allow(unused_imports)]
6369        use ::buffa::Enumeration as _;
6370        match tag.field_number() {
6371            1u32 => {
6372                ::buffa::encoding::check_wire_type(
6373                    tag,
6374                    ::buffa::encoding::WireType::Varint,
6375                )?;
6376                self.engine_symbol_id = ::buffa::types::decode_uint32(buf)?;
6377            }
6378            2u32 => {
6379                ::buffa::encoding::check_wire_type(
6380                    tag,
6381                    ::buffa::encoding::WireType::LengthDelimited,
6382                )?;
6383                let mut elem = ::core::default::Default::default();
6384                ::buffa::Message::merge_length_delimited(&mut elem, buf, ctx)?;
6385                self.subscriptions.push(elem);
6386            }
6387            _ => {
6388                self.__buffa_unknown_fields
6389                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
6390            }
6391        }
6392        ::core::result::Result::Ok(())
6393    }
6394    fn clear(&mut self) {
6395        self.engine_symbol_id = 0u32;
6396        self.subscriptions.clear();
6397        self.__buffa_unknown_fields.clear();
6398    }
6399}
6400impl ::buffa::ExtensionSet for SetLayerSubscriptionsRequest {
6401    const PROTO_FQN: &'static str = "polychart.v1.SetLayerSubscriptionsRequest";
6402    fn unknown_fields(&self) -> &::buffa::UnknownFields {
6403        &self.__buffa_unknown_fields
6404    }
6405    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
6406        &mut self.__buffa_unknown_fields
6407    }
6408}
6409impl ::buffa::json_helpers::ProtoElemJson for SetLayerSubscriptionsRequest {
6410    fn serialize_proto_json<S: ::serde::Serializer>(
6411        v: &Self,
6412        s: S,
6413    ) -> ::core::result::Result<S::Ok, S::Error> {
6414        ::serde::Serialize::serialize(v, s)
6415    }
6416    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
6417        d: D,
6418    ) -> ::core::result::Result<Self, D::Error> {
6419        <Self as ::serde::Deserialize>::deserialize(d)
6420    }
6421}
6422#[doc(hidden)]
6423pub const __SET_LAYER_SUBSCRIPTIONS_REQUEST_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
6424    type_url: "type.googleapis.com/polychart.v1.SetLayerSubscriptionsRequest",
6425    to_json: ::buffa::type_registry::any_to_json::<SetLayerSubscriptionsRequest>,
6426    from_json: ::buffa::type_registry::any_from_json::<SetLayerSubscriptionsRequest>,
6427    is_wkt: false,
6428};
6429/// SetLayerSubscriptionsResponse is empty when subscriptions were saved.
6430#[derive(Clone, PartialEq, Default)]
6431#[derive(::serde::Serialize, ::serde::Deserialize)]
6432#[serde(default)]
6433pub struct SetLayerSubscriptionsResponse {
6434    #[serde(skip)]
6435    #[doc(hidden)]
6436    pub __buffa_unknown_fields: ::buffa::UnknownFields,
6437}
6438impl ::core::fmt::Debug for SetLayerSubscriptionsResponse {
6439    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6440        f.debug_struct("SetLayerSubscriptionsResponse").finish()
6441    }
6442}
6443impl SetLayerSubscriptionsResponse {
6444    /// Protobuf type URL for this message, for use with `Any::pack` and
6445    /// `Any::unpack_if`.
6446    ///
6447    /// Format: `type.googleapis.com/<fully.qualified.TypeName>`
6448    pub const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsResponse";
6449}
6450::buffa::impl_default_instance!(SetLayerSubscriptionsResponse);
6451impl ::buffa::MessageName for SetLayerSubscriptionsResponse {
6452    const PACKAGE: &'static str = "polychart.v1";
6453    const NAME: &'static str = "SetLayerSubscriptionsResponse";
6454    const FULL_NAME: &'static str = "polychart.v1.SetLayerSubscriptionsResponse";
6455    const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsResponse";
6456}
6457impl ::buffa::Message for SetLayerSubscriptionsResponse {
6458    /// Returns the total encoded size in bytes.
6459    ///
6460    /// The result is a `u32`; the protobuf specification requires all
6461    /// messages to fit within 2 GiB (2,147,483,647 bytes), so a
6462    /// compliant message will never overflow this type.
6463    #[allow(clippy::let_and_return)]
6464    fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
6465        #[allow(unused_imports)]
6466        use ::buffa::Enumeration as _;
6467        let mut size = 0u32;
6468        size += self.__buffa_unknown_fields.encoded_len() as u32;
6469        size
6470    }
6471    fn write_to(
6472        &self,
6473        _cache: &mut ::buffa::SizeCache,
6474        buf: &mut impl ::buffa::bytes::BufMut,
6475    ) {
6476        #[allow(unused_imports)]
6477        use ::buffa::Enumeration as _;
6478        self.__buffa_unknown_fields.write_to(buf);
6479    }
6480    fn merge_field(
6481        &mut self,
6482        tag: ::buffa::encoding::Tag,
6483        buf: &mut impl ::buffa::bytes::Buf,
6484        ctx: ::buffa::DecodeContext<'_>,
6485    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
6486        #[allow(unused_imports)]
6487        use ::buffa::bytes::Buf as _;
6488        #[allow(unused_imports)]
6489        use ::buffa::Enumeration as _;
6490        match tag.field_number() {
6491            _ => {
6492                self.__buffa_unknown_fields
6493                    .push(::buffa::encoding::decode_unknown_field(tag, buf, ctx)?);
6494            }
6495        }
6496        ::core::result::Result::Ok(())
6497    }
6498    fn clear(&mut self) {
6499        self.__buffa_unknown_fields.clear();
6500    }
6501}
6502impl ::buffa::ExtensionSet for SetLayerSubscriptionsResponse {
6503    const PROTO_FQN: &'static str = "polychart.v1.SetLayerSubscriptionsResponse";
6504    fn unknown_fields(&self) -> &::buffa::UnknownFields {
6505        &self.__buffa_unknown_fields
6506    }
6507    fn unknown_fields_mut(&mut self) -> &mut ::buffa::UnknownFields {
6508        &mut self.__buffa_unknown_fields
6509    }
6510}
6511impl ::buffa::json_helpers::ProtoElemJson for SetLayerSubscriptionsResponse {
6512    fn serialize_proto_json<S: ::serde::Serializer>(
6513        v: &Self,
6514        s: S,
6515    ) -> ::core::result::Result<S::Ok, S::Error> {
6516        ::serde::Serialize::serialize(v, s)
6517    }
6518    fn deserialize_proto_json<'de, D: ::serde::Deserializer<'de>>(
6519        d: D,
6520    ) -> ::core::result::Result<Self, D::Error> {
6521        <Self as ::serde::Deserialize>::deserialize(d)
6522    }
6523}
6524#[doc(hidden)]
6525pub const __SET_LAYER_SUBSCRIPTIONS_RESPONSE_JSON_ANY: ::buffa::type_registry::JsonAnyEntry = ::buffa::type_registry::JsonAnyEntry {
6526    type_url: "type.googleapis.com/polychart.v1.SetLayerSubscriptionsResponse",
6527    to_json: ::buffa::type_registry::any_to_json::<SetLayerSubscriptionsResponse>,
6528    from_json: ::buffa::type_registry::any_from_json::<SetLayerSubscriptionsResponse>,
6529    is_wkt: false,
6530};
6531#[allow(
6532    non_camel_case_types,
6533    dead_code,
6534    unused_imports,
6535    unused_qualifications,
6536    clippy::derivable_impls,
6537    clippy::match_single_binding,
6538    clippy::uninlined_format_args,
6539    clippy::doc_lazy_continuation,
6540    clippy::module_inception
6541)]
6542pub mod __buffa {
6543    #[allow(unused_imports)]
6544    use super::*;
6545    pub mod view {
6546        #[allow(unused_imports)]
6547        use super::*;
6548        /// LayerRef uniquely identifies a drawing layer across owners.
6549        #[derive(Clone, Debug, Default)]
6550        pub struct LayerRefView<'a> {
6551            /// Account that owns the layer.
6552            ///
6553            /// Field 1: `owner_id`
6554            pub owner_id: u64,
6555            /// Layer identifier unique within the owner account.
6556            ///
6557            /// Field 2: `layer_id`
6558            pub layer_id: u64,
6559            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
6560        }
6561        impl<'a> ::buffa::MessageView<'a> for LayerRefView<'a> {
6562            type Owned = super::super::LayerRef;
6563            fn decode_view(
6564                buf: &'a [u8],
6565            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6566                let __limit = ::core::cell::Cell::new(
6567                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
6568                );
6569                <Self as ::buffa::MessageView>::decode_view_ctx(
6570                    buf,
6571                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
6572                )
6573            }
6574            fn decode_view_with_ctx(
6575                buf: &'a [u8],
6576                ctx: ::buffa::DecodeContext<'_>,
6577            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6578                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
6579            }
6580            fn merge_view_field(
6581                &mut self,
6582                tag: ::buffa::encoding::Tag,
6583                cur: &'a [u8],
6584                before_tag: &'a [u8],
6585                ctx: ::buffa::DecodeContext<'_>,
6586            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
6587                let _ = ctx;
6588                #[allow(unused_variables)]
6589                let view = self;
6590                let mut cur = cur;
6591                match tag.field_number() {
6592                    1u32 => {
6593                        ::buffa::encoding::check_wire_type(
6594                            tag,
6595                            ::buffa::encoding::WireType::Fixed64,
6596                        )?;
6597                        view.owner_id = ::buffa::types::decode_fixed64(&mut cur)?;
6598                    }
6599                    2u32 => {
6600                        ::buffa::encoding::check_wire_type(
6601                            tag,
6602                            ::buffa::encoding::WireType::Fixed64,
6603                        )?;
6604                        view.layer_id = ::buffa::types::decode_fixed64(&mut cur)?;
6605                    }
6606                    _ => {
6607                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
6608                        let span_len = before_tag.len() - cur.len();
6609                        view.__buffa_unknown_fields
6610                            .push_record(before_tag, span_len, ctx)?;
6611                    }
6612                }
6613                ::core::result::Result::Ok(cur)
6614            }
6615            fn to_owned_message(
6616                &self,
6617            ) -> ::core::result::Result<super::super::LayerRef, ::buffa::DecodeError> {
6618                self.to_owned_from_source(None)
6619            }
6620            #[allow(clippy::useless_conversion, clippy::needless_update)]
6621            fn to_owned_from_source(
6622                &self,
6623                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
6624            ) -> ::core::result::Result<super::super::LayerRef, ::buffa::DecodeError> {
6625                #[allow(unused_imports)]
6626                use ::buffa::alloc::string::ToString as _;
6627                let _ = __buffa_src;
6628                ::core::result::Result::Ok(super::super::LayerRef {
6629                    owner_id: self.owner_id,
6630                    layer_id: self.layer_id,
6631                    __buffa_unknown_fields: self
6632                        .__buffa_unknown_fields
6633                        .to_owned()?
6634                        .into(),
6635                    ..::core::default::Default::default()
6636                })
6637            }
6638        }
6639        impl<'a> ::buffa::ViewEncode<'a> for LayerRefView<'a> {
6640            #[allow(clippy::needless_borrow, clippy::let_and_return)]
6641            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
6642                #[allow(unused_imports)]
6643                use ::buffa::Enumeration as _;
6644                let mut size = 0u32;
6645                if self.owner_id != 0u64 {
6646                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6647                }
6648                if self.layer_id != 0u64 {
6649                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6650                }
6651                size += self.__buffa_unknown_fields.encoded_len() as u32;
6652                size
6653            }
6654            #[allow(clippy::needless_borrow)]
6655            fn write_to(
6656                &self,
6657                _cache: &mut ::buffa::SizeCache,
6658                buf: &mut impl ::buffa::bytes::BufMut,
6659            ) {
6660                #[allow(unused_imports)]
6661                use ::buffa::Enumeration as _;
6662                if self.owner_id != 0u64 {
6663                    ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
6664                }
6665                if self.layer_id != 0u64 {
6666                    ::buffa::types::put_fixed64_field(2u32, self.layer_id, buf);
6667                }
6668                self.__buffa_unknown_fields.write_to(buf);
6669            }
6670        }
6671        /// Serializes this view as protobuf JSON.
6672        ///
6673        /// Implicit-presence fields with default values are omitted, `required`
6674        /// fields are always emitted, explicit-presence (`optional`) fields are
6675        /// emitted only when set, bytes fields are base64-encoded, and enum
6676        /// values are their proto name strings.
6677        ///
6678        /// This impl uses `serialize_map(None)` because the number of emitted
6679        /// fields depends on default-omission rules; serializers that require
6680        /// known map lengths (e.g. `bincode`) will return a runtime error.
6681        /// Use the owned message type for those formats.
6682        impl<'__a> ::serde::Serialize for LayerRefView<'__a> {
6683            fn serialize<__S: ::serde::Serializer>(
6684                &self,
6685                __s: __S,
6686            ) -> ::core::result::Result<__S::Ok, __S::Error> {
6687                use ::serde::ser::SerializeMap as _;
6688                let mut __map = __s.serialize_map(::core::option::Option::None)?;
6689                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.owner_id) {
6690                    __map
6691                        .serialize_entry(
6692                            "ownerId",
6693                            &::buffa::json_helpers::ProtoJson(&self.owner_id),
6694                        )?;
6695                }
6696                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.layer_id) {
6697                    __map
6698                        .serialize_entry(
6699                            "layerId",
6700                            &::buffa::json_helpers::ProtoJson(&self.layer_id),
6701                        )?;
6702                }
6703                __map.end()
6704            }
6705        }
6706        impl<'a> ::buffa::MessageName for LayerRefView<'a> {
6707            const PACKAGE: &'static str = "polychart.v1";
6708            const NAME: &'static str = "LayerRef";
6709            const FULL_NAME: &'static str = "polychart.v1.LayerRef";
6710            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerRef";
6711        }
6712        ::buffa::impl_default_view_instance!(LayerRefView);
6713        ::buffa::impl_view_reborrow!(LayerRefView);
6714        /** Self-contained, `'static` owned view of a `LayerRef` message.
6715
6716 Wraps [`::buffa::OwnedView`]`<`[`LayerRefView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
6717
6718 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`LayerRefView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
6719        #[derive(Clone, Debug)]
6720        pub struct LayerRefOwnedView(::buffa::OwnedView<LayerRefView<'static>>);
6721        impl LayerRefOwnedView {
6722            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
6723            ///
6724            /// The view borrows directly from the buffer's data; the buffer is
6725            /// retained inside the returned handle.
6726            ///
6727            /// # Errors
6728            ///
6729            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
6730            /// protobuf data.
6731            pub fn decode(
6732                bytes: ::buffa::bytes::Bytes,
6733            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6734                ::core::result::Result::Ok(
6735                    LayerRefOwnedView(::buffa::OwnedView::decode(bytes)?),
6736                )
6737            }
6738            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
6739            /// max message size).
6740            ///
6741            /// # Errors
6742            ///
6743            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
6744            /// exceeds the configured limits.
6745            pub fn decode_with_options(
6746                bytes: ::buffa::bytes::Bytes,
6747                opts: &::buffa::DecodeOptions,
6748            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6749                ::core::result::Result::Ok(
6750                    LayerRefOwnedView(
6751                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
6752                    ),
6753                )
6754            }
6755            /// Build from an owned message via an encode → decode round-trip.
6756            ///
6757            /// # Errors
6758            ///
6759            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
6760            /// somehow invalid (should not happen for well-formed messages).
6761            pub fn from_owned(
6762                msg: &super::super::LayerRef,
6763            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6764                ::core::result::Result::Ok(
6765                    LayerRefOwnedView(::buffa::OwnedView::from_owned(msg)?),
6766                )
6767            }
6768            /// Borrow the full [`LayerRefView`] with its lifetime tied to `&self`.
6769            #[must_use]
6770            pub fn view(&self) -> &LayerRefView<'_> {
6771                self.0.reborrow()
6772            }
6773            /// Convert to the owned message type.
6774            ///
6775            /// # Errors
6776            ///
6777            /// Returns an error if re-materializing preserved unknown fields
6778            /// fails (e.g. the unknown-field limit is exceeded).
6779            pub fn to_owned_message(
6780                &self,
6781            ) -> ::core::result::Result<super::super::LayerRef, ::buffa::DecodeError> {
6782                self.0.to_owned_message()
6783            }
6784            /// The underlying bytes buffer.
6785            #[must_use]
6786            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
6787                self.0.bytes()
6788            }
6789            /// Consume the handle, returning the underlying bytes buffer.
6790            #[must_use]
6791            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
6792                self.0.into_bytes()
6793            }
6794            /// Account that owns the layer.
6795            ///
6796            /// Field 1: `owner_id`
6797            #[must_use]
6798            pub fn owner_id(&self) -> u64 {
6799                self.0.reborrow().owner_id
6800            }
6801            /// Layer identifier unique within the owner account.
6802            ///
6803            /// Field 2: `layer_id`
6804            #[must_use]
6805            pub fn layer_id(&self) -> u64 {
6806                self.0.reborrow().layer_id
6807            }
6808        }
6809        impl ::core::convert::From<::buffa::OwnedView<LayerRefView<'static>>>
6810        for LayerRefOwnedView {
6811            fn from(inner: ::buffa::OwnedView<LayerRefView<'static>>) -> Self {
6812                LayerRefOwnedView(inner)
6813            }
6814        }
6815        impl ::core::convert::From<LayerRefOwnedView>
6816        for ::buffa::OwnedView<LayerRefView<'static>> {
6817            fn from(wrapper: LayerRefOwnedView) -> Self {
6818                wrapper.0
6819            }
6820        }
6821        impl ::core::convert::AsRef<::buffa::OwnedView<LayerRefView<'static>>>
6822        for LayerRefOwnedView {
6823            fn as_ref(&self) -> &::buffa::OwnedView<LayerRefView<'static>> {
6824                &self.0
6825            }
6826        }
6827        impl ::buffa::HasMessageView for super::super::LayerRef {
6828            type View<'a> = LayerRefView<'a>;
6829            type ViewHandle = LayerRefOwnedView;
6830        }
6831        impl ::serde::Serialize for LayerRefOwnedView {
6832            fn serialize<__S: ::serde::Serializer>(
6833                &self,
6834                __s: __S,
6835            ) -> ::core::result::Result<__S::Ok, __S::Error> {
6836                ::serde::Serialize::serialize(&self.0, __s)
6837            }
6838        }
6839        /// DrawingRef uniquely identifies a drawing across owners.
6840        #[derive(Clone, Debug, Default)]
6841        pub struct DrawingRefView<'a> {
6842            /// Account that owns the drawing.
6843            ///
6844            /// Field 1: `owner_id`
6845            pub owner_id: u64,
6846            /// Drawing identifier unique within the owner account.
6847            ///
6848            /// Field 2: `drawing_id`
6849            pub drawing_id: u64,
6850            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
6851        }
6852        impl<'a> ::buffa::MessageView<'a> for DrawingRefView<'a> {
6853            type Owned = super::super::DrawingRef;
6854            fn decode_view(
6855                buf: &'a [u8],
6856            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6857                let __limit = ::core::cell::Cell::new(
6858                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
6859                );
6860                <Self as ::buffa::MessageView>::decode_view_ctx(
6861                    buf,
6862                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
6863                )
6864            }
6865            fn decode_view_with_ctx(
6866                buf: &'a [u8],
6867                ctx: ::buffa::DecodeContext<'_>,
6868            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
6869                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
6870            }
6871            fn merge_view_field(
6872                &mut self,
6873                tag: ::buffa::encoding::Tag,
6874                cur: &'a [u8],
6875                before_tag: &'a [u8],
6876                ctx: ::buffa::DecodeContext<'_>,
6877            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
6878                let _ = ctx;
6879                #[allow(unused_variables)]
6880                let view = self;
6881                let mut cur = cur;
6882                match tag.field_number() {
6883                    1u32 => {
6884                        ::buffa::encoding::check_wire_type(
6885                            tag,
6886                            ::buffa::encoding::WireType::Fixed64,
6887                        )?;
6888                        view.owner_id = ::buffa::types::decode_fixed64(&mut cur)?;
6889                    }
6890                    2u32 => {
6891                        ::buffa::encoding::check_wire_type(
6892                            tag,
6893                            ::buffa::encoding::WireType::Fixed64,
6894                        )?;
6895                        view.drawing_id = ::buffa::types::decode_fixed64(&mut cur)?;
6896                    }
6897                    _ => {
6898                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
6899                        let span_len = before_tag.len() - cur.len();
6900                        view.__buffa_unknown_fields
6901                            .push_record(before_tag, span_len, ctx)?;
6902                    }
6903                }
6904                ::core::result::Result::Ok(cur)
6905            }
6906            fn to_owned_message(
6907                &self,
6908            ) -> ::core::result::Result<super::super::DrawingRef, ::buffa::DecodeError> {
6909                self.to_owned_from_source(None)
6910            }
6911            #[allow(clippy::useless_conversion, clippy::needless_update)]
6912            fn to_owned_from_source(
6913                &self,
6914                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
6915            ) -> ::core::result::Result<super::super::DrawingRef, ::buffa::DecodeError> {
6916                #[allow(unused_imports)]
6917                use ::buffa::alloc::string::ToString as _;
6918                let _ = __buffa_src;
6919                ::core::result::Result::Ok(super::super::DrawingRef {
6920                    owner_id: self.owner_id,
6921                    drawing_id: self.drawing_id,
6922                    __buffa_unknown_fields: self
6923                        .__buffa_unknown_fields
6924                        .to_owned()?
6925                        .into(),
6926                    ..::core::default::Default::default()
6927                })
6928            }
6929        }
6930        impl<'a> ::buffa::ViewEncode<'a> for DrawingRefView<'a> {
6931            #[allow(clippy::needless_borrow, clippy::let_and_return)]
6932            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
6933                #[allow(unused_imports)]
6934                use ::buffa::Enumeration as _;
6935                let mut size = 0u32;
6936                if self.owner_id != 0u64 {
6937                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6938                }
6939                if self.drawing_id != 0u64 {
6940                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
6941                }
6942                size += self.__buffa_unknown_fields.encoded_len() as u32;
6943                size
6944            }
6945            #[allow(clippy::needless_borrow)]
6946            fn write_to(
6947                &self,
6948                _cache: &mut ::buffa::SizeCache,
6949                buf: &mut impl ::buffa::bytes::BufMut,
6950            ) {
6951                #[allow(unused_imports)]
6952                use ::buffa::Enumeration as _;
6953                if self.owner_id != 0u64 {
6954                    ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
6955                }
6956                if self.drawing_id != 0u64 {
6957                    ::buffa::types::put_fixed64_field(2u32, self.drawing_id, buf);
6958                }
6959                self.__buffa_unknown_fields.write_to(buf);
6960            }
6961        }
6962        /// Serializes this view as protobuf JSON.
6963        ///
6964        /// Implicit-presence fields with default values are omitted, `required`
6965        /// fields are always emitted, explicit-presence (`optional`) fields are
6966        /// emitted only when set, bytes fields are base64-encoded, and enum
6967        /// values are their proto name strings.
6968        ///
6969        /// This impl uses `serialize_map(None)` because the number of emitted
6970        /// fields depends on default-omission rules; serializers that require
6971        /// known map lengths (e.g. `bincode`) will return a runtime error.
6972        /// Use the owned message type for those formats.
6973        impl<'__a> ::serde::Serialize for DrawingRefView<'__a> {
6974            fn serialize<__S: ::serde::Serializer>(
6975                &self,
6976                __s: __S,
6977            ) -> ::core::result::Result<__S::Ok, __S::Error> {
6978                use ::serde::ser::SerializeMap as _;
6979                let mut __map = __s.serialize_map(::core::option::Option::None)?;
6980                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.owner_id) {
6981                    __map
6982                        .serialize_entry(
6983                            "ownerId",
6984                            &::buffa::json_helpers::ProtoJson(&self.owner_id),
6985                        )?;
6986                }
6987                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.drawing_id) {
6988                    __map
6989                        .serialize_entry(
6990                            "drawingId",
6991                            &::buffa::json_helpers::ProtoJson(&self.drawing_id),
6992                        )?;
6993                }
6994                __map.end()
6995            }
6996        }
6997        impl<'a> ::buffa::MessageName for DrawingRefView<'a> {
6998            const PACKAGE: &'static str = "polychart.v1";
6999            const NAME: &'static str = "DrawingRef";
7000            const FULL_NAME: &'static str = "polychart.v1.DrawingRef";
7001            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DrawingRef";
7002        }
7003        ::buffa::impl_default_view_instance!(DrawingRefView);
7004        ::buffa::impl_view_reborrow!(DrawingRefView);
7005        /** Self-contained, `'static` owned view of a `DrawingRef` message.
7006
7007 Wraps [`::buffa::OwnedView`]`<`[`DrawingRefView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
7008
7009 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DrawingRefView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
7010        #[derive(Clone, Debug)]
7011        pub struct DrawingRefOwnedView(::buffa::OwnedView<DrawingRefView<'static>>);
7012        impl DrawingRefOwnedView {
7013            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
7014            ///
7015            /// The view borrows directly from the buffer's data; the buffer is
7016            /// retained inside the returned handle.
7017            ///
7018            /// # Errors
7019            ///
7020            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
7021            /// protobuf data.
7022            pub fn decode(
7023                bytes: ::buffa::bytes::Bytes,
7024            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7025                ::core::result::Result::Ok(
7026                    DrawingRefOwnedView(::buffa::OwnedView::decode(bytes)?),
7027                )
7028            }
7029            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
7030            /// max message size).
7031            ///
7032            /// # Errors
7033            ///
7034            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
7035            /// exceeds the configured limits.
7036            pub fn decode_with_options(
7037                bytes: ::buffa::bytes::Bytes,
7038                opts: &::buffa::DecodeOptions,
7039            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7040                ::core::result::Result::Ok(
7041                    DrawingRefOwnedView(
7042                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
7043                    ),
7044                )
7045            }
7046            /// Build from an owned message via an encode → decode round-trip.
7047            ///
7048            /// # Errors
7049            ///
7050            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
7051            /// somehow invalid (should not happen for well-formed messages).
7052            pub fn from_owned(
7053                msg: &super::super::DrawingRef,
7054            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7055                ::core::result::Result::Ok(
7056                    DrawingRefOwnedView(::buffa::OwnedView::from_owned(msg)?),
7057                )
7058            }
7059            /// Borrow the full [`DrawingRefView`] with its lifetime tied to `&self`.
7060            #[must_use]
7061            pub fn view(&self) -> &DrawingRefView<'_> {
7062                self.0.reborrow()
7063            }
7064            /// Convert to the owned message type.
7065            ///
7066            /// # Errors
7067            ///
7068            /// Returns an error if re-materializing preserved unknown fields
7069            /// fails (e.g. the unknown-field limit is exceeded).
7070            pub fn to_owned_message(
7071                &self,
7072            ) -> ::core::result::Result<super::super::DrawingRef, ::buffa::DecodeError> {
7073                self.0.to_owned_message()
7074            }
7075            /// The underlying bytes buffer.
7076            #[must_use]
7077            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
7078                self.0.bytes()
7079            }
7080            /// Consume the handle, returning the underlying bytes buffer.
7081            #[must_use]
7082            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
7083                self.0.into_bytes()
7084            }
7085            /// Account that owns the drawing.
7086            ///
7087            /// Field 1: `owner_id`
7088            #[must_use]
7089            pub fn owner_id(&self) -> u64 {
7090                self.0.reborrow().owner_id
7091            }
7092            /// Drawing identifier unique within the owner account.
7093            ///
7094            /// Field 2: `drawing_id`
7095            #[must_use]
7096            pub fn drawing_id(&self) -> u64 {
7097                self.0.reborrow().drawing_id
7098            }
7099        }
7100        impl ::core::convert::From<::buffa::OwnedView<DrawingRefView<'static>>>
7101        for DrawingRefOwnedView {
7102            fn from(inner: ::buffa::OwnedView<DrawingRefView<'static>>) -> Self {
7103                DrawingRefOwnedView(inner)
7104            }
7105        }
7106        impl ::core::convert::From<DrawingRefOwnedView>
7107        for ::buffa::OwnedView<DrawingRefView<'static>> {
7108            fn from(wrapper: DrawingRefOwnedView) -> Self {
7109                wrapper.0
7110            }
7111        }
7112        impl ::core::convert::AsRef<::buffa::OwnedView<DrawingRefView<'static>>>
7113        for DrawingRefOwnedView {
7114            fn as_ref(&self) -> &::buffa::OwnedView<DrawingRefView<'static>> {
7115                &self.0
7116            }
7117        }
7118        impl ::buffa::HasMessageView for super::super::DrawingRef {
7119            type View<'a> = DrawingRefView<'a>;
7120            type ViewHandle = DrawingRefOwnedView;
7121        }
7122        impl ::serde::Serialize for DrawingRefOwnedView {
7123            fn serialize<__S: ::serde::Serializer>(
7124                &self,
7125                __s: __S,
7126            ) -> ::core::result::Result<__S::Ok, __S::Error> {
7127                ::serde::Serialize::serialize(&self.0, __s)
7128            }
7129        }
7130        /// Layer is a shareable container of drawings for one market.
7131        #[derive(Clone, Debug, Default)]
7132        pub struct LayerView<'a> {
7133            /// Account that owns the layer.
7134            ///
7135            /// Field 1: `owner_id`
7136            pub owner_id: u64,
7137            /// Layer identifier unique within the owner account.
7138            ///
7139            /// Field 2: `layer_id`
7140            pub layer_id: u64,
7141            /// Engine symbol identifier for the market this layer belongs to.
7142            ///
7143            /// Field 3: `engine_symbol_id`
7144            pub engine_symbol_id: u32,
7145            /// Human-readable layer name.
7146            ///
7147            /// Field 4: `name`
7148            pub name: &'a str,
7149            /// Owner-defined ordering hint for the layer list.
7150            ///
7151            /// Field 5: `sort_hint`
7152            pub sort_hint: i32,
7153            /// Owner-level style defaults.
7154            /// Packed layer color in 0xAARRGGBB format.
7155            ///
7156            /// Field 6: `color_rgba`
7157            pub color_rgba: u32,
7158            /// True when drawings should use the layer color by default.
7159            ///
7160            /// Field 7: `use_layer_color`
7161            pub use_layer_color: bool,
7162            /// True when clients should prevent editing drawings in this layer.
7163            ///
7164            /// Field 8: `is_locked`
7165            pub is_locked: bool,
7166            /// True when the layer is visible by default.
7167            ///
7168            /// Field 9: `is_visible`
7169            pub is_visible: bool,
7170            /// Monotonic per layer; increments on any committed change to the layer or its drawings.
7171            ///
7172            /// Field 10: `revision`
7173            pub revision: u64,
7174            /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
7175            ///
7176            /// Field 11: `updated_at_ms`
7177            pub updated_at_ms: u64,
7178            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
7179        }
7180        impl<'a> ::buffa::MessageView<'a> for LayerView<'a> {
7181            type Owned = super::super::Layer;
7182            fn decode_view(
7183                buf: &'a [u8],
7184            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7185                let __limit = ::core::cell::Cell::new(
7186                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
7187                );
7188                <Self as ::buffa::MessageView>::decode_view_ctx(
7189                    buf,
7190                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
7191                )
7192            }
7193            fn decode_view_with_ctx(
7194                buf: &'a [u8],
7195                ctx: ::buffa::DecodeContext<'_>,
7196            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7197                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
7198            }
7199            fn merge_view_field(
7200                &mut self,
7201                tag: ::buffa::encoding::Tag,
7202                cur: &'a [u8],
7203                before_tag: &'a [u8],
7204                ctx: ::buffa::DecodeContext<'_>,
7205            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
7206                let _ = ctx;
7207                #[allow(unused_variables)]
7208                let view = self;
7209                let mut cur = cur;
7210                match tag.field_number() {
7211                    1u32 => {
7212                        ::buffa::encoding::check_wire_type(
7213                            tag,
7214                            ::buffa::encoding::WireType::Fixed64,
7215                        )?;
7216                        view.owner_id = ::buffa::types::decode_fixed64(&mut cur)?;
7217                    }
7218                    2u32 => {
7219                        ::buffa::encoding::check_wire_type(
7220                            tag,
7221                            ::buffa::encoding::WireType::Fixed64,
7222                        )?;
7223                        view.layer_id = ::buffa::types::decode_fixed64(&mut cur)?;
7224                    }
7225                    3u32 => {
7226                        ::buffa::encoding::check_wire_type(
7227                            tag,
7228                            ::buffa::encoding::WireType::Varint,
7229                        )?;
7230                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
7231                    }
7232                    4u32 => {
7233                        ::buffa::encoding::check_wire_type(
7234                            tag,
7235                            ::buffa::encoding::WireType::LengthDelimited,
7236                        )?;
7237                        view.name = ::buffa::types::borrow_str(&mut cur)?;
7238                    }
7239                    5u32 => {
7240                        ::buffa::encoding::check_wire_type(
7241                            tag,
7242                            ::buffa::encoding::WireType::Varint,
7243                        )?;
7244                        view.sort_hint = ::buffa::types::decode_int32(&mut cur)?;
7245                    }
7246                    6u32 => {
7247                        ::buffa::encoding::check_wire_type(
7248                            tag,
7249                            ::buffa::encoding::WireType::Varint,
7250                        )?;
7251                        view.color_rgba = ::buffa::types::decode_uint32(&mut cur)?;
7252                    }
7253                    7u32 => {
7254                        ::buffa::encoding::check_wire_type(
7255                            tag,
7256                            ::buffa::encoding::WireType::Varint,
7257                        )?;
7258                        view.use_layer_color = ::buffa::types::decode_bool(&mut cur)?;
7259                    }
7260                    8u32 => {
7261                        ::buffa::encoding::check_wire_type(
7262                            tag,
7263                            ::buffa::encoding::WireType::Varint,
7264                        )?;
7265                        view.is_locked = ::buffa::types::decode_bool(&mut cur)?;
7266                    }
7267                    9u32 => {
7268                        ::buffa::encoding::check_wire_type(
7269                            tag,
7270                            ::buffa::encoding::WireType::Varint,
7271                        )?;
7272                        view.is_visible = ::buffa::types::decode_bool(&mut cur)?;
7273                    }
7274                    10u32 => {
7275                        ::buffa::encoding::check_wire_type(
7276                            tag,
7277                            ::buffa::encoding::WireType::Fixed64,
7278                        )?;
7279                        view.revision = ::buffa::types::decode_fixed64(&mut cur)?;
7280                    }
7281                    11u32 => {
7282                        ::buffa::encoding::check_wire_type(
7283                            tag,
7284                            ::buffa::encoding::WireType::Fixed64,
7285                        )?;
7286                        view.updated_at_ms = ::buffa::types::decode_fixed64(&mut cur)?;
7287                    }
7288                    _ => {
7289                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
7290                        let span_len = before_tag.len() - cur.len();
7291                        view.__buffa_unknown_fields
7292                            .push_record(before_tag, span_len, ctx)?;
7293                    }
7294                }
7295                ::core::result::Result::Ok(cur)
7296            }
7297            fn to_owned_message(
7298                &self,
7299            ) -> ::core::result::Result<super::super::Layer, ::buffa::DecodeError> {
7300                self.to_owned_from_source(None)
7301            }
7302            #[allow(clippy::useless_conversion, clippy::needless_update)]
7303            fn to_owned_from_source(
7304                &self,
7305                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
7306            ) -> ::core::result::Result<super::super::Layer, ::buffa::DecodeError> {
7307                #[allow(unused_imports)]
7308                use ::buffa::alloc::string::ToString as _;
7309                let _ = __buffa_src;
7310                ::core::result::Result::Ok(super::super::Layer {
7311                    owner_id: self.owner_id,
7312                    layer_id: self.layer_id,
7313                    engine_symbol_id: self.engine_symbol_id,
7314                    name: self.name.to_string(),
7315                    sort_hint: self.sort_hint,
7316                    color_rgba: self.color_rgba,
7317                    use_layer_color: self.use_layer_color,
7318                    is_locked: self.is_locked,
7319                    is_visible: self.is_visible,
7320                    revision: self.revision,
7321                    updated_at_ms: self.updated_at_ms,
7322                    __buffa_unknown_fields: self
7323                        .__buffa_unknown_fields
7324                        .to_owned()?
7325                        .into(),
7326                    ..::core::default::Default::default()
7327                })
7328            }
7329        }
7330        impl<'a> ::buffa::ViewEncode<'a> for LayerView<'a> {
7331            #[allow(clippy::needless_borrow, clippy::let_and_return)]
7332            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
7333                #[allow(unused_imports)]
7334                use ::buffa::Enumeration as _;
7335                let mut size = 0u32;
7336                if self.owner_id != 0u64 {
7337                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7338                }
7339                if self.layer_id != 0u64 {
7340                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7341                }
7342                if self.engine_symbol_id != 0u32 {
7343                    size
7344                        += 1u32
7345                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
7346                                as u32;
7347                }
7348                if !self.name.is_empty() {
7349                    size += 1u32 + ::buffa::types::string_encoded_len(&self.name) as u32;
7350                }
7351                if self.sort_hint != 0i32 {
7352                    size
7353                        += 1u32
7354                            + ::buffa::types::int32_encoded_len(self.sort_hint) as u32;
7355                }
7356                if self.color_rgba != 0u32 {
7357                    size
7358                        += 1u32
7359                            + ::buffa::types::uint32_encoded_len(self.color_rgba) as u32;
7360                }
7361                if self.use_layer_color {
7362                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
7363                }
7364                if self.is_locked {
7365                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
7366                }
7367                if self.is_visible {
7368                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
7369                }
7370                if self.revision != 0u64 {
7371                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7372                }
7373                if self.updated_at_ms != 0u64 {
7374                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7375                }
7376                size += self.__buffa_unknown_fields.encoded_len() as u32;
7377                size
7378            }
7379            #[allow(clippy::needless_borrow)]
7380            fn write_to(
7381                &self,
7382                _cache: &mut ::buffa::SizeCache,
7383                buf: &mut impl ::buffa::bytes::BufMut,
7384            ) {
7385                #[allow(unused_imports)]
7386                use ::buffa::Enumeration as _;
7387                if self.owner_id != 0u64 {
7388                    ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
7389                }
7390                if self.layer_id != 0u64 {
7391                    ::buffa::types::put_fixed64_field(2u32, self.layer_id, buf);
7392                }
7393                if self.engine_symbol_id != 0u32 {
7394                    ::buffa::types::put_uint32_field(3u32, self.engine_symbol_id, buf);
7395                }
7396                if !self.name.is_empty() {
7397                    ::buffa::types::put_string_field(4u32, &self.name, buf);
7398                }
7399                if self.sort_hint != 0i32 {
7400                    ::buffa::types::put_int32_field(5u32, self.sort_hint, buf);
7401                }
7402                if self.color_rgba != 0u32 {
7403                    ::buffa::types::put_uint32_field(6u32, self.color_rgba, buf);
7404                }
7405                if self.use_layer_color {
7406                    ::buffa::types::put_bool_field(7u32, self.use_layer_color, buf);
7407                }
7408                if self.is_locked {
7409                    ::buffa::types::put_bool_field(8u32, self.is_locked, buf);
7410                }
7411                if self.is_visible {
7412                    ::buffa::types::put_bool_field(9u32, self.is_visible, buf);
7413                }
7414                if self.revision != 0u64 {
7415                    ::buffa::types::put_fixed64_field(10u32, self.revision, buf);
7416                }
7417                if self.updated_at_ms != 0u64 {
7418                    ::buffa::types::put_fixed64_field(11u32, self.updated_at_ms, buf);
7419                }
7420                self.__buffa_unknown_fields.write_to(buf);
7421            }
7422        }
7423        /// Serializes this view as protobuf JSON.
7424        ///
7425        /// Implicit-presence fields with default values are omitted, `required`
7426        /// fields are always emitted, explicit-presence (`optional`) fields are
7427        /// emitted only when set, bytes fields are base64-encoded, and enum
7428        /// values are their proto name strings.
7429        ///
7430        /// This impl uses `serialize_map(None)` because the number of emitted
7431        /// fields depends on default-omission rules; serializers that require
7432        /// known map lengths (e.g. `bincode`) will return a runtime error.
7433        /// Use the owned message type for those formats.
7434        impl<'__a> ::serde::Serialize for LayerView<'__a> {
7435            fn serialize<__S: ::serde::Serializer>(
7436                &self,
7437                __s: __S,
7438            ) -> ::core::result::Result<__S::Ok, __S::Error> {
7439                use ::serde::ser::SerializeMap as _;
7440                let mut __map = __s.serialize_map(::core::option::Option::None)?;
7441                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.owner_id) {
7442                    __map
7443                        .serialize_entry(
7444                            "ownerId",
7445                            &::buffa::json_helpers::ProtoJson(&self.owner_id),
7446                        )?;
7447                }
7448                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.layer_id) {
7449                    __map
7450                        .serialize_entry(
7451                            "layerId",
7452                            &::buffa::json_helpers::ProtoJson(&self.layer_id),
7453                        )?;
7454                }
7455                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
7456                    __map
7457                        .serialize_entry(
7458                            "engineSymbolId",
7459                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
7460                        )?;
7461                }
7462                if !::buffa::json_helpers::skip_if::is_empty_str(self.name) {
7463                    __map.serialize_entry("name", self.name)?;
7464                }
7465                if !::buffa::json_helpers::skip_if::is_zero_i32(&self.sort_hint) {
7466                    __map
7467                        .serialize_entry(
7468                            "sortHint",
7469                            &::buffa::json_helpers::ProtoJson(&self.sort_hint),
7470                        )?;
7471                }
7472                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.color_rgba) {
7473                    __map
7474                        .serialize_entry(
7475                            "colorRgba",
7476                            &::buffa::json_helpers::ProtoJson(&self.color_rgba),
7477                        )?;
7478                }
7479                if self.use_layer_color {
7480                    __map.serialize_entry("useLayerColor", &self.use_layer_color)?;
7481                }
7482                if self.is_locked {
7483                    __map.serialize_entry("isLocked", &self.is_locked)?;
7484                }
7485                if self.is_visible {
7486                    __map.serialize_entry("isVisible", &self.is_visible)?;
7487                }
7488                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.revision) {
7489                    __map
7490                        .serialize_entry(
7491                            "revision",
7492                            &::buffa::json_helpers::ProtoJson(&self.revision),
7493                        )?;
7494                }
7495                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.updated_at_ms) {
7496                    __map
7497                        .serialize_entry(
7498                            "updatedAtMs",
7499                            &::buffa::json_helpers::ProtoJson(&self.updated_at_ms),
7500                        )?;
7501                }
7502                __map.end()
7503            }
7504        }
7505        impl<'a> ::buffa::MessageName for LayerView<'a> {
7506            const PACKAGE: &'static str = "polychart.v1";
7507            const NAME: &'static str = "Layer";
7508            const FULL_NAME: &'static str = "polychart.v1.Layer";
7509            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Layer";
7510        }
7511        ::buffa::impl_default_view_instance!(LayerView);
7512        ::buffa::impl_view_reborrow!(LayerView);
7513        /** Self-contained, `'static` owned view of a `Layer` message.
7514
7515 Wraps [`::buffa::OwnedView`]`<`[`LayerView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
7516
7517 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`LayerView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
7518        #[derive(Clone, Debug)]
7519        pub struct LayerOwnedView(::buffa::OwnedView<LayerView<'static>>);
7520        impl LayerOwnedView {
7521            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
7522            ///
7523            /// The view borrows directly from the buffer's data; the buffer is
7524            /// retained inside the returned handle.
7525            ///
7526            /// # Errors
7527            ///
7528            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
7529            /// protobuf data.
7530            pub fn decode(
7531                bytes: ::buffa::bytes::Bytes,
7532            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7533                ::core::result::Result::Ok(
7534                    LayerOwnedView(::buffa::OwnedView::decode(bytes)?),
7535                )
7536            }
7537            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
7538            /// max message size).
7539            ///
7540            /// # Errors
7541            ///
7542            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
7543            /// exceeds the configured limits.
7544            pub fn decode_with_options(
7545                bytes: ::buffa::bytes::Bytes,
7546                opts: &::buffa::DecodeOptions,
7547            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7548                ::core::result::Result::Ok(
7549                    LayerOwnedView(::buffa::OwnedView::decode_with_options(bytes, opts)?),
7550                )
7551            }
7552            /// Build from an owned message via an encode → decode round-trip.
7553            ///
7554            /// # Errors
7555            ///
7556            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
7557            /// somehow invalid (should not happen for well-formed messages).
7558            pub fn from_owned(
7559                msg: &super::super::Layer,
7560            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7561                ::core::result::Result::Ok(
7562                    LayerOwnedView(::buffa::OwnedView::from_owned(msg)?),
7563                )
7564            }
7565            /// Borrow the full [`LayerView`] with its lifetime tied to `&self`.
7566            #[must_use]
7567            pub fn view(&self) -> &LayerView<'_> {
7568                self.0.reborrow()
7569            }
7570            /// Convert to the owned message type.
7571            ///
7572            /// # Errors
7573            ///
7574            /// Returns an error if re-materializing preserved unknown fields
7575            /// fails (e.g. the unknown-field limit is exceeded).
7576            pub fn to_owned_message(
7577                &self,
7578            ) -> ::core::result::Result<super::super::Layer, ::buffa::DecodeError> {
7579                self.0.to_owned_message()
7580            }
7581            /// The underlying bytes buffer.
7582            #[must_use]
7583            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
7584                self.0.bytes()
7585            }
7586            /// Consume the handle, returning the underlying bytes buffer.
7587            #[must_use]
7588            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
7589                self.0.into_bytes()
7590            }
7591            /// Account that owns the layer.
7592            ///
7593            /// Field 1: `owner_id`
7594            #[must_use]
7595            pub fn owner_id(&self) -> u64 {
7596                self.0.reborrow().owner_id
7597            }
7598            /// Layer identifier unique within the owner account.
7599            ///
7600            /// Field 2: `layer_id`
7601            #[must_use]
7602            pub fn layer_id(&self) -> u64 {
7603                self.0.reborrow().layer_id
7604            }
7605            /// Engine symbol identifier for the market this layer belongs to.
7606            ///
7607            /// Field 3: `engine_symbol_id`
7608            #[must_use]
7609            pub fn engine_symbol_id(&self) -> u32 {
7610                self.0.reborrow().engine_symbol_id
7611            }
7612            /// Human-readable layer name.
7613            ///
7614            /// Field 4: `name`
7615            #[must_use]
7616            pub fn name(&self) -> &'_ str {
7617                self.0.reborrow().name
7618            }
7619            /// Owner-defined ordering hint for the layer list.
7620            ///
7621            /// Field 5: `sort_hint`
7622            #[must_use]
7623            pub fn sort_hint(&self) -> i32 {
7624                self.0.reborrow().sort_hint
7625            }
7626            /// Owner-level style defaults.
7627            /// Packed layer color in 0xAARRGGBB format.
7628            ///
7629            /// Field 6: `color_rgba`
7630            #[must_use]
7631            pub fn color_rgba(&self) -> u32 {
7632                self.0.reborrow().color_rgba
7633            }
7634            /// True when drawings should use the layer color by default.
7635            ///
7636            /// Field 7: `use_layer_color`
7637            #[must_use]
7638            pub fn use_layer_color(&self) -> bool {
7639                self.0.reborrow().use_layer_color
7640            }
7641            /// True when clients should prevent editing drawings in this layer.
7642            ///
7643            /// Field 8: `is_locked`
7644            #[must_use]
7645            pub fn is_locked(&self) -> bool {
7646                self.0.reborrow().is_locked
7647            }
7648            /// True when the layer is visible by default.
7649            ///
7650            /// Field 9: `is_visible`
7651            #[must_use]
7652            pub fn is_visible(&self) -> bool {
7653                self.0.reborrow().is_visible
7654            }
7655            /// Monotonic per layer; increments on any committed change to the layer or its drawings.
7656            ///
7657            /// Field 10: `revision`
7658            #[must_use]
7659            pub fn revision(&self) -> u64 {
7660                self.0.reborrow().revision
7661            }
7662            /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
7663            ///
7664            /// Field 11: `updated_at_ms`
7665            #[must_use]
7666            pub fn updated_at_ms(&self) -> u64 {
7667                self.0.reborrow().updated_at_ms
7668            }
7669        }
7670        impl ::core::convert::From<::buffa::OwnedView<LayerView<'static>>>
7671        for LayerOwnedView {
7672            fn from(inner: ::buffa::OwnedView<LayerView<'static>>) -> Self {
7673                LayerOwnedView(inner)
7674            }
7675        }
7676        impl ::core::convert::From<LayerOwnedView>
7677        for ::buffa::OwnedView<LayerView<'static>> {
7678            fn from(wrapper: LayerOwnedView) -> Self {
7679                wrapper.0
7680            }
7681        }
7682        impl ::core::convert::AsRef<::buffa::OwnedView<LayerView<'static>>>
7683        for LayerOwnedView {
7684            fn as_ref(&self) -> &::buffa::OwnedView<LayerView<'static>> {
7685                &self.0
7686            }
7687        }
7688        impl ::buffa::HasMessageView for super::super::Layer {
7689            type View<'a> = LayerView<'a>;
7690            type ViewHandle = LayerOwnedView;
7691        }
7692        impl ::serde::Serialize for LayerOwnedView {
7693            fn serialize<__S: ::serde::Serializer>(
7694                &self,
7695                __s: __S,
7696            ) -> ::core::result::Result<__S::Ok, __S::Error> {
7697                ::serde::Serialize::serialize(&self.0, __s)
7698            }
7699        }
7700        /// Drawing is a shape or annotation stored inside a layer.
7701        #[derive(Clone, Debug, Default)]
7702        pub struct DrawingView<'a> {
7703            /// Account that owns the drawing.
7704            ///
7705            /// Field 1: `owner_id`
7706            pub owner_id: u64,
7707            /// Drawing identifier unique within the owner account.
7708            ///
7709            /// Field 2: `drawing_id`
7710            pub drawing_id: u64,
7711            /// Parent layer for the drawing.
7712            ///
7713            /// Field 3: `layer`
7714            pub layer: ::buffa::MessageFieldView<
7715                super::super::__buffa::view::LayerRefView<'a>,
7716            >,
7717            /// Engine symbol identifier for the drawing market.
7718            ///
7719            /// Field 4: `engine_symbol_id`
7720            pub engine_symbol_id: u32,
7721            /// Client-defined drawing type identifier.
7722            ///
7723            /// Field 5: `type`
7724            pub r#type: u32,
7725            /// Client-defined payload schema version.
7726            ///
7727            /// Field 6: `version`
7728            pub version: u32,
7729            /// Serialized drawing payload bytes.
7730            ///
7731            /// Field 7: `payload`
7732            pub payload: &'a [u8],
7733            /// Minimum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
7734            ///
7735            /// Field 8: `bbox_time_min_ms`
7736            pub bbox_time_min_ms: u64,
7737            /// Maximum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
7738            ///
7739            /// Field 9: `bbox_time_max_ms`
7740            pub bbox_time_max_ms: u64,
7741            /// Minimum drawing price bound; 0 means unset.
7742            ///
7743            /// Field 10: `bbox_price_min`
7744            pub bbox_price_min: f64,
7745            /// Maximum drawing price bound; 0 means unset.
7746            ///
7747            /// Field 11: `bbox_price_max`
7748            pub bbox_price_max: f64,
7749            /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
7750            ///
7751            /// Field 12: `updated_at_ms`
7752            pub updated_at_ms: u64,
7753            /// Server-assigned deletion timestamp in milliseconds since epoch (UTC); 0 means not deleted.
7754            ///
7755            /// Field 13: `deleted_at_ms`
7756            pub deleted_at_ms: u64,
7757            /// Client-assigned commit timestamp in milliseconds since epoch (UTC), used for last-write-wins merge.
7758            ///
7759            /// Field 14: `client_updated_at_ms`
7760            pub client_updated_at_ms: u64,
7761            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
7762        }
7763        impl<'a> ::buffa::MessageView<'a> for DrawingView<'a> {
7764            type Owned = super::super::Drawing;
7765            fn decode_view(
7766                buf: &'a [u8],
7767            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7768                let __limit = ::core::cell::Cell::new(
7769                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
7770                );
7771                <Self as ::buffa::MessageView>::decode_view_ctx(
7772                    buf,
7773                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
7774                )
7775            }
7776            fn decode_view_with_ctx(
7777                buf: &'a [u8],
7778                ctx: ::buffa::DecodeContext<'_>,
7779            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
7780                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
7781            }
7782            fn merge_view_field(
7783                &mut self,
7784                tag: ::buffa::encoding::Tag,
7785                cur: &'a [u8],
7786                before_tag: &'a [u8],
7787                ctx: ::buffa::DecodeContext<'_>,
7788            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
7789                let _ = ctx;
7790                #[allow(unused_variables)]
7791                let view = self;
7792                let mut cur = cur;
7793                match tag.field_number() {
7794                    1u32 => {
7795                        ::buffa::encoding::check_wire_type(
7796                            tag,
7797                            ::buffa::encoding::WireType::Fixed64,
7798                        )?;
7799                        view.owner_id = ::buffa::types::decode_fixed64(&mut cur)?;
7800                    }
7801                    2u32 => {
7802                        ::buffa::encoding::check_wire_type(
7803                            tag,
7804                            ::buffa::encoding::WireType::Fixed64,
7805                        )?;
7806                        view.drawing_id = ::buffa::types::decode_fixed64(&mut cur)?;
7807                    }
7808                    3u32 => {
7809                        ::buffa::encoding::check_wire_type(
7810                            tag,
7811                            ::buffa::encoding::WireType::LengthDelimited,
7812                        )?;
7813                        let __sub_ctx = ctx.descend()?;
7814                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
7815                        match view.layer.as_mut() {
7816                            Some(existing) => {
7817                                ::buffa::MessageView::merge_into_view(
7818                                    existing,
7819                                    sub,
7820                                    __sub_ctx,
7821                                )?
7822                            }
7823                            None => {
7824                                view.layer = ::buffa::MessageFieldView::set(
7825                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
7826                                        sub,
7827                                        __sub_ctx,
7828                                    )?,
7829                                );
7830                            }
7831                        }
7832                    }
7833                    4u32 => {
7834                        ::buffa::encoding::check_wire_type(
7835                            tag,
7836                            ::buffa::encoding::WireType::Varint,
7837                        )?;
7838                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
7839                    }
7840                    5u32 => {
7841                        ::buffa::encoding::check_wire_type(
7842                            tag,
7843                            ::buffa::encoding::WireType::Varint,
7844                        )?;
7845                        view.r#type = ::buffa::types::decode_uint32(&mut cur)?;
7846                    }
7847                    6u32 => {
7848                        ::buffa::encoding::check_wire_type(
7849                            tag,
7850                            ::buffa::encoding::WireType::Varint,
7851                        )?;
7852                        view.version = ::buffa::types::decode_uint32(&mut cur)?;
7853                    }
7854                    7u32 => {
7855                        ::buffa::encoding::check_wire_type(
7856                            tag,
7857                            ::buffa::encoding::WireType::LengthDelimited,
7858                        )?;
7859                        view.payload = ::buffa::types::borrow_bytes(&mut cur)?;
7860                    }
7861                    8u32 => {
7862                        ::buffa::encoding::check_wire_type(
7863                            tag,
7864                            ::buffa::encoding::WireType::Fixed64,
7865                        )?;
7866                        view.bbox_time_min_ms = ::buffa::types::decode_fixed64(
7867                            &mut cur,
7868                        )?;
7869                    }
7870                    9u32 => {
7871                        ::buffa::encoding::check_wire_type(
7872                            tag,
7873                            ::buffa::encoding::WireType::Fixed64,
7874                        )?;
7875                        view.bbox_time_max_ms = ::buffa::types::decode_fixed64(
7876                            &mut cur,
7877                        )?;
7878                    }
7879                    10u32 => {
7880                        ::buffa::encoding::check_wire_type(
7881                            tag,
7882                            ::buffa::encoding::WireType::Fixed64,
7883                        )?;
7884                        view.bbox_price_min = ::buffa::types::decode_double(&mut cur)?;
7885                    }
7886                    11u32 => {
7887                        ::buffa::encoding::check_wire_type(
7888                            tag,
7889                            ::buffa::encoding::WireType::Fixed64,
7890                        )?;
7891                        view.bbox_price_max = ::buffa::types::decode_double(&mut cur)?;
7892                    }
7893                    12u32 => {
7894                        ::buffa::encoding::check_wire_type(
7895                            tag,
7896                            ::buffa::encoding::WireType::Fixed64,
7897                        )?;
7898                        view.updated_at_ms = ::buffa::types::decode_fixed64(&mut cur)?;
7899                    }
7900                    13u32 => {
7901                        ::buffa::encoding::check_wire_type(
7902                            tag,
7903                            ::buffa::encoding::WireType::Fixed64,
7904                        )?;
7905                        view.deleted_at_ms = ::buffa::types::decode_fixed64(&mut cur)?;
7906                    }
7907                    14u32 => {
7908                        ::buffa::encoding::check_wire_type(
7909                            tag,
7910                            ::buffa::encoding::WireType::Fixed64,
7911                        )?;
7912                        view.client_updated_at_ms = ::buffa::types::decode_fixed64(
7913                            &mut cur,
7914                        )?;
7915                    }
7916                    _ => {
7917                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
7918                        let span_len = before_tag.len() - cur.len();
7919                        view.__buffa_unknown_fields
7920                            .push_record(before_tag, span_len, ctx)?;
7921                    }
7922                }
7923                ::core::result::Result::Ok(cur)
7924            }
7925            fn to_owned_message(
7926                &self,
7927            ) -> ::core::result::Result<super::super::Drawing, ::buffa::DecodeError> {
7928                self.to_owned_from_source(None)
7929            }
7930            #[allow(clippy::useless_conversion, clippy::needless_update)]
7931            fn to_owned_from_source(
7932                &self,
7933                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
7934            ) -> ::core::result::Result<super::super::Drawing, ::buffa::DecodeError> {
7935                #[allow(unused_imports)]
7936                use ::buffa::alloc::string::ToString as _;
7937                let _ = __buffa_src;
7938                ::core::result::Result::Ok(super::super::Drawing {
7939                    owner_id: self.owner_id,
7940                    drawing_id: self.drawing_id,
7941                    layer: match self.layer.as_option() {
7942                        Some(v) => {
7943                            ::buffa::MessageField::<
7944                                super::super::LayerRef,
7945                            >::some(v.to_owned_from_source(__buffa_src)?)
7946                        }
7947                        None => ::buffa::MessageField::none(),
7948                    },
7949                    engine_symbol_id: self.engine_symbol_id,
7950                    r#type: self.r#type,
7951                    version: self.version,
7952                    payload: (self.payload).to_vec(),
7953                    bbox_time_min_ms: self.bbox_time_min_ms,
7954                    bbox_time_max_ms: self.bbox_time_max_ms,
7955                    bbox_price_min: self.bbox_price_min,
7956                    bbox_price_max: self.bbox_price_max,
7957                    updated_at_ms: self.updated_at_ms,
7958                    deleted_at_ms: self.deleted_at_ms,
7959                    client_updated_at_ms: self.client_updated_at_ms,
7960                    __buffa_unknown_fields: self
7961                        .__buffa_unknown_fields
7962                        .to_owned()?
7963                        .into(),
7964                    ..::core::default::Default::default()
7965                })
7966            }
7967        }
7968        impl<'a> ::buffa::ViewEncode<'a> for DrawingView<'a> {
7969            #[allow(clippy::needless_borrow, clippy::let_and_return)]
7970            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
7971                #[allow(unused_imports)]
7972                use ::buffa::Enumeration as _;
7973                let mut size = 0u32;
7974                if self.owner_id != 0u64 {
7975                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7976                }
7977                if self.drawing_id != 0u64 {
7978                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
7979                }
7980                if self.layer.is_set() {
7981                    let __slot = __cache.reserve();
7982                    let inner_size = self.layer.compute_size(__cache);
7983                    __cache.set(__slot, inner_size);
7984                    size
7985                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
7986                            + inner_size;
7987                }
7988                if self.engine_symbol_id != 0u32 {
7989                    size
7990                        += 1u32
7991                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
7992                                as u32;
7993                }
7994                if self.r#type != 0u32 {
7995                    size
7996                        += 1u32 + ::buffa::types::uint32_encoded_len(self.r#type) as u32;
7997                }
7998                if self.version != 0u32 {
7999                    size
8000                        += 1u32
8001                            + ::buffa::types::uint32_encoded_len(self.version) as u32;
8002                }
8003                if !self.payload.is_empty() {
8004                    size
8005                        += 1u32
8006                            + ::buffa::types::bytes_encoded_len(&self.payload) as u32;
8007                }
8008                if self.bbox_time_min_ms != 0u64 {
8009                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8010                }
8011                if self.bbox_time_max_ms != 0u64 {
8012                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8013                }
8014                if self.bbox_price_min.to_bits() != 0u64 {
8015                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8016                }
8017                if self.bbox_price_max.to_bits() != 0u64 {
8018                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8019                }
8020                if self.updated_at_ms != 0u64 {
8021                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8022                }
8023                if self.deleted_at_ms != 0u64 {
8024                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8025                }
8026                if self.client_updated_at_ms != 0u64 {
8027                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8028                }
8029                size += self.__buffa_unknown_fields.encoded_len() as u32;
8030                size
8031            }
8032            #[allow(clippy::needless_borrow)]
8033            fn write_to(
8034                &self,
8035                __cache: &mut ::buffa::SizeCache,
8036                buf: &mut impl ::buffa::bytes::BufMut,
8037            ) {
8038                #[allow(unused_imports)]
8039                use ::buffa::Enumeration as _;
8040                if self.owner_id != 0u64 {
8041                    ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
8042                }
8043                if self.drawing_id != 0u64 {
8044                    ::buffa::types::put_fixed64_field(2u32, self.drawing_id, buf);
8045                }
8046                if self.layer.is_set() {
8047                    ::buffa::types::put_len_delimited_header(
8048                        3u32,
8049                        __cache.consume_next(),
8050                        buf,
8051                    );
8052                    self.layer.write_to(__cache, buf);
8053                }
8054                if self.engine_symbol_id != 0u32 {
8055                    ::buffa::types::put_uint32_field(4u32, self.engine_symbol_id, buf);
8056                }
8057                if self.r#type != 0u32 {
8058                    ::buffa::types::put_uint32_field(5u32, self.r#type, buf);
8059                }
8060                if self.version != 0u32 {
8061                    ::buffa::types::put_uint32_field(6u32, self.version, buf);
8062                }
8063                if !self.payload.is_empty() {
8064                    ::buffa::types::put_bytes_field(7u32, &self.payload, buf);
8065                }
8066                if self.bbox_time_min_ms != 0u64 {
8067                    ::buffa::types::put_fixed64_field(8u32, self.bbox_time_min_ms, buf);
8068                }
8069                if self.bbox_time_max_ms != 0u64 {
8070                    ::buffa::types::put_fixed64_field(9u32, self.bbox_time_max_ms, buf);
8071                }
8072                if self.bbox_price_min.to_bits() != 0u64 {
8073                    ::buffa::types::put_double_field(10u32, self.bbox_price_min, buf);
8074                }
8075                if self.bbox_price_max.to_bits() != 0u64 {
8076                    ::buffa::types::put_double_field(11u32, self.bbox_price_max, buf);
8077                }
8078                if self.updated_at_ms != 0u64 {
8079                    ::buffa::types::put_fixed64_field(12u32, self.updated_at_ms, buf);
8080                }
8081                if self.deleted_at_ms != 0u64 {
8082                    ::buffa::types::put_fixed64_field(13u32, self.deleted_at_ms, buf);
8083                }
8084                if self.client_updated_at_ms != 0u64 {
8085                    ::buffa::types::put_fixed64_field(
8086                        14u32,
8087                        self.client_updated_at_ms,
8088                        buf,
8089                    );
8090                }
8091                self.__buffa_unknown_fields.write_to(buf);
8092            }
8093        }
8094        /// Serializes this view as protobuf JSON.
8095        ///
8096        /// Implicit-presence fields with default values are omitted, `required`
8097        /// fields are always emitted, explicit-presence (`optional`) fields are
8098        /// emitted only when set, bytes fields are base64-encoded, and enum
8099        /// values are their proto name strings.
8100        ///
8101        /// This impl uses `serialize_map(None)` because the number of emitted
8102        /// fields depends on default-omission rules; serializers that require
8103        /// known map lengths (e.g. `bincode`) will return a runtime error.
8104        /// Use the owned message type for those formats.
8105        impl<'__a> ::serde::Serialize for DrawingView<'__a> {
8106            fn serialize<__S: ::serde::Serializer>(
8107                &self,
8108                __s: __S,
8109            ) -> ::core::result::Result<__S::Ok, __S::Error> {
8110                use ::serde::ser::SerializeMap as _;
8111                let mut __map = __s.serialize_map(::core::option::Option::None)?;
8112                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.owner_id) {
8113                    __map
8114                        .serialize_entry(
8115                            "ownerId",
8116                            &::buffa::json_helpers::ProtoJson(&self.owner_id),
8117                        )?;
8118                }
8119                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.drawing_id) {
8120                    __map
8121                        .serialize_entry(
8122                            "drawingId",
8123                            &::buffa::json_helpers::ProtoJson(&self.drawing_id),
8124                        )?;
8125                }
8126                {
8127                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
8128                        __map.serialize_entry("layer", __v)?;
8129                    }
8130                }
8131                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
8132                    __map
8133                        .serialize_entry(
8134                            "engineSymbolId",
8135                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
8136                        )?;
8137                }
8138                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.r#type) {
8139                    __map
8140                        .serialize_entry(
8141                            "type",
8142                            &::buffa::json_helpers::ProtoJson(&self.r#type),
8143                        )?;
8144                }
8145                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.version) {
8146                    __map
8147                        .serialize_entry(
8148                            "version",
8149                            &::buffa::json_helpers::ProtoJson(&self.version),
8150                        )?;
8151                }
8152                if !::buffa::json_helpers::skip_if::is_empty_bytes(self.payload) {
8153                    __map
8154                        .serialize_entry(
8155                            "payload",
8156                            &::buffa::json_helpers::BytesJson(self.payload),
8157                        )?;
8158                }
8159                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.bbox_time_min_ms) {
8160                    __map
8161                        .serialize_entry(
8162                            "bboxTimeMinMs",
8163                            &::buffa::json_helpers::ProtoJson(&self.bbox_time_min_ms),
8164                        )?;
8165                }
8166                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.bbox_time_max_ms) {
8167                    __map
8168                        .serialize_entry(
8169                            "bboxTimeMaxMs",
8170                            &::buffa::json_helpers::ProtoJson(&self.bbox_time_max_ms),
8171                        )?;
8172                }
8173                if !::buffa::json_helpers::skip_if::is_zero_f64(&self.bbox_price_min) {
8174                    __map
8175                        .serialize_entry(
8176                            "bboxPriceMin",
8177                            &::buffa::json_helpers::ProtoJson(&self.bbox_price_min),
8178                        )?;
8179                }
8180                if !::buffa::json_helpers::skip_if::is_zero_f64(&self.bbox_price_max) {
8181                    __map
8182                        .serialize_entry(
8183                            "bboxPriceMax",
8184                            &::buffa::json_helpers::ProtoJson(&self.bbox_price_max),
8185                        )?;
8186                }
8187                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.updated_at_ms) {
8188                    __map
8189                        .serialize_entry(
8190                            "updatedAtMs",
8191                            &::buffa::json_helpers::ProtoJson(&self.updated_at_ms),
8192                        )?;
8193                }
8194                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.deleted_at_ms) {
8195                    __map
8196                        .serialize_entry(
8197                            "deletedAtMs",
8198                            &::buffa::json_helpers::ProtoJson(&self.deleted_at_ms),
8199                        )?;
8200                }
8201                if !::buffa::json_helpers::skip_if::is_zero_u64(
8202                    &self.client_updated_at_ms,
8203                ) {
8204                    __map
8205                        .serialize_entry(
8206                            "clientUpdatedAtMs",
8207                            &::buffa::json_helpers::ProtoJson(&self.client_updated_at_ms),
8208                        )?;
8209                }
8210                __map.end()
8211            }
8212        }
8213        impl<'a> ::buffa::MessageName for DrawingView<'a> {
8214            const PACKAGE: &'static str = "polychart.v1";
8215            const NAME: &'static str = "Drawing";
8216            const FULL_NAME: &'static str = "polychart.v1.Drawing";
8217            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.Drawing";
8218        }
8219        ::buffa::impl_default_view_instance!(DrawingView);
8220        ::buffa::impl_view_reborrow!(DrawingView);
8221        /** Self-contained, `'static` owned view of a `Drawing` message.
8222
8223 Wraps [`::buffa::OwnedView`]`<`[`DrawingView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
8224
8225 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DrawingView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
8226        #[derive(Clone, Debug)]
8227        pub struct DrawingOwnedView(::buffa::OwnedView<DrawingView<'static>>);
8228        impl DrawingOwnedView {
8229            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
8230            ///
8231            /// The view borrows directly from the buffer's data; the buffer is
8232            /// retained inside the returned handle.
8233            ///
8234            /// # Errors
8235            ///
8236            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
8237            /// protobuf data.
8238            pub fn decode(
8239                bytes: ::buffa::bytes::Bytes,
8240            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8241                ::core::result::Result::Ok(
8242                    DrawingOwnedView(::buffa::OwnedView::decode(bytes)?),
8243                )
8244            }
8245            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
8246            /// max message size).
8247            ///
8248            /// # Errors
8249            ///
8250            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
8251            /// exceeds the configured limits.
8252            pub fn decode_with_options(
8253                bytes: ::buffa::bytes::Bytes,
8254                opts: &::buffa::DecodeOptions,
8255            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8256                ::core::result::Result::Ok(
8257                    DrawingOwnedView(
8258                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
8259                    ),
8260                )
8261            }
8262            /// Build from an owned message via an encode → decode round-trip.
8263            ///
8264            /// # Errors
8265            ///
8266            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
8267            /// somehow invalid (should not happen for well-formed messages).
8268            pub fn from_owned(
8269                msg: &super::super::Drawing,
8270            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8271                ::core::result::Result::Ok(
8272                    DrawingOwnedView(::buffa::OwnedView::from_owned(msg)?),
8273                )
8274            }
8275            /// Borrow the full [`DrawingView`] with its lifetime tied to `&self`.
8276            #[must_use]
8277            pub fn view(&self) -> &DrawingView<'_> {
8278                self.0.reborrow()
8279            }
8280            /// Convert to the owned message type.
8281            ///
8282            /// # Errors
8283            ///
8284            /// Returns an error if re-materializing preserved unknown fields
8285            /// fails (e.g. the unknown-field limit is exceeded).
8286            pub fn to_owned_message(
8287                &self,
8288            ) -> ::core::result::Result<super::super::Drawing, ::buffa::DecodeError> {
8289                self.0.to_owned_message()
8290            }
8291            /// The underlying bytes buffer.
8292            #[must_use]
8293            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
8294                self.0.bytes()
8295            }
8296            /// Consume the handle, returning the underlying bytes buffer.
8297            #[must_use]
8298            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
8299                self.0.into_bytes()
8300            }
8301            /// Account that owns the drawing.
8302            ///
8303            /// Field 1: `owner_id`
8304            #[must_use]
8305            pub fn owner_id(&self) -> u64 {
8306                self.0.reborrow().owner_id
8307            }
8308            /// Drawing identifier unique within the owner account.
8309            ///
8310            /// Field 2: `drawing_id`
8311            #[must_use]
8312            pub fn drawing_id(&self) -> u64 {
8313                self.0.reborrow().drawing_id
8314            }
8315            /// Parent layer for the drawing.
8316            ///
8317            /// Field 3: `layer`
8318            #[must_use]
8319            pub fn layer(
8320                &self,
8321            ) -> &::buffa::MessageFieldView<
8322                super::super::__buffa::view::LayerRefView<'_>,
8323            > {
8324                &self.0.reborrow().layer
8325            }
8326            /// Engine symbol identifier for the drawing market.
8327            ///
8328            /// Field 4: `engine_symbol_id`
8329            #[must_use]
8330            pub fn engine_symbol_id(&self) -> u32 {
8331                self.0.reborrow().engine_symbol_id
8332            }
8333            /// Client-defined drawing type identifier.
8334            ///
8335            /// Field 5: `type`
8336            #[must_use]
8337            pub fn r#type(&self) -> u32 {
8338                self.0.reborrow().r#type
8339            }
8340            /// Client-defined payload schema version.
8341            ///
8342            /// Field 6: `version`
8343            #[must_use]
8344            pub fn version(&self) -> u32 {
8345                self.0.reborrow().version
8346            }
8347            /// Serialized drawing payload bytes.
8348            ///
8349            /// Field 7: `payload`
8350            #[must_use]
8351            pub fn payload(&self) -> &'_ [u8] {
8352                self.0.reborrow().payload
8353            }
8354            /// Minimum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
8355            ///
8356            /// Field 8: `bbox_time_min_ms`
8357            #[must_use]
8358            pub fn bbox_time_min_ms(&self) -> u64 {
8359                self.0.reborrow().bbox_time_min_ms
8360            }
8361            /// Maximum drawing time bound in milliseconds since epoch (UTC); 0 means unset.
8362            ///
8363            /// Field 9: `bbox_time_max_ms`
8364            #[must_use]
8365            pub fn bbox_time_max_ms(&self) -> u64 {
8366                self.0.reborrow().bbox_time_max_ms
8367            }
8368            /// Minimum drawing price bound; 0 means unset.
8369            ///
8370            /// Field 10: `bbox_price_min`
8371            #[must_use]
8372            pub fn bbox_price_min(&self) -> f64 {
8373                self.0.reborrow().bbox_price_min
8374            }
8375            /// Maximum drawing price bound; 0 means unset.
8376            ///
8377            /// Field 11: `bbox_price_max`
8378            #[must_use]
8379            pub fn bbox_price_max(&self) -> f64 {
8380                self.0.reborrow().bbox_price_max
8381            }
8382            /// Server-assigned commit timestamp in milliseconds since epoch (UTC).
8383            ///
8384            /// Field 12: `updated_at_ms`
8385            #[must_use]
8386            pub fn updated_at_ms(&self) -> u64 {
8387                self.0.reborrow().updated_at_ms
8388            }
8389            /// Server-assigned deletion timestamp in milliseconds since epoch (UTC); 0 means not deleted.
8390            ///
8391            /// Field 13: `deleted_at_ms`
8392            #[must_use]
8393            pub fn deleted_at_ms(&self) -> u64 {
8394                self.0.reborrow().deleted_at_ms
8395            }
8396            /// Client-assigned commit timestamp in milliseconds since epoch (UTC), used for last-write-wins merge.
8397            ///
8398            /// Field 14: `client_updated_at_ms`
8399            #[must_use]
8400            pub fn client_updated_at_ms(&self) -> u64 {
8401                self.0.reborrow().client_updated_at_ms
8402            }
8403        }
8404        impl ::core::convert::From<::buffa::OwnedView<DrawingView<'static>>>
8405        for DrawingOwnedView {
8406            fn from(inner: ::buffa::OwnedView<DrawingView<'static>>) -> Self {
8407                DrawingOwnedView(inner)
8408            }
8409        }
8410        impl ::core::convert::From<DrawingOwnedView>
8411        for ::buffa::OwnedView<DrawingView<'static>> {
8412            fn from(wrapper: DrawingOwnedView) -> Self {
8413                wrapper.0
8414            }
8415        }
8416        impl ::core::convert::AsRef<::buffa::OwnedView<DrawingView<'static>>>
8417        for DrawingOwnedView {
8418            fn as_ref(&self) -> &::buffa::OwnedView<DrawingView<'static>> {
8419                &self.0
8420            }
8421        }
8422        impl ::buffa::HasMessageView for super::super::Drawing {
8423            type View<'a> = DrawingView<'a>;
8424            type ViewHandle = DrawingOwnedView;
8425        }
8426        impl ::serde::Serialize for DrawingOwnedView {
8427            fn serialize<__S: ::serde::Serializer>(
8428                &self,
8429                __s: __S,
8430            ) -> ::core::result::Result<__S::Ok, __S::Error> {
8431                ::serde::Serialize::serialize(&self.0, __s)
8432            }
8433        }
8434        /// LayerSubscription is the viewer's per-market preference for one accessible layer.
8435        #[derive(Clone, Debug, Default)]
8436        pub struct LayerSubscriptionView<'a> {
8437            /// Viewer account that owns this subscription.
8438            ///
8439            /// Field 1: `viewer_id`
8440            pub viewer_id: u64,
8441            /// Engine symbol identifier for the subscription market.
8442            ///
8443            /// Field 2: `engine_symbol_id`
8444            pub engine_symbol_id: u32,
8445            /// Layer included in the viewer's market subscriptions.
8446            ///
8447            /// Field 3: `layer`
8448            pub layer: ::buffa::MessageFieldView<
8449                super::super::__buffa::view::LayerRefView<'a>,
8450            >,
8451            /// Optional viewer-specific display name for the layer.
8452            ///
8453            /// Field 4: `alias_name`
8454            pub alias_name: &'a str,
8455            /// Viewer-defined ordering value for subscribed layers.
8456            ///
8457            /// Field 5: `sort_order`
8458            pub sort_order: i32,
8459            /// True when drawings from this layer should be loaded by default.
8460            ///
8461            /// Field 6: `is_enabled`
8462            pub is_enabled: bool,
8463            /// True when the layer should stay pinned in the viewer's layer list.
8464            ///
8465            /// Field 7: `is_pinned`
8466            pub is_pinned: bool,
8467            /// Viewer overrides (optional).
8468            /// Visibility override for this viewer; unset means use the layer default.
8469            ///
8470            /// Field 8: `is_visible_override`
8471            pub is_visible_override: ::core::option::Option<bool>,
8472            /// Locked-state override for this viewer; unset means use the layer default.
8473            ///
8474            /// Field 9: `is_locked_override`
8475            pub is_locked_override: ::core::option::Option<bool>,
8476            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
8477        }
8478        impl<'a> ::buffa::MessageView<'a> for LayerSubscriptionView<'a> {
8479            type Owned = super::super::LayerSubscription;
8480            fn decode_view(
8481                buf: &'a [u8],
8482            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8483                let __limit = ::core::cell::Cell::new(
8484                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
8485                );
8486                <Self as ::buffa::MessageView>::decode_view_ctx(
8487                    buf,
8488                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
8489                )
8490            }
8491            fn decode_view_with_ctx(
8492                buf: &'a [u8],
8493                ctx: ::buffa::DecodeContext<'_>,
8494            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8495                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
8496            }
8497            fn merge_view_field(
8498                &mut self,
8499                tag: ::buffa::encoding::Tag,
8500                cur: &'a [u8],
8501                before_tag: &'a [u8],
8502                ctx: ::buffa::DecodeContext<'_>,
8503            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
8504                let _ = ctx;
8505                #[allow(unused_variables)]
8506                let view = self;
8507                let mut cur = cur;
8508                match tag.field_number() {
8509                    1u32 => {
8510                        ::buffa::encoding::check_wire_type(
8511                            tag,
8512                            ::buffa::encoding::WireType::Fixed64,
8513                        )?;
8514                        view.viewer_id = ::buffa::types::decode_fixed64(&mut cur)?;
8515                    }
8516                    2u32 => {
8517                        ::buffa::encoding::check_wire_type(
8518                            tag,
8519                            ::buffa::encoding::WireType::Varint,
8520                        )?;
8521                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
8522                    }
8523                    3u32 => {
8524                        ::buffa::encoding::check_wire_type(
8525                            tag,
8526                            ::buffa::encoding::WireType::LengthDelimited,
8527                        )?;
8528                        let __sub_ctx = ctx.descend()?;
8529                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
8530                        match view.layer.as_mut() {
8531                            Some(existing) => {
8532                                ::buffa::MessageView::merge_into_view(
8533                                    existing,
8534                                    sub,
8535                                    __sub_ctx,
8536                                )?
8537                            }
8538                            None => {
8539                                view.layer = ::buffa::MessageFieldView::set(
8540                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
8541                                        sub,
8542                                        __sub_ctx,
8543                                    )?,
8544                                );
8545                            }
8546                        }
8547                    }
8548                    4u32 => {
8549                        ::buffa::encoding::check_wire_type(
8550                            tag,
8551                            ::buffa::encoding::WireType::LengthDelimited,
8552                        )?;
8553                        view.alias_name = ::buffa::types::borrow_str(&mut cur)?;
8554                    }
8555                    5u32 => {
8556                        ::buffa::encoding::check_wire_type(
8557                            tag,
8558                            ::buffa::encoding::WireType::Varint,
8559                        )?;
8560                        view.sort_order = ::buffa::types::decode_int32(&mut cur)?;
8561                    }
8562                    6u32 => {
8563                        ::buffa::encoding::check_wire_type(
8564                            tag,
8565                            ::buffa::encoding::WireType::Varint,
8566                        )?;
8567                        view.is_enabled = ::buffa::types::decode_bool(&mut cur)?;
8568                    }
8569                    7u32 => {
8570                        ::buffa::encoding::check_wire_type(
8571                            tag,
8572                            ::buffa::encoding::WireType::Varint,
8573                        )?;
8574                        view.is_pinned = ::buffa::types::decode_bool(&mut cur)?;
8575                    }
8576                    8u32 => {
8577                        ::buffa::encoding::check_wire_type(
8578                            tag,
8579                            ::buffa::encoding::WireType::Varint,
8580                        )?;
8581                        view.is_visible_override = Some(
8582                            ::buffa::types::decode_bool(&mut cur)?,
8583                        );
8584                    }
8585                    9u32 => {
8586                        ::buffa::encoding::check_wire_type(
8587                            tag,
8588                            ::buffa::encoding::WireType::Varint,
8589                        )?;
8590                        view.is_locked_override = Some(
8591                            ::buffa::types::decode_bool(&mut cur)?,
8592                        );
8593                    }
8594                    _ => {
8595                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
8596                        let span_len = before_tag.len() - cur.len();
8597                        view.__buffa_unknown_fields
8598                            .push_record(before_tag, span_len, ctx)?;
8599                    }
8600                }
8601                ::core::result::Result::Ok(cur)
8602            }
8603            fn to_owned_message(
8604                &self,
8605            ) -> ::core::result::Result<
8606                super::super::LayerSubscription,
8607                ::buffa::DecodeError,
8608            > {
8609                self.to_owned_from_source(None)
8610            }
8611            #[allow(clippy::useless_conversion, clippy::needless_update)]
8612            fn to_owned_from_source(
8613                &self,
8614                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
8615            ) -> ::core::result::Result<
8616                super::super::LayerSubscription,
8617                ::buffa::DecodeError,
8618            > {
8619                #[allow(unused_imports)]
8620                use ::buffa::alloc::string::ToString as _;
8621                let _ = __buffa_src;
8622                ::core::result::Result::Ok(super::super::LayerSubscription {
8623                    viewer_id: self.viewer_id,
8624                    engine_symbol_id: self.engine_symbol_id,
8625                    layer: match self.layer.as_option() {
8626                        Some(v) => {
8627                            ::buffa::MessageField::<
8628                                super::super::LayerRef,
8629                            >::some(v.to_owned_from_source(__buffa_src)?)
8630                        }
8631                        None => ::buffa::MessageField::none(),
8632                    },
8633                    alias_name: self.alias_name.to_string(),
8634                    sort_order: self.sort_order,
8635                    is_enabled: self.is_enabled,
8636                    is_pinned: self.is_pinned,
8637                    is_visible_override: self.is_visible_override,
8638                    is_locked_override: self.is_locked_override,
8639                    __buffa_unknown_fields: self
8640                        .__buffa_unknown_fields
8641                        .to_owned()?
8642                        .into(),
8643                    ..::core::default::Default::default()
8644                })
8645            }
8646        }
8647        impl<'a> ::buffa::ViewEncode<'a> for LayerSubscriptionView<'a> {
8648            #[allow(clippy::needless_borrow, clippy::let_and_return)]
8649            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
8650                #[allow(unused_imports)]
8651                use ::buffa::Enumeration as _;
8652                let mut size = 0u32;
8653                if self.viewer_id != 0u64 {
8654                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
8655                }
8656                if self.engine_symbol_id != 0u32 {
8657                    size
8658                        += 1u32
8659                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
8660                                as u32;
8661                }
8662                if self.layer.is_set() {
8663                    let __slot = __cache.reserve();
8664                    let inner_size = self.layer.compute_size(__cache);
8665                    __cache.set(__slot, inner_size);
8666                    size
8667                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
8668                            + inner_size;
8669                }
8670                if !self.alias_name.is_empty() {
8671                    size
8672                        += 1u32
8673                            + ::buffa::types::string_encoded_len(&self.alias_name)
8674                                as u32;
8675                }
8676                if self.sort_order != 0i32 {
8677                    size
8678                        += 1u32
8679                            + ::buffa::types::int32_encoded_len(self.sort_order) as u32;
8680                }
8681                if self.is_enabled {
8682                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
8683                }
8684                if self.is_pinned {
8685                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
8686                }
8687                if self.is_visible_override.is_some() {
8688                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
8689                }
8690                if self.is_locked_override.is_some() {
8691                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
8692                }
8693                size += self.__buffa_unknown_fields.encoded_len() as u32;
8694                size
8695            }
8696            #[allow(clippy::needless_borrow)]
8697            fn write_to(
8698                &self,
8699                __cache: &mut ::buffa::SizeCache,
8700                buf: &mut impl ::buffa::bytes::BufMut,
8701            ) {
8702                #[allow(unused_imports)]
8703                use ::buffa::Enumeration as _;
8704                if self.viewer_id != 0u64 {
8705                    ::buffa::types::put_fixed64_field(1u32, self.viewer_id, buf);
8706                }
8707                if self.engine_symbol_id != 0u32 {
8708                    ::buffa::types::put_uint32_field(2u32, self.engine_symbol_id, buf);
8709                }
8710                if self.layer.is_set() {
8711                    ::buffa::types::put_len_delimited_header(
8712                        3u32,
8713                        __cache.consume_next(),
8714                        buf,
8715                    );
8716                    self.layer.write_to(__cache, buf);
8717                }
8718                if !self.alias_name.is_empty() {
8719                    ::buffa::types::put_string_field(4u32, &self.alias_name, buf);
8720                }
8721                if self.sort_order != 0i32 {
8722                    ::buffa::types::put_int32_field(5u32, self.sort_order, buf);
8723                }
8724                if self.is_enabled {
8725                    ::buffa::types::put_bool_field(6u32, self.is_enabled, buf);
8726                }
8727                if self.is_pinned {
8728                    ::buffa::types::put_bool_field(7u32, self.is_pinned, buf);
8729                }
8730                if let Some(v) = self.is_visible_override {
8731                    ::buffa::types::put_bool_field(8u32, v, buf);
8732                }
8733                if let Some(v) = self.is_locked_override {
8734                    ::buffa::types::put_bool_field(9u32, v, buf);
8735                }
8736                self.__buffa_unknown_fields.write_to(buf);
8737            }
8738        }
8739        /// Serializes this view as protobuf JSON.
8740        ///
8741        /// Implicit-presence fields with default values are omitted, `required`
8742        /// fields are always emitted, explicit-presence (`optional`) fields are
8743        /// emitted only when set, bytes fields are base64-encoded, and enum
8744        /// values are their proto name strings.
8745        ///
8746        /// This impl uses `serialize_map(None)` because the number of emitted
8747        /// fields depends on default-omission rules; serializers that require
8748        /// known map lengths (e.g. `bincode`) will return a runtime error.
8749        /// Use the owned message type for those formats.
8750        impl<'__a> ::serde::Serialize for LayerSubscriptionView<'__a> {
8751            fn serialize<__S: ::serde::Serializer>(
8752                &self,
8753                __s: __S,
8754            ) -> ::core::result::Result<__S::Ok, __S::Error> {
8755                use ::serde::ser::SerializeMap as _;
8756                let mut __map = __s.serialize_map(::core::option::Option::None)?;
8757                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.viewer_id) {
8758                    __map
8759                        .serialize_entry(
8760                            "viewerId",
8761                            &::buffa::json_helpers::ProtoJson(&self.viewer_id),
8762                        )?;
8763                }
8764                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
8765                    __map
8766                        .serialize_entry(
8767                            "engineSymbolId",
8768                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
8769                        )?;
8770                }
8771                {
8772                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
8773                        __map.serialize_entry("layer", __v)?;
8774                    }
8775                }
8776                if !::buffa::json_helpers::skip_if::is_empty_str(self.alias_name) {
8777                    __map.serialize_entry("aliasName", self.alias_name)?;
8778                }
8779                if !::buffa::json_helpers::skip_if::is_zero_i32(&self.sort_order) {
8780                    __map
8781                        .serialize_entry(
8782                            "sortOrder",
8783                            &::buffa::json_helpers::ProtoJson(&self.sort_order),
8784                        )?;
8785                }
8786                if self.is_enabled {
8787                    __map.serialize_entry("isEnabled", &self.is_enabled)?;
8788                }
8789                if self.is_pinned {
8790                    __map.serialize_entry("isPinned", &self.is_pinned)?;
8791                }
8792                if let ::core::option::Option::Some(__v) = self.is_visible_override {
8793                    __map.serialize_entry("isVisibleOverride", &__v)?;
8794                }
8795                if let ::core::option::Option::Some(__v) = self.is_locked_override {
8796                    __map.serialize_entry("isLockedOverride", &__v)?;
8797                }
8798                __map.end()
8799            }
8800        }
8801        impl<'a> ::buffa::MessageName for LayerSubscriptionView<'a> {
8802            const PACKAGE: &'static str = "polychart.v1";
8803            const NAME: &'static str = "LayerSubscription";
8804            const FULL_NAME: &'static str = "polychart.v1.LayerSubscription";
8805            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscription";
8806        }
8807        ::buffa::impl_default_view_instance!(LayerSubscriptionView);
8808        ::buffa::impl_view_reborrow!(LayerSubscriptionView);
8809        /** Self-contained, `'static` owned view of a `LayerSubscription` message.
8810
8811 Wraps [`::buffa::OwnedView`]`<`[`LayerSubscriptionView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
8812
8813 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`LayerSubscriptionView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
8814        #[derive(Clone, Debug)]
8815        pub struct LayerSubscriptionOwnedView(
8816            ::buffa::OwnedView<LayerSubscriptionView<'static>>,
8817        );
8818        impl LayerSubscriptionOwnedView {
8819            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
8820            ///
8821            /// The view borrows directly from the buffer's data; the buffer is
8822            /// retained inside the returned handle.
8823            ///
8824            /// # Errors
8825            ///
8826            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
8827            /// protobuf data.
8828            pub fn decode(
8829                bytes: ::buffa::bytes::Bytes,
8830            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8831                ::core::result::Result::Ok(
8832                    LayerSubscriptionOwnedView(::buffa::OwnedView::decode(bytes)?),
8833                )
8834            }
8835            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
8836            /// max message size).
8837            ///
8838            /// # Errors
8839            ///
8840            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
8841            /// exceeds the configured limits.
8842            pub fn decode_with_options(
8843                bytes: ::buffa::bytes::Bytes,
8844                opts: &::buffa::DecodeOptions,
8845            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8846                ::core::result::Result::Ok(
8847                    LayerSubscriptionOwnedView(
8848                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
8849                    ),
8850                )
8851            }
8852            /// Build from an owned message via an encode → decode round-trip.
8853            ///
8854            /// # Errors
8855            ///
8856            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
8857            /// somehow invalid (should not happen for well-formed messages).
8858            pub fn from_owned(
8859                msg: &super::super::LayerSubscription,
8860            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
8861                ::core::result::Result::Ok(
8862                    LayerSubscriptionOwnedView(::buffa::OwnedView::from_owned(msg)?),
8863                )
8864            }
8865            /// Borrow the full [`LayerSubscriptionView`] with its lifetime tied to `&self`.
8866            #[must_use]
8867            pub fn view(&self) -> &LayerSubscriptionView<'_> {
8868                self.0.reborrow()
8869            }
8870            /// Convert to the owned message type.
8871            ///
8872            /// # Errors
8873            ///
8874            /// Returns an error if re-materializing preserved unknown fields
8875            /// fails (e.g. the unknown-field limit is exceeded).
8876            pub fn to_owned_message(
8877                &self,
8878            ) -> ::core::result::Result<
8879                super::super::LayerSubscription,
8880                ::buffa::DecodeError,
8881            > {
8882                self.0.to_owned_message()
8883            }
8884            /// The underlying bytes buffer.
8885            #[must_use]
8886            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
8887                self.0.bytes()
8888            }
8889            /// Consume the handle, returning the underlying bytes buffer.
8890            #[must_use]
8891            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
8892                self.0.into_bytes()
8893            }
8894            /// Viewer account that owns this subscription.
8895            ///
8896            /// Field 1: `viewer_id`
8897            #[must_use]
8898            pub fn viewer_id(&self) -> u64 {
8899                self.0.reborrow().viewer_id
8900            }
8901            /// Engine symbol identifier for the subscription market.
8902            ///
8903            /// Field 2: `engine_symbol_id`
8904            #[must_use]
8905            pub fn engine_symbol_id(&self) -> u32 {
8906                self.0.reborrow().engine_symbol_id
8907            }
8908            /// Layer included in the viewer's market subscriptions.
8909            ///
8910            /// Field 3: `layer`
8911            #[must_use]
8912            pub fn layer(
8913                &self,
8914            ) -> &::buffa::MessageFieldView<
8915                super::super::__buffa::view::LayerRefView<'_>,
8916            > {
8917                &self.0.reborrow().layer
8918            }
8919            /// Optional viewer-specific display name for the layer.
8920            ///
8921            /// Field 4: `alias_name`
8922            #[must_use]
8923            pub fn alias_name(&self) -> &'_ str {
8924                self.0.reborrow().alias_name
8925            }
8926            /// Viewer-defined ordering value for subscribed layers.
8927            ///
8928            /// Field 5: `sort_order`
8929            #[must_use]
8930            pub fn sort_order(&self) -> i32 {
8931                self.0.reborrow().sort_order
8932            }
8933            /// True when drawings from this layer should be loaded by default.
8934            ///
8935            /// Field 6: `is_enabled`
8936            #[must_use]
8937            pub fn is_enabled(&self) -> bool {
8938                self.0.reborrow().is_enabled
8939            }
8940            /// True when the layer should stay pinned in the viewer's layer list.
8941            ///
8942            /// Field 7: `is_pinned`
8943            #[must_use]
8944            pub fn is_pinned(&self) -> bool {
8945                self.0.reborrow().is_pinned
8946            }
8947            /// Viewer overrides (optional).
8948            /// Visibility override for this viewer; unset means use the layer default.
8949            ///
8950            /// Field 8: `is_visible_override`
8951            #[must_use]
8952            pub fn is_visible_override(&self) -> ::core::option::Option<bool> {
8953                self.0.reborrow().is_visible_override
8954            }
8955            /// Locked-state override for this viewer; unset means use the layer default.
8956            ///
8957            /// Field 9: `is_locked_override`
8958            #[must_use]
8959            pub fn is_locked_override(&self) -> ::core::option::Option<bool> {
8960                self.0.reborrow().is_locked_override
8961            }
8962        }
8963        impl ::core::convert::From<::buffa::OwnedView<LayerSubscriptionView<'static>>>
8964        for LayerSubscriptionOwnedView {
8965            fn from(inner: ::buffa::OwnedView<LayerSubscriptionView<'static>>) -> Self {
8966                LayerSubscriptionOwnedView(inner)
8967            }
8968        }
8969        impl ::core::convert::From<LayerSubscriptionOwnedView>
8970        for ::buffa::OwnedView<LayerSubscriptionView<'static>> {
8971            fn from(wrapper: LayerSubscriptionOwnedView) -> Self {
8972                wrapper.0
8973            }
8974        }
8975        impl ::core::convert::AsRef<::buffa::OwnedView<LayerSubscriptionView<'static>>>
8976        for LayerSubscriptionOwnedView {
8977            fn as_ref(&self) -> &::buffa::OwnedView<LayerSubscriptionView<'static>> {
8978                &self.0
8979            }
8980        }
8981        impl ::buffa::HasMessageView for super::super::LayerSubscription {
8982            type View<'a> = LayerSubscriptionView<'a>;
8983            type ViewHandle = LayerSubscriptionOwnedView;
8984        }
8985        impl ::serde::Serialize for LayerSubscriptionOwnedView {
8986            fn serialize<__S: ::serde::Serializer>(
8987                &self,
8988                __s: __S,
8989            ) -> ::core::result::Result<__S::Ok, __S::Error> {
8990                ::serde::Serialize::serialize(&self.0, __s)
8991            }
8992        }
8993        /// =============================================================================
8994        /// Snapshots
8995        /// =============================================================================
8996        ///
8997        /// Load viewer's subscribed layers + drawings for a market.
8998        #[derive(Clone, Debug, Default)]
8999        pub struct GetMarketLayersRequestView<'a> {
9000            /// Engine symbol identifier for the market to load.
9001            ///
9002            /// Field 1: `engine_symbol_id`
9003            pub engine_symbol_id: u32,
9004            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
9005        }
9006        impl<'a> ::buffa::MessageView<'a> for GetMarketLayersRequestView<'a> {
9007            type Owned = super::super::GetMarketLayersRequest;
9008            fn decode_view(
9009                buf: &'a [u8],
9010            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9011                let __limit = ::core::cell::Cell::new(
9012                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
9013                );
9014                <Self as ::buffa::MessageView>::decode_view_ctx(
9015                    buf,
9016                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
9017                )
9018            }
9019            fn decode_view_with_ctx(
9020                buf: &'a [u8],
9021                ctx: ::buffa::DecodeContext<'_>,
9022            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9023                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
9024            }
9025            fn merge_view_field(
9026                &mut self,
9027                tag: ::buffa::encoding::Tag,
9028                cur: &'a [u8],
9029                before_tag: &'a [u8],
9030                ctx: ::buffa::DecodeContext<'_>,
9031            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
9032                let _ = ctx;
9033                #[allow(unused_variables)]
9034                let view = self;
9035                let mut cur = cur;
9036                match tag.field_number() {
9037                    1u32 => {
9038                        ::buffa::encoding::check_wire_type(
9039                            tag,
9040                            ::buffa::encoding::WireType::Varint,
9041                        )?;
9042                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
9043                    }
9044                    _ => {
9045                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
9046                        let span_len = before_tag.len() - cur.len();
9047                        view.__buffa_unknown_fields
9048                            .push_record(before_tag, span_len, ctx)?;
9049                    }
9050                }
9051                ::core::result::Result::Ok(cur)
9052            }
9053            fn to_owned_message(
9054                &self,
9055            ) -> ::core::result::Result<
9056                super::super::GetMarketLayersRequest,
9057                ::buffa::DecodeError,
9058            > {
9059                self.to_owned_from_source(None)
9060            }
9061            #[allow(clippy::useless_conversion, clippy::needless_update)]
9062            fn to_owned_from_source(
9063                &self,
9064                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
9065            ) -> ::core::result::Result<
9066                super::super::GetMarketLayersRequest,
9067                ::buffa::DecodeError,
9068            > {
9069                #[allow(unused_imports)]
9070                use ::buffa::alloc::string::ToString as _;
9071                let _ = __buffa_src;
9072                ::core::result::Result::Ok(super::super::GetMarketLayersRequest {
9073                    engine_symbol_id: self.engine_symbol_id,
9074                    __buffa_unknown_fields: self
9075                        .__buffa_unknown_fields
9076                        .to_owned()?
9077                        .into(),
9078                    ..::core::default::Default::default()
9079                })
9080            }
9081        }
9082        impl<'a> ::buffa::ViewEncode<'a> for GetMarketLayersRequestView<'a> {
9083            #[allow(clippy::needless_borrow, clippy::let_and_return)]
9084            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
9085                #[allow(unused_imports)]
9086                use ::buffa::Enumeration as _;
9087                let mut size = 0u32;
9088                if self.engine_symbol_id != 0u32 {
9089                    size
9090                        += 1u32
9091                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
9092                                as u32;
9093                }
9094                size += self.__buffa_unknown_fields.encoded_len() as u32;
9095                size
9096            }
9097            #[allow(clippy::needless_borrow)]
9098            fn write_to(
9099                &self,
9100                _cache: &mut ::buffa::SizeCache,
9101                buf: &mut impl ::buffa::bytes::BufMut,
9102            ) {
9103                #[allow(unused_imports)]
9104                use ::buffa::Enumeration as _;
9105                if self.engine_symbol_id != 0u32 {
9106                    ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
9107                }
9108                self.__buffa_unknown_fields.write_to(buf);
9109            }
9110        }
9111        /// Serializes this view as protobuf JSON.
9112        ///
9113        /// Implicit-presence fields with default values are omitted, `required`
9114        /// fields are always emitted, explicit-presence (`optional`) fields are
9115        /// emitted only when set, bytes fields are base64-encoded, and enum
9116        /// values are their proto name strings.
9117        ///
9118        /// This impl uses `serialize_map(None)` because the number of emitted
9119        /// fields depends on default-omission rules; serializers that require
9120        /// known map lengths (e.g. `bincode`) will return a runtime error.
9121        /// Use the owned message type for those formats.
9122        impl<'__a> ::serde::Serialize for GetMarketLayersRequestView<'__a> {
9123            fn serialize<__S: ::serde::Serializer>(
9124                &self,
9125                __s: __S,
9126            ) -> ::core::result::Result<__S::Ok, __S::Error> {
9127                use ::serde::ser::SerializeMap as _;
9128                let mut __map = __s.serialize_map(::core::option::Option::None)?;
9129                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
9130                    __map
9131                        .serialize_entry(
9132                            "engineSymbolId",
9133                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
9134                        )?;
9135                }
9136                __map.end()
9137            }
9138        }
9139        impl<'a> ::buffa::MessageName for GetMarketLayersRequestView<'a> {
9140            const PACKAGE: &'static str = "polychart.v1";
9141            const NAME: &'static str = "GetMarketLayersRequest";
9142            const FULL_NAME: &'static str = "polychart.v1.GetMarketLayersRequest";
9143            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersRequest";
9144        }
9145        ::buffa::impl_default_view_instance!(GetMarketLayersRequestView);
9146        ::buffa::impl_view_reborrow!(GetMarketLayersRequestView);
9147        /** Self-contained, `'static` owned view of a `GetMarketLayersRequest` message.
9148
9149 Wraps [`::buffa::OwnedView`]`<`[`GetMarketLayersRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
9150
9151 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetMarketLayersRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
9152        #[derive(Clone, Debug)]
9153        pub struct GetMarketLayersRequestOwnedView(
9154            ::buffa::OwnedView<GetMarketLayersRequestView<'static>>,
9155        );
9156        impl GetMarketLayersRequestOwnedView {
9157            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
9158            ///
9159            /// The view borrows directly from the buffer's data; the buffer is
9160            /// retained inside the returned handle.
9161            ///
9162            /// # Errors
9163            ///
9164            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
9165            /// protobuf data.
9166            pub fn decode(
9167                bytes: ::buffa::bytes::Bytes,
9168            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9169                ::core::result::Result::Ok(
9170                    GetMarketLayersRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
9171                )
9172            }
9173            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
9174            /// max message size).
9175            ///
9176            /// # Errors
9177            ///
9178            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
9179            /// exceeds the configured limits.
9180            pub fn decode_with_options(
9181                bytes: ::buffa::bytes::Bytes,
9182                opts: &::buffa::DecodeOptions,
9183            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9184                ::core::result::Result::Ok(
9185                    GetMarketLayersRequestOwnedView(
9186                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
9187                    ),
9188                )
9189            }
9190            /// Build from an owned message via an encode → decode round-trip.
9191            ///
9192            /// # Errors
9193            ///
9194            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
9195            /// somehow invalid (should not happen for well-formed messages).
9196            pub fn from_owned(
9197                msg: &super::super::GetMarketLayersRequest,
9198            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9199                ::core::result::Result::Ok(
9200                    GetMarketLayersRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
9201                )
9202            }
9203            /// Borrow the full [`GetMarketLayersRequestView`] with its lifetime tied to `&self`.
9204            #[must_use]
9205            pub fn view(&self) -> &GetMarketLayersRequestView<'_> {
9206                self.0.reborrow()
9207            }
9208            /// Convert to the owned message type.
9209            ///
9210            /// # Errors
9211            ///
9212            /// Returns an error if re-materializing preserved unknown fields
9213            /// fails (e.g. the unknown-field limit is exceeded).
9214            pub fn to_owned_message(
9215                &self,
9216            ) -> ::core::result::Result<
9217                super::super::GetMarketLayersRequest,
9218                ::buffa::DecodeError,
9219            > {
9220                self.0.to_owned_message()
9221            }
9222            /// The underlying bytes buffer.
9223            #[must_use]
9224            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
9225                self.0.bytes()
9226            }
9227            /// Consume the handle, returning the underlying bytes buffer.
9228            #[must_use]
9229            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
9230                self.0.into_bytes()
9231            }
9232            /// Engine symbol identifier for the market to load.
9233            ///
9234            /// Field 1: `engine_symbol_id`
9235            #[must_use]
9236            pub fn engine_symbol_id(&self) -> u32 {
9237                self.0.reborrow().engine_symbol_id
9238            }
9239        }
9240        impl ::core::convert::From<
9241            ::buffa::OwnedView<GetMarketLayersRequestView<'static>>,
9242        > for GetMarketLayersRequestOwnedView {
9243            fn from(
9244                inner: ::buffa::OwnedView<GetMarketLayersRequestView<'static>>,
9245            ) -> Self {
9246                GetMarketLayersRequestOwnedView(inner)
9247            }
9248        }
9249        impl ::core::convert::From<GetMarketLayersRequestOwnedView>
9250        for ::buffa::OwnedView<GetMarketLayersRequestView<'static>> {
9251            fn from(wrapper: GetMarketLayersRequestOwnedView) -> Self {
9252                wrapper.0
9253            }
9254        }
9255        impl ::core::convert::AsRef<
9256            ::buffa::OwnedView<GetMarketLayersRequestView<'static>>,
9257        > for GetMarketLayersRequestOwnedView {
9258            fn as_ref(
9259                &self,
9260            ) -> &::buffa::OwnedView<GetMarketLayersRequestView<'static>> {
9261                &self.0
9262            }
9263        }
9264        impl ::buffa::HasMessageView for super::super::GetMarketLayersRequest {
9265            type View<'a> = GetMarketLayersRequestView<'a>;
9266            type ViewHandle = GetMarketLayersRequestOwnedView;
9267        }
9268        impl ::serde::Serialize for GetMarketLayersRequestOwnedView {
9269            fn serialize<__S: ::serde::Serializer>(
9270                &self,
9271                __s: __S,
9272            ) -> ::core::result::Result<__S::Ok, __S::Error> {
9273                ::serde::Serialize::serialize(&self.0, __s)
9274            }
9275        }
9276        /// GetMarketLayersResponse returns subscribed layer metadata and enabled drawing snapshots.
9277        #[derive(Clone, Debug, Default)]
9278        pub struct GetMarketLayersResponseView<'a> {
9279            /// Engine symbol identifier for the returned market.
9280            ///
9281            /// Field 1: `engine_symbol_id`
9282            pub engine_symbol_id: u32,
9283            /// Caller subscriptions for the market.
9284            ///
9285            /// Field 2: `subscriptions`
9286            pub subscriptions: ::buffa::RepeatedView<
9287                'a,
9288                super::super::__buffa::view::LayerSubscriptionView<'a>,
9289            >,
9290            /// Only layers referenced by `subscriptions` are returned here.
9291            ///
9292            /// Field 3: `layers`
9293            pub layers: ::buffa::RepeatedView<
9294                'a,
9295                super::super::__buffa::view::LayerView<'a>,
9296            >,
9297            /// Drawings are returned only for enabled subscriptions (avoid huge payloads).
9298            ///
9299            /// Field 4: `drawings`
9300            pub drawings: ::buffa::RepeatedView<
9301                'a,
9302                super::super::__buffa::view::DrawingView<'a>,
9303            >,
9304            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
9305        }
9306        impl<'a> ::buffa::MessageView<'a> for GetMarketLayersResponseView<'a> {
9307            type Owned = super::super::GetMarketLayersResponse;
9308            fn decode_view(
9309                buf: &'a [u8],
9310            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9311                let __limit = ::core::cell::Cell::new(
9312                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
9313                );
9314                <Self as ::buffa::MessageView>::decode_view_ctx(
9315                    buf,
9316                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
9317                )
9318            }
9319            fn decode_view_with_ctx(
9320                buf: &'a [u8],
9321                ctx: ::buffa::DecodeContext<'_>,
9322            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9323                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
9324            }
9325            fn merge_view_field(
9326                &mut self,
9327                tag: ::buffa::encoding::Tag,
9328                cur: &'a [u8],
9329                before_tag: &'a [u8],
9330                ctx: ::buffa::DecodeContext<'_>,
9331            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
9332                let _ = ctx;
9333                #[allow(unused_variables)]
9334                let view = self;
9335                let mut cur = cur;
9336                match tag.field_number() {
9337                    1u32 => {
9338                        ::buffa::encoding::check_wire_type(
9339                            tag,
9340                            ::buffa::encoding::WireType::Varint,
9341                        )?;
9342                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
9343                    }
9344                    2u32 => {
9345                        ::buffa::encoding::check_wire_type(
9346                            tag,
9347                            ::buffa::encoding::WireType::LengthDelimited,
9348                        )?;
9349                        let __sub_ctx = ctx.descend()?;
9350                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
9351                        view.subscriptions
9352                            .push(
9353                                <super::super::__buffa::view::LayerSubscriptionView as ::buffa::MessageView>::decode_view_ctx(
9354                                    sub,
9355                                    __sub_ctx,
9356                                )?,
9357                            );
9358                    }
9359                    3u32 => {
9360                        ::buffa::encoding::check_wire_type(
9361                            tag,
9362                            ::buffa::encoding::WireType::LengthDelimited,
9363                        )?;
9364                        let __sub_ctx = ctx.descend()?;
9365                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
9366                        view.layers
9367                            .push(
9368                                <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
9369                                    sub,
9370                                    __sub_ctx,
9371                                )?,
9372                            );
9373                    }
9374                    4u32 => {
9375                        ::buffa::encoding::check_wire_type(
9376                            tag,
9377                            ::buffa::encoding::WireType::LengthDelimited,
9378                        )?;
9379                        let __sub_ctx = ctx.descend()?;
9380                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
9381                        view.drawings
9382                            .push(
9383                                <super::super::__buffa::view::DrawingView as ::buffa::MessageView>::decode_view_ctx(
9384                                    sub,
9385                                    __sub_ctx,
9386                                )?,
9387                            );
9388                    }
9389                    _ => {
9390                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
9391                        let span_len = before_tag.len() - cur.len();
9392                        view.__buffa_unknown_fields
9393                            .push_record(before_tag, span_len, ctx)?;
9394                    }
9395                }
9396                ::core::result::Result::Ok(cur)
9397            }
9398            fn to_owned_message(
9399                &self,
9400            ) -> ::core::result::Result<
9401                super::super::GetMarketLayersResponse,
9402                ::buffa::DecodeError,
9403            > {
9404                self.to_owned_from_source(None)
9405            }
9406            #[allow(clippy::useless_conversion, clippy::needless_update)]
9407            fn to_owned_from_source(
9408                &self,
9409                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
9410            ) -> ::core::result::Result<
9411                super::super::GetMarketLayersResponse,
9412                ::buffa::DecodeError,
9413            > {
9414                #[allow(unused_imports)]
9415                use ::buffa::alloc::string::ToString as _;
9416                let _ = __buffa_src;
9417                ::core::result::Result::Ok(super::super::GetMarketLayersResponse {
9418                    engine_symbol_id: self.engine_symbol_id,
9419                    subscriptions: self
9420                        .subscriptions
9421                        .iter()
9422                        .map(|v| v.to_owned_from_source(__buffa_src))
9423                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
9424                    layers: self
9425                        .layers
9426                        .iter()
9427                        .map(|v| v.to_owned_from_source(__buffa_src))
9428                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
9429                    drawings: self
9430                        .drawings
9431                        .iter()
9432                        .map(|v| v.to_owned_from_source(__buffa_src))
9433                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
9434                    __buffa_unknown_fields: self
9435                        .__buffa_unknown_fields
9436                        .to_owned()?
9437                        .into(),
9438                    ..::core::default::Default::default()
9439                })
9440            }
9441        }
9442        impl<'a> ::buffa::ViewEncode<'a> for GetMarketLayersResponseView<'a> {
9443            #[allow(clippy::needless_borrow, clippy::let_and_return)]
9444            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
9445                #[allow(unused_imports)]
9446                use ::buffa::Enumeration as _;
9447                let mut size = 0u32;
9448                if self.engine_symbol_id != 0u32 {
9449                    size
9450                        += 1u32
9451                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
9452                                as u32;
9453                }
9454                for v in &self.subscriptions {
9455                    let __slot = __cache.reserve();
9456                    let inner_size = v.compute_size(__cache);
9457                    __cache.set(__slot, inner_size);
9458                    size
9459                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
9460                            + inner_size;
9461                }
9462                for v in &self.layers {
9463                    let __slot = __cache.reserve();
9464                    let inner_size = v.compute_size(__cache);
9465                    __cache.set(__slot, inner_size);
9466                    size
9467                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
9468                            + inner_size;
9469                }
9470                for v in &self.drawings {
9471                    let __slot = __cache.reserve();
9472                    let inner_size = v.compute_size(__cache);
9473                    __cache.set(__slot, inner_size);
9474                    size
9475                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
9476                            + inner_size;
9477                }
9478                size += self.__buffa_unknown_fields.encoded_len() as u32;
9479                size
9480            }
9481            #[allow(clippy::needless_borrow)]
9482            fn write_to(
9483                &self,
9484                __cache: &mut ::buffa::SizeCache,
9485                buf: &mut impl ::buffa::bytes::BufMut,
9486            ) {
9487                #[allow(unused_imports)]
9488                use ::buffa::Enumeration as _;
9489                if self.engine_symbol_id != 0u32 {
9490                    ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
9491                }
9492                for v in &self.subscriptions {
9493                    ::buffa::types::put_len_delimited_header(
9494                        2u32,
9495                        __cache.consume_next(),
9496                        buf,
9497                    );
9498                    v.write_to(__cache, buf);
9499                }
9500                for v in &self.layers {
9501                    ::buffa::types::put_len_delimited_header(
9502                        3u32,
9503                        __cache.consume_next(),
9504                        buf,
9505                    );
9506                    v.write_to(__cache, buf);
9507                }
9508                for v in &self.drawings {
9509                    ::buffa::types::put_len_delimited_header(
9510                        4u32,
9511                        __cache.consume_next(),
9512                        buf,
9513                    );
9514                    v.write_to(__cache, buf);
9515                }
9516                self.__buffa_unknown_fields.write_to(buf);
9517            }
9518        }
9519        /// Serializes this view as protobuf JSON.
9520        ///
9521        /// Implicit-presence fields with default values are omitted, `required`
9522        /// fields are always emitted, explicit-presence (`optional`) fields are
9523        /// emitted only when set, bytes fields are base64-encoded, and enum
9524        /// values are their proto name strings.
9525        ///
9526        /// This impl uses `serialize_map(None)` because the number of emitted
9527        /// fields depends on default-omission rules; serializers that require
9528        /// known map lengths (e.g. `bincode`) will return a runtime error.
9529        /// Use the owned message type for those formats.
9530        impl<'__a> ::serde::Serialize for GetMarketLayersResponseView<'__a> {
9531            fn serialize<__S: ::serde::Serializer>(
9532                &self,
9533                __s: __S,
9534            ) -> ::core::result::Result<__S::Ok, __S::Error> {
9535                use ::serde::ser::SerializeMap as _;
9536                let mut __map = __s.serialize_map(::core::option::Option::None)?;
9537                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
9538                    __map
9539                        .serialize_entry(
9540                            "engineSymbolId",
9541                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
9542                        )?;
9543                }
9544                if !self.subscriptions.is_empty() {
9545                    __map.serialize_entry("subscriptions", &*self.subscriptions)?;
9546                }
9547                if !self.layers.is_empty() {
9548                    __map.serialize_entry("layers", &*self.layers)?;
9549                }
9550                if !self.drawings.is_empty() {
9551                    __map.serialize_entry("drawings", &*self.drawings)?;
9552                }
9553                __map.end()
9554            }
9555        }
9556        impl<'a> ::buffa::MessageName for GetMarketLayersResponseView<'a> {
9557            const PACKAGE: &'static str = "polychart.v1";
9558            const NAME: &'static str = "GetMarketLayersResponse";
9559            const FULL_NAME: &'static str = "polychart.v1.GetMarketLayersResponse";
9560            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetMarketLayersResponse";
9561        }
9562        ::buffa::impl_default_view_instance!(GetMarketLayersResponseView);
9563        ::buffa::impl_view_reborrow!(GetMarketLayersResponseView);
9564        /** Self-contained, `'static` owned view of a `GetMarketLayersResponse` message.
9565
9566 Wraps [`::buffa::OwnedView`]`<`[`GetMarketLayersResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
9567
9568 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetMarketLayersResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
9569        #[derive(Clone, Debug)]
9570        pub struct GetMarketLayersResponseOwnedView(
9571            ::buffa::OwnedView<GetMarketLayersResponseView<'static>>,
9572        );
9573        impl GetMarketLayersResponseOwnedView {
9574            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
9575            ///
9576            /// The view borrows directly from the buffer's data; the buffer is
9577            /// retained inside the returned handle.
9578            ///
9579            /// # Errors
9580            ///
9581            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
9582            /// protobuf data.
9583            pub fn decode(
9584                bytes: ::buffa::bytes::Bytes,
9585            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9586                ::core::result::Result::Ok(
9587                    GetMarketLayersResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
9588                )
9589            }
9590            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
9591            /// max message size).
9592            ///
9593            /// # Errors
9594            ///
9595            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
9596            /// exceeds the configured limits.
9597            pub fn decode_with_options(
9598                bytes: ::buffa::bytes::Bytes,
9599                opts: &::buffa::DecodeOptions,
9600            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9601                ::core::result::Result::Ok(
9602                    GetMarketLayersResponseOwnedView(
9603                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
9604                    ),
9605                )
9606            }
9607            /// Build from an owned message via an encode → decode round-trip.
9608            ///
9609            /// # Errors
9610            ///
9611            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
9612            /// somehow invalid (should not happen for well-formed messages).
9613            pub fn from_owned(
9614                msg: &super::super::GetMarketLayersResponse,
9615            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9616                ::core::result::Result::Ok(
9617                    GetMarketLayersResponseOwnedView(
9618                        ::buffa::OwnedView::from_owned(msg)?,
9619                    ),
9620                )
9621            }
9622            /// Borrow the full [`GetMarketLayersResponseView`] with its lifetime tied to `&self`.
9623            #[must_use]
9624            pub fn view(&self) -> &GetMarketLayersResponseView<'_> {
9625                self.0.reborrow()
9626            }
9627            /// Convert to the owned message type.
9628            ///
9629            /// # Errors
9630            ///
9631            /// Returns an error if re-materializing preserved unknown fields
9632            /// fails (e.g. the unknown-field limit is exceeded).
9633            pub fn to_owned_message(
9634                &self,
9635            ) -> ::core::result::Result<
9636                super::super::GetMarketLayersResponse,
9637                ::buffa::DecodeError,
9638            > {
9639                self.0.to_owned_message()
9640            }
9641            /// The underlying bytes buffer.
9642            #[must_use]
9643            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
9644                self.0.bytes()
9645            }
9646            /// Consume the handle, returning the underlying bytes buffer.
9647            #[must_use]
9648            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
9649                self.0.into_bytes()
9650            }
9651            /// Engine symbol identifier for the returned market.
9652            ///
9653            /// Field 1: `engine_symbol_id`
9654            #[must_use]
9655            pub fn engine_symbol_id(&self) -> u32 {
9656                self.0.reborrow().engine_symbol_id
9657            }
9658            /// Caller subscriptions for the market.
9659            ///
9660            /// Field 2: `subscriptions`
9661            #[must_use]
9662            pub fn subscriptions(
9663                &self,
9664            ) -> &::buffa::RepeatedView<
9665                '_,
9666                super::super::__buffa::view::LayerSubscriptionView<'_>,
9667            > {
9668                &self.0.reborrow().subscriptions
9669            }
9670            /// Only layers referenced by `subscriptions` are returned here.
9671            ///
9672            /// Field 3: `layers`
9673            #[must_use]
9674            pub fn layers(
9675                &self,
9676            ) -> &::buffa::RepeatedView<'_, super::super::__buffa::view::LayerView<'_>> {
9677                &self.0.reborrow().layers
9678            }
9679            /// Drawings are returned only for enabled subscriptions (avoid huge payloads).
9680            ///
9681            /// Field 4: `drawings`
9682            #[must_use]
9683            pub fn drawings(
9684                &self,
9685            ) -> &::buffa::RepeatedView<
9686                '_,
9687                super::super::__buffa::view::DrawingView<'_>,
9688            > {
9689                &self.0.reborrow().drawings
9690            }
9691        }
9692        impl ::core::convert::From<
9693            ::buffa::OwnedView<GetMarketLayersResponseView<'static>>,
9694        > for GetMarketLayersResponseOwnedView {
9695            fn from(
9696                inner: ::buffa::OwnedView<GetMarketLayersResponseView<'static>>,
9697            ) -> Self {
9698                GetMarketLayersResponseOwnedView(inner)
9699            }
9700        }
9701        impl ::core::convert::From<GetMarketLayersResponseOwnedView>
9702        for ::buffa::OwnedView<GetMarketLayersResponseView<'static>> {
9703            fn from(wrapper: GetMarketLayersResponseOwnedView) -> Self {
9704                wrapper.0
9705            }
9706        }
9707        impl ::core::convert::AsRef<
9708            ::buffa::OwnedView<GetMarketLayersResponseView<'static>>,
9709        > for GetMarketLayersResponseOwnedView {
9710            fn as_ref(
9711                &self,
9712            ) -> &::buffa::OwnedView<GetMarketLayersResponseView<'static>> {
9713                &self.0
9714            }
9715        }
9716        impl ::buffa::HasMessageView for super::super::GetMarketLayersResponse {
9717            type View<'a> = GetMarketLayersResponseView<'a>;
9718            type ViewHandle = GetMarketLayersResponseOwnedView;
9719        }
9720        impl ::serde::Serialize for GetMarketLayersResponseOwnedView {
9721            fn serialize<__S: ::serde::Serializer>(
9722                &self,
9723                __s: __S,
9724            ) -> ::core::result::Result<__S::Ok, __S::Error> {
9725                ::serde::Serialize::serialize(&self.0, __s)
9726            }
9727        }
9728        /// List layers explicitly shared to the viewer for a market (metadata only; no drawings).
9729        /// This is the viewer's "inbox" for FOLLOWERS/GROUP/USER shares.
9730        /// It must NOT act as a global directory of PUBLIC layers.
9731        #[derive(Clone, Debug, Default)]
9732        pub struct ListInboxMarketLayersRequestView<'a> {
9733            /// Engine symbol identifier for the market inbox.
9734            ///
9735            /// Field 1: `engine_symbol_id`
9736            pub engine_symbol_id: u32,
9737            /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
9738            /// is 500.
9739            ///
9740            /// Field 2: `limit`
9741            pub limit: u32,
9742            /// Opaque keyset cursor from a previous response. The cursor is exclusive and
9743            /// bound to caller, market, and inbox sort order.
9744            ///
9745            /// Field 3: `page_token`
9746            pub page_token: &'a str,
9747            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
9748        }
9749        impl<'a> ::buffa::MessageView<'a> for ListInboxMarketLayersRequestView<'a> {
9750            type Owned = super::super::ListInboxMarketLayersRequest;
9751            fn decode_view(
9752                buf: &'a [u8],
9753            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9754                let __limit = ::core::cell::Cell::new(
9755                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
9756                );
9757                <Self as ::buffa::MessageView>::decode_view_ctx(
9758                    buf,
9759                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
9760                )
9761            }
9762            fn decode_view_with_ctx(
9763                buf: &'a [u8],
9764                ctx: ::buffa::DecodeContext<'_>,
9765            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9766                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
9767            }
9768            fn merge_view_field(
9769                &mut self,
9770                tag: ::buffa::encoding::Tag,
9771                cur: &'a [u8],
9772                before_tag: &'a [u8],
9773                ctx: ::buffa::DecodeContext<'_>,
9774            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
9775                let _ = ctx;
9776                #[allow(unused_variables)]
9777                let view = self;
9778                let mut cur = cur;
9779                match tag.field_number() {
9780                    1u32 => {
9781                        ::buffa::encoding::check_wire_type(
9782                            tag,
9783                            ::buffa::encoding::WireType::Varint,
9784                        )?;
9785                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
9786                    }
9787                    2u32 => {
9788                        ::buffa::encoding::check_wire_type(
9789                            tag,
9790                            ::buffa::encoding::WireType::Varint,
9791                        )?;
9792                        view.limit = ::buffa::types::decode_uint32(&mut cur)?;
9793                    }
9794                    3u32 => {
9795                        ::buffa::encoding::check_wire_type(
9796                            tag,
9797                            ::buffa::encoding::WireType::LengthDelimited,
9798                        )?;
9799                        view.page_token = ::buffa::types::borrow_str(&mut cur)?;
9800                    }
9801                    _ => {
9802                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
9803                        let span_len = before_tag.len() - cur.len();
9804                        view.__buffa_unknown_fields
9805                            .push_record(before_tag, span_len, ctx)?;
9806                    }
9807                }
9808                ::core::result::Result::Ok(cur)
9809            }
9810            fn to_owned_message(
9811                &self,
9812            ) -> ::core::result::Result<
9813                super::super::ListInboxMarketLayersRequest,
9814                ::buffa::DecodeError,
9815            > {
9816                self.to_owned_from_source(None)
9817            }
9818            #[allow(clippy::useless_conversion, clippy::needless_update)]
9819            fn to_owned_from_source(
9820                &self,
9821                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
9822            ) -> ::core::result::Result<
9823                super::super::ListInboxMarketLayersRequest,
9824                ::buffa::DecodeError,
9825            > {
9826                #[allow(unused_imports)]
9827                use ::buffa::alloc::string::ToString as _;
9828                let _ = __buffa_src;
9829                ::core::result::Result::Ok(super::super::ListInboxMarketLayersRequest {
9830                    engine_symbol_id: self.engine_symbol_id,
9831                    limit: self.limit,
9832                    page_token: self.page_token.to_string(),
9833                    __buffa_unknown_fields: self
9834                        .__buffa_unknown_fields
9835                        .to_owned()?
9836                        .into(),
9837                    ..::core::default::Default::default()
9838                })
9839            }
9840        }
9841        impl<'a> ::buffa::ViewEncode<'a> for ListInboxMarketLayersRequestView<'a> {
9842            #[allow(clippy::needless_borrow, clippy::let_and_return)]
9843            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
9844                #[allow(unused_imports)]
9845                use ::buffa::Enumeration as _;
9846                let mut size = 0u32;
9847                if self.engine_symbol_id != 0u32 {
9848                    size
9849                        += 1u32
9850                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
9851                                as u32;
9852                }
9853                if self.limit != 0u32 {
9854                    size += 1u32 + ::buffa::types::uint32_encoded_len(self.limit) as u32;
9855                }
9856                if !self.page_token.is_empty() {
9857                    size
9858                        += 1u32
9859                            + ::buffa::types::string_encoded_len(&self.page_token)
9860                                as u32;
9861                }
9862                size += self.__buffa_unknown_fields.encoded_len() as u32;
9863                size
9864            }
9865            #[allow(clippy::needless_borrow)]
9866            fn write_to(
9867                &self,
9868                _cache: &mut ::buffa::SizeCache,
9869                buf: &mut impl ::buffa::bytes::BufMut,
9870            ) {
9871                #[allow(unused_imports)]
9872                use ::buffa::Enumeration as _;
9873                if self.engine_symbol_id != 0u32 {
9874                    ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
9875                }
9876                if self.limit != 0u32 {
9877                    ::buffa::types::put_uint32_field(2u32, self.limit, buf);
9878                }
9879                if !self.page_token.is_empty() {
9880                    ::buffa::types::put_string_field(3u32, &self.page_token, buf);
9881                }
9882                self.__buffa_unknown_fields.write_to(buf);
9883            }
9884        }
9885        /// Serializes this view as protobuf JSON.
9886        ///
9887        /// Implicit-presence fields with default values are omitted, `required`
9888        /// fields are always emitted, explicit-presence (`optional`) fields are
9889        /// emitted only when set, bytes fields are base64-encoded, and enum
9890        /// values are their proto name strings.
9891        ///
9892        /// This impl uses `serialize_map(None)` because the number of emitted
9893        /// fields depends on default-omission rules; serializers that require
9894        /// known map lengths (e.g. `bincode`) will return a runtime error.
9895        /// Use the owned message type for those formats.
9896        impl<'__a> ::serde::Serialize for ListInboxMarketLayersRequestView<'__a> {
9897            fn serialize<__S: ::serde::Serializer>(
9898                &self,
9899                __s: __S,
9900            ) -> ::core::result::Result<__S::Ok, __S::Error> {
9901                use ::serde::ser::SerializeMap as _;
9902                let mut __map = __s.serialize_map(::core::option::Option::None)?;
9903                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
9904                    __map
9905                        .serialize_entry(
9906                            "engineSymbolId",
9907                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
9908                        )?;
9909                }
9910                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.limit) {
9911                    __map
9912                        .serialize_entry(
9913                            "limit",
9914                            &::buffa::json_helpers::ProtoJson(&self.limit),
9915                        )?;
9916                }
9917                if !::buffa::json_helpers::skip_if::is_empty_str(self.page_token) {
9918                    __map.serialize_entry("pageToken", self.page_token)?;
9919                }
9920                __map.end()
9921            }
9922        }
9923        impl<'a> ::buffa::MessageName for ListInboxMarketLayersRequestView<'a> {
9924            const PACKAGE: &'static str = "polychart.v1";
9925            const NAME: &'static str = "ListInboxMarketLayersRequest";
9926            const FULL_NAME: &'static str = "polychart.v1.ListInboxMarketLayersRequest";
9927            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersRequest";
9928        }
9929        ::buffa::impl_default_view_instance!(ListInboxMarketLayersRequestView);
9930        ::buffa::impl_view_reborrow!(ListInboxMarketLayersRequestView);
9931        /** Self-contained, `'static` owned view of a `ListInboxMarketLayersRequest` message.
9932
9933 Wraps [`::buffa::OwnedView`]`<`[`ListInboxMarketLayersRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
9934
9935 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ListInboxMarketLayersRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
9936        #[derive(Clone, Debug)]
9937        pub struct ListInboxMarketLayersRequestOwnedView(
9938            ::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>>,
9939        );
9940        impl ListInboxMarketLayersRequestOwnedView {
9941            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
9942            ///
9943            /// The view borrows directly from the buffer's data; the buffer is
9944            /// retained inside the returned handle.
9945            ///
9946            /// # Errors
9947            ///
9948            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
9949            /// protobuf data.
9950            pub fn decode(
9951                bytes: ::buffa::bytes::Bytes,
9952            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9953                ::core::result::Result::Ok(
9954                    ListInboxMarketLayersRequestOwnedView(
9955                        ::buffa::OwnedView::decode(bytes)?,
9956                    ),
9957                )
9958            }
9959            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
9960            /// max message size).
9961            ///
9962            /// # Errors
9963            ///
9964            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
9965            /// exceeds the configured limits.
9966            pub fn decode_with_options(
9967                bytes: ::buffa::bytes::Bytes,
9968                opts: &::buffa::DecodeOptions,
9969            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9970                ::core::result::Result::Ok(
9971                    ListInboxMarketLayersRequestOwnedView(
9972                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
9973                    ),
9974                )
9975            }
9976            /// Build from an owned message via an encode → decode round-trip.
9977            ///
9978            /// # Errors
9979            ///
9980            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
9981            /// somehow invalid (should not happen for well-formed messages).
9982            pub fn from_owned(
9983                msg: &super::super::ListInboxMarketLayersRequest,
9984            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
9985                ::core::result::Result::Ok(
9986                    ListInboxMarketLayersRequestOwnedView(
9987                        ::buffa::OwnedView::from_owned(msg)?,
9988                    ),
9989                )
9990            }
9991            /// Borrow the full [`ListInboxMarketLayersRequestView`] with its lifetime tied to `&self`.
9992            #[must_use]
9993            pub fn view(&self) -> &ListInboxMarketLayersRequestView<'_> {
9994                self.0.reborrow()
9995            }
9996            /// Convert to the owned message type.
9997            ///
9998            /// # Errors
9999            ///
10000            /// Returns an error if re-materializing preserved unknown fields
10001            /// fails (e.g. the unknown-field limit is exceeded).
10002            pub fn to_owned_message(
10003                &self,
10004            ) -> ::core::result::Result<
10005                super::super::ListInboxMarketLayersRequest,
10006                ::buffa::DecodeError,
10007            > {
10008                self.0.to_owned_message()
10009            }
10010            /// The underlying bytes buffer.
10011            #[must_use]
10012            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
10013                self.0.bytes()
10014            }
10015            /// Consume the handle, returning the underlying bytes buffer.
10016            #[must_use]
10017            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
10018                self.0.into_bytes()
10019            }
10020            /// Engine symbol identifier for the market inbox.
10021            ///
10022            /// Field 1: `engine_symbol_id`
10023            #[must_use]
10024            pub fn engine_symbol_id(&self) -> u32 {
10025                self.0.reborrow().engine_symbol_id
10026            }
10027            /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
10028            /// is 500.
10029            ///
10030            /// Field 2: `limit`
10031            #[must_use]
10032            pub fn limit(&self) -> u32 {
10033                self.0.reborrow().limit
10034            }
10035            /// Opaque keyset cursor from a previous response. The cursor is exclusive and
10036            /// bound to caller, market, and inbox sort order.
10037            ///
10038            /// Field 3: `page_token`
10039            #[must_use]
10040            pub fn page_token(&self) -> &'_ str {
10041                self.0.reborrow().page_token
10042            }
10043        }
10044        impl ::core::convert::From<
10045            ::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>>,
10046        > for ListInboxMarketLayersRequestOwnedView {
10047            fn from(
10048                inner: ::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>>,
10049            ) -> Self {
10050                ListInboxMarketLayersRequestOwnedView(inner)
10051            }
10052        }
10053        impl ::core::convert::From<ListInboxMarketLayersRequestOwnedView>
10054        for ::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>> {
10055            fn from(wrapper: ListInboxMarketLayersRequestOwnedView) -> Self {
10056                wrapper.0
10057            }
10058        }
10059        impl ::core::convert::AsRef<
10060            ::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>>,
10061        > for ListInboxMarketLayersRequestOwnedView {
10062            fn as_ref(
10063                &self,
10064            ) -> &::buffa::OwnedView<ListInboxMarketLayersRequestView<'static>> {
10065                &self.0
10066            }
10067        }
10068        impl ::buffa::HasMessageView for super::super::ListInboxMarketLayersRequest {
10069            type View<'a> = ListInboxMarketLayersRequestView<'a>;
10070            type ViewHandle = ListInboxMarketLayersRequestOwnedView;
10071        }
10072        impl ::serde::Serialize for ListInboxMarketLayersRequestOwnedView {
10073            fn serialize<__S: ::serde::Serializer>(
10074                &self,
10075                __s: __S,
10076            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10077                ::serde::Serialize::serialize(&self.0, __s)
10078            }
10079        }
10080        /// ListInboxMarketLayersResponse returns metadata-only shared layers for one market.
10081        #[derive(Clone, Debug, Default)]
10082        pub struct ListInboxMarketLayersResponseView<'a> {
10083            /// Engine symbol identifier for the returned market.
10084            ///
10085            /// Field 1: `engine_symbol_id`
10086            pub engine_symbol_id: u32,
10087            /// Shared layer metadata only; drawings are not included.
10088            ///
10089            /// Field 2: `layers`
10090            pub layers: ::buffa::RepeatedView<
10091                'a,
10092                super::super::__buffa::view::LayerView<'a>,
10093            >,
10094            /// Opaque cursor for the next page. Empty when no more results exist.
10095            ///
10096            /// Field 3: `next_page_token`
10097            pub next_page_token: &'a str,
10098            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
10099        }
10100        impl<'a> ::buffa::MessageView<'a> for ListInboxMarketLayersResponseView<'a> {
10101            type Owned = super::super::ListInboxMarketLayersResponse;
10102            fn decode_view(
10103                buf: &'a [u8],
10104            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10105                let __limit = ::core::cell::Cell::new(
10106                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
10107                );
10108                <Self as ::buffa::MessageView>::decode_view_ctx(
10109                    buf,
10110                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
10111                )
10112            }
10113            fn decode_view_with_ctx(
10114                buf: &'a [u8],
10115                ctx: ::buffa::DecodeContext<'_>,
10116            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10117                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
10118            }
10119            fn merge_view_field(
10120                &mut self,
10121                tag: ::buffa::encoding::Tag,
10122                cur: &'a [u8],
10123                before_tag: &'a [u8],
10124                ctx: ::buffa::DecodeContext<'_>,
10125            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
10126                let _ = ctx;
10127                #[allow(unused_variables)]
10128                let view = self;
10129                let mut cur = cur;
10130                match tag.field_number() {
10131                    1u32 => {
10132                        ::buffa::encoding::check_wire_type(
10133                            tag,
10134                            ::buffa::encoding::WireType::Varint,
10135                        )?;
10136                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
10137                    }
10138                    3u32 => {
10139                        ::buffa::encoding::check_wire_type(
10140                            tag,
10141                            ::buffa::encoding::WireType::LengthDelimited,
10142                        )?;
10143                        view.next_page_token = ::buffa::types::borrow_str(&mut cur)?;
10144                    }
10145                    2u32 => {
10146                        ::buffa::encoding::check_wire_type(
10147                            tag,
10148                            ::buffa::encoding::WireType::LengthDelimited,
10149                        )?;
10150                        let __sub_ctx = ctx.descend()?;
10151                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
10152                        view.layers
10153                            .push(
10154                                <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
10155                                    sub,
10156                                    __sub_ctx,
10157                                )?,
10158                            );
10159                    }
10160                    _ => {
10161                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
10162                        let span_len = before_tag.len() - cur.len();
10163                        view.__buffa_unknown_fields
10164                            .push_record(before_tag, span_len, ctx)?;
10165                    }
10166                }
10167                ::core::result::Result::Ok(cur)
10168            }
10169            fn to_owned_message(
10170                &self,
10171            ) -> ::core::result::Result<
10172                super::super::ListInboxMarketLayersResponse,
10173                ::buffa::DecodeError,
10174            > {
10175                self.to_owned_from_source(None)
10176            }
10177            #[allow(clippy::useless_conversion, clippy::needless_update)]
10178            fn to_owned_from_source(
10179                &self,
10180                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
10181            ) -> ::core::result::Result<
10182                super::super::ListInboxMarketLayersResponse,
10183                ::buffa::DecodeError,
10184            > {
10185                #[allow(unused_imports)]
10186                use ::buffa::alloc::string::ToString as _;
10187                let _ = __buffa_src;
10188                ::core::result::Result::Ok(super::super::ListInboxMarketLayersResponse {
10189                    engine_symbol_id: self.engine_symbol_id,
10190                    layers: self
10191                        .layers
10192                        .iter()
10193                        .map(|v| v.to_owned_from_source(__buffa_src))
10194                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
10195                    next_page_token: self.next_page_token.to_string(),
10196                    __buffa_unknown_fields: self
10197                        .__buffa_unknown_fields
10198                        .to_owned()?
10199                        .into(),
10200                    ..::core::default::Default::default()
10201                })
10202            }
10203        }
10204        impl<'a> ::buffa::ViewEncode<'a> for ListInboxMarketLayersResponseView<'a> {
10205            #[allow(clippy::needless_borrow, clippy::let_and_return)]
10206            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
10207                #[allow(unused_imports)]
10208                use ::buffa::Enumeration as _;
10209                let mut size = 0u32;
10210                if self.engine_symbol_id != 0u32 {
10211                    size
10212                        += 1u32
10213                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
10214                                as u32;
10215                }
10216                for v in &self.layers {
10217                    let __slot = __cache.reserve();
10218                    let inner_size = v.compute_size(__cache);
10219                    __cache.set(__slot, inner_size);
10220                    size
10221                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
10222                            + inner_size;
10223                }
10224                if !self.next_page_token.is_empty() {
10225                    size
10226                        += 1u32
10227                            + ::buffa::types::string_encoded_len(&self.next_page_token)
10228                                as u32;
10229                }
10230                size += self.__buffa_unknown_fields.encoded_len() as u32;
10231                size
10232            }
10233            #[allow(clippy::needless_borrow)]
10234            fn write_to(
10235                &self,
10236                __cache: &mut ::buffa::SizeCache,
10237                buf: &mut impl ::buffa::bytes::BufMut,
10238            ) {
10239                #[allow(unused_imports)]
10240                use ::buffa::Enumeration as _;
10241                if self.engine_symbol_id != 0u32 {
10242                    ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
10243                }
10244                for v in &self.layers {
10245                    ::buffa::types::put_len_delimited_header(
10246                        2u32,
10247                        __cache.consume_next(),
10248                        buf,
10249                    );
10250                    v.write_to(__cache, buf);
10251                }
10252                if !self.next_page_token.is_empty() {
10253                    ::buffa::types::put_string_field(3u32, &self.next_page_token, buf);
10254                }
10255                self.__buffa_unknown_fields.write_to(buf);
10256            }
10257        }
10258        /// Serializes this view as protobuf JSON.
10259        ///
10260        /// Implicit-presence fields with default values are omitted, `required`
10261        /// fields are always emitted, explicit-presence (`optional`) fields are
10262        /// emitted only when set, bytes fields are base64-encoded, and enum
10263        /// values are their proto name strings.
10264        ///
10265        /// This impl uses `serialize_map(None)` because the number of emitted
10266        /// fields depends on default-omission rules; serializers that require
10267        /// known map lengths (e.g. `bincode`) will return a runtime error.
10268        /// Use the owned message type for those formats.
10269        impl<'__a> ::serde::Serialize for ListInboxMarketLayersResponseView<'__a> {
10270            fn serialize<__S: ::serde::Serializer>(
10271                &self,
10272                __s: __S,
10273            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10274                use ::serde::ser::SerializeMap as _;
10275                let mut __map = __s.serialize_map(::core::option::Option::None)?;
10276                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
10277                    __map
10278                        .serialize_entry(
10279                            "engineSymbolId",
10280                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
10281                        )?;
10282                }
10283                if !self.layers.is_empty() {
10284                    __map.serialize_entry("layers", &*self.layers)?;
10285                }
10286                if !::buffa::json_helpers::skip_if::is_empty_str(self.next_page_token) {
10287                    __map.serialize_entry("nextPageToken", self.next_page_token)?;
10288                }
10289                __map.end()
10290            }
10291        }
10292        impl<'a> ::buffa::MessageName for ListInboxMarketLayersResponseView<'a> {
10293            const PACKAGE: &'static str = "polychart.v1";
10294            const NAME: &'static str = "ListInboxMarketLayersResponse";
10295            const FULL_NAME: &'static str = "polychart.v1.ListInboxMarketLayersResponse";
10296            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListInboxMarketLayersResponse";
10297        }
10298        ::buffa::impl_default_view_instance!(ListInboxMarketLayersResponseView);
10299        ::buffa::impl_view_reborrow!(ListInboxMarketLayersResponseView);
10300        /** Self-contained, `'static` owned view of a `ListInboxMarketLayersResponse` message.
10301
10302 Wraps [`::buffa::OwnedView`]`<`[`ListInboxMarketLayersResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
10303
10304 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ListInboxMarketLayersResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
10305        #[derive(Clone, Debug)]
10306        pub struct ListInboxMarketLayersResponseOwnedView(
10307            ::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>>,
10308        );
10309        impl ListInboxMarketLayersResponseOwnedView {
10310            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
10311            ///
10312            /// The view borrows directly from the buffer's data; the buffer is
10313            /// retained inside the returned handle.
10314            ///
10315            /// # Errors
10316            ///
10317            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
10318            /// protobuf data.
10319            pub fn decode(
10320                bytes: ::buffa::bytes::Bytes,
10321            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10322                ::core::result::Result::Ok(
10323                    ListInboxMarketLayersResponseOwnedView(
10324                        ::buffa::OwnedView::decode(bytes)?,
10325                    ),
10326                )
10327            }
10328            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
10329            /// max message size).
10330            ///
10331            /// # Errors
10332            ///
10333            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
10334            /// exceeds the configured limits.
10335            pub fn decode_with_options(
10336                bytes: ::buffa::bytes::Bytes,
10337                opts: &::buffa::DecodeOptions,
10338            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10339                ::core::result::Result::Ok(
10340                    ListInboxMarketLayersResponseOwnedView(
10341                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
10342                    ),
10343                )
10344            }
10345            /// Build from an owned message via an encode → decode round-trip.
10346            ///
10347            /// # Errors
10348            ///
10349            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
10350            /// somehow invalid (should not happen for well-formed messages).
10351            pub fn from_owned(
10352                msg: &super::super::ListInboxMarketLayersResponse,
10353            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10354                ::core::result::Result::Ok(
10355                    ListInboxMarketLayersResponseOwnedView(
10356                        ::buffa::OwnedView::from_owned(msg)?,
10357                    ),
10358                )
10359            }
10360            /// Borrow the full [`ListInboxMarketLayersResponseView`] with its lifetime tied to `&self`.
10361            #[must_use]
10362            pub fn view(&self) -> &ListInboxMarketLayersResponseView<'_> {
10363                self.0.reborrow()
10364            }
10365            /// Convert to the owned message type.
10366            ///
10367            /// # Errors
10368            ///
10369            /// Returns an error if re-materializing preserved unknown fields
10370            /// fails (e.g. the unknown-field limit is exceeded).
10371            pub fn to_owned_message(
10372                &self,
10373            ) -> ::core::result::Result<
10374                super::super::ListInboxMarketLayersResponse,
10375                ::buffa::DecodeError,
10376            > {
10377                self.0.to_owned_message()
10378            }
10379            /// The underlying bytes buffer.
10380            #[must_use]
10381            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
10382                self.0.bytes()
10383            }
10384            /// Consume the handle, returning the underlying bytes buffer.
10385            #[must_use]
10386            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
10387                self.0.into_bytes()
10388            }
10389            /// Engine symbol identifier for the returned market.
10390            ///
10391            /// Field 1: `engine_symbol_id`
10392            #[must_use]
10393            pub fn engine_symbol_id(&self) -> u32 {
10394                self.0.reborrow().engine_symbol_id
10395            }
10396            /// Shared layer metadata only; drawings are not included.
10397            ///
10398            /// Field 2: `layers`
10399            #[must_use]
10400            pub fn layers(
10401                &self,
10402            ) -> &::buffa::RepeatedView<'_, super::super::__buffa::view::LayerView<'_>> {
10403                &self.0.reborrow().layers
10404            }
10405            /// Opaque cursor for the next page. Empty when no more results exist.
10406            ///
10407            /// Field 3: `next_page_token`
10408            #[must_use]
10409            pub fn next_page_token(&self) -> &'_ str {
10410                self.0.reborrow().next_page_token
10411            }
10412        }
10413        impl ::core::convert::From<
10414            ::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>>,
10415        > for ListInboxMarketLayersResponseOwnedView {
10416            fn from(
10417                inner: ::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>>,
10418            ) -> Self {
10419                ListInboxMarketLayersResponseOwnedView(inner)
10420            }
10421        }
10422        impl ::core::convert::From<ListInboxMarketLayersResponseOwnedView>
10423        for ::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>> {
10424            fn from(wrapper: ListInboxMarketLayersResponseOwnedView) -> Self {
10425                wrapper.0
10426            }
10427        }
10428        impl ::core::convert::AsRef<
10429            ::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>>,
10430        > for ListInboxMarketLayersResponseOwnedView {
10431            fn as_ref(
10432                &self,
10433            ) -> &::buffa::OwnedView<ListInboxMarketLayersResponseView<'static>> {
10434                &self.0
10435            }
10436        }
10437        impl ::buffa::HasMessageView for super::super::ListInboxMarketLayersResponse {
10438            type View<'a> = ListInboxMarketLayersResponseView<'a>;
10439            type ViewHandle = ListInboxMarketLayersResponseOwnedView;
10440        }
10441        impl ::serde::Serialize for ListInboxMarketLayersResponseOwnedView {
10442            fn serialize<__S: ::serde::Serializer>(
10443                &self,
10444                __s: __S,
10445            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10446                ::serde::Serialize::serialize(&self.0, __s)
10447            }
10448        }
10449        /// Fetch a single layer snapshot for realtime gap recovery and share viewing.
10450        #[derive(Clone, Debug, Default)]
10451        pub struct GetLayerSnapshotRequestView<'a> {
10452            /// Layer to fetch.
10453            ///
10454            /// Field 1: `layer`
10455            pub layer: ::buffa::MessageFieldView<
10456                super::super::__buffa::view::LayerRefView<'a>,
10457            >,
10458            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
10459        }
10460        impl<'a> ::buffa::MessageView<'a> for GetLayerSnapshotRequestView<'a> {
10461            type Owned = super::super::GetLayerSnapshotRequest;
10462            fn decode_view(
10463                buf: &'a [u8],
10464            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10465                let __limit = ::core::cell::Cell::new(
10466                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
10467                );
10468                <Self as ::buffa::MessageView>::decode_view_ctx(
10469                    buf,
10470                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
10471                )
10472            }
10473            fn decode_view_with_ctx(
10474                buf: &'a [u8],
10475                ctx: ::buffa::DecodeContext<'_>,
10476            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10477                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
10478            }
10479            fn merge_view_field(
10480                &mut self,
10481                tag: ::buffa::encoding::Tag,
10482                cur: &'a [u8],
10483                before_tag: &'a [u8],
10484                ctx: ::buffa::DecodeContext<'_>,
10485            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
10486                let _ = ctx;
10487                #[allow(unused_variables)]
10488                let view = self;
10489                let mut cur = cur;
10490                match tag.field_number() {
10491                    1u32 => {
10492                        ::buffa::encoding::check_wire_type(
10493                            tag,
10494                            ::buffa::encoding::WireType::LengthDelimited,
10495                        )?;
10496                        let __sub_ctx = ctx.descend()?;
10497                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
10498                        match view.layer.as_mut() {
10499                            Some(existing) => {
10500                                ::buffa::MessageView::merge_into_view(
10501                                    existing,
10502                                    sub,
10503                                    __sub_ctx,
10504                                )?
10505                            }
10506                            None => {
10507                                view.layer = ::buffa::MessageFieldView::set(
10508                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
10509                                        sub,
10510                                        __sub_ctx,
10511                                    )?,
10512                                );
10513                            }
10514                        }
10515                    }
10516                    _ => {
10517                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
10518                        let span_len = before_tag.len() - cur.len();
10519                        view.__buffa_unknown_fields
10520                            .push_record(before_tag, span_len, ctx)?;
10521                    }
10522                }
10523                ::core::result::Result::Ok(cur)
10524            }
10525            fn to_owned_message(
10526                &self,
10527            ) -> ::core::result::Result<
10528                super::super::GetLayerSnapshotRequest,
10529                ::buffa::DecodeError,
10530            > {
10531                self.to_owned_from_source(None)
10532            }
10533            #[allow(clippy::useless_conversion, clippy::needless_update)]
10534            fn to_owned_from_source(
10535                &self,
10536                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
10537            ) -> ::core::result::Result<
10538                super::super::GetLayerSnapshotRequest,
10539                ::buffa::DecodeError,
10540            > {
10541                #[allow(unused_imports)]
10542                use ::buffa::alloc::string::ToString as _;
10543                let _ = __buffa_src;
10544                ::core::result::Result::Ok(super::super::GetLayerSnapshotRequest {
10545                    layer: match self.layer.as_option() {
10546                        Some(v) => {
10547                            ::buffa::MessageField::<
10548                                super::super::LayerRef,
10549                            >::some(v.to_owned_from_source(__buffa_src)?)
10550                        }
10551                        None => ::buffa::MessageField::none(),
10552                    },
10553                    __buffa_unknown_fields: self
10554                        .__buffa_unknown_fields
10555                        .to_owned()?
10556                        .into(),
10557                    ..::core::default::Default::default()
10558                })
10559            }
10560        }
10561        impl<'a> ::buffa::ViewEncode<'a> for GetLayerSnapshotRequestView<'a> {
10562            #[allow(clippy::needless_borrow, clippy::let_and_return)]
10563            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
10564                #[allow(unused_imports)]
10565                use ::buffa::Enumeration as _;
10566                let mut size = 0u32;
10567                if self.layer.is_set() {
10568                    let __slot = __cache.reserve();
10569                    let inner_size = self.layer.compute_size(__cache);
10570                    __cache.set(__slot, inner_size);
10571                    size
10572                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
10573                            + inner_size;
10574                }
10575                size += self.__buffa_unknown_fields.encoded_len() as u32;
10576                size
10577            }
10578            #[allow(clippy::needless_borrow)]
10579            fn write_to(
10580                &self,
10581                __cache: &mut ::buffa::SizeCache,
10582                buf: &mut impl ::buffa::bytes::BufMut,
10583            ) {
10584                #[allow(unused_imports)]
10585                use ::buffa::Enumeration as _;
10586                if self.layer.is_set() {
10587                    ::buffa::types::put_len_delimited_header(
10588                        1u32,
10589                        __cache.consume_next(),
10590                        buf,
10591                    );
10592                    self.layer.write_to(__cache, buf);
10593                }
10594                self.__buffa_unknown_fields.write_to(buf);
10595            }
10596        }
10597        /// Serializes this view as protobuf JSON.
10598        ///
10599        /// Implicit-presence fields with default values are omitted, `required`
10600        /// fields are always emitted, explicit-presence (`optional`) fields are
10601        /// emitted only when set, bytes fields are base64-encoded, and enum
10602        /// values are their proto name strings.
10603        ///
10604        /// This impl uses `serialize_map(None)` because the number of emitted
10605        /// fields depends on default-omission rules; serializers that require
10606        /// known map lengths (e.g. `bincode`) will return a runtime error.
10607        /// Use the owned message type for those formats.
10608        impl<'__a> ::serde::Serialize for GetLayerSnapshotRequestView<'__a> {
10609            fn serialize<__S: ::serde::Serializer>(
10610                &self,
10611                __s: __S,
10612            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10613                use ::serde::ser::SerializeMap as _;
10614                let mut __map = __s.serialize_map(::core::option::Option::None)?;
10615                {
10616                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
10617                        __map.serialize_entry("layer", __v)?;
10618                    }
10619                }
10620                __map.end()
10621            }
10622        }
10623        impl<'a> ::buffa::MessageName for GetLayerSnapshotRequestView<'a> {
10624            const PACKAGE: &'static str = "polychart.v1";
10625            const NAME: &'static str = "GetLayerSnapshotRequest";
10626            const FULL_NAME: &'static str = "polychart.v1.GetLayerSnapshotRequest";
10627            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotRequest";
10628        }
10629        ::buffa::impl_default_view_instance!(GetLayerSnapshotRequestView);
10630        ::buffa::impl_view_reborrow!(GetLayerSnapshotRequestView);
10631        /** Self-contained, `'static` owned view of a `GetLayerSnapshotRequest` message.
10632
10633 Wraps [`::buffa::OwnedView`]`<`[`GetLayerSnapshotRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
10634
10635 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetLayerSnapshotRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
10636        #[derive(Clone, Debug)]
10637        pub struct GetLayerSnapshotRequestOwnedView(
10638            ::buffa::OwnedView<GetLayerSnapshotRequestView<'static>>,
10639        );
10640        impl GetLayerSnapshotRequestOwnedView {
10641            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
10642            ///
10643            /// The view borrows directly from the buffer's data; the buffer is
10644            /// retained inside the returned handle.
10645            ///
10646            /// # Errors
10647            ///
10648            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
10649            /// protobuf data.
10650            pub fn decode(
10651                bytes: ::buffa::bytes::Bytes,
10652            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10653                ::core::result::Result::Ok(
10654                    GetLayerSnapshotRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
10655                )
10656            }
10657            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
10658            /// max message size).
10659            ///
10660            /// # Errors
10661            ///
10662            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
10663            /// exceeds the configured limits.
10664            pub fn decode_with_options(
10665                bytes: ::buffa::bytes::Bytes,
10666                opts: &::buffa::DecodeOptions,
10667            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10668                ::core::result::Result::Ok(
10669                    GetLayerSnapshotRequestOwnedView(
10670                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
10671                    ),
10672                )
10673            }
10674            /// Build from an owned message via an encode → decode round-trip.
10675            ///
10676            /// # Errors
10677            ///
10678            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
10679            /// somehow invalid (should not happen for well-formed messages).
10680            pub fn from_owned(
10681                msg: &super::super::GetLayerSnapshotRequest,
10682            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10683                ::core::result::Result::Ok(
10684                    GetLayerSnapshotRequestOwnedView(
10685                        ::buffa::OwnedView::from_owned(msg)?,
10686                    ),
10687                )
10688            }
10689            /// Borrow the full [`GetLayerSnapshotRequestView`] with its lifetime tied to `&self`.
10690            #[must_use]
10691            pub fn view(&self) -> &GetLayerSnapshotRequestView<'_> {
10692                self.0.reborrow()
10693            }
10694            /// Convert to the owned message type.
10695            ///
10696            /// # Errors
10697            ///
10698            /// Returns an error if re-materializing preserved unknown fields
10699            /// fails (e.g. the unknown-field limit is exceeded).
10700            pub fn to_owned_message(
10701                &self,
10702            ) -> ::core::result::Result<
10703                super::super::GetLayerSnapshotRequest,
10704                ::buffa::DecodeError,
10705            > {
10706                self.0.to_owned_message()
10707            }
10708            /// The underlying bytes buffer.
10709            #[must_use]
10710            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
10711                self.0.bytes()
10712            }
10713            /// Consume the handle, returning the underlying bytes buffer.
10714            #[must_use]
10715            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
10716                self.0.into_bytes()
10717            }
10718            /// Layer to fetch.
10719            ///
10720            /// Field 1: `layer`
10721            #[must_use]
10722            pub fn layer(
10723                &self,
10724            ) -> &::buffa::MessageFieldView<
10725                super::super::__buffa::view::LayerRefView<'_>,
10726            > {
10727                &self.0.reborrow().layer
10728            }
10729        }
10730        impl ::core::convert::From<
10731            ::buffa::OwnedView<GetLayerSnapshotRequestView<'static>>,
10732        > for GetLayerSnapshotRequestOwnedView {
10733            fn from(
10734                inner: ::buffa::OwnedView<GetLayerSnapshotRequestView<'static>>,
10735            ) -> Self {
10736                GetLayerSnapshotRequestOwnedView(inner)
10737            }
10738        }
10739        impl ::core::convert::From<GetLayerSnapshotRequestOwnedView>
10740        for ::buffa::OwnedView<GetLayerSnapshotRequestView<'static>> {
10741            fn from(wrapper: GetLayerSnapshotRequestOwnedView) -> Self {
10742                wrapper.0
10743            }
10744        }
10745        impl ::core::convert::AsRef<
10746            ::buffa::OwnedView<GetLayerSnapshotRequestView<'static>>,
10747        > for GetLayerSnapshotRequestOwnedView {
10748            fn as_ref(
10749                &self,
10750            ) -> &::buffa::OwnedView<GetLayerSnapshotRequestView<'static>> {
10751                &self.0
10752            }
10753        }
10754        impl ::buffa::HasMessageView for super::super::GetLayerSnapshotRequest {
10755            type View<'a> = GetLayerSnapshotRequestView<'a>;
10756            type ViewHandle = GetLayerSnapshotRequestOwnedView;
10757        }
10758        impl ::serde::Serialize for GetLayerSnapshotRequestOwnedView {
10759            fn serialize<__S: ::serde::Serializer>(
10760                &self,
10761                __s: __S,
10762            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10763                ::serde::Serialize::serialize(&self.0, __s)
10764            }
10765        }
10766        /// GetLayerSnapshotResponse returns a layer and all non-deleted drawings in it.
10767        #[derive(Clone, Debug, Default)]
10768        pub struct GetLayerSnapshotResponseView<'a> {
10769            /// Current layer metadata.
10770            ///
10771            /// Field 1: `layer`
10772            pub layer: ::buffa::MessageFieldView<
10773                super::super::__buffa::view::LayerView<'a>,
10774            >,
10775            /// Drawings currently in the layer.
10776            ///
10777            /// Field 2: `drawings`
10778            pub drawings: ::buffa::RepeatedView<
10779                'a,
10780                super::super::__buffa::view::DrawingView<'a>,
10781            >,
10782            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
10783        }
10784        impl<'a> ::buffa::MessageView<'a> for GetLayerSnapshotResponseView<'a> {
10785            type Owned = super::super::GetLayerSnapshotResponse;
10786            fn decode_view(
10787                buf: &'a [u8],
10788            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10789                let __limit = ::core::cell::Cell::new(
10790                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
10791                );
10792                <Self as ::buffa::MessageView>::decode_view_ctx(
10793                    buf,
10794                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
10795                )
10796            }
10797            fn decode_view_with_ctx(
10798                buf: &'a [u8],
10799                ctx: ::buffa::DecodeContext<'_>,
10800            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
10801                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
10802            }
10803            fn merge_view_field(
10804                &mut self,
10805                tag: ::buffa::encoding::Tag,
10806                cur: &'a [u8],
10807                before_tag: &'a [u8],
10808                ctx: ::buffa::DecodeContext<'_>,
10809            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
10810                let _ = ctx;
10811                #[allow(unused_variables)]
10812                let view = self;
10813                let mut cur = cur;
10814                match tag.field_number() {
10815                    1u32 => {
10816                        ::buffa::encoding::check_wire_type(
10817                            tag,
10818                            ::buffa::encoding::WireType::LengthDelimited,
10819                        )?;
10820                        let __sub_ctx = ctx.descend()?;
10821                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
10822                        match view.layer.as_mut() {
10823                            Some(existing) => {
10824                                ::buffa::MessageView::merge_into_view(
10825                                    existing,
10826                                    sub,
10827                                    __sub_ctx,
10828                                )?
10829                            }
10830                            None => {
10831                                view.layer = ::buffa::MessageFieldView::set(
10832                                    <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
10833                                        sub,
10834                                        __sub_ctx,
10835                                    )?,
10836                                );
10837                            }
10838                        }
10839                    }
10840                    2u32 => {
10841                        ::buffa::encoding::check_wire_type(
10842                            tag,
10843                            ::buffa::encoding::WireType::LengthDelimited,
10844                        )?;
10845                        let __sub_ctx = ctx.descend()?;
10846                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
10847                        view.drawings
10848                            .push(
10849                                <super::super::__buffa::view::DrawingView as ::buffa::MessageView>::decode_view_ctx(
10850                                    sub,
10851                                    __sub_ctx,
10852                                )?,
10853                            );
10854                    }
10855                    _ => {
10856                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
10857                        let span_len = before_tag.len() - cur.len();
10858                        view.__buffa_unknown_fields
10859                            .push_record(before_tag, span_len, ctx)?;
10860                    }
10861                }
10862                ::core::result::Result::Ok(cur)
10863            }
10864            fn to_owned_message(
10865                &self,
10866            ) -> ::core::result::Result<
10867                super::super::GetLayerSnapshotResponse,
10868                ::buffa::DecodeError,
10869            > {
10870                self.to_owned_from_source(None)
10871            }
10872            #[allow(clippy::useless_conversion, clippy::needless_update)]
10873            fn to_owned_from_source(
10874                &self,
10875                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
10876            ) -> ::core::result::Result<
10877                super::super::GetLayerSnapshotResponse,
10878                ::buffa::DecodeError,
10879            > {
10880                #[allow(unused_imports)]
10881                use ::buffa::alloc::string::ToString as _;
10882                let _ = __buffa_src;
10883                ::core::result::Result::Ok(super::super::GetLayerSnapshotResponse {
10884                    layer: match self.layer.as_option() {
10885                        Some(v) => {
10886                            ::buffa::MessageField::<
10887                                super::super::Layer,
10888                            >::some(v.to_owned_from_source(__buffa_src)?)
10889                        }
10890                        None => ::buffa::MessageField::none(),
10891                    },
10892                    drawings: self
10893                        .drawings
10894                        .iter()
10895                        .map(|v| v.to_owned_from_source(__buffa_src))
10896                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
10897                    __buffa_unknown_fields: self
10898                        .__buffa_unknown_fields
10899                        .to_owned()?
10900                        .into(),
10901                    ..::core::default::Default::default()
10902                })
10903            }
10904        }
10905        impl<'a> ::buffa::ViewEncode<'a> for GetLayerSnapshotResponseView<'a> {
10906            #[allow(clippy::needless_borrow, clippy::let_and_return)]
10907            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
10908                #[allow(unused_imports)]
10909                use ::buffa::Enumeration as _;
10910                let mut size = 0u32;
10911                if self.layer.is_set() {
10912                    let __slot = __cache.reserve();
10913                    let inner_size = self.layer.compute_size(__cache);
10914                    __cache.set(__slot, inner_size);
10915                    size
10916                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
10917                            + inner_size;
10918                }
10919                for v in &self.drawings {
10920                    let __slot = __cache.reserve();
10921                    let inner_size = v.compute_size(__cache);
10922                    __cache.set(__slot, inner_size);
10923                    size
10924                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
10925                            + inner_size;
10926                }
10927                size += self.__buffa_unknown_fields.encoded_len() as u32;
10928                size
10929            }
10930            #[allow(clippy::needless_borrow)]
10931            fn write_to(
10932                &self,
10933                __cache: &mut ::buffa::SizeCache,
10934                buf: &mut impl ::buffa::bytes::BufMut,
10935            ) {
10936                #[allow(unused_imports)]
10937                use ::buffa::Enumeration as _;
10938                if self.layer.is_set() {
10939                    ::buffa::types::put_len_delimited_header(
10940                        1u32,
10941                        __cache.consume_next(),
10942                        buf,
10943                    );
10944                    self.layer.write_to(__cache, buf);
10945                }
10946                for v in &self.drawings {
10947                    ::buffa::types::put_len_delimited_header(
10948                        2u32,
10949                        __cache.consume_next(),
10950                        buf,
10951                    );
10952                    v.write_to(__cache, buf);
10953                }
10954                self.__buffa_unknown_fields.write_to(buf);
10955            }
10956        }
10957        /// Serializes this view as protobuf JSON.
10958        ///
10959        /// Implicit-presence fields with default values are omitted, `required`
10960        /// fields are always emitted, explicit-presence (`optional`) fields are
10961        /// emitted only when set, bytes fields are base64-encoded, and enum
10962        /// values are their proto name strings.
10963        ///
10964        /// This impl uses `serialize_map(None)` because the number of emitted
10965        /// fields depends on default-omission rules; serializers that require
10966        /// known map lengths (e.g. `bincode`) will return a runtime error.
10967        /// Use the owned message type for those formats.
10968        impl<'__a> ::serde::Serialize for GetLayerSnapshotResponseView<'__a> {
10969            fn serialize<__S: ::serde::Serializer>(
10970                &self,
10971                __s: __S,
10972            ) -> ::core::result::Result<__S::Ok, __S::Error> {
10973                use ::serde::ser::SerializeMap as _;
10974                let mut __map = __s.serialize_map(::core::option::Option::None)?;
10975                {
10976                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
10977                        __map.serialize_entry("layer", __v)?;
10978                    }
10979                }
10980                if !self.drawings.is_empty() {
10981                    __map.serialize_entry("drawings", &*self.drawings)?;
10982                }
10983                __map.end()
10984            }
10985        }
10986        impl<'a> ::buffa::MessageName for GetLayerSnapshotResponseView<'a> {
10987            const PACKAGE: &'static str = "polychart.v1";
10988            const NAME: &'static str = "GetLayerSnapshotResponse";
10989            const FULL_NAME: &'static str = "polychart.v1.GetLayerSnapshotResponse";
10990            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSnapshotResponse";
10991        }
10992        ::buffa::impl_default_view_instance!(GetLayerSnapshotResponseView);
10993        ::buffa::impl_view_reborrow!(GetLayerSnapshotResponseView);
10994        /** Self-contained, `'static` owned view of a `GetLayerSnapshotResponse` message.
10995
10996 Wraps [`::buffa::OwnedView`]`<`[`GetLayerSnapshotResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
10997
10998 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetLayerSnapshotResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
10999        #[derive(Clone, Debug)]
11000        pub struct GetLayerSnapshotResponseOwnedView(
11001            ::buffa::OwnedView<GetLayerSnapshotResponseView<'static>>,
11002        );
11003        impl GetLayerSnapshotResponseOwnedView {
11004            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
11005            ///
11006            /// The view borrows directly from the buffer's data; the buffer is
11007            /// retained inside the returned handle.
11008            ///
11009            /// # Errors
11010            ///
11011            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
11012            /// protobuf data.
11013            pub fn decode(
11014                bytes: ::buffa::bytes::Bytes,
11015            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11016                ::core::result::Result::Ok(
11017                    GetLayerSnapshotResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
11018                )
11019            }
11020            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
11021            /// max message size).
11022            ///
11023            /// # Errors
11024            ///
11025            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
11026            /// exceeds the configured limits.
11027            pub fn decode_with_options(
11028                bytes: ::buffa::bytes::Bytes,
11029                opts: &::buffa::DecodeOptions,
11030            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11031                ::core::result::Result::Ok(
11032                    GetLayerSnapshotResponseOwnedView(
11033                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
11034                    ),
11035                )
11036            }
11037            /// Build from an owned message via an encode → decode round-trip.
11038            ///
11039            /// # Errors
11040            ///
11041            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
11042            /// somehow invalid (should not happen for well-formed messages).
11043            pub fn from_owned(
11044                msg: &super::super::GetLayerSnapshotResponse,
11045            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11046                ::core::result::Result::Ok(
11047                    GetLayerSnapshotResponseOwnedView(
11048                        ::buffa::OwnedView::from_owned(msg)?,
11049                    ),
11050                )
11051            }
11052            /// Borrow the full [`GetLayerSnapshotResponseView`] with its lifetime tied to `&self`.
11053            #[must_use]
11054            pub fn view(&self) -> &GetLayerSnapshotResponseView<'_> {
11055                self.0.reborrow()
11056            }
11057            /// Convert to the owned message type.
11058            ///
11059            /// # Errors
11060            ///
11061            /// Returns an error if re-materializing preserved unknown fields
11062            /// fails (e.g. the unknown-field limit is exceeded).
11063            pub fn to_owned_message(
11064                &self,
11065            ) -> ::core::result::Result<
11066                super::super::GetLayerSnapshotResponse,
11067                ::buffa::DecodeError,
11068            > {
11069                self.0.to_owned_message()
11070            }
11071            /// The underlying bytes buffer.
11072            #[must_use]
11073            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
11074                self.0.bytes()
11075            }
11076            /// Consume the handle, returning the underlying bytes buffer.
11077            #[must_use]
11078            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
11079                self.0.into_bytes()
11080            }
11081            /// Current layer metadata.
11082            ///
11083            /// Field 1: `layer`
11084            #[must_use]
11085            pub fn layer(
11086                &self,
11087            ) -> &::buffa::MessageFieldView<super::super::__buffa::view::LayerView<'_>> {
11088                &self.0.reborrow().layer
11089            }
11090            /// Drawings currently in the layer.
11091            ///
11092            /// Field 2: `drawings`
11093            #[must_use]
11094            pub fn drawings(
11095                &self,
11096            ) -> &::buffa::RepeatedView<
11097                '_,
11098                super::super::__buffa::view::DrawingView<'_>,
11099            > {
11100                &self.0.reborrow().drawings
11101            }
11102        }
11103        impl ::core::convert::From<
11104            ::buffa::OwnedView<GetLayerSnapshotResponseView<'static>>,
11105        > for GetLayerSnapshotResponseOwnedView {
11106            fn from(
11107                inner: ::buffa::OwnedView<GetLayerSnapshotResponseView<'static>>,
11108            ) -> Self {
11109                GetLayerSnapshotResponseOwnedView(inner)
11110            }
11111        }
11112        impl ::core::convert::From<GetLayerSnapshotResponseOwnedView>
11113        for ::buffa::OwnedView<GetLayerSnapshotResponseView<'static>> {
11114            fn from(wrapper: GetLayerSnapshotResponseOwnedView) -> Self {
11115                wrapper.0
11116            }
11117        }
11118        impl ::core::convert::AsRef<
11119            ::buffa::OwnedView<GetLayerSnapshotResponseView<'static>>,
11120        > for GetLayerSnapshotResponseOwnedView {
11121            fn as_ref(
11122                &self,
11123            ) -> &::buffa::OwnedView<GetLayerSnapshotResponseView<'static>> {
11124                &self.0
11125            }
11126        }
11127        impl ::buffa::HasMessageView for super::super::GetLayerSnapshotResponse {
11128            type View<'a> = GetLayerSnapshotResponseView<'a>;
11129            type ViewHandle = GetLayerSnapshotResponseOwnedView;
11130        }
11131        impl ::serde::Serialize for GetLayerSnapshotResponseOwnedView {
11132            fn serialize<__S: ::serde::Serializer>(
11133                &self,
11134                __s: __S,
11135            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11136                ::serde::Serialize::serialize(&self.0, __s)
11137            }
11138        }
11139        /// =============================================================================
11140        /// Share links (create/revoke) and share token resolution (no auth)
11141        /// =============================================================================
11142        ///
11143        /// Resolve a share token to a layer snapshot. No auth required.
11144        /// This is the ONLY unauthenticated API for layers.
11145        #[derive(Clone, Debug, Default)]
11146        pub struct ResolveLayerShareTokenRequestView<'a> {
11147            /// Opaque share token from a layer share link.
11148            ///
11149            /// Field 1: `token`
11150            pub token: &'a str,
11151            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
11152        }
11153        impl<'a> ::buffa::MessageView<'a> for ResolveLayerShareTokenRequestView<'a> {
11154            type Owned = super::super::ResolveLayerShareTokenRequest;
11155            fn decode_view(
11156                buf: &'a [u8],
11157            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11158                let __limit = ::core::cell::Cell::new(
11159                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
11160                );
11161                <Self as ::buffa::MessageView>::decode_view_ctx(
11162                    buf,
11163                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
11164                )
11165            }
11166            fn decode_view_with_ctx(
11167                buf: &'a [u8],
11168                ctx: ::buffa::DecodeContext<'_>,
11169            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11170                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
11171            }
11172            fn merge_view_field(
11173                &mut self,
11174                tag: ::buffa::encoding::Tag,
11175                cur: &'a [u8],
11176                before_tag: &'a [u8],
11177                ctx: ::buffa::DecodeContext<'_>,
11178            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
11179                let _ = ctx;
11180                #[allow(unused_variables)]
11181                let view = self;
11182                let mut cur = cur;
11183                match tag.field_number() {
11184                    1u32 => {
11185                        ::buffa::encoding::check_wire_type(
11186                            tag,
11187                            ::buffa::encoding::WireType::LengthDelimited,
11188                        )?;
11189                        view.token = ::buffa::types::borrow_str(&mut cur)?;
11190                    }
11191                    _ => {
11192                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
11193                        let span_len = before_tag.len() - cur.len();
11194                        view.__buffa_unknown_fields
11195                            .push_record(before_tag, span_len, ctx)?;
11196                    }
11197                }
11198                ::core::result::Result::Ok(cur)
11199            }
11200            fn to_owned_message(
11201                &self,
11202            ) -> ::core::result::Result<
11203                super::super::ResolveLayerShareTokenRequest,
11204                ::buffa::DecodeError,
11205            > {
11206                self.to_owned_from_source(None)
11207            }
11208            #[allow(clippy::useless_conversion, clippy::needless_update)]
11209            fn to_owned_from_source(
11210                &self,
11211                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
11212            ) -> ::core::result::Result<
11213                super::super::ResolveLayerShareTokenRequest,
11214                ::buffa::DecodeError,
11215            > {
11216                #[allow(unused_imports)]
11217                use ::buffa::alloc::string::ToString as _;
11218                let _ = __buffa_src;
11219                ::core::result::Result::Ok(super::super::ResolveLayerShareTokenRequest {
11220                    token: self.token.to_string(),
11221                    __buffa_unknown_fields: self
11222                        .__buffa_unknown_fields
11223                        .to_owned()?
11224                        .into(),
11225                    ..::core::default::Default::default()
11226                })
11227            }
11228        }
11229        impl<'a> ::buffa::ViewEncode<'a> for ResolveLayerShareTokenRequestView<'a> {
11230            #[allow(clippy::needless_borrow, clippy::let_and_return)]
11231            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
11232                #[allow(unused_imports)]
11233                use ::buffa::Enumeration as _;
11234                let mut size = 0u32;
11235                if !self.token.is_empty() {
11236                    size
11237                        += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
11238                }
11239                size += self.__buffa_unknown_fields.encoded_len() as u32;
11240                size
11241            }
11242            #[allow(clippy::needless_borrow)]
11243            fn write_to(
11244                &self,
11245                _cache: &mut ::buffa::SizeCache,
11246                buf: &mut impl ::buffa::bytes::BufMut,
11247            ) {
11248                #[allow(unused_imports)]
11249                use ::buffa::Enumeration as _;
11250                if !self.token.is_empty() {
11251                    ::buffa::types::put_string_field(1u32, &self.token, buf);
11252                }
11253                self.__buffa_unknown_fields.write_to(buf);
11254            }
11255        }
11256        /// Serializes this view as protobuf JSON.
11257        ///
11258        /// Implicit-presence fields with default values are omitted, `required`
11259        /// fields are always emitted, explicit-presence (`optional`) fields are
11260        /// emitted only when set, bytes fields are base64-encoded, and enum
11261        /// values are their proto name strings.
11262        ///
11263        /// This impl uses `serialize_map(None)` because the number of emitted
11264        /// fields depends on default-omission rules; serializers that require
11265        /// known map lengths (e.g. `bincode`) will return a runtime error.
11266        /// Use the owned message type for those formats.
11267        impl<'__a> ::serde::Serialize for ResolveLayerShareTokenRequestView<'__a> {
11268            fn serialize<__S: ::serde::Serializer>(
11269                &self,
11270                __s: __S,
11271            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11272                use ::serde::ser::SerializeMap as _;
11273                let mut __map = __s.serialize_map(::core::option::Option::None)?;
11274                if !::buffa::json_helpers::skip_if::is_empty_str(self.token) {
11275                    __map.serialize_entry("token", self.token)?;
11276                }
11277                __map.end()
11278            }
11279        }
11280        impl<'a> ::buffa::MessageName for ResolveLayerShareTokenRequestView<'a> {
11281            const PACKAGE: &'static str = "polychart.v1";
11282            const NAME: &'static str = "ResolveLayerShareTokenRequest";
11283            const FULL_NAME: &'static str = "polychart.v1.ResolveLayerShareTokenRequest";
11284            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenRequest";
11285        }
11286        ::buffa::impl_default_view_instance!(ResolveLayerShareTokenRequestView);
11287        ::buffa::impl_view_reborrow!(ResolveLayerShareTokenRequestView);
11288        /** Self-contained, `'static` owned view of a `ResolveLayerShareTokenRequest` message.
11289
11290 Wraps [`::buffa::OwnedView`]`<`[`ResolveLayerShareTokenRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
11291
11292 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ResolveLayerShareTokenRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
11293        #[derive(Clone, Debug)]
11294        pub struct ResolveLayerShareTokenRequestOwnedView(
11295            ::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>>,
11296        );
11297        impl ResolveLayerShareTokenRequestOwnedView {
11298            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
11299            ///
11300            /// The view borrows directly from the buffer's data; the buffer is
11301            /// retained inside the returned handle.
11302            ///
11303            /// # Errors
11304            ///
11305            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
11306            /// protobuf data.
11307            pub fn decode(
11308                bytes: ::buffa::bytes::Bytes,
11309            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11310                ::core::result::Result::Ok(
11311                    ResolveLayerShareTokenRequestOwnedView(
11312                        ::buffa::OwnedView::decode(bytes)?,
11313                    ),
11314                )
11315            }
11316            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
11317            /// max message size).
11318            ///
11319            /// # Errors
11320            ///
11321            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
11322            /// exceeds the configured limits.
11323            pub fn decode_with_options(
11324                bytes: ::buffa::bytes::Bytes,
11325                opts: &::buffa::DecodeOptions,
11326            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11327                ::core::result::Result::Ok(
11328                    ResolveLayerShareTokenRequestOwnedView(
11329                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
11330                    ),
11331                )
11332            }
11333            /// Build from an owned message via an encode → decode round-trip.
11334            ///
11335            /// # Errors
11336            ///
11337            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
11338            /// somehow invalid (should not happen for well-formed messages).
11339            pub fn from_owned(
11340                msg: &super::super::ResolveLayerShareTokenRequest,
11341            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11342                ::core::result::Result::Ok(
11343                    ResolveLayerShareTokenRequestOwnedView(
11344                        ::buffa::OwnedView::from_owned(msg)?,
11345                    ),
11346                )
11347            }
11348            /// Borrow the full [`ResolveLayerShareTokenRequestView`] with its lifetime tied to `&self`.
11349            #[must_use]
11350            pub fn view(&self) -> &ResolveLayerShareTokenRequestView<'_> {
11351                self.0.reborrow()
11352            }
11353            /// Convert to the owned message type.
11354            ///
11355            /// # Errors
11356            ///
11357            /// Returns an error if re-materializing preserved unknown fields
11358            /// fails (e.g. the unknown-field limit is exceeded).
11359            pub fn to_owned_message(
11360                &self,
11361            ) -> ::core::result::Result<
11362                super::super::ResolveLayerShareTokenRequest,
11363                ::buffa::DecodeError,
11364            > {
11365                self.0.to_owned_message()
11366            }
11367            /// The underlying bytes buffer.
11368            #[must_use]
11369            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
11370                self.0.bytes()
11371            }
11372            /// Consume the handle, returning the underlying bytes buffer.
11373            #[must_use]
11374            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
11375                self.0.into_bytes()
11376            }
11377            /// Opaque share token from a layer share link.
11378            ///
11379            /// Field 1: `token`
11380            #[must_use]
11381            pub fn token(&self) -> &'_ str {
11382                self.0.reborrow().token
11383            }
11384        }
11385        impl ::core::convert::From<
11386            ::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>>,
11387        > for ResolveLayerShareTokenRequestOwnedView {
11388            fn from(
11389                inner: ::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>>,
11390            ) -> Self {
11391                ResolveLayerShareTokenRequestOwnedView(inner)
11392            }
11393        }
11394        impl ::core::convert::From<ResolveLayerShareTokenRequestOwnedView>
11395        for ::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>> {
11396            fn from(wrapper: ResolveLayerShareTokenRequestOwnedView) -> Self {
11397                wrapper.0
11398            }
11399        }
11400        impl ::core::convert::AsRef<
11401            ::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>>,
11402        > for ResolveLayerShareTokenRequestOwnedView {
11403            fn as_ref(
11404                &self,
11405            ) -> &::buffa::OwnedView<ResolveLayerShareTokenRequestView<'static>> {
11406                &self.0
11407            }
11408        }
11409        impl ::buffa::HasMessageView for super::super::ResolveLayerShareTokenRequest {
11410            type View<'a> = ResolveLayerShareTokenRequestView<'a>;
11411            type ViewHandle = ResolveLayerShareTokenRequestOwnedView;
11412        }
11413        impl ::serde::Serialize for ResolveLayerShareTokenRequestOwnedView {
11414            fn serialize<__S: ::serde::Serializer>(
11415                &self,
11416                __s: __S,
11417            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11418                ::serde::Serialize::serialize(&self.0, __s)
11419            }
11420        }
11421        /// ResolveLayerShareTokenResponse returns a view-only layer snapshot for a valid share token.
11422        #[derive(Clone, Debug, Default)]
11423        pub struct ResolveLayerShareTokenResponseView<'a> {
11424            /// Shared layer metadata.
11425            ///
11426            /// Field 1: `layer`
11427            pub layer: ::buffa::MessageFieldView<
11428                super::super::__buffa::view::LayerView<'a>,
11429            >,
11430            /// Drawings currently in the shared layer.
11431            ///
11432            /// Field 2: `drawings`
11433            pub drawings: ::buffa::RepeatedView<
11434                'a,
11435                super::super::__buffa::view::DrawingView<'a>,
11436            >,
11437            /// Optional short-lived realtime subscribe token scoped to this layer.
11438            ///
11439            /// Field 3: `centrifugo_sub_token`
11440            pub centrifugo_sub_token: &'a str,
11441            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
11442        }
11443        impl<'a> ::buffa::MessageView<'a> for ResolveLayerShareTokenResponseView<'a> {
11444            type Owned = super::super::ResolveLayerShareTokenResponse;
11445            fn decode_view(
11446                buf: &'a [u8],
11447            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11448                let __limit = ::core::cell::Cell::new(
11449                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
11450                );
11451                <Self as ::buffa::MessageView>::decode_view_ctx(
11452                    buf,
11453                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
11454                )
11455            }
11456            fn decode_view_with_ctx(
11457                buf: &'a [u8],
11458                ctx: ::buffa::DecodeContext<'_>,
11459            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11460                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
11461            }
11462            fn merge_view_field(
11463                &mut self,
11464                tag: ::buffa::encoding::Tag,
11465                cur: &'a [u8],
11466                before_tag: &'a [u8],
11467                ctx: ::buffa::DecodeContext<'_>,
11468            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
11469                let _ = ctx;
11470                #[allow(unused_variables)]
11471                let view = self;
11472                let mut cur = cur;
11473                match tag.field_number() {
11474                    1u32 => {
11475                        ::buffa::encoding::check_wire_type(
11476                            tag,
11477                            ::buffa::encoding::WireType::LengthDelimited,
11478                        )?;
11479                        let __sub_ctx = ctx.descend()?;
11480                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
11481                        match view.layer.as_mut() {
11482                            Some(existing) => {
11483                                ::buffa::MessageView::merge_into_view(
11484                                    existing,
11485                                    sub,
11486                                    __sub_ctx,
11487                                )?
11488                            }
11489                            None => {
11490                                view.layer = ::buffa::MessageFieldView::set(
11491                                    <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
11492                                        sub,
11493                                        __sub_ctx,
11494                                    )?,
11495                                );
11496                            }
11497                        }
11498                    }
11499                    3u32 => {
11500                        ::buffa::encoding::check_wire_type(
11501                            tag,
11502                            ::buffa::encoding::WireType::LengthDelimited,
11503                        )?;
11504                        view.centrifugo_sub_token = ::buffa::types::borrow_str(
11505                            &mut cur,
11506                        )?;
11507                    }
11508                    2u32 => {
11509                        ::buffa::encoding::check_wire_type(
11510                            tag,
11511                            ::buffa::encoding::WireType::LengthDelimited,
11512                        )?;
11513                        let __sub_ctx = ctx.descend()?;
11514                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
11515                        view.drawings
11516                            .push(
11517                                <super::super::__buffa::view::DrawingView as ::buffa::MessageView>::decode_view_ctx(
11518                                    sub,
11519                                    __sub_ctx,
11520                                )?,
11521                            );
11522                    }
11523                    _ => {
11524                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
11525                        let span_len = before_tag.len() - cur.len();
11526                        view.__buffa_unknown_fields
11527                            .push_record(before_tag, span_len, ctx)?;
11528                    }
11529                }
11530                ::core::result::Result::Ok(cur)
11531            }
11532            fn to_owned_message(
11533                &self,
11534            ) -> ::core::result::Result<
11535                super::super::ResolveLayerShareTokenResponse,
11536                ::buffa::DecodeError,
11537            > {
11538                self.to_owned_from_source(None)
11539            }
11540            #[allow(clippy::useless_conversion, clippy::needless_update)]
11541            fn to_owned_from_source(
11542                &self,
11543                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
11544            ) -> ::core::result::Result<
11545                super::super::ResolveLayerShareTokenResponse,
11546                ::buffa::DecodeError,
11547            > {
11548                #[allow(unused_imports)]
11549                use ::buffa::alloc::string::ToString as _;
11550                let _ = __buffa_src;
11551                ::core::result::Result::Ok(super::super::ResolveLayerShareTokenResponse {
11552                    layer: match self.layer.as_option() {
11553                        Some(v) => {
11554                            ::buffa::MessageField::<
11555                                super::super::Layer,
11556                            >::some(v.to_owned_from_source(__buffa_src)?)
11557                        }
11558                        None => ::buffa::MessageField::none(),
11559                    },
11560                    drawings: self
11561                        .drawings
11562                        .iter()
11563                        .map(|v| v.to_owned_from_source(__buffa_src))
11564                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
11565                    centrifugo_sub_token: self.centrifugo_sub_token.to_string(),
11566                    __buffa_unknown_fields: self
11567                        .__buffa_unknown_fields
11568                        .to_owned()?
11569                        .into(),
11570                    ..::core::default::Default::default()
11571                })
11572            }
11573        }
11574        impl<'a> ::buffa::ViewEncode<'a> for ResolveLayerShareTokenResponseView<'a> {
11575            #[allow(clippy::needless_borrow, clippy::let_and_return)]
11576            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
11577                #[allow(unused_imports)]
11578                use ::buffa::Enumeration as _;
11579                let mut size = 0u32;
11580                if self.layer.is_set() {
11581                    let __slot = __cache.reserve();
11582                    let inner_size = self.layer.compute_size(__cache);
11583                    __cache.set(__slot, inner_size);
11584                    size
11585                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
11586                            + inner_size;
11587                }
11588                for v in &self.drawings {
11589                    let __slot = __cache.reserve();
11590                    let inner_size = v.compute_size(__cache);
11591                    __cache.set(__slot, inner_size);
11592                    size
11593                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
11594                            + inner_size;
11595                }
11596                if !self.centrifugo_sub_token.is_empty() {
11597                    size
11598                        += 1u32
11599                            + ::buffa::types::string_encoded_len(
11600                                &self.centrifugo_sub_token,
11601                            ) as u32;
11602                }
11603                size += self.__buffa_unknown_fields.encoded_len() as u32;
11604                size
11605            }
11606            #[allow(clippy::needless_borrow)]
11607            fn write_to(
11608                &self,
11609                __cache: &mut ::buffa::SizeCache,
11610                buf: &mut impl ::buffa::bytes::BufMut,
11611            ) {
11612                #[allow(unused_imports)]
11613                use ::buffa::Enumeration as _;
11614                if self.layer.is_set() {
11615                    ::buffa::types::put_len_delimited_header(
11616                        1u32,
11617                        __cache.consume_next(),
11618                        buf,
11619                    );
11620                    self.layer.write_to(__cache, buf);
11621                }
11622                for v in &self.drawings {
11623                    ::buffa::types::put_len_delimited_header(
11624                        2u32,
11625                        __cache.consume_next(),
11626                        buf,
11627                    );
11628                    v.write_to(__cache, buf);
11629                }
11630                if !self.centrifugo_sub_token.is_empty() {
11631                    ::buffa::types::put_string_field(
11632                        3u32,
11633                        &self.centrifugo_sub_token,
11634                        buf,
11635                    );
11636                }
11637                self.__buffa_unknown_fields.write_to(buf);
11638            }
11639        }
11640        /// Serializes this view as protobuf JSON.
11641        ///
11642        /// Implicit-presence fields with default values are omitted, `required`
11643        /// fields are always emitted, explicit-presence (`optional`) fields are
11644        /// emitted only when set, bytes fields are base64-encoded, and enum
11645        /// values are their proto name strings.
11646        ///
11647        /// This impl uses `serialize_map(None)` because the number of emitted
11648        /// fields depends on default-omission rules; serializers that require
11649        /// known map lengths (e.g. `bincode`) will return a runtime error.
11650        /// Use the owned message type for those formats.
11651        impl<'__a> ::serde::Serialize for ResolveLayerShareTokenResponseView<'__a> {
11652            fn serialize<__S: ::serde::Serializer>(
11653                &self,
11654                __s: __S,
11655            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11656                use ::serde::ser::SerializeMap as _;
11657                let mut __map = __s.serialize_map(::core::option::Option::None)?;
11658                {
11659                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
11660                        __map.serialize_entry("layer", __v)?;
11661                    }
11662                }
11663                if !self.drawings.is_empty() {
11664                    __map.serialize_entry("drawings", &*self.drawings)?;
11665                }
11666                if !::buffa::json_helpers::skip_if::is_empty_str(
11667                    self.centrifugo_sub_token,
11668                ) {
11669                    __map
11670                        .serialize_entry(
11671                            "centrifugoSubToken",
11672                            self.centrifugo_sub_token,
11673                        )?;
11674                }
11675                __map.end()
11676            }
11677        }
11678        impl<'a> ::buffa::MessageName for ResolveLayerShareTokenResponseView<'a> {
11679            const PACKAGE: &'static str = "polychart.v1";
11680            const NAME: &'static str = "ResolveLayerShareTokenResponse";
11681            const FULL_NAME: &'static str = "polychart.v1.ResolveLayerShareTokenResponse";
11682            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ResolveLayerShareTokenResponse";
11683        }
11684        ::buffa::impl_default_view_instance!(ResolveLayerShareTokenResponseView);
11685        ::buffa::impl_view_reborrow!(ResolveLayerShareTokenResponseView);
11686        /** Self-contained, `'static` owned view of a `ResolveLayerShareTokenResponse` message.
11687
11688 Wraps [`::buffa::OwnedView`]`<`[`ResolveLayerShareTokenResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
11689
11690 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ResolveLayerShareTokenResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
11691        #[derive(Clone, Debug)]
11692        pub struct ResolveLayerShareTokenResponseOwnedView(
11693            ::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>>,
11694        );
11695        impl ResolveLayerShareTokenResponseOwnedView {
11696            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
11697            ///
11698            /// The view borrows directly from the buffer's data; the buffer is
11699            /// retained inside the returned handle.
11700            ///
11701            /// # Errors
11702            ///
11703            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
11704            /// protobuf data.
11705            pub fn decode(
11706                bytes: ::buffa::bytes::Bytes,
11707            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11708                ::core::result::Result::Ok(
11709                    ResolveLayerShareTokenResponseOwnedView(
11710                        ::buffa::OwnedView::decode(bytes)?,
11711                    ),
11712                )
11713            }
11714            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
11715            /// max message size).
11716            ///
11717            /// # Errors
11718            ///
11719            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
11720            /// exceeds the configured limits.
11721            pub fn decode_with_options(
11722                bytes: ::buffa::bytes::Bytes,
11723                opts: &::buffa::DecodeOptions,
11724            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11725                ::core::result::Result::Ok(
11726                    ResolveLayerShareTokenResponseOwnedView(
11727                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
11728                    ),
11729                )
11730            }
11731            /// Build from an owned message via an encode → decode round-trip.
11732            ///
11733            /// # Errors
11734            ///
11735            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
11736            /// somehow invalid (should not happen for well-formed messages).
11737            pub fn from_owned(
11738                msg: &super::super::ResolveLayerShareTokenResponse,
11739            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11740                ::core::result::Result::Ok(
11741                    ResolveLayerShareTokenResponseOwnedView(
11742                        ::buffa::OwnedView::from_owned(msg)?,
11743                    ),
11744                )
11745            }
11746            /// Borrow the full [`ResolveLayerShareTokenResponseView`] with its lifetime tied to `&self`.
11747            #[must_use]
11748            pub fn view(&self) -> &ResolveLayerShareTokenResponseView<'_> {
11749                self.0.reborrow()
11750            }
11751            /// Convert to the owned message type.
11752            ///
11753            /// # Errors
11754            ///
11755            /// Returns an error if re-materializing preserved unknown fields
11756            /// fails (e.g. the unknown-field limit is exceeded).
11757            pub fn to_owned_message(
11758                &self,
11759            ) -> ::core::result::Result<
11760                super::super::ResolveLayerShareTokenResponse,
11761                ::buffa::DecodeError,
11762            > {
11763                self.0.to_owned_message()
11764            }
11765            /// The underlying bytes buffer.
11766            #[must_use]
11767            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
11768                self.0.bytes()
11769            }
11770            /// Consume the handle, returning the underlying bytes buffer.
11771            #[must_use]
11772            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
11773                self.0.into_bytes()
11774            }
11775            /// Shared layer metadata.
11776            ///
11777            /// Field 1: `layer`
11778            #[must_use]
11779            pub fn layer(
11780                &self,
11781            ) -> &::buffa::MessageFieldView<super::super::__buffa::view::LayerView<'_>> {
11782                &self.0.reborrow().layer
11783            }
11784            /// Drawings currently in the shared layer.
11785            ///
11786            /// Field 2: `drawings`
11787            #[must_use]
11788            pub fn drawings(
11789                &self,
11790            ) -> &::buffa::RepeatedView<
11791                '_,
11792                super::super::__buffa::view::DrawingView<'_>,
11793            > {
11794                &self.0.reborrow().drawings
11795            }
11796            /// Optional short-lived realtime subscribe token scoped to this layer.
11797            ///
11798            /// Field 3: `centrifugo_sub_token`
11799            #[must_use]
11800            pub fn centrifugo_sub_token(&self) -> &'_ str {
11801                self.0.reborrow().centrifugo_sub_token
11802            }
11803        }
11804        impl ::core::convert::From<
11805            ::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>>,
11806        > for ResolveLayerShareTokenResponseOwnedView {
11807            fn from(
11808                inner: ::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>>,
11809            ) -> Self {
11810                ResolveLayerShareTokenResponseOwnedView(inner)
11811            }
11812        }
11813        impl ::core::convert::From<ResolveLayerShareTokenResponseOwnedView>
11814        for ::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>> {
11815            fn from(wrapper: ResolveLayerShareTokenResponseOwnedView) -> Self {
11816                wrapper.0
11817            }
11818        }
11819        impl ::core::convert::AsRef<
11820            ::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>>,
11821        > for ResolveLayerShareTokenResponseOwnedView {
11822            fn as_ref(
11823                &self,
11824            ) -> &::buffa::OwnedView<ResolveLayerShareTokenResponseView<'static>> {
11825                &self.0
11826            }
11827        }
11828        impl ::buffa::HasMessageView for super::super::ResolveLayerShareTokenResponse {
11829            type View<'a> = ResolveLayerShareTokenResponseView<'a>;
11830            type ViewHandle = ResolveLayerShareTokenResponseOwnedView;
11831        }
11832        impl ::serde::Serialize for ResolveLayerShareTokenResponseOwnedView {
11833            fn serialize<__S: ::serde::Serializer>(
11834                &self,
11835                __s: __S,
11836            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11837                ::serde::Serialize::serialize(&self.0, __s)
11838            }
11839        }
11840        /// Authenticated viewers request realtime subscribe tokens for layer channels.
11841        #[derive(Clone, Debug, Default)]
11842        pub struct GetLayerSubscribeTokensRequestView<'a> {
11843            /// Layers for which the caller needs subscribe tokens.
11844            ///
11845            /// Field 1: `layers`
11846            pub layers: ::buffa::RepeatedView<
11847                'a,
11848                super::super::__buffa::view::LayerRefView<'a>,
11849            >,
11850            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
11851        }
11852        impl<'a> ::buffa::MessageView<'a> for GetLayerSubscribeTokensRequestView<'a> {
11853            type Owned = super::super::GetLayerSubscribeTokensRequest;
11854            fn decode_view(
11855                buf: &'a [u8],
11856            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11857                let __limit = ::core::cell::Cell::new(
11858                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
11859                );
11860                <Self as ::buffa::MessageView>::decode_view_ctx(
11861                    buf,
11862                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
11863                )
11864            }
11865            fn decode_view_with_ctx(
11866                buf: &'a [u8],
11867                ctx: ::buffa::DecodeContext<'_>,
11868            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
11869                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
11870            }
11871            fn merge_view_field(
11872                &mut self,
11873                tag: ::buffa::encoding::Tag,
11874                cur: &'a [u8],
11875                before_tag: &'a [u8],
11876                ctx: ::buffa::DecodeContext<'_>,
11877            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
11878                let _ = ctx;
11879                #[allow(unused_variables)]
11880                let view = self;
11881                let mut cur = cur;
11882                match tag.field_number() {
11883                    1u32 => {
11884                        ::buffa::encoding::check_wire_type(
11885                            tag,
11886                            ::buffa::encoding::WireType::LengthDelimited,
11887                        )?;
11888                        let __sub_ctx = ctx.descend()?;
11889                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
11890                        view.layers
11891                            .push(
11892                                <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
11893                                    sub,
11894                                    __sub_ctx,
11895                                )?,
11896                            );
11897                    }
11898                    _ => {
11899                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
11900                        let span_len = before_tag.len() - cur.len();
11901                        view.__buffa_unknown_fields
11902                            .push_record(before_tag, span_len, ctx)?;
11903                    }
11904                }
11905                ::core::result::Result::Ok(cur)
11906            }
11907            fn to_owned_message(
11908                &self,
11909            ) -> ::core::result::Result<
11910                super::super::GetLayerSubscribeTokensRequest,
11911                ::buffa::DecodeError,
11912            > {
11913                self.to_owned_from_source(None)
11914            }
11915            #[allow(clippy::useless_conversion, clippy::needless_update)]
11916            fn to_owned_from_source(
11917                &self,
11918                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
11919            ) -> ::core::result::Result<
11920                super::super::GetLayerSubscribeTokensRequest,
11921                ::buffa::DecodeError,
11922            > {
11923                #[allow(unused_imports)]
11924                use ::buffa::alloc::string::ToString as _;
11925                let _ = __buffa_src;
11926                ::core::result::Result::Ok(super::super::GetLayerSubscribeTokensRequest {
11927                    layers: self
11928                        .layers
11929                        .iter()
11930                        .map(|v| v.to_owned_from_source(__buffa_src))
11931                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
11932                    __buffa_unknown_fields: self
11933                        .__buffa_unknown_fields
11934                        .to_owned()?
11935                        .into(),
11936                    ..::core::default::Default::default()
11937                })
11938            }
11939        }
11940        impl<'a> ::buffa::ViewEncode<'a> for GetLayerSubscribeTokensRequestView<'a> {
11941            #[allow(clippy::needless_borrow, clippy::let_and_return)]
11942            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
11943                #[allow(unused_imports)]
11944                use ::buffa::Enumeration as _;
11945                let mut size = 0u32;
11946                for v in &self.layers {
11947                    let __slot = __cache.reserve();
11948                    let inner_size = v.compute_size(__cache);
11949                    __cache.set(__slot, inner_size);
11950                    size
11951                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
11952                            + inner_size;
11953                }
11954                size += self.__buffa_unknown_fields.encoded_len() as u32;
11955                size
11956            }
11957            #[allow(clippy::needless_borrow)]
11958            fn write_to(
11959                &self,
11960                __cache: &mut ::buffa::SizeCache,
11961                buf: &mut impl ::buffa::bytes::BufMut,
11962            ) {
11963                #[allow(unused_imports)]
11964                use ::buffa::Enumeration as _;
11965                for v in &self.layers {
11966                    ::buffa::types::put_len_delimited_header(
11967                        1u32,
11968                        __cache.consume_next(),
11969                        buf,
11970                    );
11971                    v.write_to(__cache, buf);
11972                }
11973                self.__buffa_unknown_fields.write_to(buf);
11974            }
11975        }
11976        /// Serializes this view as protobuf JSON.
11977        ///
11978        /// Implicit-presence fields with default values are omitted, `required`
11979        /// fields are always emitted, explicit-presence (`optional`) fields are
11980        /// emitted only when set, bytes fields are base64-encoded, and enum
11981        /// values are their proto name strings.
11982        ///
11983        /// This impl uses `serialize_map(None)` because the number of emitted
11984        /// fields depends on default-omission rules; serializers that require
11985        /// known map lengths (e.g. `bincode`) will return a runtime error.
11986        /// Use the owned message type for those formats.
11987        impl<'__a> ::serde::Serialize for GetLayerSubscribeTokensRequestView<'__a> {
11988            fn serialize<__S: ::serde::Serializer>(
11989                &self,
11990                __s: __S,
11991            ) -> ::core::result::Result<__S::Ok, __S::Error> {
11992                use ::serde::ser::SerializeMap as _;
11993                let mut __map = __s.serialize_map(::core::option::Option::None)?;
11994                if !self.layers.is_empty() {
11995                    __map.serialize_entry("layers", &*self.layers)?;
11996                }
11997                __map.end()
11998            }
11999        }
12000        impl<'a> ::buffa::MessageName for GetLayerSubscribeTokensRequestView<'a> {
12001            const PACKAGE: &'static str = "polychart.v1";
12002            const NAME: &'static str = "GetLayerSubscribeTokensRequest";
12003            const FULL_NAME: &'static str = "polychart.v1.GetLayerSubscribeTokensRequest";
12004            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensRequest";
12005        }
12006        ::buffa::impl_default_view_instance!(GetLayerSubscribeTokensRequestView);
12007        ::buffa::impl_view_reborrow!(GetLayerSubscribeTokensRequestView);
12008        /** Self-contained, `'static` owned view of a `GetLayerSubscribeTokensRequest` message.
12009
12010 Wraps [`::buffa::OwnedView`]`<`[`GetLayerSubscribeTokensRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
12011
12012 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetLayerSubscribeTokensRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
12013        #[derive(Clone, Debug)]
12014        pub struct GetLayerSubscribeTokensRequestOwnedView(
12015            ::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>>,
12016        );
12017        impl GetLayerSubscribeTokensRequestOwnedView {
12018            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
12019            ///
12020            /// The view borrows directly from the buffer's data; the buffer is
12021            /// retained inside the returned handle.
12022            ///
12023            /// # Errors
12024            ///
12025            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
12026            /// protobuf data.
12027            pub fn decode(
12028                bytes: ::buffa::bytes::Bytes,
12029            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12030                ::core::result::Result::Ok(
12031                    GetLayerSubscribeTokensRequestOwnedView(
12032                        ::buffa::OwnedView::decode(bytes)?,
12033                    ),
12034                )
12035            }
12036            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
12037            /// max message size).
12038            ///
12039            /// # Errors
12040            ///
12041            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
12042            /// exceeds the configured limits.
12043            pub fn decode_with_options(
12044                bytes: ::buffa::bytes::Bytes,
12045                opts: &::buffa::DecodeOptions,
12046            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12047                ::core::result::Result::Ok(
12048                    GetLayerSubscribeTokensRequestOwnedView(
12049                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
12050                    ),
12051                )
12052            }
12053            /// Build from an owned message via an encode → decode round-trip.
12054            ///
12055            /// # Errors
12056            ///
12057            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
12058            /// somehow invalid (should not happen for well-formed messages).
12059            pub fn from_owned(
12060                msg: &super::super::GetLayerSubscribeTokensRequest,
12061            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12062                ::core::result::Result::Ok(
12063                    GetLayerSubscribeTokensRequestOwnedView(
12064                        ::buffa::OwnedView::from_owned(msg)?,
12065                    ),
12066                )
12067            }
12068            /// Borrow the full [`GetLayerSubscribeTokensRequestView`] with its lifetime tied to `&self`.
12069            #[must_use]
12070            pub fn view(&self) -> &GetLayerSubscribeTokensRequestView<'_> {
12071                self.0.reborrow()
12072            }
12073            /// Convert to the owned message type.
12074            ///
12075            /// # Errors
12076            ///
12077            /// Returns an error if re-materializing preserved unknown fields
12078            /// fails (e.g. the unknown-field limit is exceeded).
12079            pub fn to_owned_message(
12080                &self,
12081            ) -> ::core::result::Result<
12082                super::super::GetLayerSubscribeTokensRequest,
12083                ::buffa::DecodeError,
12084            > {
12085                self.0.to_owned_message()
12086            }
12087            /// The underlying bytes buffer.
12088            #[must_use]
12089            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
12090                self.0.bytes()
12091            }
12092            /// Consume the handle, returning the underlying bytes buffer.
12093            #[must_use]
12094            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
12095                self.0.into_bytes()
12096            }
12097            /// Layers for which the caller needs subscribe tokens.
12098            ///
12099            /// Field 1: `layers`
12100            #[must_use]
12101            pub fn layers(
12102                &self,
12103            ) -> &::buffa::RepeatedView<
12104                '_,
12105                super::super::__buffa::view::LayerRefView<'_>,
12106            > {
12107                &self.0.reborrow().layers
12108            }
12109        }
12110        impl ::core::convert::From<
12111            ::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>>,
12112        > for GetLayerSubscribeTokensRequestOwnedView {
12113            fn from(
12114                inner: ::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>>,
12115            ) -> Self {
12116                GetLayerSubscribeTokensRequestOwnedView(inner)
12117            }
12118        }
12119        impl ::core::convert::From<GetLayerSubscribeTokensRequestOwnedView>
12120        for ::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>> {
12121            fn from(wrapper: GetLayerSubscribeTokensRequestOwnedView) -> Self {
12122                wrapper.0
12123            }
12124        }
12125        impl ::core::convert::AsRef<
12126            ::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>>,
12127        > for GetLayerSubscribeTokensRequestOwnedView {
12128            fn as_ref(
12129                &self,
12130            ) -> &::buffa::OwnedView<GetLayerSubscribeTokensRequestView<'static>> {
12131                &self.0
12132            }
12133        }
12134        impl ::buffa::HasMessageView for super::super::GetLayerSubscribeTokensRequest {
12135            type View<'a> = GetLayerSubscribeTokensRequestView<'a>;
12136            type ViewHandle = GetLayerSubscribeTokensRequestOwnedView;
12137        }
12138        impl ::serde::Serialize for GetLayerSubscribeTokensRequestOwnedView {
12139            fn serialize<__S: ::serde::Serializer>(
12140                &self,
12141                __s: __S,
12142            ) -> ::core::result::Result<__S::Ok, __S::Error> {
12143                ::serde::Serialize::serialize(&self.0, __s)
12144            }
12145        }
12146        /// LayerSubscribeToken contains a subscribe token for one layer.
12147        #[derive(Clone, Debug, Default)]
12148        pub struct LayerSubscribeTokenView<'a> {
12149            /// Layer the token authorizes.
12150            ///
12151            /// Field 1: `layer`
12152            pub layer: ::buffa::MessageFieldView<
12153                super::super::__buffa::view::LayerRefView<'a>,
12154            >,
12155            /// Short-lived realtime subscribe token for the layer.
12156            ///
12157            /// Field 2: `centrifugo_sub_token`
12158            pub centrifugo_sub_token: &'a str,
12159            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
12160        }
12161        impl<'a> ::buffa::MessageView<'a> for LayerSubscribeTokenView<'a> {
12162            type Owned = super::super::LayerSubscribeToken;
12163            fn decode_view(
12164                buf: &'a [u8],
12165            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12166                let __limit = ::core::cell::Cell::new(
12167                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
12168                );
12169                <Self as ::buffa::MessageView>::decode_view_ctx(
12170                    buf,
12171                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
12172                )
12173            }
12174            fn decode_view_with_ctx(
12175                buf: &'a [u8],
12176                ctx: ::buffa::DecodeContext<'_>,
12177            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12178                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
12179            }
12180            fn merge_view_field(
12181                &mut self,
12182                tag: ::buffa::encoding::Tag,
12183                cur: &'a [u8],
12184                before_tag: &'a [u8],
12185                ctx: ::buffa::DecodeContext<'_>,
12186            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
12187                let _ = ctx;
12188                #[allow(unused_variables)]
12189                let view = self;
12190                let mut cur = cur;
12191                match tag.field_number() {
12192                    1u32 => {
12193                        ::buffa::encoding::check_wire_type(
12194                            tag,
12195                            ::buffa::encoding::WireType::LengthDelimited,
12196                        )?;
12197                        let __sub_ctx = ctx.descend()?;
12198                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
12199                        match view.layer.as_mut() {
12200                            Some(existing) => {
12201                                ::buffa::MessageView::merge_into_view(
12202                                    existing,
12203                                    sub,
12204                                    __sub_ctx,
12205                                )?
12206                            }
12207                            None => {
12208                                view.layer = ::buffa::MessageFieldView::set(
12209                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
12210                                        sub,
12211                                        __sub_ctx,
12212                                    )?,
12213                                );
12214                            }
12215                        }
12216                    }
12217                    2u32 => {
12218                        ::buffa::encoding::check_wire_type(
12219                            tag,
12220                            ::buffa::encoding::WireType::LengthDelimited,
12221                        )?;
12222                        view.centrifugo_sub_token = ::buffa::types::borrow_str(
12223                            &mut cur,
12224                        )?;
12225                    }
12226                    _ => {
12227                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
12228                        let span_len = before_tag.len() - cur.len();
12229                        view.__buffa_unknown_fields
12230                            .push_record(before_tag, span_len, ctx)?;
12231                    }
12232                }
12233                ::core::result::Result::Ok(cur)
12234            }
12235            fn to_owned_message(
12236                &self,
12237            ) -> ::core::result::Result<
12238                super::super::LayerSubscribeToken,
12239                ::buffa::DecodeError,
12240            > {
12241                self.to_owned_from_source(None)
12242            }
12243            #[allow(clippy::useless_conversion, clippy::needless_update)]
12244            fn to_owned_from_source(
12245                &self,
12246                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
12247            ) -> ::core::result::Result<
12248                super::super::LayerSubscribeToken,
12249                ::buffa::DecodeError,
12250            > {
12251                #[allow(unused_imports)]
12252                use ::buffa::alloc::string::ToString as _;
12253                let _ = __buffa_src;
12254                ::core::result::Result::Ok(super::super::LayerSubscribeToken {
12255                    layer: match self.layer.as_option() {
12256                        Some(v) => {
12257                            ::buffa::MessageField::<
12258                                super::super::LayerRef,
12259                            >::some(v.to_owned_from_source(__buffa_src)?)
12260                        }
12261                        None => ::buffa::MessageField::none(),
12262                    },
12263                    centrifugo_sub_token: self.centrifugo_sub_token.to_string(),
12264                    __buffa_unknown_fields: self
12265                        .__buffa_unknown_fields
12266                        .to_owned()?
12267                        .into(),
12268                    ..::core::default::Default::default()
12269                })
12270            }
12271        }
12272        impl<'a> ::buffa::ViewEncode<'a> for LayerSubscribeTokenView<'a> {
12273            #[allow(clippy::needless_borrow, clippy::let_and_return)]
12274            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
12275                #[allow(unused_imports)]
12276                use ::buffa::Enumeration as _;
12277                let mut size = 0u32;
12278                if self.layer.is_set() {
12279                    let __slot = __cache.reserve();
12280                    let inner_size = self.layer.compute_size(__cache);
12281                    __cache.set(__slot, inner_size);
12282                    size
12283                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
12284                            + inner_size;
12285                }
12286                if !self.centrifugo_sub_token.is_empty() {
12287                    size
12288                        += 1u32
12289                            + ::buffa::types::string_encoded_len(
12290                                &self.centrifugo_sub_token,
12291                            ) as u32;
12292                }
12293                size += self.__buffa_unknown_fields.encoded_len() as u32;
12294                size
12295            }
12296            #[allow(clippy::needless_borrow)]
12297            fn write_to(
12298                &self,
12299                __cache: &mut ::buffa::SizeCache,
12300                buf: &mut impl ::buffa::bytes::BufMut,
12301            ) {
12302                #[allow(unused_imports)]
12303                use ::buffa::Enumeration as _;
12304                if self.layer.is_set() {
12305                    ::buffa::types::put_len_delimited_header(
12306                        1u32,
12307                        __cache.consume_next(),
12308                        buf,
12309                    );
12310                    self.layer.write_to(__cache, buf);
12311                }
12312                if !self.centrifugo_sub_token.is_empty() {
12313                    ::buffa::types::put_string_field(
12314                        2u32,
12315                        &self.centrifugo_sub_token,
12316                        buf,
12317                    );
12318                }
12319                self.__buffa_unknown_fields.write_to(buf);
12320            }
12321        }
12322        /// Serializes this view as protobuf JSON.
12323        ///
12324        /// Implicit-presence fields with default values are omitted, `required`
12325        /// fields are always emitted, explicit-presence (`optional`) fields are
12326        /// emitted only when set, bytes fields are base64-encoded, and enum
12327        /// values are their proto name strings.
12328        ///
12329        /// This impl uses `serialize_map(None)` because the number of emitted
12330        /// fields depends on default-omission rules; serializers that require
12331        /// known map lengths (e.g. `bincode`) will return a runtime error.
12332        /// Use the owned message type for those formats.
12333        impl<'__a> ::serde::Serialize for LayerSubscribeTokenView<'__a> {
12334            fn serialize<__S: ::serde::Serializer>(
12335                &self,
12336                __s: __S,
12337            ) -> ::core::result::Result<__S::Ok, __S::Error> {
12338                use ::serde::ser::SerializeMap as _;
12339                let mut __map = __s.serialize_map(::core::option::Option::None)?;
12340                {
12341                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
12342                        __map.serialize_entry("layer", __v)?;
12343                    }
12344                }
12345                if !::buffa::json_helpers::skip_if::is_empty_str(
12346                    self.centrifugo_sub_token,
12347                ) {
12348                    __map
12349                        .serialize_entry(
12350                            "centrifugoSubToken",
12351                            self.centrifugo_sub_token,
12352                        )?;
12353                }
12354                __map.end()
12355            }
12356        }
12357        impl<'a> ::buffa::MessageName for LayerSubscribeTokenView<'a> {
12358            const PACKAGE: &'static str = "polychart.v1";
12359            const NAME: &'static str = "LayerSubscribeToken";
12360            const FULL_NAME: &'static str = "polychart.v1.LayerSubscribeToken";
12361            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.LayerSubscribeToken";
12362        }
12363        ::buffa::impl_default_view_instance!(LayerSubscribeTokenView);
12364        ::buffa::impl_view_reborrow!(LayerSubscribeTokenView);
12365        /** Self-contained, `'static` owned view of a `LayerSubscribeToken` message.
12366
12367 Wraps [`::buffa::OwnedView`]`<`[`LayerSubscribeTokenView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
12368
12369 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`LayerSubscribeTokenView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
12370        #[derive(Clone, Debug)]
12371        pub struct LayerSubscribeTokenOwnedView(
12372            ::buffa::OwnedView<LayerSubscribeTokenView<'static>>,
12373        );
12374        impl LayerSubscribeTokenOwnedView {
12375            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
12376            ///
12377            /// The view borrows directly from the buffer's data; the buffer is
12378            /// retained inside the returned handle.
12379            ///
12380            /// # Errors
12381            ///
12382            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
12383            /// protobuf data.
12384            pub fn decode(
12385                bytes: ::buffa::bytes::Bytes,
12386            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12387                ::core::result::Result::Ok(
12388                    LayerSubscribeTokenOwnedView(::buffa::OwnedView::decode(bytes)?),
12389                )
12390            }
12391            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
12392            /// max message size).
12393            ///
12394            /// # Errors
12395            ///
12396            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
12397            /// exceeds the configured limits.
12398            pub fn decode_with_options(
12399                bytes: ::buffa::bytes::Bytes,
12400                opts: &::buffa::DecodeOptions,
12401            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12402                ::core::result::Result::Ok(
12403                    LayerSubscribeTokenOwnedView(
12404                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
12405                    ),
12406                )
12407            }
12408            /// Build from an owned message via an encode → decode round-trip.
12409            ///
12410            /// # Errors
12411            ///
12412            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
12413            /// somehow invalid (should not happen for well-formed messages).
12414            pub fn from_owned(
12415                msg: &super::super::LayerSubscribeToken,
12416            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12417                ::core::result::Result::Ok(
12418                    LayerSubscribeTokenOwnedView(::buffa::OwnedView::from_owned(msg)?),
12419                )
12420            }
12421            /// Borrow the full [`LayerSubscribeTokenView`] with its lifetime tied to `&self`.
12422            #[must_use]
12423            pub fn view(&self) -> &LayerSubscribeTokenView<'_> {
12424                self.0.reborrow()
12425            }
12426            /// Convert to the owned message type.
12427            ///
12428            /// # Errors
12429            ///
12430            /// Returns an error if re-materializing preserved unknown fields
12431            /// fails (e.g. the unknown-field limit is exceeded).
12432            pub fn to_owned_message(
12433                &self,
12434            ) -> ::core::result::Result<
12435                super::super::LayerSubscribeToken,
12436                ::buffa::DecodeError,
12437            > {
12438                self.0.to_owned_message()
12439            }
12440            /// The underlying bytes buffer.
12441            #[must_use]
12442            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
12443                self.0.bytes()
12444            }
12445            /// Consume the handle, returning the underlying bytes buffer.
12446            #[must_use]
12447            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
12448                self.0.into_bytes()
12449            }
12450            /// Layer the token authorizes.
12451            ///
12452            /// Field 1: `layer`
12453            #[must_use]
12454            pub fn layer(
12455                &self,
12456            ) -> &::buffa::MessageFieldView<
12457                super::super::__buffa::view::LayerRefView<'_>,
12458            > {
12459                &self.0.reborrow().layer
12460            }
12461            /// Short-lived realtime subscribe token for the layer.
12462            ///
12463            /// Field 2: `centrifugo_sub_token`
12464            #[must_use]
12465            pub fn centrifugo_sub_token(&self) -> &'_ str {
12466                self.0.reborrow().centrifugo_sub_token
12467            }
12468        }
12469        impl ::core::convert::From<::buffa::OwnedView<LayerSubscribeTokenView<'static>>>
12470        for LayerSubscribeTokenOwnedView {
12471            fn from(
12472                inner: ::buffa::OwnedView<LayerSubscribeTokenView<'static>>,
12473            ) -> Self {
12474                LayerSubscribeTokenOwnedView(inner)
12475            }
12476        }
12477        impl ::core::convert::From<LayerSubscribeTokenOwnedView>
12478        for ::buffa::OwnedView<LayerSubscribeTokenView<'static>> {
12479            fn from(wrapper: LayerSubscribeTokenOwnedView) -> Self {
12480                wrapper.0
12481            }
12482        }
12483        impl ::core::convert::AsRef<::buffa::OwnedView<LayerSubscribeTokenView<'static>>>
12484        for LayerSubscribeTokenOwnedView {
12485            fn as_ref(&self) -> &::buffa::OwnedView<LayerSubscribeTokenView<'static>> {
12486                &self.0
12487            }
12488        }
12489        impl ::buffa::HasMessageView for super::super::LayerSubscribeToken {
12490            type View<'a> = LayerSubscribeTokenView<'a>;
12491            type ViewHandle = LayerSubscribeTokenOwnedView;
12492        }
12493        impl ::serde::Serialize for LayerSubscribeTokenOwnedView {
12494            fn serialize<__S: ::serde::Serializer>(
12495                &self,
12496                __s: __S,
12497            ) -> ::core::result::Result<__S::Ok, __S::Error> {
12498                ::serde::Serialize::serialize(&self.0, __s)
12499            }
12500        }
12501        /// GetLayerSubscribeTokensResponse contains subscribe tokens for authorized layers.
12502        #[derive(Clone, Debug, Default)]
12503        pub struct GetLayerSubscribeTokensResponseView<'a> {
12504            /// Subscribe tokens keyed by layer.
12505            ///
12506            /// Field 1: `tokens`
12507            pub tokens: ::buffa::RepeatedView<
12508                'a,
12509                super::super::__buffa::view::LayerSubscribeTokenView<'a>,
12510            >,
12511            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
12512        }
12513        impl<'a> ::buffa::MessageView<'a> for GetLayerSubscribeTokensResponseView<'a> {
12514            type Owned = super::super::GetLayerSubscribeTokensResponse;
12515            fn decode_view(
12516                buf: &'a [u8],
12517            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12518                let __limit = ::core::cell::Cell::new(
12519                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
12520                );
12521                <Self as ::buffa::MessageView>::decode_view_ctx(
12522                    buf,
12523                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
12524                )
12525            }
12526            fn decode_view_with_ctx(
12527                buf: &'a [u8],
12528                ctx: ::buffa::DecodeContext<'_>,
12529            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12530                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
12531            }
12532            fn merge_view_field(
12533                &mut self,
12534                tag: ::buffa::encoding::Tag,
12535                cur: &'a [u8],
12536                before_tag: &'a [u8],
12537                ctx: ::buffa::DecodeContext<'_>,
12538            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
12539                let _ = ctx;
12540                #[allow(unused_variables)]
12541                let view = self;
12542                let mut cur = cur;
12543                match tag.field_number() {
12544                    1u32 => {
12545                        ::buffa::encoding::check_wire_type(
12546                            tag,
12547                            ::buffa::encoding::WireType::LengthDelimited,
12548                        )?;
12549                        let __sub_ctx = ctx.descend()?;
12550                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
12551                        view.tokens
12552                            .push(
12553                                <super::super::__buffa::view::LayerSubscribeTokenView as ::buffa::MessageView>::decode_view_ctx(
12554                                    sub,
12555                                    __sub_ctx,
12556                                )?,
12557                            );
12558                    }
12559                    _ => {
12560                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
12561                        let span_len = before_tag.len() - cur.len();
12562                        view.__buffa_unknown_fields
12563                            .push_record(before_tag, span_len, ctx)?;
12564                    }
12565                }
12566                ::core::result::Result::Ok(cur)
12567            }
12568            fn to_owned_message(
12569                &self,
12570            ) -> ::core::result::Result<
12571                super::super::GetLayerSubscribeTokensResponse,
12572                ::buffa::DecodeError,
12573            > {
12574                self.to_owned_from_source(None)
12575            }
12576            #[allow(clippy::useless_conversion, clippy::needless_update)]
12577            fn to_owned_from_source(
12578                &self,
12579                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
12580            ) -> ::core::result::Result<
12581                super::super::GetLayerSubscribeTokensResponse,
12582                ::buffa::DecodeError,
12583            > {
12584                #[allow(unused_imports)]
12585                use ::buffa::alloc::string::ToString as _;
12586                let _ = __buffa_src;
12587                ::core::result::Result::Ok(super::super::GetLayerSubscribeTokensResponse {
12588                    tokens: self
12589                        .tokens
12590                        .iter()
12591                        .map(|v| v.to_owned_from_source(__buffa_src))
12592                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
12593                    __buffa_unknown_fields: self
12594                        .__buffa_unknown_fields
12595                        .to_owned()?
12596                        .into(),
12597                    ..::core::default::Default::default()
12598                })
12599            }
12600        }
12601        impl<'a> ::buffa::ViewEncode<'a> for GetLayerSubscribeTokensResponseView<'a> {
12602            #[allow(clippy::needless_borrow, clippy::let_and_return)]
12603            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
12604                #[allow(unused_imports)]
12605                use ::buffa::Enumeration as _;
12606                let mut size = 0u32;
12607                for v in &self.tokens {
12608                    let __slot = __cache.reserve();
12609                    let inner_size = v.compute_size(__cache);
12610                    __cache.set(__slot, inner_size);
12611                    size
12612                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
12613                            + inner_size;
12614                }
12615                size += self.__buffa_unknown_fields.encoded_len() as u32;
12616                size
12617            }
12618            #[allow(clippy::needless_borrow)]
12619            fn write_to(
12620                &self,
12621                __cache: &mut ::buffa::SizeCache,
12622                buf: &mut impl ::buffa::bytes::BufMut,
12623            ) {
12624                #[allow(unused_imports)]
12625                use ::buffa::Enumeration as _;
12626                for v in &self.tokens {
12627                    ::buffa::types::put_len_delimited_header(
12628                        1u32,
12629                        __cache.consume_next(),
12630                        buf,
12631                    );
12632                    v.write_to(__cache, buf);
12633                }
12634                self.__buffa_unknown_fields.write_to(buf);
12635            }
12636        }
12637        /// Serializes this view as protobuf JSON.
12638        ///
12639        /// Implicit-presence fields with default values are omitted, `required`
12640        /// fields are always emitted, explicit-presence (`optional`) fields are
12641        /// emitted only when set, bytes fields are base64-encoded, and enum
12642        /// values are their proto name strings.
12643        ///
12644        /// This impl uses `serialize_map(None)` because the number of emitted
12645        /// fields depends on default-omission rules; serializers that require
12646        /// known map lengths (e.g. `bincode`) will return a runtime error.
12647        /// Use the owned message type for those formats.
12648        impl<'__a> ::serde::Serialize for GetLayerSubscribeTokensResponseView<'__a> {
12649            fn serialize<__S: ::serde::Serializer>(
12650                &self,
12651                __s: __S,
12652            ) -> ::core::result::Result<__S::Ok, __S::Error> {
12653                use ::serde::ser::SerializeMap as _;
12654                let mut __map = __s.serialize_map(::core::option::Option::None)?;
12655                if !self.tokens.is_empty() {
12656                    __map.serialize_entry("tokens", &*self.tokens)?;
12657                }
12658                __map.end()
12659            }
12660        }
12661        impl<'a> ::buffa::MessageName for GetLayerSubscribeTokensResponseView<'a> {
12662            const PACKAGE: &'static str = "polychart.v1";
12663            const NAME: &'static str = "GetLayerSubscribeTokensResponse";
12664            const FULL_NAME: &'static str = "polychart.v1.GetLayerSubscribeTokensResponse";
12665            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.GetLayerSubscribeTokensResponse";
12666        }
12667        ::buffa::impl_default_view_instance!(GetLayerSubscribeTokensResponseView);
12668        ::buffa::impl_view_reborrow!(GetLayerSubscribeTokensResponseView);
12669        /** Self-contained, `'static` owned view of a `GetLayerSubscribeTokensResponse` message.
12670
12671 Wraps [`::buffa::OwnedView`]`<`[`GetLayerSubscribeTokensResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
12672
12673 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`GetLayerSubscribeTokensResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
12674        #[derive(Clone, Debug)]
12675        pub struct GetLayerSubscribeTokensResponseOwnedView(
12676            ::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>>,
12677        );
12678        impl GetLayerSubscribeTokensResponseOwnedView {
12679            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
12680            ///
12681            /// The view borrows directly from the buffer's data; the buffer is
12682            /// retained inside the returned handle.
12683            ///
12684            /// # Errors
12685            ///
12686            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
12687            /// protobuf data.
12688            pub fn decode(
12689                bytes: ::buffa::bytes::Bytes,
12690            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12691                ::core::result::Result::Ok(
12692                    GetLayerSubscribeTokensResponseOwnedView(
12693                        ::buffa::OwnedView::decode(bytes)?,
12694                    ),
12695                )
12696            }
12697            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
12698            /// max message size).
12699            ///
12700            /// # Errors
12701            ///
12702            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
12703            /// exceeds the configured limits.
12704            pub fn decode_with_options(
12705                bytes: ::buffa::bytes::Bytes,
12706                opts: &::buffa::DecodeOptions,
12707            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12708                ::core::result::Result::Ok(
12709                    GetLayerSubscribeTokensResponseOwnedView(
12710                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
12711                    ),
12712                )
12713            }
12714            /// Build from an owned message via an encode → decode round-trip.
12715            ///
12716            /// # Errors
12717            ///
12718            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
12719            /// somehow invalid (should not happen for well-formed messages).
12720            pub fn from_owned(
12721                msg: &super::super::GetLayerSubscribeTokensResponse,
12722            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12723                ::core::result::Result::Ok(
12724                    GetLayerSubscribeTokensResponseOwnedView(
12725                        ::buffa::OwnedView::from_owned(msg)?,
12726                    ),
12727                )
12728            }
12729            /// Borrow the full [`GetLayerSubscribeTokensResponseView`] with its lifetime tied to `&self`.
12730            #[must_use]
12731            pub fn view(&self) -> &GetLayerSubscribeTokensResponseView<'_> {
12732                self.0.reborrow()
12733            }
12734            /// Convert to the owned message type.
12735            ///
12736            /// # Errors
12737            ///
12738            /// Returns an error if re-materializing preserved unknown fields
12739            /// fails (e.g. the unknown-field limit is exceeded).
12740            pub fn to_owned_message(
12741                &self,
12742            ) -> ::core::result::Result<
12743                super::super::GetLayerSubscribeTokensResponse,
12744                ::buffa::DecodeError,
12745            > {
12746                self.0.to_owned_message()
12747            }
12748            /// The underlying bytes buffer.
12749            #[must_use]
12750            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
12751                self.0.bytes()
12752            }
12753            /// Consume the handle, returning the underlying bytes buffer.
12754            #[must_use]
12755            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
12756                self.0.into_bytes()
12757            }
12758            /// Subscribe tokens keyed by layer.
12759            ///
12760            /// Field 1: `tokens`
12761            #[must_use]
12762            pub fn tokens(
12763                &self,
12764            ) -> &::buffa::RepeatedView<
12765                '_,
12766                super::super::__buffa::view::LayerSubscribeTokenView<'_>,
12767            > {
12768                &self.0.reborrow().tokens
12769            }
12770        }
12771        impl ::core::convert::From<
12772            ::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>>,
12773        > for GetLayerSubscribeTokensResponseOwnedView {
12774            fn from(
12775                inner: ::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>>,
12776            ) -> Self {
12777                GetLayerSubscribeTokensResponseOwnedView(inner)
12778            }
12779        }
12780        impl ::core::convert::From<GetLayerSubscribeTokensResponseOwnedView>
12781        for ::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>> {
12782            fn from(wrapper: GetLayerSubscribeTokensResponseOwnedView) -> Self {
12783                wrapper.0
12784            }
12785        }
12786        impl ::core::convert::AsRef<
12787            ::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>>,
12788        > for GetLayerSubscribeTokensResponseOwnedView {
12789            fn as_ref(
12790                &self,
12791            ) -> &::buffa::OwnedView<GetLayerSubscribeTokensResponseView<'static>> {
12792                &self.0
12793            }
12794        }
12795        impl ::buffa::HasMessageView for super::super::GetLayerSubscribeTokensResponse {
12796            type View<'a> = GetLayerSubscribeTokensResponseView<'a>;
12797            type ViewHandle = GetLayerSubscribeTokensResponseOwnedView;
12798        }
12799        impl ::serde::Serialize for GetLayerSubscribeTokensResponseOwnedView {
12800            fn serialize<__S: ::serde::Serializer>(
12801                &self,
12802                __s: __S,
12803            ) -> ::core::result::Result<__S::Ok, __S::Error> {
12804                ::serde::Serialize::serialize(&self.0, __s)
12805            }
12806        }
12807        /// CreateLayerShareLinkRequest creates a token-gated share link for a layer.
12808        #[derive(Clone, Debug, Default)]
12809        pub struct CreateLayerShareLinkRequestView<'a> {
12810            /// Layer to share.
12811            ///
12812            /// Field 1: `layer`
12813            pub layer: ::buffa::MessageFieldView<
12814                super::super::__buffa::view::LayerRefView<'a>,
12815            >,
12816            /// Permission bitmask for the share link: VIEW=1, EDIT=2, SHARE=4, MANAGE=8.
12817            ///
12818            /// Field 2: `perms`
12819            pub perms: u32,
12820            /// Expiration time in milliseconds since epoch (UTC); 0 means the link does not expire.
12821            ///
12822            /// Field 3: `expires_at_ms`
12823            pub expires_at_ms: u64,
12824            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
12825        }
12826        impl<'a> ::buffa::MessageView<'a> for CreateLayerShareLinkRequestView<'a> {
12827            type Owned = super::super::CreateLayerShareLinkRequest;
12828            fn decode_view(
12829                buf: &'a [u8],
12830            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12831                let __limit = ::core::cell::Cell::new(
12832                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
12833                );
12834                <Self as ::buffa::MessageView>::decode_view_ctx(
12835                    buf,
12836                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
12837                )
12838            }
12839            fn decode_view_with_ctx(
12840                buf: &'a [u8],
12841                ctx: ::buffa::DecodeContext<'_>,
12842            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
12843                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
12844            }
12845            fn merge_view_field(
12846                &mut self,
12847                tag: ::buffa::encoding::Tag,
12848                cur: &'a [u8],
12849                before_tag: &'a [u8],
12850                ctx: ::buffa::DecodeContext<'_>,
12851            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
12852                let _ = ctx;
12853                #[allow(unused_variables)]
12854                let view = self;
12855                let mut cur = cur;
12856                match tag.field_number() {
12857                    1u32 => {
12858                        ::buffa::encoding::check_wire_type(
12859                            tag,
12860                            ::buffa::encoding::WireType::LengthDelimited,
12861                        )?;
12862                        let __sub_ctx = ctx.descend()?;
12863                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
12864                        match view.layer.as_mut() {
12865                            Some(existing) => {
12866                                ::buffa::MessageView::merge_into_view(
12867                                    existing,
12868                                    sub,
12869                                    __sub_ctx,
12870                                )?
12871                            }
12872                            None => {
12873                                view.layer = ::buffa::MessageFieldView::set(
12874                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
12875                                        sub,
12876                                        __sub_ctx,
12877                                    )?,
12878                                );
12879                            }
12880                        }
12881                    }
12882                    2u32 => {
12883                        ::buffa::encoding::check_wire_type(
12884                            tag,
12885                            ::buffa::encoding::WireType::Varint,
12886                        )?;
12887                        view.perms = ::buffa::types::decode_uint32(&mut cur)?;
12888                    }
12889                    3u32 => {
12890                        ::buffa::encoding::check_wire_type(
12891                            tag,
12892                            ::buffa::encoding::WireType::Fixed64,
12893                        )?;
12894                        view.expires_at_ms = ::buffa::types::decode_fixed64(&mut cur)?;
12895                    }
12896                    _ => {
12897                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
12898                        let span_len = before_tag.len() - cur.len();
12899                        view.__buffa_unknown_fields
12900                            .push_record(before_tag, span_len, ctx)?;
12901                    }
12902                }
12903                ::core::result::Result::Ok(cur)
12904            }
12905            fn to_owned_message(
12906                &self,
12907            ) -> ::core::result::Result<
12908                super::super::CreateLayerShareLinkRequest,
12909                ::buffa::DecodeError,
12910            > {
12911                self.to_owned_from_source(None)
12912            }
12913            #[allow(clippy::useless_conversion, clippy::needless_update)]
12914            fn to_owned_from_source(
12915                &self,
12916                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
12917            ) -> ::core::result::Result<
12918                super::super::CreateLayerShareLinkRequest,
12919                ::buffa::DecodeError,
12920            > {
12921                #[allow(unused_imports)]
12922                use ::buffa::alloc::string::ToString as _;
12923                let _ = __buffa_src;
12924                ::core::result::Result::Ok(super::super::CreateLayerShareLinkRequest {
12925                    layer: match self.layer.as_option() {
12926                        Some(v) => {
12927                            ::buffa::MessageField::<
12928                                super::super::LayerRef,
12929                            >::some(v.to_owned_from_source(__buffa_src)?)
12930                        }
12931                        None => ::buffa::MessageField::none(),
12932                    },
12933                    perms: self.perms,
12934                    expires_at_ms: self.expires_at_ms,
12935                    __buffa_unknown_fields: self
12936                        .__buffa_unknown_fields
12937                        .to_owned()?
12938                        .into(),
12939                    ..::core::default::Default::default()
12940                })
12941            }
12942        }
12943        impl<'a> ::buffa::ViewEncode<'a> for CreateLayerShareLinkRequestView<'a> {
12944            #[allow(clippy::needless_borrow, clippy::let_and_return)]
12945            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
12946                #[allow(unused_imports)]
12947                use ::buffa::Enumeration as _;
12948                let mut size = 0u32;
12949                if self.layer.is_set() {
12950                    let __slot = __cache.reserve();
12951                    let inner_size = self.layer.compute_size(__cache);
12952                    __cache.set(__slot, inner_size);
12953                    size
12954                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
12955                            + inner_size;
12956                }
12957                if self.perms != 0u32 {
12958                    size += 1u32 + ::buffa::types::uint32_encoded_len(self.perms) as u32;
12959                }
12960                if self.expires_at_ms != 0u64 {
12961                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
12962                }
12963                size += self.__buffa_unknown_fields.encoded_len() as u32;
12964                size
12965            }
12966            #[allow(clippy::needless_borrow)]
12967            fn write_to(
12968                &self,
12969                __cache: &mut ::buffa::SizeCache,
12970                buf: &mut impl ::buffa::bytes::BufMut,
12971            ) {
12972                #[allow(unused_imports)]
12973                use ::buffa::Enumeration as _;
12974                if self.layer.is_set() {
12975                    ::buffa::types::put_len_delimited_header(
12976                        1u32,
12977                        __cache.consume_next(),
12978                        buf,
12979                    );
12980                    self.layer.write_to(__cache, buf);
12981                }
12982                if self.perms != 0u32 {
12983                    ::buffa::types::put_uint32_field(2u32, self.perms, buf);
12984                }
12985                if self.expires_at_ms != 0u64 {
12986                    ::buffa::types::put_fixed64_field(3u32, self.expires_at_ms, buf);
12987                }
12988                self.__buffa_unknown_fields.write_to(buf);
12989            }
12990        }
12991        /// Serializes this view as protobuf JSON.
12992        ///
12993        /// Implicit-presence fields with default values are omitted, `required`
12994        /// fields are always emitted, explicit-presence (`optional`) fields are
12995        /// emitted only when set, bytes fields are base64-encoded, and enum
12996        /// values are their proto name strings.
12997        ///
12998        /// This impl uses `serialize_map(None)` because the number of emitted
12999        /// fields depends on default-omission rules; serializers that require
13000        /// known map lengths (e.g. `bincode`) will return a runtime error.
13001        /// Use the owned message type for those formats.
13002        impl<'__a> ::serde::Serialize for CreateLayerShareLinkRequestView<'__a> {
13003            fn serialize<__S: ::serde::Serializer>(
13004                &self,
13005                __s: __S,
13006            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13007                use ::serde::ser::SerializeMap as _;
13008                let mut __map = __s.serialize_map(::core::option::Option::None)?;
13009                {
13010                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
13011                        __map.serialize_entry("layer", __v)?;
13012                    }
13013                }
13014                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.perms) {
13015                    __map
13016                        .serialize_entry(
13017                            "perms",
13018                            &::buffa::json_helpers::ProtoJson(&self.perms),
13019                        )?;
13020                }
13021                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.expires_at_ms) {
13022                    __map
13023                        .serialize_entry(
13024                            "expiresAtMs",
13025                            &::buffa::json_helpers::ProtoJson(&self.expires_at_ms),
13026                        )?;
13027                }
13028                __map.end()
13029            }
13030        }
13031        impl<'a> ::buffa::MessageName for CreateLayerShareLinkRequestView<'a> {
13032            const PACKAGE: &'static str = "polychart.v1";
13033            const NAME: &'static str = "CreateLayerShareLinkRequest";
13034            const FULL_NAME: &'static str = "polychart.v1.CreateLayerShareLinkRequest";
13035            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkRequest";
13036        }
13037        ::buffa::impl_default_view_instance!(CreateLayerShareLinkRequestView);
13038        ::buffa::impl_view_reborrow!(CreateLayerShareLinkRequestView);
13039        /** Self-contained, `'static` owned view of a `CreateLayerShareLinkRequest` message.
13040
13041 Wraps [`::buffa::OwnedView`]`<`[`CreateLayerShareLinkRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
13042
13043 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`CreateLayerShareLinkRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
13044        #[derive(Clone, Debug)]
13045        pub struct CreateLayerShareLinkRequestOwnedView(
13046            ::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>>,
13047        );
13048        impl CreateLayerShareLinkRequestOwnedView {
13049            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
13050            ///
13051            /// The view borrows directly from the buffer's data; the buffer is
13052            /// retained inside the returned handle.
13053            ///
13054            /// # Errors
13055            ///
13056            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
13057            /// protobuf data.
13058            pub fn decode(
13059                bytes: ::buffa::bytes::Bytes,
13060            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13061                ::core::result::Result::Ok(
13062                    CreateLayerShareLinkRequestOwnedView(
13063                        ::buffa::OwnedView::decode(bytes)?,
13064                    ),
13065                )
13066            }
13067            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
13068            /// max message size).
13069            ///
13070            /// # Errors
13071            ///
13072            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
13073            /// exceeds the configured limits.
13074            pub fn decode_with_options(
13075                bytes: ::buffa::bytes::Bytes,
13076                opts: &::buffa::DecodeOptions,
13077            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13078                ::core::result::Result::Ok(
13079                    CreateLayerShareLinkRequestOwnedView(
13080                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
13081                    ),
13082                )
13083            }
13084            /// Build from an owned message via an encode → decode round-trip.
13085            ///
13086            /// # Errors
13087            ///
13088            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
13089            /// somehow invalid (should not happen for well-formed messages).
13090            pub fn from_owned(
13091                msg: &super::super::CreateLayerShareLinkRequest,
13092            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13093                ::core::result::Result::Ok(
13094                    CreateLayerShareLinkRequestOwnedView(
13095                        ::buffa::OwnedView::from_owned(msg)?,
13096                    ),
13097                )
13098            }
13099            /// Borrow the full [`CreateLayerShareLinkRequestView`] with its lifetime tied to `&self`.
13100            #[must_use]
13101            pub fn view(&self) -> &CreateLayerShareLinkRequestView<'_> {
13102                self.0.reborrow()
13103            }
13104            /// Convert to the owned message type.
13105            ///
13106            /// # Errors
13107            ///
13108            /// Returns an error if re-materializing preserved unknown fields
13109            /// fails (e.g. the unknown-field limit is exceeded).
13110            pub fn to_owned_message(
13111                &self,
13112            ) -> ::core::result::Result<
13113                super::super::CreateLayerShareLinkRequest,
13114                ::buffa::DecodeError,
13115            > {
13116                self.0.to_owned_message()
13117            }
13118            /// The underlying bytes buffer.
13119            #[must_use]
13120            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
13121                self.0.bytes()
13122            }
13123            /// Consume the handle, returning the underlying bytes buffer.
13124            #[must_use]
13125            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
13126                self.0.into_bytes()
13127            }
13128            /// Layer to share.
13129            ///
13130            /// Field 1: `layer`
13131            #[must_use]
13132            pub fn layer(
13133                &self,
13134            ) -> &::buffa::MessageFieldView<
13135                super::super::__buffa::view::LayerRefView<'_>,
13136            > {
13137                &self.0.reborrow().layer
13138            }
13139            /// Permission bitmask for the share link: VIEW=1, EDIT=2, SHARE=4, MANAGE=8.
13140            ///
13141            /// Field 2: `perms`
13142            #[must_use]
13143            pub fn perms(&self) -> u32 {
13144                self.0.reborrow().perms
13145            }
13146            /// Expiration time in milliseconds since epoch (UTC); 0 means the link does not expire.
13147            ///
13148            /// Field 3: `expires_at_ms`
13149            #[must_use]
13150            pub fn expires_at_ms(&self) -> u64 {
13151                self.0.reborrow().expires_at_ms
13152            }
13153        }
13154        impl ::core::convert::From<
13155            ::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>>,
13156        > for CreateLayerShareLinkRequestOwnedView {
13157            fn from(
13158                inner: ::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>>,
13159            ) -> Self {
13160                CreateLayerShareLinkRequestOwnedView(inner)
13161            }
13162        }
13163        impl ::core::convert::From<CreateLayerShareLinkRequestOwnedView>
13164        for ::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>> {
13165            fn from(wrapper: CreateLayerShareLinkRequestOwnedView) -> Self {
13166                wrapper.0
13167            }
13168        }
13169        impl ::core::convert::AsRef<
13170            ::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>>,
13171        > for CreateLayerShareLinkRequestOwnedView {
13172            fn as_ref(
13173                &self,
13174            ) -> &::buffa::OwnedView<CreateLayerShareLinkRequestView<'static>> {
13175                &self.0
13176            }
13177        }
13178        impl ::buffa::HasMessageView for super::super::CreateLayerShareLinkRequest {
13179            type View<'a> = CreateLayerShareLinkRequestView<'a>;
13180            type ViewHandle = CreateLayerShareLinkRequestOwnedView;
13181        }
13182        impl ::serde::Serialize for CreateLayerShareLinkRequestOwnedView {
13183            fn serialize<__S: ::serde::Serializer>(
13184                &self,
13185                __s: __S,
13186            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13187                ::serde::Serialize::serialize(&self.0, __s)
13188            }
13189        }
13190        /// CreateLayerShareLinkResponse returns the minted share token.
13191        #[derive(Clone, Debug, Default)]
13192        pub struct CreateLayerShareLinkResponseView<'a> {
13193            /// Opaque share token.
13194            ///
13195            /// Field 1: `token`
13196            pub token: &'a str,
13197            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
13198        }
13199        impl<'a> ::buffa::MessageView<'a> for CreateLayerShareLinkResponseView<'a> {
13200            type Owned = super::super::CreateLayerShareLinkResponse;
13201            fn decode_view(
13202                buf: &'a [u8],
13203            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13204                let __limit = ::core::cell::Cell::new(
13205                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
13206                );
13207                <Self as ::buffa::MessageView>::decode_view_ctx(
13208                    buf,
13209                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
13210                )
13211            }
13212            fn decode_view_with_ctx(
13213                buf: &'a [u8],
13214                ctx: ::buffa::DecodeContext<'_>,
13215            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13216                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
13217            }
13218            fn merge_view_field(
13219                &mut self,
13220                tag: ::buffa::encoding::Tag,
13221                cur: &'a [u8],
13222                before_tag: &'a [u8],
13223                ctx: ::buffa::DecodeContext<'_>,
13224            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
13225                let _ = ctx;
13226                #[allow(unused_variables)]
13227                let view = self;
13228                let mut cur = cur;
13229                match tag.field_number() {
13230                    1u32 => {
13231                        ::buffa::encoding::check_wire_type(
13232                            tag,
13233                            ::buffa::encoding::WireType::LengthDelimited,
13234                        )?;
13235                        view.token = ::buffa::types::borrow_str(&mut cur)?;
13236                    }
13237                    _ => {
13238                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
13239                        let span_len = before_tag.len() - cur.len();
13240                        view.__buffa_unknown_fields
13241                            .push_record(before_tag, span_len, ctx)?;
13242                    }
13243                }
13244                ::core::result::Result::Ok(cur)
13245            }
13246            fn to_owned_message(
13247                &self,
13248            ) -> ::core::result::Result<
13249                super::super::CreateLayerShareLinkResponse,
13250                ::buffa::DecodeError,
13251            > {
13252                self.to_owned_from_source(None)
13253            }
13254            #[allow(clippy::useless_conversion, clippy::needless_update)]
13255            fn to_owned_from_source(
13256                &self,
13257                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
13258            ) -> ::core::result::Result<
13259                super::super::CreateLayerShareLinkResponse,
13260                ::buffa::DecodeError,
13261            > {
13262                #[allow(unused_imports)]
13263                use ::buffa::alloc::string::ToString as _;
13264                let _ = __buffa_src;
13265                ::core::result::Result::Ok(super::super::CreateLayerShareLinkResponse {
13266                    token: self.token.to_string(),
13267                    __buffa_unknown_fields: self
13268                        .__buffa_unknown_fields
13269                        .to_owned()?
13270                        .into(),
13271                    ..::core::default::Default::default()
13272                })
13273            }
13274        }
13275        impl<'a> ::buffa::ViewEncode<'a> for CreateLayerShareLinkResponseView<'a> {
13276            #[allow(clippy::needless_borrow, clippy::let_and_return)]
13277            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
13278                #[allow(unused_imports)]
13279                use ::buffa::Enumeration as _;
13280                let mut size = 0u32;
13281                if !self.token.is_empty() {
13282                    size
13283                        += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
13284                }
13285                size += self.__buffa_unknown_fields.encoded_len() as u32;
13286                size
13287            }
13288            #[allow(clippy::needless_borrow)]
13289            fn write_to(
13290                &self,
13291                _cache: &mut ::buffa::SizeCache,
13292                buf: &mut impl ::buffa::bytes::BufMut,
13293            ) {
13294                #[allow(unused_imports)]
13295                use ::buffa::Enumeration as _;
13296                if !self.token.is_empty() {
13297                    ::buffa::types::put_string_field(1u32, &self.token, buf);
13298                }
13299                self.__buffa_unknown_fields.write_to(buf);
13300            }
13301        }
13302        /// Serializes this view as protobuf JSON.
13303        ///
13304        /// Implicit-presence fields with default values are omitted, `required`
13305        /// fields are always emitted, explicit-presence (`optional`) fields are
13306        /// emitted only when set, bytes fields are base64-encoded, and enum
13307        /// values are their proto name strings.
13308        ///
13309        /// This impl uses `serialize_map(None)` because the number of emitted
13310        /// fields depends on default-omission rules; serializers that require
13311        /// known map lengths (e.g. `bincode`) will return a runtime error.
13312        /// Use the owned message type for those formats.
13313        impl<'__a> ::serde::Serialize for CreateLayerShareLinkResponseView<'__a> {
13314            fn serialize<__S: ::serde::Serializer>(
13315                &self,
13316                __s: __S,
13317            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13318                use ::serde::ser::SerializeMap as _;
13319                let mut __map = __s.serialize_map(::core::option::Option::None)?;
13320                if !::buffa::json_helpers::skip_if::is_empty_str(self.token) {
13321                    __map.serialize_entry("token", self.token)?;
13322                }
13323                __map.end()
13324            }
13325        }
13326        impl<'a> ::buffa::MessageName for CreateLayerShareLinkResponseView<'a> {
13327            const PACKAGE: &'static str = "polychart.v1";
13328            const NAME: &'static str = "CreateLayerShareLinkResponse";
13329            const FULL_NAME: &'static str = "polychart.v1.CreateLayerShareLinkResponse";
13330            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.CreateLayerShareLinkResponse";
13331        }
13332        ::buffa::impl_default_view_instance!(CreateLayerShareLinkResponseView);
13333        ::buffa::impl_view_reborrow!(CreateLayerShareLinkResponseView);
13334        /** Self-contained, `'static` owned view of a `CreateLayerShareLinkResponse` message.
13335
13336 Wraps [`::buffa::OwnedView`]`<`[`CreateLayerShareLinkResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
13337
13338 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`CreateLayerShareLinkResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
13339        #[derive(Clone, Debug)]
13340        pub struct CreateLayerShareLinkResponseOwnedView(
13341            ::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>>,
13342        );
13343        impl CreateLayerShareLinkResponseOwnedView {
13344            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
13345            ///
13346            /// The view borrows directly from the buffer's data; the buffer is
13347            /// retained inside the returned handle.
13348            ///
13349            /// # Errors
13350            ///
13351            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
13352            /// protobuf data.
13353            pub fn decode(
13354                bytes: ::buffa::bytes::Bytes,
13355            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13356                ::core::result::Result::Ok(
13357                    CreateLayerShareLinkResponseOwnedView(
13358                        ::buffa::OwnedView::decode(bytes)?,
13359                    ),
13360                )
13361            }
13362            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
13363            /// max message size).
13364            ///
13365            /// # Errors
13366            ///
13367            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
13368            /// exceeds the configured limits.
13369            pub fn decode_with_options(
13370                bytes: ::buffa::bytes::Bytes,
13371                opts: &::buffa::DecodeOptions,
13372            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13373                ::core::result::Result::Ok(
13374                    CreateLayerShareLinkResponseOwnedView(
13375                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
13376                    ),
13377                )
13378            }
13379            /// Build from an owned message via an encode → decode round-trip.
13380            ///
13381            /// # Errors
13382            ///
13383            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
13384            /// somehow invalid (should not happen for well-formed messages).
13385            pub fn from_owned(
13386                msg: &super::super::CreateLayerShareLinkResponse,
13387            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13388                ::core::result::Result::Ok(
13389                    CreateLayerShareLinkResponseOwnedView(
13390                        ::buffa::OwnedView::from_owned(msg)?,
13391                    ),
13392                )
13393            }
13394            /// Borrow the full [`CreateLayerShareLinkResponseView`] with its lifetime tied to `&self`.
13395            #[must_use]
13396            pub fn view(&self) -> &CreateLayerShareLinkResponseView<'_> {
13397                self.0.reborrow()
13398            }
13399            /// Convert to the owned message type.
13400            ///
13401            /// # Errors
13402            ///
13403            /// Returns an error if re-materializing preserved unknown fields
13404            /// fails (e.g. the unknown-field limit is exceeded).
13405            pub fn to_owned_message(
13406                &self,
13407            ) -> ::core::result::Result<
13408                super::super::CreateLayerShareLinkResponse,
13409                ::buffa::DecodeError,
13410            > {
13411                self.0.to_owned_message()
13412            }
13413            /// The underlying bytes buffer.
13414            #[must_use]
13415            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
13416                self.0.bytes()
13417            }
13418            /// Consume the handle, returning the underlying bytes buffer.
13419            #[must_use]
13420            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
13421                self.0.into_bytes()
13422            }
13423            /// Opaque share token.
13424            ///
13425            /// Field 1: `token`
13426            #[must_use]
13427            pub fn token(&self) -> &'_ str {
13428                self.0.reborrow().token
13429            }
13430        }
13431        impl ::core::convert::From<
13432            ::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>>,
13433        > for CreateLayerShareLinkResponseOwnedView {
13434            fn from(
13435                inner: ::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>>,
13436            ) -> Self {
13437                CreateLayerShareLinkResponseOwnedView(inner)
13438            }
13439        }
13440        impl ::core::convert::From<CreateLayerShareLinkResponseOwnedView>
13441        for ::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>> {
13442            fn from(wrapper: CreateLayerShareLinkResponseOwnedView) -> Self {
13443                wrapper.0
13444            }
13445        }
13446        impl ::core::convert::AsRef<
13447            ::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>>,
13448        > for CreateLayerShareLinkResponseOwnedView {
13449            fn as_ref(
13450                &self,
13451            ) -> &::buffa::OwnedView<CreateLayerShareLinkResponseView<'static>> {
13452                &self.0
13453            }
13454        }
13455        impl ::buffa::HasMessageView for super::super::CreateLayerShareLinkResponse {
13456            type View<'a> = CreateLayerShareLinkResponseView<'a>;
13457            type ViewHandle = CreateLayerShareLinkResponseOwnedView;
13458        }
13459        impl ::serde::Serialize for CreateLayerShareLinkResponseOwnedView {
13460            fn serialize<__S: ::serde::Serializer>(
13461                &self,
13462                __s: __S,
13463            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13464                ::serde::Serialize::serialize(&self.0, __s)
13465            }
13466        }
13467        /// RevokeLayerShareLinkRequest revokes one previously minted layer share token.
13468        #[derive(Clone, Debug, Default)]
13469        pub struct RevokeLayerShareLinkRequestView<'a> {
13470            /// Opaque share token to revoke.
13471            ///
13472            /// Field 1: `token`
13473            pub token: &'a str,
13474            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
13475        }
13476        impl<'a> ::buffa::MessageView<'a> for RevokeLayerShareLinkRequestView<'a> {
13477            type Owned = super::super::RevokeLayerShareLinkRequest;
13478            fn decode_view(
13479                buf: &'a [u8],
13480            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13481                let __limit = ::core::cell::Cell::new(
13482                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
13483                );
13484                <Self as ::buffa::MessageView>::decode_view_ctx(
13485                    buf,
13486                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
13487                )
13488            }
13489            fn decode_view_with_ctx(
13490                buf: &'a [u8],
13491                ctx: ::buffa::DecodeContext<'_>,
13492            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13493                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
13494            }
13495            fn merge_view_field(
13496                &mut self,
13497                tag: ::buffa::encoding::Tag,
13498                cur: &'a [u8],
13499                before_tag: &'a [u8],
13500                ctx: ::buffa::DecodeContext<'_>,
13501            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
13502                let _ = ctx;
13503                #[allow(unused_variables)]
13504                let view = self;
13505                let mut cur = cur;
13506                match tag.field_number() {
13507                    1u32 => {
13508                        ::buffa::encoding::check_wire_type(
13509                            tag,
13510                            ::buffa::encoding::WireType::LengthDelimited,
13511                        )?;
13512                        view.token = ::buffa::types::borrow_str(&mut cur)?;
13513                    }
13514                    _ => {
13515                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
13516                        let span_len = before_tag.len() - cur.len();
13517                        view.__buffa_unknown_fields
13518                            .push_record(before_tag, span_len, ctx)?;
13519                    }
13520                }
13521                ::core::result::Result::Ok(cur)
13522            }
13523            fn to_owned_message(
13524                &self,
13525            ) -> ::core::result::Result<
13526                super::super::RevokeLayerShareLinkRequest,
13527                ::buffa::DecodeError,
13528            > {
13529                self.to_owned_from_source(None)
13530            }
13531            #[allow(clippy::useless_conversion, clippy::needless_update)]
13532            fn to_owned_from_source(
13533                &self,
13534                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
13535            ) -> ::core::result::Result<
13536                super::super::RevokeLayerShareLinkRequest,
13537                ::buffa::DecodeError,
13538            > {
13539                #[allow(unused_imports)]
13540                use ::buffa::alloc::string::ToString as _;
13541                let _ = __buffa_src;
13542                ::core::result::Result::Ok(super::super::RevokeLayerShareLinkRequest {
13543                    token: self.token.to_string(),
13544                    __buffa_unknown_fields: self
13545                        .__buffa_unknown_fields
13546                        .to_owned()?
13547                        .into(),
13548                    ..::core::default::Default::default()
13549                })
13550            }
13551        }
13552        impl<'a> ::buffa::ViewEncode<'a> for RevokeLayerShareLinkRequestView<'a> {
13553            #[allow(clippy::needless_borrow, clippy::let_and_return)]
13554            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
13555                #[allow(unused_imports)]
13556                use ::buffa::Enumeration as _;
13557                let mut size = 0u32;
13558                if !self.token.is_empty() {
13559                    size
13560                        += 1u32 + ::buffa::types::string_encoded_len(&self.token) as u32;
13561                }
13562                size += self.__buffa_unknown_fields.encoded_len() as u32;
13563                size
13564            }
13565            #[allow(clippy::needless_borrow)]
13566            fn write_to(
13567                &self,
13568                _cache: &mut ::buffa::SizeCache,
13569                buf: &mut impl ::buffa::bytes::BufMut,
13570            ) {
13571                #[allow(unused_imports)]
13572                use ::buffa::Enumeration as _;
13573                if !self.token.is_empty() {
13574                    ::buffa::types::put_string_field(1u32, &self.token, buf);
13575                }
13576                self.__buffa_unknown_fields.write_to(buf);
13577            }
13578        }
13579        /// Serializes this view as protobuf JSON.
13580        ///
13581        /// Implicit-presence fields with default values are omitted, `required`
13582        /// fields are always emitted, explicit-presence (`optional`) fields are
13583        /// emitted only when set, bytes fields are base64-encoded, and enum
13584        /// values are their proto name strings.
13585        ///
13586        /// This impl uses `serialize_map(None)` because the number of emitted
13587        /// fields depends on default-omission rules; serializers that require
13588        /// known map lengths (e.g. `bincode`) will return a runtime error.
13589        /// Use the owned message type for those formats.
13590        impl<'__a> ::serde::Serialize for RevokeLayerShareLinkRequestView<'__a> {
13591            fn serialize<__S: ::serde::Serializer>(
13592                &self,
13593                __s: __S,
13594            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13595                use ::serde::ser::SerializeMap as _;
13596                let mut __map = __s.serialize_map(::core::option::Option::None)?;
13597                if !::buffa::json_helpers::skip_if::is_empty_str(self.token) {
13598                    __map.serialize_entry("token", self.token)?;
13599                }
13600                __map.end()
13601            }
13602        }
13603        impl<'a> ::buffa::MessageName for RevokeLayerShareLinkRequestView<'a> {
13604            const PACKAGE: &'static str = "polychart.v1";
13605            const NAME: &'static str = "RevokeLayerShareLinkRequest";
13606            const FULL_NAME: &'static str = "polychart.v1.RevokeLayerShareLinkRequest";
13607            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkRequest";
13608        }
13609        ::buffa::impl_default_view_instance!(RevokeLayerShareLinkRequestView);
13610        ::buffa::impl_view_reborrow!(RevokeLayerShareLinkRequestView);
13611        /** Self-contained, `'static` owned view of a `RevokeLayerShareLinkRequest` message.
13612
13613 Wraps [`::buffa::OwnedView`]`<`[`RevokeLayerShareLinkRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
13614
13615 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`RevokeLayerShareLinkRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
13616        #[derive(Clone, Debug)]
13617        pub struct RevokeLayerShareLinkRequestOwnedView(
13618            ::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>>,
13619        );
13620        impl RevokeLayerShareLinkRequestOwnedView {
13621            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
13622            ///
13623            /// The view borrows directly from the buffer's data; the buffer is
13624            /// retained inside the returned handle.
13625            ///
13626            /// # Errors
13627            ///
13628            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
13629            /// protobuf data.
13630            pub fn decode(
13631                bytes: ::buffa::bytes::Bytes,
13632            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13633                ::core::result::Result::Ok(
13634                    RevokeLayerShareLinkRequestOwnedView(
13635                        ::buffa::OwnedView::decode(bytes)?,
13636                    ),
13637                )
13638            }
13639            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
13640            /// max message size).
13641            ///
13642            /// # Errors
13643            ///
13644            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
13645            /// exceeds the configured limits.
13646            pub fn decode_with_options(
13647                bytes: ::buffa::bytes::Bytes,
13648                opts: &::buffa::DecodeOptions,
13649            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13650                ::core::result::Result::Ok(
13651                    RevokeLayerShareLinkRequestOwnedView(
13652                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
13653                    ),
13654                )
13655            }
13656            /// Build from an owned message via an encode → decode round-trip.
13657            ///
13658            /// # Errors
13659            ///
13660            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
13661            /// somehow invalid (should not happen for well-formed messages).
13662            pub fn from_owned(
13663                msg: &super::super::RevokeLayerShareLinkRequest,
13664            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13665                ::core::result::Result::Ok(
13666                    RevokeLayerShareLinkRequestOwnedView(
13667                        ::buffa::OwnedView::from_owned(msg)?,
13668                    ),
13669                )
13670            }
13671            /// Borrow the full [`RevokeLayerShareLinkRequestView`] with its lifetime tied to `&self`.
13672            #[must_use]
13673            pub fn view(&self) -> &RevokeLayerShareLinkRequestView<'_> {
13674                self.0.reborrow()
13675            }
13676            /// Convert to the owned message type.
13677            ///
13678            /// # Errors
13679            ///
13680            /// Returns an error if re-materializing preserved unknown fields
13681            /// fails (e.g. the unknown-field limit is exceeded).
13682            pub fn to_owned_message(
13683                &self,
13684            ) -> ::core::result::Result<
13685                super::super::RevokeLayerShareLinkRequest,
13686                ::buffa::DecodeError,
13687            > {
13688                self.0.to_owned_message()
13689            }
13690            /// The underlying bytes buffer.
13691            #[must_use]
13692            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
13693                self.0.bytes()
13694            }
13695            /// Consume the handle, returning the underlying bytes buffer.
13696            #[must_use]
13697            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
13698                self.0.into_bytes()
13699            }
13700            /// Opaque share token to revoke.
13701            ///
13702            /// Field 1: `token`
13703            #[must_use]
13704            pub fn token(&self) -> &'_ str {
13705                self.0.reborrow().token
13706            }
13707        }
13708        impl ::core::convert::From<
13709            ::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>>,
13710        > for RevokeLayerShareLinkRequestOwnedView {
13711            fn from(
13712                inner: ::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>>,
13713            ) -> Self {
13714                RevokeLayerShareLinkRequestOwnedView(inner)
13715            }
13716        }
13717        impl ::core::convert::From<RevokeLayerShareLinkRequestOwnedView>
13718        for ::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>> {
13719            fn from(wrapper: RevokeLayerShareLinkRequestOwnedView) -> Self {
13720                wrapper.0
13721            }
13722        }
13723        impl ::core::convert::AsRef<
13724            ::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>>,
13725        > for RevokeLayerShareLinkRequestOwnedView {
13726            fn as_ref(
13727                &self,
13728            ) -> &::buffa::OwnedView<RevokeLayerShareLinkRequestView<'static>> {
13729                &self.0
13730            }
13731        }
13732        impl ::buffa::HasMessageView for super::super::RevokeLayerShareLinkRequest {
13733            type View<'a> = RevokeLayerShareLinkRequestView<'a>;
13734            type ViewHandle = RevokeLayerShareLinkRequestOwnedView;
13735        }
13736        impl ::serde::Serialize for RevokeLayerShareLinkRequestOwnedView {
13737            fn serialize<__S: ::serde::Serializer>(
13738                &self,
13739                __s: __S,
13740            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13741                ::serde::Serialize::serialize(&self.0, __s)
13742            }
13743        }
13744        /// RevokeLayerShareLinkResponse is empty when the token was revoked.
13745        #[derive(Clone, Debug, Default)]
13746        pub struct RevokeLayerShareLinkResponseView<'a> {
13747            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
13748        }
13749        impl<'a> ::buffa::MessageView<'a> for RevokeLayerShareLinkResponseView<'a> {
13750            type Owned = super::super::RevokeLayerShareLinkResponse;
13751            fn decode_view(
13752                buf: &'a [u8],
13753            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13754                let __limit = ::core::cell::Cell::new(
13755                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
13756                );
13757                <Self as ::buffa::MessageView>::decode_view_ctx(
13758                    buf,
13759                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
13760                )
13761            }
13762            fn decode_view_with_ctx(
13763                buf: &'a [u8],
13764                ctx: ::buffa::DecodeContext<'_>,
13765            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13766                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
13767            }
13768            fn merge_view_field(
13769                &mut self,
13770                tag: ::buffa::encoding::Tag,
13771                cur: &'a [u8],
13772                before_tag: &'a [u8],
13773                ctx: ::buffa::DecodeContext<'_>,
13774            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
13775                let _ = ctx;
13776                #[allow(unused_variables)]
13777                let view = self;
13778                let mut cur = cur;
13779                match tag.field_number() {
13780                    _ => {
13781                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
13782                        let span_len = before_tag.len() - cur.len();
13783                        view.__buffa_unknown_fields
13784                            .push_record(before_tag, span_len, ctx)?;
13785                    }
13786                }
13787                ::core::result::Result::Ok(cur)
13788            }
13789            fn to_owned_message(
13790                &self,
13791            ) -> ::core::result::Result<
13792                super::super::RevokeLayerShareLinkResponse,
13793                ::buffa::DecodeError,
13794            > {
13795                self.to_owned_from_source(None)
13796            }
13797            #[allow(clippy::useless_conversion, clippy::needless_update)]
13798            fn to_owned_from_source(
13799                &self,
13800                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
13801            ) -> ::core::result::Result<
13802                super::super::RevokeLayerShareLinkResponse,
13803                ::buffa::DecodeError,
13804            > {
13805                #[allow(unused_imports)]
13806                use ::buffa::alloc::string::ToString as _;
13807                let _ = __buffa_src;
13808                ::core::result::Result::Ok(super::super::RevokeLayerShareLinkResponse {
13809                    __buffa_unknown_fields: self
13810                        .__buffa_unknown_fields
13811                        .to_owned()?
13812                        .into(),
13813                    ..::core::default::Default::default()
13814                })
13815            }
13816        }
13817        impl<'a> ::buffa::ViewEncode<'a> for RevokeLayerShareLinkResponseView<'a> {
13818            #[allow(clippy::needless_borrow, clippy::let_and_return)]
13819            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
13820                #[allow(unused_imports)]
13821                use ::buffa::Enumeration as _;
13822                let mut size = 0u32;
13823                size += self.__buffa_unknown_fields.encoded_len() as u32;
13824                size
13825            }
13826            #[allow(clippy::needless_borrow)]
13827            fn write_to(
13828                &self,
13829                _cache: &mut ::buffa::SizeCache,
13830                buf: &mut impl ::buffa::bytes::BufMut,
13831            ) {
13832                #[allow(unused_imports)]
13833                use ::buffa::Enumeration as _;
13834                self.__buffa_unknown_fields.write_to(buf);
13835            }
13836        }
13837        /// Serializes this view as protobuf JSON.
13838        ///
13839        /// Implicit-presence fields with default values are omitted, `required`
13840        /// fields are always emitted, explicit-presence (`optional`) fields are
13841        /// emitted only when set, bytes fields are base64-encoded, and enum
13842        /// values are their proto name strings.
13843        ///
13844        /// This impl uses `serialize_map(None)` because the number of emitted
13845        /// fields depends on default-omission rules; serializers that require
13846        /// known map lengths (e.g. `bincode`) will return a runtime error.
13847        /// Use the owned message type for those formats.
13848        impl<'__a> ::serde::Serialize for RevokeLayerShareLinkResponseView<'__a> {
13849            fn serialize<__S: ::serde::Serializer>(
13850                &self,
13851                __s: __S,
13852            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13853                use ::serde::ser::SerializeMap as _;
13854                let mut __map = __s.serialize_map(::core::option::Option::None)?;
13855                __map.end()
13856            }
13857        }
13858        impl<'a> ::buffa::MessageName for RevokeLayerShareLinkResponseView<'a> {
13859            const PACKAGE: &'static str = "polychart.v1";
13860            const NAME: &'static str = "RevokeLayerShareLinkResponse";
13861            const FULL_NAME: &'static str = "polychart.v1.RevokeLayerShareLinkResponse";
13862            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.RevokeLayerShareLinkResponse";
13863        }
13864        ::buffa::impl_default_view_instance!(RevokeLayerShareLinkResponseView);
13865        ::buffa::impl_view_reborrow!(RevokeLayerShareLinkResponseView);
13866        /** Self-contained, `'static` owned view of a `RevokeLayerShareLinkResponse` message.
13867
13868 Wraps [`::buffa::OwnedView`]`<`[`RevokeLayerShareLinkResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
13869
13870 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`RevokeLayerShareLinkResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
13871        #[derive(Clone, Debug)]
13872        pub struct RevokeLayerShareLinkResponseOwnedView(
13873            ::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>>,
13874        );
13875        impl RevokeLayerShareLinkResponseOwnedView {
13876            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
13877            ///
13878            /// The view borrows directly from the buffer's data; the buffer is
13879            /// retained inside the returned handle.
13880            ///
13881            /// # Errors
13882            ///
13883            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
13884            /// protobuf data.
13885            pub fn decode(
13886                bytes: ::buffa::bytes::Bytes,
13887            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13888                ::core::result::Result::Ok(
13889                    RevokeLayerShareLinkResponseOwnedView(
13890                        ::buffa::OwnedView::decode(bytes)?,
13891                    ),
13892                )
13893            }
13894            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
13895            /// max message size).
13896            ///
13897            /// # Errors
13898            ///
13899            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
13900            /// exceeds the configured limits.
13901            pub fn decode_with_options(
13902                bytes: ::buffa::bytes::Bytes,
13903                opts: &::buffa::DecodeOptions,
13904            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13905                ::core::result::Result::Ok(
13906                    RevokeLayerShareLinkResponseOwnedView(
13907                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
13908                    ),
13909                )
13910            }
13911            /// Build from an owned message via an encode → decode round-trip.
13912            ///
13913            /// # Errors
13914            ///
13915            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
13916            /// somehow invalid (should not happen for well-formed messages).
13917            pub fn from_owned(
13918                msg: &super::super::RevokeLayerShareLinkResponse,
13919            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
13920                ::core::result::Result::Ok(
13921                    RevokeLayerShareLinkResponseOwnedView(
13922                        ::buffa::OwnedView::from_owned(msg)?,
13923                    ),
13924                )
13925            }
13926            /// Borrow the full [`RevokeLayerShareLinkResponseView`] with its lifetime tied to `&self`.
13927            #[must_use]
13928            pub fn view(&self) -> &RevokeLayerShareLinkResponseView<'_> {
13929                self.0.reborrow()
13930            }
13931            /// Convert to the owned message type.
13932            ///
13933            /// # Errors
13934            ///
13935            /// Returns an error if re-materializing preserved unknown fields
13936            /// fails (e.g. the unknown-field limit is exceeded).
13937            pub fn to_owned_message(
13938                &self,
13939            ) -> ::core::result::Result<
13940                super::super::RevokeLayerShareLinkResponse,
13941                ::buffa::DecodeError,
13942            > {
13943                self.0.to_owned_message()
13944            }
13945            /// The underlying bytes buffer.
13946            #[must_use]
13947            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
13948                self.0.bytes()
13949            }
13950            /// Consume the handle, returning the underlying bytes buffer.
13951            #[must_use]
13952            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
13953                self.0.into_bytes()
13954            }
13955        }
13956        impl ::core::convert::From<
13957            ::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>>,
13958        > for RevokeLayerShareLinkResponseOwnedView {
13959            fn from(
13960                inner: ::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>>,
13961            ) -> Self {
13962                RevokeLayerShareLinkResponseOwnedView(inner)
13963            }
13964        }
13965        impl ::core::convert::From<RevokeLayerShareLinkResponseOwnedView>
13966        for ::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>> {
13967            fn from(wrapper: RevokeLayerShareLinkResponseOwnedView) -> Self {
13968                wrapper.0
13969            }
13970        }
13971        impl ::core::convert::AsRef<
13972            ::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>>,
13973        > for RevokeLayerShareLinkResponseOwnedView {
13974            fn as_ref(
13975                &self,
13976            ) -> &::buffa::OwnedView<RevokeLayerShareLinkResponseView<'static>> {
13977                &self.0
13978            }
13979        }
13980        impl ::buffa::HasMessageView for super::super::RevokeLayerShareLinkResponse {
13981            type View<'a> = RevokeLayerShareLinkResponseView<'a>;
13982            type ViewHandle = RevokeLayerShareLinkResponseOwnedView;
13983        }
13984        impl ::serde::Serialize for RevokeLayerShareLinkResponseOwnedView {
13985            fn serialize<__S: ::serde::Serializer>(
13986                &self,
13987                __s: __S,
13988            ) -> ::core::result::Result<__S::Ok, __S::Error> {
13989                ::serde::Serialize::serialize(&self.0, __s)
13990            }
13991        }
13992        /// =============================================================================
13993        /// Publications (listed discovery)
13994        /// =============================================================================
13995        ///
13996        /// PublishedLayer contains discovery metadata for a listed layer.
13997        #[derive(Clone, Debug, Default)]
13998        pub struct PublishedLayerView<'a> {
13999            /// Listed layer metadata.
14000            ///
14001            /// Field 1: `layer`
14002            pub layer: ::buffa::MessageFieldView<
14003                super::super::__buffa::view::LayerView<'a>,
14004            >,
14005            /// Public display title.
14006            ///
14007            /// Field 2: `title`
14008            pub title: &'a str,
14009            /// Public description shown with the layer.
14010            ///
14011            /// Field 3: `description`
14012            pub description: &'a str,
14013            /// Public tags used for grouping or filtering.
14014            ///
14015            /// Field 4: `tags`
14016            pub tags: ::buffa::RepeatedView<'a, &'a str>,
14017            /// Publication time in milliseconds since epoch (UTC).
14018            ///
14019            /// Field 5: `published_at_ms`
14020            pub published_at_ms: u64,
14021            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
14022        }
14023        impl<'a> ::buffa::MessageView<'a> for PublishedLayerView<'a> {
14024            type Owned = super::super::PublishedLayer;
14025            fn decode_view(
14026                buf: &'a [u8],
14027            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14028                let __limit = ::core::cell::Cell::new(
14029                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
14030                );
14031                <Self as ::buffa::MessageView>::decode_view_ctx(
14032                    buf,
14033                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
14034                )
14035            }
14036            fn decode_view_with_ctx(
14037                buf: &'a [u8],
14038                ctx: ::buffa::DecodeContext<'_>,
14039            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14040                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
14041            }
14042            fn merge_view_field(
14043                &mut self,
14044                tag: ::buffa::encoding::Tag,
14045                cur: &'a [u8],
14046                before_tag: &'a [u8],
14047                ctx: ::buffa::DecodeContext<'_>,
14048            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
14049                let _ = ctx;
14050                #[allow(unused_variables)]
14051                let view = self;
14052                let mut cur = cur;
14053                match tag.field_number() {
14054                    1u32 => {
14055                        ::buffa::encoding::check_wire_type(
14056                            tag,
14057                            ::buffa::encoding::WireType::LengthDelimited,
14058                        )?;
14059                        let __sub_ctx = ctx.descend()?;
14060                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
14061                        match view.layer.as_mut() {
14062                            Some(existing) => {
14063                                ::buffa::MessageView::merge_into_view(
14064                                    existing,
14065                                    sub,
14066                                    __sub_ctx,
14067                                )?
14068                            }
14069                            None => {
14070                                view.layer = ::buffa::MessageFieldView::set(
14071                                    <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
14072                                        sub,
14073                                        __sub_ctx,
14074                                    )?,
14075                                );
14076                            }
14077                        }
14078                    }
14079                    2u32 => {
14080                        ::buffa::encoding::check_wire_type(
14081                            tag,
14082                            ::buffa::encoding::WireType::LengthDelimited,
14083                        )?;
14084                        view.title = ::buffa::types::borrow_str(&mut cur)?;
14085                    }
14086                    3u32 => {
14087                        ::buffa::encoding::check_wire_type(
14088                            tag,
14089                            ::buffa::encoding::WireType::LengthDelimited,
14090                        )?;
14091                        view.description = ::buffa::types::borrow_str(&mut cur)?;
14092                    }
14093                    5u32 => {
14094                        ::buffa::encoding::check_wire_type(
14095                            tag,
14096                            ::buffa::encoding::WireType::Fixed64,
14097                        )?;
14098                        view.published_at_ms = ::buffa::types::decode_fixed64(&mut cur)?;
14099                    }
14100                    4u32 => {
14101                        ::buffa::encoding::check_wire_type(
14102                            tag,
14103                            ::buffa::encoding::WireType::LengthDelimited,
14104                        )?;
14105                        view.tags.push(::buffa::types::borrow_str(&mut cur)?);
14106                    }
14107                    _ => {
14108                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
14109                        let span_len = before_tag.len() - cur.len();
14110                        view.__buffa_unknown_fields
14111                            .push_record(before_tag, span_len, ctx)?;
14112                    }
14113                }
14114                ::core::result::Result::Ok(cur)
14115            }
14116            fn to_owned_message(
14117                &self,
14118            ) -> ::core::result::Result<
14119                super::super::PublishedLayer,
14120                ::buffa::DecodeError,
14121            > {
14122                self.to_owned_from_source(None)
14123            }
14124            #[allow(clippy::useless_conversion, clippy::needless_update)]
14125            fn to_owned_from_source(
14126                &self,
14127                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
14128            ) -> ::core::result::Result<
14129                super::super::PublishedLayer,
14130                ::buffa::DecodeError,
14131            > {
14132                #[allow(unused_imports)]
14133                use ::buffa::alloc::string::ToString as _;
14134                let _ = __buffa_src;
14135                ::core::result::Result::Ok(super::super::PublishedLayer {
14136                    layer: match self.layer.as_option() {
14137                        Some(v) => {
14138                            ::buffa::MessageField::<
14139                                super::super::Layer,
14140                            >::some(v.to_owned_from_source(__buffa_src)?)
14141                        }
14142                        None => ::buffa::MessageField::none(),
14143                    },
14144                    title: self.title.to_string(),
14145                    description: self.description.to_string(),
14146                    tags: self.tags.iter().map(|s| s.to_string()).collect(),
14147                    published_at_ms: self.published_at_ms,
14148                    __buffa_unknown_fields: self
14149                        .__buffa_unknown_fields
14150                        .to_owned()?
14151                        .into(),
14152                    ..::core::default::Default::default()
14153                })
14154            }
14155        }
14156        impl<'a> ::buffa::ViewEncode<'a> for PublishedLayerView<'a> {
14157            #[allow(clippy::needless_borrow, clippy::let_and_return)]
14158            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
14159                #[allow(unused_imports)]
14160                use ::buffa::Enumeration as _;
14161                let mut size = 0u32;
14162                if self.layer.is_set() {
14163                    let __slot = __cache.reserve();
14164                    let inner_size = self.layer.compute_size(__cache);
14165                    __cache.set(__slot, inner_size);
14166                    size
14167                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
14168                            + inner_size;
14169                }
14170                if !self.title.is_empty() {
14171                    size
14172                        += 1u32 + ::buffa::types::string_encoded_len(&self.title) as u32;
14173                }
14174                if !self.description.is_empty() {
14175                    size
14176                        += 1u32
14177                            + ::buffa::types::string_encoded_len(&self.description)
14178                                as u32;
14179                }
14180                for v in &self.tags {
14181                    size += 1u32 + ::buffa::types::string_encoded_len(v) as u32;
14182                }
14183                if self.published_at_ms != 0u64 {
14184                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
14185                }
14186                size += self.__buffa_unknown_fields.encoded_len() as u32;
14187                size
14188            }
14189            #[allow(clippy::needless_borrow)]
14190            fn write_to(
14191                &self,
14192                __cache: &mut ::buffa::SizeCache,
14193                buf: &mut impl ::buffa::bytes::BufMut,
14194            ) {
14195                #[allow(unused_imports)]
14196                use ::buffa::Enumeration as _;
14197                if self.layer.is_set() {
14198                    ::buffa::types::put_len_delimited_header(
14199                        1u32,
14200                        __cache.consume_next(),
14201                        buf,
14202                    );
14203                    self.layer.write_to(__cache, buf);
14204                }
14205                if !self.title.is_empty() {
14206                    ::buffa::types::put_string_field(2u32, &self.title, buf);
14207                }
14208                if !self.description.is_empty() {
14209                    ::buffa::types::put_string_field(3u32, &self.description, buf);
14210                }
14211                for v in &self.tags {
14212                    ::buffa::types::put_string_field(4u32, v, buf);
14213                }
14214                if self.published_at_ms != 0u64 {
14215                    ::buffa::types::put_fixed64_field(5u32, self.published_at_ms, buf);
14216                }
14217                self.__buffa_unknown_fields.write_to(buf);
14218            }
14219        }
14220        /// Serializes this view as protobuf JSON.
14221        ///
14222        /// Implicit-presence fields with default values are omitted, `required`
14223        /// fields are always emitted, explicit-presence (`optional`) fields are
14224        /// emitted only when set, bytes fields are base64-encoded, and enum
14225        /// values are their proto name strings.
14226        ///
14227        /// This impl uses `serialize_map(None)` because the number of emitted
14228        /// fields depends on default-omission rules; serializers that require
14229        /// known map lengths (e.g. `bincode`) will return a runtime error.
14230        /// Use the owned message type for those formats.
14231        impl<'__a> ::serde::Serialize for PublishedLayerView<'__a> {
14232            fn serialize<__S: ::serde::Serializer>(
14233                &self,
14234                __s: __S,
14235            ) -> ::core::result::Result<__S::Ok, __S::Error> {
14236                use ::serde::ser::SerializeMap as _;
14237                let mut __map = __s.serialize_map(::core::option::Option::None)?;
14238                {
14239                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
14240                        __map.serialize_entry("layer", __v)?;
14241                    }
14242                }
14243                if !::buffa::json_helpers::skip_if::is_empty_str(self.title) {
14244                    __map.serialize_entry("title", self.title)?;
14245                }
14246                if !::buffa::json_helpers::skip_if::is_empty_str(self.description) {
14247                    __map.serialize_entry("description", self.description)?;
14248                }
14249                if !self.tags.is_empty() {
14250                    __map.serialize_entry("tags", &*self.tags)?;
14251                }
14252                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.published_at_ms) {
14253                    __map
14254                        .serialize_entry(
14255                            "publishedAtMs",
14256                            &::buffa::json_helpers::ProtoJson(&self.published_at_ms),
14257                        )?;
14258                }
14259                __map.end()
14260            }
14261        }
14262        impl<'a> ::buffa::MessageName for PublishedLayerView<'a> {
14263            const PACKAGE: &'static str = "polychart.v1";
14264            const NAME: &'static str = "PublishedLayer";
14265            const FULL_NAME: &'static str = "polychart.v1.PublishedLayer";
14266            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishedLayer";
14267        }
14268        ::buffa::impl_default_view_instance!(PublishedLayerView);
14269        ::buffa::impl_view_reborrow!(PublishedLayerView);
14270        /** Self-contained, `'static` owned view of a `PublishedLayer` message.
14271
14272 Wraps [`::buffa::OwnedView`]`<`[`PublishedLayerView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
14273
14274 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`PublishedLayerView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
14275        #[derive(Clone, Debug)]
14276        pub struct PublishedLayerOwnedView(
14277            ::buffa::OwnedView<PublishedLayerView<'static>>,
14278        );
14279        impl PublishedLayerOwnedView {
14280            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
14281            ///
14282            /// The view borrows directly from the buffer's data; the buffer is
14283            /// retained inside the returned handle.
14284            ///
14285            /// # Errors
14286            ///
14287            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
14288            /// protobuf data.
14289            pub fn decode(
14290                bytes: ::buffa::bytes::Bytes,
14291            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14292                ::core::result::Result::Ok(
14293                    PublishedLayerOwnedView(::buffa::OwnedView::decode(bytes)?),
14294                )
14295            }
14296            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
14297            /// max message size).
14298            ///
14299            /// # Errors
14300            ///
14301            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
14302            /// exceeds the configured limits.
14303            pub fn decode_with_options(
14304                bytes: ::buffa::bytes::Bytes,
14305                opts: &::buffa::DecodeOptions,
14306            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14307                ::core::result::Result::Ok(
14308                    PublishedLayerOwnedView(
14309                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
14310                    ),
14311                )
14312            }
14313            /// Build from an owned message via an encode → decode round-trip.
14314            ///
14315            /// # Errors
14316            ///
14317            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
14318            /// somehow invalid (should not happen for well-formed messages).
14319            pub fn from_owned(
14320                msg: &super::super::PublishedLayer,
14321            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14322                ::core::result::Result::Ok(
14323                    PublishedLayerOwnedView(::buffa::OwnedView::from_owned(msg)?),
14324                )
14325            }
14326            /// Borrow the full [`PublishedLayerView`] with its lifetime tied to `&self`.
14327            #[must_use]
14328            pub fn view(&self) -> &PublishedLayerView<'_> {
14329                self.0.reborrow()
14330            }
14331            /// Convert to the owned message type.
14332            ///
14333            /// # Errors
14334            ///
14335            /// Returns an error if re-materializing preserved unknown fields
14336            /// fails (e.g. the unknown-field limit is exceeded).
14337            pub fn to_owned_message(
14338                &self,
14339            ) -> ::core::result::Result<
14340                super::super::PublishedLayer,
14341                ::buffa::DecodeError,
14342            > {
14343                self.0.to_owned_message()
14344            }
14345            /// The underlying bytes buffer.
14346            #[must_use]
14347            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
14348                self.0.bytes()
14349            }
14350            /// Consume the handle, returning the underlying bytes buffer.
14351            #[must_use]
14352            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
14353                self.0.into_bytes()
14354            }
14355            /// Listed layer metadata.
14356            ///
14357            /// Field 1: `layer`
14358            #[must_use]
14359            pub fn layer(
14360                &self,
14361            ) -> &::buffa::MessageFieldView<super::super::__buffa::view::LayerView<'_>> {
14362                &self.0.reborrow().layer
14363            }
14364            /// Public display title.
14365            ///
14366            /// Field 2: `title`
14367            #[must_use]
14368            pub fn title(&self) -> &'_ str {
14369                self.0.reborrow().title
14370            }
14371            /// Public description shown with the layer.
14372            ///
14373            /// Field 3: `description`
14374            #[must_use]
14375            pub fn description(&self) -> &'_ str {
14376                self.0.reborrow().description
14377            }
14378            /// Public tags used for grouping or filtering.
14379            ///
14380            /// Field 4: `tags`
14381            #[must_use]
14382            pub fn tags(&self) -> &::buffa::RepeatedView<'_, &'_ str> {
14383                &self.0.reborrow().tags
14384            }
14385            /// Publication time in milliseconds since epoch (UTC).
14386            ///
14387            /// Field 5: `published_at_ms`
14388            #[must_use]
14389            pub fn published_at_ms(&self) -> u64 {
14390                self.0.reborrow().published_at_ms
14391            }
14392        }
14393        impl ::core::convert::From<::buffa::OwnedView<PublishedLayerView<'static>>>
14394        for PublishedLayerOwnedView {
14395            fn from(inner: ::buffa::OwnedView<PublishedLayerView<'static>>) -> Self {
14396                PublishedLayerOwnedView(inner)
14397            }
14398        }
14399        impl ::core::convert::From<PublishedLayerOwnedView>
14400        for ::buffa::OwnedView<PublishedLayerView<'static>> {
14401            fn from(wrapper: PublishedLayerOwnedView) -> Self {
14402                wrapper.0
14403            }
14404        }
14405        impl ::core::convert::AsRef<::buffa::OwnedView<PublishedLayerView<'static>>>
14406        for PublishedLayerOwnedView {
14407            fn as_ref(&self) -> &::buffa::OwnedView<PublishedLayerView<'static>> {
14408                &self.0
14409            }
14410        }
14411        impl ::buffa::HasMessageView for super::super::PublishedLayer {
14412            type View<'a> = PublishedLayerView<'a>;
14413            type ViewHandle = PublishedLayerOwnedView;
14414        }
14415        impl ::serde::Serialize for PublishedLayerOwnedView {
14416            fn serialize<__S: ::serde::Serializer>(
14417                &self,
14418                __s: __S,
14419            ) -> ::core::result::Result<__S::Ok, __S::Error> {
14420                ::serde::Serialize::serialize(&self.0, __s)
14421            }
14422        }
14423        /// ListOwnerPublishedLayersRequest lists discoverable layers for one owner.
14424        #[derive(Clone, Debug, Default)]
14425        pub struct ListOwnerPublishedLayersRequestView<'a> {
14426            /// Owner account whose published layers should be listed.
14427            ///
14428            /// Field 1: `owner_id`
14429            pub owner_id: u64,
14430            /// Optional market filter.
14431            ///
14432            /// Field 2: `engine_symbol_id`
14433            pub engine_symbol_id: ::core::option::Option<u32>,
14434            /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
14435            /// is 500.
14436            ///
14437            /// Field 3: `limit`
14438            pub limit: u32,
14439            /// Opaque keyset cursor from a previous response. The cursor is exclusive and
14440            /// bound to owner, market filter, and newest-published sort order.
14441            ///
14442            /// Field 4: `page_token`
14443            pub page_token: &'a str,
14444            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
14445        }
14446        impl<'a> ::buffa::MessageView<'a> for ListOwnerPublishedLayersRequestView<'a> {
14447            type Owned = super::super::ListOwnerPublishedLayersRequest;
14448            fn decode_view(
14449                buf: &'a [u8],
14450            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14451                let __limit = ::core::cell::Cell::new(
14452                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
14453                );
14454                <Self as ::buffa::MessageView>::decode_view_ctx(
14455                    buf,
14456                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
14457                )
14458            }
14459            fn decode_view_with_ctx(
14460                buf: &'a [u8],
14461                ctx: ::buffa::DecodeContext<'_>,
14462            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14463                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
14464            }
14465            fn merge_view_field(
14466                &mut self,
14467                tag: ::buffa::encoding::Tag,
14468                cur: &'a [u8],
14469                before_tag: &'a [u8],
14470                ctx: ::buffa::DecodeContext<'_>,
14471            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
14472                let _ = ctx;
14473                #[allow(unused_variables)]
14474                let view = self;
14475                let mut cur = cur;
14476                match tag.field_number() {
14477                    1u32 => {
14478                        ::buffa::encoding::check_wire_type(
14479                            tag,
14480                            ::buffa::encoding::WireType::Fixed64,
14481                        )?;
14482                        view.owner_id = ::buffa::types::decode_fixed64(&mut cur)?;
14483                    }
14484                    2u32 => {
14485                        ::buffa::encoding::check_wire_type(
14486                            tag,
14487                            ::buffa::encoding::WireType::Varint,
14488                        )?;
14489                        view.engine_symbol_id = Some(
14490                            ::buffa::types::decode_uint32(&mut cur)?,
14491                        );
14492                    }
14493                    3u32 => {
14494                        ::buffa::encoding::check_wire_type(
14495                            tag,
14496                            ::buffa::encoding::WireType::Varint,
14497                        )?;
14498                        view.limit = ::buffa::types::decode_uint32(&mut cur)?;
14499                    }
14500                    4u32 => {
14501                        ::buffa::encoding::check_wire_type(
14502                            tag,
14503                            ::buffa::encoding::WireType::LengthDelimited,
14504                        )?;
14505                        view.page_token = ::buffa::types::borrow_str(&mut cur)?;
14506                    }
14507                    _ => {
14508                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
14509                        let span_len = before_tag.len() - cur.len();
14510                        view.__buffa_unknown_fields
14511                            .push_record(before_tag, span_len, ctx)?;
14512                    }
14513                }
14514                ::core::result::Result::Ok(cur)
14515            }
14516            fn to_owned_message(
14517                &self,
14518            ) -> ::core::result::Result<
14519                super::super::ListOwnerPublishedLayersRequest,
14520                ::buffa::DecodeError,
14521            > {
14522                self.to_owned_from_source(None)
14523            }
14524            #[allow(clippy::useless_conversion, clippy::needless_update)]
14525            fn to_owned_from_source(
14526                &self,
14527                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
14528            ) -> ::core::result::Result<
14529                super::super::ListOwnerPublishedLayersRequest,
14530                ::buffa::DecodeError,
14531            > {
14532                #[allow(unused_imports)]
14533                use ::buffa::alloc::string::ToString as _;
14534                let _ = __buffa_src;
14535                ::core::result::Result::Ok(super::super::ListOwnerPublishedLayersRequest {
14536                    owner_id: self.owner_id,
14537                    engine_symbol_id: self.engine_symbol_id,
14538                    limit: self.limit,
14539                    page_token: self.page_token.to_string(),
14540                    __buffa_unknown_fields: self
14541                        .__buffa_unknown_fields
14542                        .to_owned()?
14543                        .into(),
14544                    ..::core::default::Default::default()
14545                })
14546            }
14547        }
14548        impl<'a> ::buffa::ViewEncode<'a> for ListOwnerPublishedLayersRequestView<'a> {
14549            #[allow(clippy::needless_borrow, clippy::let_and_return)]
14550            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
14551                #[allow(unused_imports)]
14552                use ::buffa::Enumeration as _;
14553                let mut size = 0u32;
14554                if self.owner_id != 0u64 {
14555                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
14556                }
14557                if let Some(v) = self.engine_symbol_id {
14558                    size += 1u32 + ::buffa::types::uint32_encoded_len(v) as u32;
14559                }
14560                if self.limit != 0u32 {
14561                    size += 1u32 + ::buffa::types::uint32_encoded_len(self.limit) as u32;
14562                }
14563                if !self.page_token.is_empty() {
14564                    size
14565                        += 1u32
14566                            + ::buffa::types::string_encoded_len(&self.page_token)
14567                                as u32;
14568                }
14569                size += self.__buffa_unknown_fields.encoded_len() as u32;
14570                size
14571            }
14572            #[allow(clippy::needless_borrow)]
14573            fn write_to(
14574                &self,
14575                _cache: &mut ::buffa::SizeCache,
14576                buf: &mut impl ::buffa::bytes::BufMut,
14577            ) {
14578                #[allow(unused_imports)]
14579                use ::buffa::Enumeration as _;
14580                if self.owner_id != 0u64 {
14581                    ::buffa::types::put_fixed64_field(1u32, self.owner_id, buf);
14582                }
14583                if let Some(v) = self.engine_symbol_id {
14584                    ::buffa::types::put_uint32_field(2u32, v, buf);
14585                }
14586                if self.limit != 0u32 {
14587                    ::buffa::types::put_uint32_field(3u32, self.limit, buf);
14588                }
14589                if !self.page_token.is_empty() {
14590                    ::buffa::types::put_string_field(4u32, &self.page_token, buf);
14591                }
14592                self.__buffa_unknown_fields.write_to(buf);
14593            }
14594        }
14595        /// Serializes this view as protobuf JSON.
14596        ///
14597        /// Implicit-presence fields with default values are omitted, `required`
14598        /// fields are always emitted, explicit-presence (`optional`) fields are
14599        /// emitted only when set, bytes fields are base64-encoded, and enum
14600        /// values are their proto name strings.
14601        ///
14602        /// This impl uses `serialize_map(None)` because the number of emitted
14603        /// fields depends on default-omission rules; serializers that require
14604        /// known map lengths (e.g. `bincode`) will return a runtime error.
14605        /// Use the owned message type for those formats.
14606        impl<'__a> ::serde::Serialize for ListOwnerPublishedLayersRequestView<'__a> {
14607            fn serialize<__S: ::serde::Serializer>(
14608                &self,
14609                __s: __S,
14610            ) -> ::core::result::Result<__S::Ok, __S::Error> {
14611                use ::serde::ser::SerializeMap as _;
14612                let mut __map = __s.serialize_map(::core::option::Option::None)?;
14613                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.owner_id) {
14614                    __map
14615                        .serialize_entry(
14616                            "ownerId",
14617                            &::buffa::json_helpers::ProtoJson(&self.owner_id),
14618                        )?;
14619                }
14620                if let ::core::option::Option::Some(__v) = self.engine_symbol_id {
14621                    __map
14622                        .serialize_entry(
14623                            "engineSymbolId",
14624                            &::buffa::json_helpers::ProtoJson(&__v),
14625                        )?;
14626                }
14627                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.limit) {
14628                    __map
14629                        .serialize_entry(
14630                            "limit",
14631                            &::buffa::json_helpers::ProtoJson(&self.limit),
14632                        )?;
14633                }
14634                if !::buffa::json_helpers::skip_if::is_empty_str(self.page_token) {
14635                    __map.serialize_entry("pageToken", self.page_token)?;
14636                }
14637                __map.end()
14638            }
14639        }
14640        impl<'a> ::buffa::MessageName for ListOwnerPublishedLayersRequestView<'a> {
14641            const PACKAGE: &'static str = "polychart.v1";
14642            const NAME: &'static str = "ListOwnerPublishedLayersRequest";
14643            const FULL_NAME: &'static str = "polychart.v1.ListOwnerPublishedLayersRequest";
14644            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersRequest";
14645        }
14646        ::buffa::impl_default_view_instance!(ListOwnerPublishedLayersRequestView);
14647        ::buffa::impl_view_reborrow!(ListOwnerPublishedLayersRequestView);
14648        /** Self-contained, `'static` owned view of a `ListOwnerPublishedLayersRequest` message.
14649
14650 Wraps [`::buffa::OwnedView`]`<`[`ListOwnerPublishedLayersRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
14651
14652 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ListOwnerPublishedLayersRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
14653        #[derive(Clone, Debug)]
14654        pub struct ListOwnerPublishedLayersRequestOwnedView(
14655            ::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>>,
14656        );
14657        impl ListOwnerPublishedLayersRequestOwnedView {
14658            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
14659            ///
14660            /// The view borrows directly from the buffer's data; the buffer is
14661            /// retained inside the returned handle.
14662            ///
14663            /// # Errors
14664            ///
14665            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
14666            /// protobuf data.
14667            pub fn decode(
14668                bytes: ::buffa::bytes::Bytes,
14669            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14670                ::core::result::Result::Ok(
14671                    ListOwnerPublishedLayersRequestOwnedView(
14672                        ::buffa::OwnedView::decode(bytes)?,
14673                    ),
14674                )
14675            }
14676            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
14677            /// max message size).
14678            ///
14679            /// # Errors
14680            ///
14681            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
14682            /// exceeds the configured limits.
14683            pub fn decode_with_options(
14684                bytes: ::buffa::bytes::Bytes,
14685                opts: &::buffa::DecodeOptions,
14686            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14687                ::core::result::Result::Ok(
14688                    ListOwnerPublishedLayersRequestOwnedView(
14689                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
14690                    ),
14691                )
14692            }
14693            /// Build from an owned message via an encode → decode round-trip.
14694            ///
14695            /// # Errors
14696            ///
14697            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
14698            /// somehow invalid (should not happen for well-formed messages).
14699            pub fn from_owned(
14700                msg: &super::super::ListOwnerPublishedLayersRequest,
14701            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14702                ::core::result::Result::Ok(
14703                    ListOwnerPublishedLayersRequestOwnedView(
14704                        ::buffa::OwnedView::from_owned(msg)?,
14705                    ),
14706                )
14707            }
14708            /// Borrow the full [`ListOwnerPublishedLayersRequestView`] with its lifetime tied to `&self`.
14709            #[must_use]
14710            pub fn view(&self) -> &ListOwnerPublishedLayersRequestView<'_> {
14711                self.0.reborrow()
14712            }
14713            /// Convert to the owned message type.
14714            ///
14715            /// # Errors
14716            ///
14717            /// Returns an error if re-materializing preserved unknown fields
14718            /// fails (e.g. the unknown-field limit is exceeded).
14719            pub fn to_owned_message(
14720                &self,
14721            ) -> ::core::result::Result<
14722                super::super::ListOwnerPublishedLayersRequest,
14723                ::buffa::DecodeError,
14724            > {
14725                self.0.to_owned_message()
14726            }
14727            /// The underlying bytes buffer.
14728            #[must_use]
14729            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
14730                self.0.bytes()
14731            }
14732            /// Consume the handle, returning the underlying bytes buffer.
14733            #[must_use]
14734            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
14735                self.0.into_bytes()
14736            }
14737            /// Owner account whose published layers should be listed.
14738            ///
14739            /// Field 1: `owner_id`
14740            #[must_use]
14741            pub fn owner_id(&self) -> u64 {
14742                self.0.reborrow().owner_id
14743            }
14744            /// Optional market filter.
14745            ///
14746            /// Field 2: `engine_symbol_id`
14747            #[must_use]
14748            pub fn engine_symbol_id(&self) -> ::core::option::Option<u32> {
14749                self.0.reborrow().engine_symbol_id
14750            }
14751            /// Maximum number of layers to return. Defaults to 100 when omitted; maximum
14752            /// is 500.
14753            ///
14754            /// Field 3: `limit`
14755            #[must_use]
14756            pub fn limit(&self) -> u32 {
14757                self.0.reborrow().limit
14758            }
14759            /// Opaque keyset cursor from a previous response. The cursor is exclusive and
14760            /// bound to owner, market filter, and newest-published sort order.
14761            ///
14762            /// Field 4: `page_token`
14763            #[must_use]
14764            pub fn page_token(&self) -> &'_ str {
14765                self.0.reborrow().page_token
14766            }
14767        }
14768        impl ::core::convert::From<
14769            ::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>>,
14770        > for ListOwnerPublishedLayersRequestOwnedView {
14771            fn from(
14772                inner: ::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>>,
14773            ) -> Self {
14774                ListOwnerPublishedLayersRequestOwnedView(inner)
14775            }
14776        }
14777        impl ::core::convert::From<ListOwnerPublishedLayersRequestOwnedView>
14778        for ::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>> {
14779            fn from(wrapper: ListOwnerPublishedLayersRequestOwnedView) -> Self {
14780                wrapper.0
14781            }
14782        }
14783        impl ::core::convert::AsRef<
14784            ::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>>,
14785        > for ListOwnerPublishedLayersRequestOwnedView {
14786            fn as_ref(
14787                &self,
14788            ) -> &::buffa::OwnedView<ListOwnerPublishedLayersRequestView<'static>> {
14789                &self.0
14790            }
14791        }
14792        impl ::buffa::HasMessageView for super::super::ListOwnerPublishedLayersRequest {
14793            type View<'a> = ListOwnerPublishedLayersRequestView<'a>;
14794            type ViewHandle = ListOwnerPublishedLayersRequestOwnedView;
14795        }
14796        impl ::serde::Serialize for ListOwnerPublishedLayersRequestOwnedView {
14797            fn serialize<__S: ::serde::Serializer>(
14798                &self,
14799                __s: __S,
14800            ) -> ::core::result::Result<__S::Ok, __S::Error> {
14801                ::serde::Serialize::serialize(&self.0, __s)
14802            }
14803        }
14804        /// ListOwnerPublishedLayersResponse contains one page of discoverable layers.
14805        #[derive(Clone, Debug, Default)]
14806        pub struct ListOwnerPublishedLayersResponseView<'a> {
14807            /// Published layers, returned newest-published first.
14808            ///
14809            /// Field 1: `layers`
14810            pub layers: ::buffa::RepeatedView<
14811                'a,
14812                super::super::__buffa::view::PublishedLayerView<'a>,
14813            >,
14814            /// Opaque cursor for the next page. Empty when no more results exist.
14815            ///
14816            /// Field 2: `next_page_token`
14817            pub next_page_token: &'a str,
14818            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
14819        }
14820        impl<'a> ::buffa::MessageView<'a> for ListOwnerPublishedLayersResponseView<'a> {
14821            type Owned = super::super::ListOwnerPublishedLayersResponse;
14822            fn decode_view(
14823                buf: &'a [u8],
14824            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14825                let __limit = ::core::cell::Cell::new(
14826                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
14827                );
14828                <Self as ::buffa::MessageView>::decode_view_ctx(
14829                    buf,
14830                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
14831                )
14832            }
14833            fn decode_view_with_ctx(
14834                buf: &'a [u8],
14835                ctx: ::buffa::DecodeContext<'_>,
14836            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
14837                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
14838            }
14839            fn merge_view_field(
14840                &mut self,
14841                tag: ::buffa::encoding::Tag,
14842                cur: &'a [u8],
14843                before_tag: &'a [u8],
14844                ctx: ::buffa::DecodeContext<'_>,
14845            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
14846                let _ = ctx;
14847                #[allow(unused_variables)]
14848                let view = self;
14849                let mut cur = cur;
14850                match tag.field_number() {
14851                    2u32 => {
14852                        ::buffa::encoding::check_wire_type(
14853                            tag,
14854                            ::buffa::encoding::WireType::LengthDelimited,
14855                        )?;
14856                        view.next_page_token = ::buffa::types::borrow_str(&mut cur)?;
14857                    }
14858                    1u32 => {
14859                        ::buffa::encoding::check_wire_type(
14860                            tag,
14861                            ::buffa::encoding::WireType::LengthDelimited,
14862                        )?;
14863                        let __sub_ctx = ctx.descend()?;
14864                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
14865                        view.layers
14866                            .push(
14867                                <super::super::__buffa::view::PublishedLayerView as ::buffa::MessageView>::decode_view_ctx(
14868                                    sub,
14869                                    __sub_ctx,
14870                                )?,
14871                            );
14872                    }
14873                    _ => {
14874                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
14875                        let span_len = before_tag.len() - cur.len();
14876                        view.__buffa_unknown_fields
14877                            .push_record(before_tag, span_len, ctx)?;
14878                    }
14879                }
14880                ::core::result::Result::Ok(cur)
14881            }
14882            fn to_owned_message(
14883                &self,
14884            ) -> ::core::result::Result<
14885                super::super::ListOwnerPublishedLayersResponse,
14886                ::buffa::DecodeError,
14887            > {
14888                self.to_owned_from_source(None)
14889            }
14890            #[allow(clippy::useless_conversion, clippy::needless_update)]
14891            fn to_owned_from_source(
14892                &self,
14893                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
14894            ) -> ::core::result::Result<
14895                super::super::ListOwnerPublishedLayersResponse,
14896                ::buffa::DecodeError,
14897            > {
14898                #[allow(unused_imports)]
14899                use ::buffa::alloc::string::ToString as _;
14900                let _ = __buffa_src;
14901                ::core::result::Result::Ok(super::super::ListOwnerPublishedLayersResponse {
14902                    layers: self
14903                        .layers
14904                        .iter()
14905                        .map(|v| v.to_owned_from_source(__buffa_src))
14906                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
14907                    next_page_token: self.next_page_token.to_string(),
14908                    __buffa_unknown_fields: self
14909                        .__buffa_unknown_fields
14910                        .to_owned()?
14911                        .into(),
14912                    ..::core::default::Default::default()
14913                })
14914            }
14915        }
14916        impl<'a> ::buffa::ViewEncode<'a> for ListOwnerPublishedLayersResponseView<'a> {
14917            #[allow(clippy::needless_borrow, clippy::let_and_return)]
14918            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
14919                #[allow(unused_imports)]
14920                use ::buffa::Enumeration as _;
14921                let mut size = 0u32;
14922                for v in &self.layers {
14923                    let __slot = __cache.reserve();
14924                    let inner_size = v.compute_size(__cache);
14925                    __cache.set(__slot, inner_size);
14926                    size
14927                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
14928                            + inner_size;
14929                }
14930                if !self.next_page_token.is_empty() {
14931                    size
14932                        += 1u32
14933                            + ::buffa::types::string_encoded_len(&self.next_page_token)
14934                                as u32;
14935                }
14936                size += self.__buffa_unknown_fields.encoded_len() as u32;
14937                size
14938            }
14939            #[allow(clippy::needless_borrow)]
14940            fn write_to(
14941                &self,
14942                __cache: &mut ::buffa::SizeCache,
14943                buf: &mut impl ::buffa::bytes::BufMut,
14944            ) {
14945                #[allow(unused_imports)]
14946                use ::buffa::Enumeration as _;
14947                for v in &self.layers {
14948                    ::buffa::types::put_len_delimited_header(
14949                        1u32,
14950                        __cache.consume_next(),
14951                        buf,
14952                    );
14953                    v.write_to(__cache, buf);
14954                }
14955                if !self.next_page_token.is_empty() {
14956                    ::buffa::types::put_string_field(2u32, &self.next_page_token, buf);
14957                }
14958                self.__buffa_unknown_fields.write_to(buf);
14959            }
14960        }
14961        /// Serializes this view as protobuf JSON.
14962        ///
14963        /// Implicit-presence fields with default values are omitted, `required`
14964        /// fields are always emitted, explicit-presence (`optional`) fields are
14965        /// emitted only when set, bytes fields are base64-encoded, and enum
14966        /// values are their proto name strings.
14967        ///
14968        /// This impl uses `serialize_map(None)` because the number of emitted
14969        /// fields depends on default-omission rules; serializers that require
14970        /// known map lengths (e.g. `bincode`) will return a runtime error.
14971        /// Use the owned message type for those formats.
14972        impl<'__a> ::serde::Serialize for ListOwnerPublishedLayersResponseView<'__a> {
14973            fn serialize<__S: ::serde::Serializer>(
14974                &self,
14975                __s: __S,
14976            ) -> ::core::result::Result<__S::Ok, __S::Error> {
14977                use ::serde::ser::SerializeMap as _;
14978                let mut __map = __s.serialize_map(::core::option::Option::None)?;
14979                if !self.layers.is_empty() {
14980                    __map.serialize_entry("layers", &*self.layers)?;
14981                }
14982                if !::buffa::json_helpers::skip_if::is_empty_str(self.next_page_token) {
14983                    __map.serialize_entry("nextPageToken", self.next_page_token)?;
14984                }
14985                __map.end()
14986            }
14987        }
14988        impl<'a> ::buffa::MessageName for ListOwnerPublishedLayersResponseView<'a> {
14989            const PACKAGE: &'static str = "polychart.v1";
14990            const NAME: &'static str = "ListOwnerPublishedLayersResponse";
14991            const FULL_NAME: &'static str = "polychart.v1.ListOwnerPublishedLayersResponse";
14992            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.ListOwnerPublishedLayersResponse";
14993        }
14994        ::buffa::impl_default_view_instance!(ListOwnerPublishedLayersResponseView);
14995        ::buffa::impl_view_reborrow!(ListOwnerPublishedLayersResponseView);
14996        /** Self-contained, `'static` owned view of a `ListOwnerPublishedLayersResponse` message.
14997
14998 Wraps [`::buffa::OwnedView`]`<`[`ListOwnerPublishedLayersResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
14999
15000 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`ListOwnerPublishedLayersResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
15001        #[derive(Clone, Debug)]
15002        pub struct ListOwnerPublishedLayersResponseOwnedView(
15003            ::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>>,
15004        );
15005        impl ListOwnerPublishedLayersResponseOwnedView {
15006            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
15007            ///
15008            /// The view borrows directly from the buffer's data; the buffer is
15009            /// retained inside the returned handle.
15010            ///
15011            /// # Errors
15012            ///
15013            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
15014            /// protobuf data.
15015            pub fn decode(
15016                bytes: ::buffa::bytes::Bytes,
15017            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15018                ::core::result::Result::Ok(
15019                    ListOwnerPublishedLayersResponseOwnedView(
15020                        ::buffa::OwnedView::decode(bytes)?,
15021                    ),
15022                )
15023            }
15024            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
15025            /// max message size).
15026            ///
15027            /// # Errors
15028            ///
15029            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
15030            /// exceeds the configured limits.
15031            pub fn decode_with_options(
15032                bytes: ::buffa::bytes::Bytes,
15033                opts: &::buffa::DecodeOptions,
15034            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15035                ::core::result::Result::Ok(
15036                    ListOwnerPublishedLayersResponseOwnedView(
15037                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
15038                    ),
15039                )
15040            }
15041            /// Build from an owned message via an encode → decode round-trip.
15042            ///
15043            /// # Errors
15044            ///
15045            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
15046            /// somehow invalid (should not happen for well-formed messages).
15047            pub fn from_owned(
15048                msg: &super::super::ListOwnerPublishedLayersResponse,
15049            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15050                ::core::result::Result::Ok(
15051                    ListOwnerPublishedLayersResponseOwnedView(
15052                        ::buffa::OwnedView::from_owned(msg)?,
15053                    ),
15054                )
15055            }
15056            /// Borrow the full [`ListOwnerPublishedLayersResponseView`] with its lifetime tied to `&self`.
15057            #[must_use]
15058            pub fn view(&self) -> &ListOwnerPublishedLayersResponseView<'_> {
15059                self.0.reborrow()
15060            }
15061            /// Convert to the owned message type.
15062            ///
15063            /// # Errors
15064            ///
15065            /// Returns an error if re-materializing preserved unknown fields
15066            /// fails (e.g. the unknown-field limit is exceeded).
15067            pub fn to_owned_message(
15068                &self,
15069            ) -> ::core::result::Result<
15070                super::super::ListOwnerPublishedLayersResponse,
15071                ::buffa::DecodeError,
15072            > {
15073                self.0.to_owned_message()
15074            }
15075            /// The underlying bytes buffer.
15076            #[must_use]
15077            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
15078                self.0.bytes()
15079            }
15080            /// Consume the handle, returning the underlying bytes buffer.
15081            #[must_use]
15082            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
15083                self.0.into_bytes()
15084            }
15085            /// Published layers, returned newest-published first.
15086            ///
15087            /// Field 1: `layers`
15088            #[must_use]
15089            pub fn layers(
15090                &self,
15091            ) -> &::buffa::RepeatedView<
15092                '_,
15093                super::super::__buffa::view::PublishedLayerView<'_>,
15094            > {
15095                &self.0.reborrow().layers
15096            }
15097            /// Opaque cursor for the next page. Empty when no more results exist.
15098            ///
15099            /// Field 2: `next_page_token`
15100            #[must_use]
15101            pub fn next_page_token(&self) -> &'_ str {
15102                self.0.reborrow().next_page_token
15103            }
15104        }
15105        impl ::core::convert::From<
15106            ::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>>,
15107        > for ListOwnerPublishedLayersResponseOwnedView {
15108            fn from(
15109                inner: ::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>>,
15110            ) -> Self {
15111                ListOwnerPublishedLayersResponseOwnedView(inner)
15112            }
15113        }
15114        impl ::core::convert::From<ListOwnerPublishedLayersResponseOwnedView>
15115        for ::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>> {
15116            fn from(wrapper: ListOwnerPublishedLayersResponseOwnedView) -> Self {
15117                wrapper.0
15118            }
15119        }
15120        impl ::core::convert::AsRef<
15121            ::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>>,
15122        > for ListOwnerPublishedLayersResponseOwnedView {
15123            fn as_ref(
15124                &self,
15125            ) -> &::buffa::OwnedView<ListOwnerPublishedLayersResponseView<'static>> {
15126                &self.0
15127            }
15128        }
15129        impl ::buffa::HasMessageView for super::super::ListOwnerPublishedLayersResponse {
15130            type View<'a> = ListOwnerPublishedLayersResponseView<'a>;
15131            type ViewHandle = ListOwnerPublishedLayersResponseOwnedView;
15132        }
15133        impl ::serde::Serialize for ListOwnerPublishedLayersResponseOwnedView {
15134            fn serialize<__S: ::serde::Serializer>(
15135                &self,
15136                __s: __S,
15137            ) -> ::core::result::Result<__S::Ok, __S::Error> {
15138                ::serde::Serialize::serialize(&self.0, __s)
15139            }
15140        }
15141        /// PublishLayerRequest lists a layer for discovery. Publishing implies PUBLIC view access.
15142        #[derive(Clone, Debug, Default)]
15143        pub struct PublishLayerRequestView<'a> {
15144            /// Layer to publish.
15145            ///
15146            /// Field 1: `layer`
15147            pub layer: ::buffa::MessageFieldView<
15148                super::super::__buffa::view::LayerRefView<'a>,
15149            >,
15150            /// Public display title.
15151            ///
15152            /// Field 2: `title`
15153            pub title: &'a str,
15154            /// Public description shown with the layer.
15155            ///
15156            /// Field 3: `description`
15157            pub description: &'a str,
15158            /// Public tags used for grouping or filtering.
15159            ///
15160            /// Field 4: `tags`
15161            pub tags: ::buffa::RepeatedView<'a, &'a str>,
15162            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
15163        }
15164        impl<'a> ::buffa::MessageView<'a> for PublishLayerRequestView<'a> {
15165            type Owned = super::super::PublishLayerRequest;
15166            fn decode_view(
15167                buf: &'a [u8],
15168            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15169                let __limit = ::core::cell::Cell::new(
15170                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
15171                );
15172                <Self as ::buffa::MessageView>::decode_view_ctx(
15173                    buf,
15174                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
15175                )
15176            }
15177            fn decode_view_with_ctx(
15178                buf: &'a [u8],
15179                ctx: ::buffa::DecodeContext<'_>,
15180            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15181                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
15182            }
15183            fn merge_view_field(
15184                &mut self,
15185                tag: ::buffa::encoding::Tag,
15186                cur: &'a [u8],
15187                before_tag: &'a [u8],
15188                ctx: ::buffa::DecodeContext<'_>,
15189            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
15190                let _ = ctx;
15191                #[allow(unused_variables)]
15192                let view = self;
15193                let mut cur = cur;
15194                match tag.field_number() {
15195                    1u32 => {
15196                        ::buffa::encoding::check_wire_type(
15197                            tag,
15198                            ::buffa::encoding::WireType::LengthDelimited,
15199                        )?;
15200                        let __sub_ctx = ctx.descend()?;
15201                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
15202                        match view.layer.as_mut() {
15203                            Some(existing) => {
15204                                ::buffa::MessageView::merge_into_view(
15205                                    existing,
15206                                    sub,
15207                                    __sub_ctx,
15208                                )?
15209                            }
15210                            None => {
15211                                view.layer = ::buffa::MessageFieldView::set(
15212                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
15213                                        sub,
15214                                        __sub_ctx,
15215                                    )?,
15216                                );
15217                            }
15218                        }
15219                    }
15220                    2u32 => {
15221                        ::buffa::encoding::check_wire_type(
15222                            tag,
15223                            ::buffa::encoding::WireType::LengthDelimited,
15224                        )?;
15225                        view.title = ::buffa::types::borrow_str(&mut cur)?;
15226                    }
15227                    3u32 => {
15228                        ::buffa::encoding::check_wire_type(
15229                            tag,
15230                            ::buffa::encoding::WireType::LengthDelimited,
15231                        )?;
15232                        view.description = ::buffa::types::borrow_str(&mut cur)?;
15233                    }
15234                    4u32 => {
15235                        ::buffa::encoding::check_wire_type(
15236                            tag,
15237                            ::buffa::encoding::WireType::LengthDelimited,
15238                        )?;
15239                        view.tags.push(::buffa::types::borrow_str(&mut cur)?);
15240                    }
15241                    _ => {
15242                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
15243                        let span_len = before_tag.len() - cur.len();
15244                        view.__buffa_unknown_fields
15245                            .push_record(before_tag, span_len, ctx)?;
15246                    }
15247                }
15248                ::core::result::Result::Ok(cur)
15249            }
15250            fn to_owned_message(
15251                &self,
15252            ) -> ::core::result::Result<
15253                super::super::PublishLayerRequest,
15254                ::buffa::DecodeError,
15255            > {
15256                self.to_owned_from_source(None)
15257            }
15258            #[allow(clippy::useless_conversion, clippy::needless_update)]
15259            fn to_owned_from_source(
15260                &self,
15261                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
15262            ) -> ::core::result::Result<
15263                super::super::PublishLayerRequest,
15264                ::buffa::DecodeError,
15265            > {
15266                #[allow(unused_imports)]
15267                use ::buffa::alloc::string::ToString as _;
15268                let _ = __buffa_src;
15269                ::core::result::Result::Ok(super::super::PublishLayerRequest {
15270                    layer: match self.layer.as_option() {
15271                        Some(v) => {
15272                            ::buffa::MessageField::<
15273                                super::super::LayerRef,
15274                            >::some(v.to_owned_from_source(__buffa_src)?)
15275                        }
15276                        None => ::buffa::MessageField::none(),
15277                    },
15278                    title: self.title.to_string(),
15279                    description: self.description.to_string(),
15280                    tags: self.tags.iter().map(|s| s.to_string()).collect(),
15281                    __buffa_unknown_fields: self
15282                        .__buffa_unknown_fields
15283                        .to_owned()?
15284                        .into(),
15285                    ..::core::default::Default::default()
15286                })
15287            }
15288        }
15289        impl<'a> ::buffa::ViewEncode<'a> for PublishLayerRequestView<'a> {
15290            #[allow(clippy::needless_borrow, clippy::let_and_return)]
15291            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
15292                #[allow(unused_imports)]
15293                use ::buffa::Enumeration as _;
15294                let mut size = 0u32;
15295                if self.layer.is_set() {
15296                    let __slot = __cache.reserve();
15297                    let inner_size = self.layer.compute_size(__cache);
15298                    __cache.set(__slot, inner_size);
15299                    size
15300                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
15301                            + inner_size;
15302                }
15303                if !self.title.is_empty() {
15304                    size
15305                        += 1u32 + ::buffa::types::string_encoded_len(&self.title) as u32;
15306                }
15307                if !self.description.is_empty() {
15308                    size
15309                        += 1u32
15310                            + ::buffa::types::string_encoded_len(&self.description)
15311                                as u32;
15312                }
15313                for v in &self.tags {
15314                    size += 1u32 + ::buffa::types::string_encoded_len(v) as u32;
15315                }
15316                size += self.__buffa_unknown_fields.encoded_len() as u32;
15317                size
15318            }
15319            #[allow(clippy::needless_borrow)]
15320            fn write_to(
15321                &self,
15322                __cache: &mut ::buffa::SizeCache,
15323                buf: &mut impl ::buffa::bytes::BufMut,
15324            ) {
15325                #[allow(unused_imports)]
15326                use ::buffa::Enumeration as _;
15327                if self.layer.is_set() {
15328                    ::buffa::types::put_len_delimited_header(
15329                        1u32,
15330                        __cache.consume_next(),
15331                        buf,
15332                    );
15333                    self.layer.write_to(__cache, buf);
15334                }
15335                if !self.title.is_empty() {
15336                    ::buffa::types::put_string_field(2u32, &self.title, buf);
15337                }
15338                if !self.description.is_empty() {
15339                    ::buffa::types::put_string_field(3u32, &self.description, buf);
15340                }
15341                for v in &self.tags {
15342                    ::buffa::types::put_string_field(4u32, v, buf);
15343                }
15344                self.__buffa_unknown_fields.write_to(buf);
15345            }
15346        }
15347        /// Serializes this view as protobuf JSON.
15348        ///
15349        /// Implicit-presence fields with default values are omitted, `required`
15350        /// fields are always emitted, explicit-presence (`optional`) fields are
15351        /// emitted only when set, bytes fields are base64-encoded, and enum
15352        /// values are their proto name strings.
15353        ///
15354        /// This impl uses `serialize_map(None)` because the number of emitted
15355        /// fields depends on default-omission rules; serializers that require
15356        /// known map lengths (e.g. `bincode`) will return a runtime error.
15357        /// Use the owned message type for those formats.
15358        impl<'__a> ::serde::Serialize for PublishLayerRequestView<'__a> {
15359            fn serialize<__S: ::serde::Serializer>(
15360                &self,
15361                __s: __S,
15362            ) -> ::core::result::Result<__S::Ok, __S::Error> {
15363                use ::serde::ser::SerializeMap as _;
15364                let mut __map = __s.serialize_map(::core::option::Option::None)?;
15365                {
15366                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
15367                        __map.serialize_entry("layer", __v)?;
15368                    }
15369                }
15370                if !::buffa::json_helpers::skip_if::is_empty_str(self.title) {
15371                    __map.serialize_entry("title", self.title)?;
15372                }
15373                if !::buffa::json_helpers::skip_if::is_empty_str(self.description) {
15374                    __map.serialize_entry("description", self.description)?;
15375                }
15376                if !self.tags.is_empty() {
15377                    __map.serialize_entry("tags", &*self.tags)?;
15378                }
15379                __map.end()
15380            }
15381        }
15382        impl<'a> ::buffa::MessageName for PublishLayerRequestView<'a> {
15383            const PACKAGE: &'static str = "polychart.v1";
15384            const NAME: &'static str = "PublishLayerRequest";
15385            const FULL_NAME: &'static str = "polychart.v1.PublishLayerRequest";
15386            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerRequest";
15387        }
15388        ::buffa::impl_default_view_instance!(PublishLayerRequestView);
15389        ::buffa::impl_view_reborrow!(PublishLayerRequestView);
15390        /** Self-contained, `'static` owned view of a `PublishLayerRequest` message.
15391
15392 Wraps [`::buffa::OwnedView`]`<`[`PublishLayerRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
15393
15394 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`PublishLayerRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
15395        #[derive(Clone, Debug)]
15396        pub struct PublishLayerRequestOwnedView(
15397            ::buffa::OwnedView<PublishLayerRequestView<'static>>,
15398        );
15399        impl PublishLayerRequestOwnedView {
15400            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
15401            ///
15402            /// The view borrows directly from the buffer's data; the buffer is
15403            /// retained inside the returned handle.
15404            ///
15405            /// # Errors
15406            ///
15407            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
15408            /// protobuf data.
15409            pub fn decode(
15410                bytes: ::buffa::bytes::Bytes,
15411            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15412                ::core::result::Result::Ok(
15413                    PublishLayerRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
15414                )
15415            }
15416            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
15417            /// max message size).
15418            ///
15419            /// # Errors
15420            ///
15421            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
15422            /// exceeds the configured limits.
15423            pub fn decode_with_options(
15424                bytes: ::buffa::bytes::Bytes,
15425                opts: &::buffa::DecodeOptions,
15426            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15427                ::core::result::Result::Ok(
15428                    PublishLayerRequestOwnedView(
15429                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
15430                    ),
15431                )
15432            }
15433            /// Build from an owned message via an encode → decode round-trip.
15434            ///
15435            /// # Errors
15436            ///
15437            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
15438            /// somehow invalid (should not happen for well-formed messages).
15439            pub fn from_owned(
15440                msg: &super::super::PublishLayerRequest,
15441            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15442                ::core::result::Result::Ok(
15443                    PublishLayerRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
15444                )
15445            }
15446            /// Borrow the full [`PublishLayerRequestView`] with its lifetime tied to `&self`.
15447            #[must_use]
15448            pub fn view(&self) -> &PublishLayerRequestView<'_> {
15449                self.0.reborrow()
15450            }
15451            /// Convert to the owned message type.
15452            ///
15453            /// # Errors
15454            ///
15455            /// Returns an error if re-materializing preserved unknown fields
15456            /// fails (e.g. the unknown-field limit is exceeded).
15457            pub fn to_owned_message(
15458                &self,
15459            ) -> ::core::result::Result<
15460                super::super::PublishLayerRequest,
15461                ::buffa::DecodeError,
15462            > {
15463                self.0.to_owned_message()
15464            }
15465            /// The underlying bytes buffer.
15466            #[must_use]
15467            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
15468                self.0.bytes()
15469            }
15470            /// Consume the handle, returning the underlying bytes buffer.
15471            #[must_use]
15472            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
15473                self.0.into_bytes()
15474            }
15475            /// Layer to publish.
15476            ///
15477            /// Field 1: `layer`
15478            #[must_use]
15479            pub fn layer(
15480                &self,
15481            ) -> &::buffa::MessageFieldView<
15482                super::super::__buffa::view::LayerRefView<'_>,
15483            > {
15484                &self.0.reborrow().layer
15485            }
15486            /// Public display title.
15487            ///
15488            /// Field 2: `title`
15489            #[must_use]
15490            pub fn title(&self) -> &'_ str {
15491                self.0.reborrow().title
15492            }
15493            /// Public description shown with the layer.
15494            ///
15495            /// Field 3: `description`
15496            #[must_use]
15497            pub fn description(&self) -> &'_ str {
15498                self.0.reborrow().description
15499            }
15500            /// Public tags used for grouping or filtering.
15501            ///
15502            /// Field 4: `tags`
15503            #[must_use]
15504            pub fn tags(&self) -> &::buffa::RepeatedView<'_, &'_ str> {
15505                &self.0.reborrow().tags
15506            }
15507        }
15508        impl ::core::convert::From<::buffa::OwnedView<PublishLayerRequestView<'static>>>
15509        for PublishLayerRequestOwnedView {
15510            fn from(
15511                inner: ::buffa::OwnedView<PublishLayerRequestView<'static>>,
15512            ) -> Self {
15513                PublishLayerRequestOwnedView(inner)
15514            }
15515        }
15516        impl ::core::convert::From<PublishLayerRequestOwnedView>
15517        for ::buffa::OwnedView<PublishLayerRequestView<'static>> {
15518            fn from(wrapper: PublishLayerRequestOwnedView) -> Self {
15519                wrapper.0
15520            }
15521        }
15522        impl ::core::convert::AsRef<::buffa::OwnedView<PublishLayerRequestView<'static>>>
15523        for PublishLayerRequestOwnedView {
15524            fn as_ref(&self) -> &::buffa::OwnedView<PublishLayerRequestView<'static>> {
15525                &self.0
15526            }
15527        }
15528        impl ::buffa::HasMessageView for super::super::PublishLayerRequest {
15529            type View<'a> = PublishLayerRequestView<'a>;
15530            type ViewHandle = PublishLayerRequestOwnedView;
15531        }
15532        impl ::serde::Serialize for PublishLayerRequestOwnedView {
15533            fn serialize<__S: ::serde::Serializer>(
15534                &self,
15535                __s: __S,
15536            ) -> ::core::result::Result<__S::Ok, __S::Error> {
15537                ::serde::Serialize::serialize(&self.0, __s)
15538            }
15539        }
15540        /// PublishLayerResponse returns the published layer metadata.
15541        #[derive(Clone, Debug, Default)]
15542        pub struct PublishLayerResponseView<'a> {
15543            /// Published layer metadata.
15544            ///
15545            /// Field 1: `layer`
15546            pub layer: ::buffa::MessageFieldView<
15547                super::super::__buffa::view::PublishedLayerView<'a>,
15548            >,
15549            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
15550        }
15551        impl<'a> ::buffa::MessageView<'a> for PublishLayerResponseView<'a> {
15552            type Owned = super::super::PublishLayerResponse;
15553            fn decode_view(
15554                buf: &'a [u8],
15555            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15556                let __limit = ::core::cell::Cell::new(
15557                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
15558                );
15559                <Self as ::buffa::MessageView>::decode_view_ctx(
15560                    buf,
15561                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
15562                )
15563            }
15564            fn decode_view_with_ctx(
15565                buf: &'a [u8],
15566                ctx: ::buffa::DecodeContext<'_>,
15567            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15568                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
15569            }
15570            fn merge_view_field(
15571                &mut self,
15572                tag: ::buffa::encoding::Tag,
15573                cur: &'a [u8],
15574                before_tag: &'a [u8],
15575                ctx: ::buffa::DecodeContext<'_>,
15576            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
15577                let _ = ctx;
15578                #[allow(unused_variables)]
15579                let view = self;
15580                let mut cur = cur;
15581                match tag.field_number() {
15582                    1u32 => {
15583                        ::buffa::encoding::check_wire_type(
15584                            tag,
15585                            ::buffa::encoding::WireType::LengthDelimited,
15586                        )?;
15587                        let __sub_ctx = ctx.descend()?;
15588                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
15589                        match view.layer.as_mut() {
15590                            Some(existing) => {
15591                                ::buffa::MessageView::merge_into_view(
15592                                    existing,
15593                                    sub,
15594                                    __sub_ctx,
15595                                )?
15596                            }
15597                            None => {
15598                                view.layer = ::buffa::MessageFieldView::set(
15599                                    <super::super::__buffa::view::PublishedLayerView as ::buffa::MessageView>::decode_view_ctx(
15600                                        sub,
15601                                        __sub_ctx,
15602                                    )?,
15603                                );
15604                            }
15605                        }
15606                    }
15607                    _ => {
15608                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
15609                        let span_len = before_tag.len() - cur.len();
15610                        view.__buffa_unknown_fields
15611                            .push_record(before_tag, span_len, ctx)?;
15612                    }
15613                }
15614                ::core::result::Result::Ok(cur)
15615            }
15616            fn to_owned_message(
15617                &self,
15618            ) -> ::core::result::Result<
15619                super::super::PublishLayerResponse,
15620                ::buffa::DecodeError,
15621            > {
15622                self.to_owned_from_source(None)
15623            }
15624            #[allow(clippy::useless_conversion, clippy::needless_update)]
15625            fn to_owned_from_source(
15626                &self,
15627                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
15628            ) -> ::core::result::Result<
15629                super::super::PublishLayerResponse,
15630                ::buffa::DecodeError,
15631            > {
15632                #[allow(unused_imports)]
15633                use ::buffa::alloc::string::ToString as _;
15634                let _ = __buffa_src;
15635                ::core::result::Result::Ok(super::super::PublishLayerResponse {
15636                    layer: match self.layer.as_option() {
15637                        Some(v) => {
15638                            ::buffa::MessageField::<
15639                                super::super::PublishedLayer,
15640                            >::some(v.to_owned_from_source(__buffa_src)?)
15641                        }
15642                        None => ::buffa::MessageField::none(),
15643                    },
15644                    __buffa_unknown_fields: self
15645                        .__buffa_unknown_fields
15646                        .to_owned()?
15647                        .into(),
15648                    ..::core::default::Default::default()
15649                })
15650            }
15651        }
15652        impl<'a> ::buffa::ViewEncode<'a> for PublishLayerResponseView<'a> {
15653            #[allow(clippy::needless_borrow, clippy::let_and_return)]
15654            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
15655                #[allow(unused_imports)]
15656                use ::buffa::Enumeration as _;
15657                let mut size = 0u32;
15658                if self.layer.is_set() {
15659                    let __slot = __cache.reserve();
15660                    let inner_size = self.layer.compute_size(__cache);
15661                    __cache.set(__slot, inner_size);
15662                    size
15663                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
15664                            + inner_size;
15665                }
15666                size += self.__buffa_unknown_fields.encoded_len() as u32;
15667                size
15668            }
15669            #[allow(clippy::needless_borrow)]
15670            fn write_to(
15671                &self,
15672                __cache: &mut ::buffa::SizeCache,
15673                buf: &mut impl ::buffa::bytes::BufMut,
15674            ) {
15675                #[allow(unused_imports)]
15676                use ::buffa::Enumeration as _;
15677                if self.layer.is_set() {
15678                    ::buffa::types::put_len_delimited_header(
15679                        1u32,
15680                        __cache.consume_next(),
15681                        buf,
15682                    );
15683                    self.layer.write_to(__cache, buf);
15684                }
15685                self.__buffa_unknown_fields.write_to(buf);
15686            }
15687        }
15688        /// Serializes this view as protobuf JSON.
15689        ///
15690        /// Implicit-presence fields with default values are omitted, `required`
15691        /// fields are always emitted, explicit-presence (`optional`) fields are
15692        /// emitted only when set, bytes fields are base64-encoded, and enum
15693        /// values are their proto name strings.
15694        ///
15695        /// This impl uses `serialize_map(None)` because the number of emitted
15696        /// fields depends on default-omission rules; serializers that require
15697        /// known map lengths (e.g. `bincode`) will return a runtime error.
15698        /// Use the owned message type for those formats.
15699        impl<'__a> ::serde::Serialize for PublishLayerResponseView<'__a> {
15700            fn serialize<__S: ::serde::Serializer>(
15701                &self,
15702                __s: __S,
15703            ) -> ::core::result::Result<__S::Ok, __S::Error> {
15704                use ::serde::ser::SerializeMap as _;
15705                let mut __map = __s.serialize_map(::core::option::Option::None)?;
15706                {
15707                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
15708                        __map.serialize_entry("layer", __v)?;
15709                    }
15710                }
15711                __map.end()
15712            }
15713        }
15714        impl<'a> ::buffa::MessageName for PublishLayerResponseView<'a> {
15715            const PACKAGE: &'static str = "polychart.v1";
15716            const NAME: &'static str = "PublishLayerResponse";
15717            const FULL_NAME: &'static str = "polychart.v1.PublishLayerResponse";
15718            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.PublishLayerResponse";
15719        }
15720        ::buffa::impl_default_view_instance!(PublishLayerResponseView);
15721        ::buffa::impl_view_reborrow!(PublishLayerResponseView);
15722        /** Self-contained, `'static` owned view of a `PublishLayerResponse` message.
15723
15724 Wraps [`::buffa::OwnedView`]`<`[`PublishLayerResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
15725
15726 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`PublishLayerResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
15727        #[derive(Clone, Debug)]
15728        pub struct PublishLayerResponseOwnedView(
15729            ::buffa::OwnedView<PublishLayerResponseView<'static>>,
15730        );
15731        impl PublishLayerResponseOwnedView {
15732            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
15733            ///
15734            /// The view borrows directly from the buffer's data; the buffer is
15735            /// retained inside the returned handle.
15736            ///
15737            /// # Errors
15738            ///
15739            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
15740            /// protobuf data.
15741            pub fn decode(
15742                bytes: ::buffa::bytes::Bytes,
15743            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15744                ::core::result::Result::Ok(
15745                    PublishLayerResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
15746                )
15747            }
15748            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
15749            /// max message size).
15750            ///
15751            /// # Errors
15752            ///
15753            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
15754            /// exceeds the configured limits.
15755            pub fn decode_with_options(
15756                bytes: ::buffa::bytes::Bytes,
15757                opts: &::buffa::DecodeOptions,
15758            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15759                ::core::result::Result::Ok(
15760                    PublishLayerResponseOwnedView(
15761                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
15762                    ),
15763                )
15764            }
15765            /// Build from an owned message via an encode → decode round-trip.
15766            ///
15767            /// # Errors
15768            ///
15769            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
15770            /// somehow invalid (should not happen for well-formed messages).
15771            pub fn from_owned(
15772                msg: &super::super::PublishLayerResponse,
15773            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15774                ::core::result::Result::Ok(
15775                    PublishLayerResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
15776                )
15777            }
15778            /// Borrow the full [`PublishLayerResponseView`] with its lifetime tied to `&self`.
15779            #[must_use]
15780            pub fn view(&self) -> &PublishLayerResponseView<'_> {
15781                self.0.reborrow()
15782            }
15783            /// Convert to the owned message type.
15784            ///
15785            /// # Errors
15786            ///
15787            /// Returns an error if re-materializing preserved unknown fields
15788            /// fails (e.g. the unknown-field limit is exceeded).
15789            pub fn to_owned_message(
15790                &self,
15791            ) -> ::core::result::Result<
15792                super::super::PublishLayerResponse,
15793                ::buffa::DecodeError,
15794            > {
15795                self.0.to_owned_message()
15796            }
15797            /// The underlying bytes buffer.
15798            #[must_use]
15799            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
15800                self.0.bytes()
15801            }
15802            /// Consume the handle, returning the underlying bytes buffer.
15803            #[must_use]
15804            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
15805                self.0.into_bytes()
15806            }
15807            /// Published layer metadata.
15808            ///
15809            /// Field 1: `layer`
15810            #[must_use]
15811            pub fn layer(
15812                &self,
15813            ) -> &::buffa::MessageFieldView<
15814                super::super::__buffa::view::PublishedLayerView<'_>,
15815            > {
15816                &self.0.reborrow().layer
15817            }
15818        }
15819        impl ::core::convert::From<::buffa::OwnedView<PublishLayerResponseView<'static>>>
15820        for PublishLayerResponseOwnedView {
15821            fn from(
15822                inner: ::buffa::OwnedView<PublishLayerResponseView<'static>>,
15823            ) -> Self {
15824                PublishLayerResponseOwnedView(inner)
15825            }
15826        }
15827        impl ::core::convert::From<PublishLayerResponseOwnedView>
15828        for ::buffa::OwnedView<PublishLayerResponseView<'static>> {
15829            fn from(wrapper: PublishLayerResponseOwnedView) -> Self {
15830                wrapper.0
15831            }
15832        }
15833        impl ::core::convert::AsRef<
15834            ::buffa::OwnedView<PublishLayerResponseView<'static>>,
15835        > for PublishLayerResponseOwnedView {
15836            fn as_ref(&self) -> &::buffa::OwnedView<PublishLayerResponseView<'static>> {
15837                &self.0
15838            }
15839        }
15840        impl ::buffa::HasMessageView for super::super::PublishLayerResponse {
15841            type View<'a> = PublishLayerResponseView<'a>;
15842            type ViewHandle = PublishLayerResponseOwnedView;
15843        }
15844        impl ::serde::Serialize for PublishLayerResponseOwnedView {
15845            fn serialize<__S: ::serde::Serializer>(
15846                &self,
15847                __s: __S,
15848            ) -> ::core::result::Result<__S::Ok, __S::Error> {
15849                ::serde::Serialize::serialize(&self.0, __s)
15850            }
15851        }
15852        /// UnpublishLayerRequest removes a layer from discovery listings.
15853        #[derive(Clone, Debug, Default)]
15854        pub struct UnpublishLayerRequestView<'a> {
15855            /// Layer to remove from discovery.
15856            ///
15857            /// Field 1: `layer`
15858            pub layer: ::buffa::MessageFieldView<
15859                super::super::__buffa::view::LayerRefView<'a>,
15860            >,
15861            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
15862        }
15863        impl<'a> ::buffa::MessageView<'a> for UnpublishLayerRequestView<'a> {
15864            type Owned = super::super::UnpublishLayerRequest;
15865            fn decode_view(
15866                buf: &'a [u8],
15867            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15868                let __limit = ::core::cell::Cell::new(
15869                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
15870                );
15871                <Self as ::buffa::MessageView>::decode_view_ctx(
15872                    buf,
15873                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
15874                )
15875            }
15876            fn decode_view_with_ctx(
15877                buf: &'a [u8],
15878                ctx: ::buffa::DecodeContext<'_>,
15879            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
15880                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
15881            }
15882            fn merge_view_field(
15883                &mut self,
15884                tag: ::buffa::encoding::Tag,
15885                cur: &'a [u8],
15886                before_tag: &'a [u8],
15887                ctx: ::buffa::DecodeContext<'_>,
15888            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
15889                let _ = ctx;
15890                #[allow(unused_variables)]
15891                let view = self;
15892                let mut cur = cur;
15893                match tag.field_number() {
15894                    1u32 => {
15895                        ::buffa::encoding::check_wire_type(
15896                            tag,
15897                            ::buffa::encoding::WireType::LengthDelimited,
15898                        )?;
15899                        let __sub_ctx = ctx.descend()?;
15900                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
15901                        match view.layer.as_mut() {
15902                            Some(existing) => {
15903                                ::buffa::MessageView::merge_into_view(
15904                                    existing,
15905                                    sub,
15906                                    __sub_ctx,
15907                                )?
15908                            }
15909                            None => {
15910                                view.layer = ::buffa::MessageFieldView::set(
15911                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
15912                                        sub,
15913                                        __sub_ctx,
15914                                    )?,
15915                                );
15916                            }
15917                        }
15918                    }
15919                    _ => {
15920                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
15921                        let span_len = before_tag.len() - cur.len();
15922                        view.__buffa_unknown_fields
15923                            .push_record(before_tag, span_len, ctx)?;
15924                    }
15925                }
15926                ::core::result::Result::Ok(cur)
15927            }
15928            fn to_owned_message(
15929                &self,
15930            ) -> ::core::result::Result<
15931                super::super::UnpublishLayerRequest,
15932                ::buffa::DecodeError,
15933            > {
15934                self.to_owned_from_source(None)
15935            }
15936            #[allow(clippy::useless_conversion, clippy::needless_update)]
15937            fn to_owned_from_source(
15938                &self,
15939                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
15940            ) -> ::core::result::Result<
15941                super::super::UnpublishLayerRequest,
15942                ::buffa::DecodeError,
15943            > {
15944                #[allow(unused_imports)]
15945                use ::buffa::alloc::string::ToString as _;
15946                let _ = __buffa_src;
15947                ::core::result::Result::Ok(super::super::UnpublishLayerRequest {
15948                    layer: match self.layer.as_option() {
15949                        Some(v) => {
15950                            ::buffa::MessageField::<
15951                                super::super::LayerRef,
15952                            >::some(v.to_owned_from_source(__buffa_src)?)
15953                        }
15954                        None => ::buffa::MessageField::none(),
15955                    },
15956                    __buffa_unknown_fields: self
15957                        .__buffa_unknown_fields
15958                        .to_owned()?
15959                        .into(),
15960                    ..::core::default::Default::default()
15961                })
15962            }
15963        }
15964        impl<'a> ::buffa::ViewEncode<'a> for UnpublishLayerRequestView<'a> {
15965            #[allow(clippy::needless_borrow, clippy::let_and_return)]
15966            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
15967                #[allow(unused_imports)]
15968                use ::buffa::Enumeration as _;
15969                let mut size = 0u32;
15970                if self.layer.is_set() {
15971                    let __slot = __cache.reserve();
15972                    let inner_size = self.layer.compute_size(__cache);
15973                    __cache.set(__slot, inner_size);
15974                    size
15975                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
15976                            + inner_size;
15977                }
15978                size += self.__buffa_unknown_fields.encoded_len() as u32;
15979                size
15980            }
15981            #[allow(clippy::needless_borrow)]
15982            fn write_to(
15983                &self,
15984                __cache: &mut ::buffa::SizeCache,
15985                buf: &mut impl ::buffa::bytes::BufMut,
15986            ) {
15987                #[allow(unused_imports)]
15988                use ::buffa::Enumeration as _;
15989                if self.layer.is_set() {
15990                    ::buffa::types::put_len_delimited_header(
15991                        1u32,
15992                        __cache.consume_next(),
15993                        buf,
15994                    );
15995                    self.layer.write_to(__cache, buf);
15996                }
15997                self.__buffa_unknown_fields.write_to(buf);
15998            }
15999        }
16000        /// Serializes this view as protobuf JSON.
16001        ///
16002        /// Implicit-presence fields with default values are omitted, `required`
16003        /// fields are always emitted, explicit-presence (`optional`) fields are
16004        /// emitted only when set, bytes fields are base64-encoded, and enum
16005        /// values are their proto name strings.
16006        ///
16007        /// This impl uses `serialize_map(None)` because the number of emitted
16008        /// fields depends on default-omission rules; serializers that require
16009        /// known map lengths (e.g. `bincode`) will return a runtime error.
16010        /// Use the owned message type for those formats.
16011        impl<'__a> ::serde::Serialize for UnpublishLayerRequestView<'__a> {
16012            fn serialize<__S: ::serde::Serializer>(
16013                &self,
16014                __s: __S,
16015            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16016                use ::serde::ser::SerializeMap as _;
16017                let mut __map = __s.serialize_map(::core::option::Option::None)?;
16018                {
16019                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
16020                        __map.serialize_entry("layer", __v)?;
16021                    }
16022                }
16023                __map.end()
16024            }
16025        }
16026        impl<'a> ::buffa::MessageName for UnpublishLayerRequestView<'a> {
16027            const PACKAGE: &'static str = "polychart.v1";
16028            const NAME: &'static str = "UnpublishLayerRequest";
16029            const FULL_NAME: &'static str = "polychart.v1.UnpublishLayerRequest";
16030            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerRequest";
16031        }
16032        ::buffa::impl_default_view_instance!(UnpublishLayerRequestView);
16033        ::buffa::impl_view_reborrow!(UnpublishLayerRequestView);
16034        /** Self-contained, `'static` owned view of a `UnpublishLayerRequest` message.
16035
16036 Wraps [`::buffa::OwnedView`]`<`[`UnpublishLayerRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
16037
16038 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UnpublishLayerRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
16039        #[derive(Clone, Debug)]
16040        pub struct UnpublishLayerRequestOwnedView(
16041            ::buffa::OwnedView<UnpublishLayerRequestView<'static>>,
16042        );
16043        impl UnpublishLayerRequestOwnedView {
16044            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
16045            ///
16046            /// The view borrows directly from the buffer's data; the buffer is
16047            /// retained inside the returned handle.
16048            ///
16049            /// # Errors
16050            ///
16051            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
16052            /// protobuf data.
16053            pub fn decode(
16054                bytes: ::buffa::bytes::Bytes,
16055            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16056                ::core::result::Result::Ok(
16057                    UnpublishLayerRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
16058                )
16059            }
16060            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
16061            /// max message size).
16062            ///
16063            /// # Errors
16064            ///
16065            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
16066            /// exceeds the configured limits.
16067            pub fn decode_with_options(
16068                bytes: ::buffa::bytes::Bytes,
16069                opts: &::buffa::DecodeOptions,
16070            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16071                ::core::result::Result::Ok(
16072                    UnpublishLayerRequestOwnedView(
16073                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
16074                    ),
16075                )
16076            }
16077            /// Build from an owned message via an encode → decode round-trip.
16078            ///
16079            /// # Errors
16080            ///
16081            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
16082            /// somehow invalid (should not happen for well-formed messages).
16083            pub fn from_owned(
16084                msg: &super::super::UnpublishLayerRequest,
16085            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16086                ::core::result::Result::Ok(
16087                    UnpublishLayerRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
16088                )
16089            }
16090            /// Borrow the full [`UnpublishLayerRequestView`] with its lifetime tied to `&self`.
16091            #[must_use]
16092            pub fn view(&self) -> &UnpublishLayerRequestView<'_> {
16093                self.0.reborrow()
16094            }
16095            /// Convert to the owned message type.
16096            ///
16097            /// # Errors
16098            ///
16099            /// Returns an error if re-materializing preserved unknown fields
16100            /// fails (e.g. the unknown-field limit is exceeded).
16101            pub fn to_owned_message(
16102                &self,
16103            ) -> ::core::result::Result<
16104                super::super::UnpublishLayerRequest,
16105                ::buffa::DecodeError,
16106            > {
16107                self.0.to_owned_message()
16108            }
16109            /// The underlying bytes buffer.
16110            #[must_use]
16111            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
16112                self.0.bytes()
16113            }
16114            /// Consume the handle, returning the underlying bytes buffer.
16115            #[must_use]
16116            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
16117                self.0.into_bytes()
16118            }
16119            /// Layer to remove from discovery.
16120            ///
16121            /// Field 1: `layer`
16122            #[must_use]
16123            pub fn layer(
16124                &self,
16125            ) -> &::buffa::MessageFieldView<
16126                super::super::__buffa::view::LayerRefView<'_>,
16127            > {
16128                &self.0.reborrow().layer
16129            }
16130        }
16131        impl ::core::convert::From<
16132            ::buffa::OwnedView<UnpublishLayerRequestView<'static>>,
16133        > for UnpublishLayerRequestOwnedView {
16134            fn from(
16135                inner: ::buffa::OwnedView<UnpublishLayerRequestView<'static>>,
16136            ) -> Self {
16137                UnpublishLayerRequestOwnedView(inner)
16138            }
16139        }
16140        impl ::core::convert::From<UnpublishLayerRequestOwnedView>
16141        for ::buffa::OwnedView<UnpublishLayerRequestView<'static>> {
16142            fn from(wrapper: UnpublishLayerRequestOwnedView) -> Self {
16143                wrapper.0
16144            }
16145        }
16146        impl ::core::convert::AsRef<
16147            ::buffa::OwnedView<UnpublishLayerRequestView<'static>>,
16148        > for UnpublishLayerRequestOwnedView {
16149            fn as_ref(&self) -> &::buffa::OwnedView<UnpublishLayerRequestView<'static>> {
16150                &self.0
16151            }
16152        }
16153        impl ::buffa::HasMessageView for super::super::UnpublishLayerRequest {
16154            type View<'a> = UnpublishLayerRequestView<'a>;
16155            type ViewHandle = UnpublishLayerRequestOwnedView;
16156        }
16157        impl ::serde::Serialize for UnpublishLayerRequestOwnedView {
16158            fn serialize<__S: ::serde::Serializer>(
16159                &self,
16160                __s: __S,
16161            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16162                ::serde::Serialize::serialize(&self.0, __s)
16163            }
16164        }
16165        /// UnpublishLayerResponse is empty when the layer was removed from discovery.
16166        #[derive(Clone, Debug, Default)]
16167        pub struct UnpublishLayerResponseView<'a> {
16168            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
16169        }
16170        impl<'a> ::buffa::MessageView<'a> for UnpublishLayerResponseView<'a> {
16171            type Owned = super::super::UnpublishLayerResponse;
16172            fn decode_view(
16173                buf: &'a [u8],
16174            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16175                let __limit = ::core::cell::Cell::new(
16176                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
16177                );
16178                <Self as ::buffa::MessageView>::decode_view_ctx(
16179                    buf,
16180                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
16181                )
16182            }
16183            fn decode_view_with_ctx(
16184                buf: &'a [u8],
16185                ctx: ::buffa::DecodeContext<'_>,
16186            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16187                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
16188            }
16189            fn merge_view_field(
16190                &mut self,
16191                tag: ::buffa::encoding::Tag,
16192                cur: &'a [u8],
16193                before_tag: &'a [u8],
16194                ctx: ::buffa::DecodeContext<'_>,
16195            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
16196                let _ = ctx;
16197                #[allow(unused_variables)]
16198                let view = self;
16199                let mut cur = cur;
16200                match tag.field_number() {
16201                    _ => {
16202                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
16203                        let span_len = before_tag.len() - cur.len();
16204                        view.__buffa_unknown_fields
16205                            .push_record(before_tag, span_len, ctx)?;
16206                    }
16207                }
16208                ::core::result::Result::Ok(cur)
16209            }
16210            fn to_owned_message(
16211                &self,
16212            ) -> ::core::result::Result<
16213                super::super::UnpublishLayerResponse,
16214                ::buffa::DecodeError,
16215            > {
16216                self.to_owned_from_source(None)
16217            }
16218            #[allow(clippy::useless_conversion, clippy::needless_update)]
16219            fn to_owned_from_source(
16220                &self,
16221                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
16222            ) -> ::core::result::Result<
16223                super::super::UnpublishLayerResponse,
16224                ::buffa::DecodeError,
16225            > {
16226                #[allow(unused_imports)]
16227                use ::buffa::alloc::string::ToString as _;
16228                let _ = __buffa_src;
16229                ::core::result::Result::Ok(super::super::UnpublishLayerResponse {
16230                    __buffa_unknown_fields: self
16231                        .__buffa_unknown_fields
16232                        .to_owned()?
16233                        .into(),
16234                    ..::core::default::Default::default()
16235                })
16236            }
16237        }
16238        impl<'a> ::buffa::ViewEncode<'a> for UnpublishLayerResponseView<'a> {
16239            #[allow(clippy::needless_borrow, clippy::let_and_return)]
16240            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
16241                #[allow(unused_imports)]
16242                use ::buffa::Enumeration as _;
16243                let mut size = 0u32;
16244                size += self.__buffa_unknown_fields.encoded_len() as u32;
16245                size
16246            }
16247            #[allow(clippy::needless_borrow)]
16248            fn write_to(
16249                &self,
16250                _cache: &mut ::buffa::SizeCache,
16251                buf: &mut impl ::buffa::bytes::BufMut,
16252            ) {
16253                #[allow(unused_imports)]
16254                use ::buffa::Enumeration as _;
16255                self.__buffa_unknown_fields.write_to(buf);
16256            }
16257        }
16258        /// Serializes this view as protobuf JSON.
16259        ///
16260        /// Implicit-presence fields with default values are omitted, `required`
16261        /// fields are always emitted, explicit-presence (`optional`) fields are
16262        /// emitted only when set, bytes fields are base64-encoded, and enum
16263        /// values are their proto name strings.
16264        ///
16265        /// This impl uses `serialize_map(None)` because the number of emitted
16266        /// fields depends on default-omission rules; serializers that require
16267        /// known map lengths (e.g. `bincode`) will return a runtime error.
16268        /// Use the owned message type for those formats.
16269        impl<'__a> ::serde::Serialize for UnpublishLayerResponseView<'__a> {
16270            fn serialize<__S: ::serde::Serializer>(
16271                &self,
16272                __s: __S,
16273            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16274                use ::serde::ser::SerializeMap as _;
16275                let mut __map = __s.serialize_map(::core::option::Option::None)?;
16276                __map.end()
16277            }
16278        }
16279        impl<'a> ::buffa::MessageName for UnpublishLayerResponseView<'a> {
16280            const PACKAGE: &'static str = "polychart.v1";
16281            const NAME: &'static str = "UnpublishLayerResponse";
16282            const FULL_NAME: &'static str = "polychart.v1.UnpublishLayerResponse";
16283            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UnpublishLayerResponse";
16284        }
16285        ::buffa::impl_default_view_instance!(UnpublishLayerResponseView);
16286        ::buffa::impl_view_reborrow!(UnpublishLayerResponseView);
16287        /** Self-contained, `'static` owned view of a `UnpublishLayerResponse` message.
16288
16289 Wraps [`::buffa::OwnedView`]`<`[`UnpublishLayerResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
16290
16291 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UnpublishLayerResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
16292        #[derive(Clone, Debug)]
16293        pub struct UnpublishLayerResponseOwnedView(
16294            ::buffa::OwnedView<UnpublishLayerResponseView<'static>>,
16295        );
16296        impl UnpublishLayerResponseOwnedView {
16297            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
16298            ///
16299            /// The view borrows directly from the buffer's data; the buffer is
16300            /// retained inside the returned handle.
16301            ///
16302            /// # Errors
16303            ///
16304            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
16305            /// protobuf data.
16306            pub fn decode(
16307                bytes: ::buffa::bytes::Bytes,
16308            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16309                ::core::result::Result::Ok(
16310                    UnpublishLayerResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
16311                )
16312            }
16313            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
16314            /// max message size).
16315            ///
16316            /// # Errors
16317            ///
16318            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
16319            /// exceeds the configured limits.
16320            pub fn decode_with_options(
16321                bytes: ::buffa::bytes::Bytes,
16322                opts: &::buffa::DecodeOptions,
16323            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16324                ::core::result::Result::Ok(
16325                    UnpublishLayerResponseOwnedView(
16326                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
16327                    ),
16328                )
16329            }
16330            /// Build from an owned message via an encode → decode round-trip.
16331            ///
16332            /// # Errors
16333            ///
16334            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
16335            /// somehow invalid (should not happen for well-formed messages).
16336            pub fn from_owned(
16337                msg: &super::super::UnpublishLayerResponse,
16338            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16339                ::core::result::Result::Ok(
16340                    UnpublishLayerResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
16341                )
16342            }
16343            /// Borrow the full [`UnpublishLayerResponseView`] with its lifetime tied to `&self`.
16344            #[must_use]
16345            pub fn view(&self) -> &UnpublishLayerResponseView<'_> {
16346                self.0.reborrow()
16347            }
16348            /// Convert to the owned message type.
16349            ///
16350            /// # Errors
16351            ///
16352            /// Returns an error if re-materializing preserved unknown fields
16353            /// fails (e.g. the unknown-field limit is exceeded).
16354            pub fn to_owned_message(
16355                &self,
16356            ) -> ::core::result::Result<
16357                super::super::UnpublishLayerResponse,
16358                ::buffa::DecodeError,
16359            > {
16360                self.0.to_owned_message()
16361            }
16362            /// The underlying bytes buffer.
16363            #[must_use]
16364            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
16365                self.0.bytes()
16366            }
16367            /// Consume the handle, returning the underlying bytes buffer.
16368            #[must_use]
16369            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
16370                self.0.into_bytes()
16371            }
16372        }
16373        impl ::core::convert::From<
16374            ::buffa::OwnedView<UnpublishLayerResponseView<'static>>,
16375        > for UnpublishLayerResponseOwnedView {
16376            fn from(
16377                inner: ::buffa::OwnedView<UnpublishLayerResponseView<'static>>,
16378            ) -> Self {
16379                UnpublishLayerResponseOwnedView(inner)
16380            }
16381        }
16382        impl ::core::convert::From<UnpublishLayerResponseOwnedView>
16383        for ::buffa::OwnedView<UnpublishLayerResponseView<'static>> {
16384            fn from(wrapper: UnpublishLayerResponseOwnedView) -> Self {
16385                wrapper.0
16386            }
16387        }
16388        impl ::core::convert::AsRef<
16389            ::buffa::OwnedView<UnpublishLayerResponseView<'static>>,
16390        > for UnpublishLayerResponseOwnedView {
16391            fn as_ref(
16392                &self,
16393            ) -> &::buffa::OwnedView<UnpublishLayerResponseView<'static>> {
16394                &self.0
16395            }
16396        }
16397        impl ::buffa::HasMessageView for super::super::UnpublishLayerResponse {
16398            type View<'a> = UnpublishLayerResponseView<'a>;
16399            type ViewHandle = UnpublishLayerResponseOwnedView;
16400        }
16401        impl ::serde::Serialize for UnpublishLayerResponseOwnedView {
16402            fn serialize<__S: ::serde::Serializer>(
16403                &self,
16404                __s: __S,
16405            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16406                ::serde::Serialize::serialize(&self.0, __s)
16407            }
16408        }
16409        /// =============================================================================
16410        /// Mutations
16411        /// =============================================================================
16412        ///
16413        /// UpsertLayerRequest creates or updates a layer using optimistic concurrency.
16414        #[derive(Clone, Debug, Default)]
16415        pub struct UpsertLayerRequestView<'a> {
16416            /// Layer payload to create or update.
16417            ///
16418            /// Field 1: `layer`
16419            pub layer: ::buffa::MessageFieldView<
16420                super::super::__buffa::view::LayerView<'a>,
16421            >,
16422            /// Expected current layer revision; 0 creates a new layer.
16423            ///
16424            /// Field 2: `expected_revision`
16425            pub expected_revision: u64,
16426            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
16427        }
16428        impl<'a> ::buffa::MessageView<'a> for UpsertLayerRequestView<'a> {
16429            type Owned = super::super::UpsertLayerRequest;
16430            fn decode_view(
16431                buf: &'a [u8],
16432            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16433                let __limit = ::core::cell::Cell::new(
16434                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
16435                );
16436                <Self as ::buffa::MessageView>::decode_view_ctx(
16437                    buf,
16438                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
16439                )
16440            }
16441            fn decode_view_with_ctx(
16442                buf: &'a [u8],
16443                ctx: ::buffa::DecodeContext<'_>,
16444            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16445                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
16446            }
16447            fn merge_view_field(
16448                &mut self,
16449                tag: ::buffa::encoding::Tag,
16450                cur: &'a [u8],
16451                before_tag: &'a [u8],
16452                ctx: ::buffa::DecodeContext<'_>,
16453            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
16454                let _ = ctx;
16455                #[allow(unused_variables)]
16456                let view = self;
16457                let mut cur = cur;
16458                match tag.field_number() {
16459                    1u32 => {
16460                        ::buffa::encoding::check_wire_type(
16461                            tag,
16462                            ::buffa::encoding::WireType::LengthDelimited,
16463                        )?;
16464                        let __sub_ctx = ctx.descend()?;
16465                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
16466                        match view.layer.as_mut() {
16467                            Some(existing) => {
16468                                ::buffa::MessageView::merge_into_view(
16469                                    existing,
16470                                    sub,
16471                                    __sub_ctx,
16472                                )?
16473                            }
16474                            None => {
16475                                view.layer = ::buffa::MessageFieldView::set(
16476                                    <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
16477                                        sub,
16478                                        __sub_ctx,
16479                                    )?,
16480                                );
16481                            }
16482                        }
16483                    }
16484                    2u32 => {
16485                        ::buffa::encoding::check_wire_type(
16486                            tag,
16487                            ::buffa::encoding::WireType::Fixed64,
16488                        )?;
16489                        view.expected_revision = ::buffa::types::decode_fixed64(
16490                            &mut cur,
16491                        )?;
16492                    }
16493                    _ => {
16494                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
16495                        let span_len = before_tag.len() - cur.len();
16496                        view.__buffa_unknown_fields
16497                            .push_record(before_tag, span_len, ctx)?;
16498                    }
16499                }
16500                ::core::result::Result::Ok(cur)
16501            }
16502            fn to_owned_message(
16503                &self,
16504            ) -> ::core::result::Result<
16505                super::super::UpsertLayerRequest,
16506                ::buffa::DecodeError,
16507            > {
16508                self.to_owned_from_source(None)
16509            }
16510            #[allow(clippy::useless_conversion, clippy::needless_update)]
16511            fn to_owned_from_source(
16512                &self,
16513                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
16514            ) -> ::core::result::Result<
16515                super::super::UpsertLayerRequest,
16516                ::buffa::DecodeError,
16517            > {
16518                #[allow(unused_imports)]
16519                use ::buffa::alloc::string::ToString as _;
16520                let _ = __buffa_src;
16521                ::core::result::Result::Ok(super::super::UpsertLayerRequest {
16522                    layer: match self.layer.as_option() {
16523                        Some(v) => {
16524                            ::buffa::MessageField::<
16525                                super::super::Layer,
16526                            >::some(v.to_owned_from_source(__buffa_src)?)
16527                        }
16528                        None => ::buffa::MessageField::none(),
16529                    },
16530                    expected_revision: self.expected_revision,
16531                    __buffa_unknown_fields: self
16532                        .__buffa_unknown_fields
16533                        .to_owned()?
16534                        .into(),
16535                    ..::core::default::Default::default()
16536                })
16537            }
16538        }
16539        impl<'a> ::buffa::ViewEncode<'a> for UpsertLayerRequestView<'a> {
16540            #[allow(clippy::needless_borrow, clippy::let_and_return)]
16541            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
16542                #[allow(unused_imports)]
16543                use ::buffa::Enumeration as _;
16544                let mut size = 0u32;
16545                if self.layer.is_set() {
16546                    let __slot = __cache.reserve();
16547                    let inner_size = self.layer.compute_size(__cache);
16548                    __cache.set(__slot, inner_size);
16549                    size
16550                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
16551                            + inner_size;
16552                }
16553                if self.expected_revision != 0u64 {
16554                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
16555                }
16556                size += self.__buffa_unknown_fields.encoded_len() as u32;
16557                size
16558            }
16559            #[allow(clippy::needless_borrow)]
16560            fn write_to(
16561                &self,
16562                __cache: &mut ::buffa::SizeCache,
16563                buf: &mut impl ::buffa::bytes::BufMut,
16564            ) {
16565                #[allow(unused_imports)]
16566                use ::buffa::Enumeration as _;
16567                if self.layer.is_set() {
16568                    ::buffa::types::put_len_delimited_header(
16569                        1u32,
16570                        __cache.consume_next(),
16571                        buf,
16572                    );
16573                    self.layer.write_to(__cache, buf);
16574                }
16575                if self.expected_revision != 0u64 {
16576                    ::buffa::types::put_fixed64_field(2u32, self.expected_revision, buf);
16577                }
16578                self.__buffa_unknown_fields.write_to(buf);
16579            }
16580        }
16581        /// Serializes this view as protobuf JSON.
16582        ///
16583        /// Implicit-presence fields with default values are omitted, `required`
16584        /// fields are always emitted, explicit-presence (`optional`) fields are
16585        /// emitted only when set, bytes fields are base64-encoded, and enum
16586        /// values are their proto name strings.
16587        ///
16588        /// This impl uses `serialize_map(None)` because the number of emitted
16589        /// fields depends on default-omission rules; serializers that require
16590        /// known map lengths (e.g. `bincode`) will return a runtime error.
16591        /// Use the owned message type for those formats.
16592        impl<'__a> ::serde::Serialize for UpsertLayerRequestView<'__a> {
16593            fn serialize<__S: ::serde::Serializer>(
16594                &self,
16595                __s: __S,
16596            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16597                use ::serde::ser::SerializeMap as _;
16598                let mut __map = __s.serialize_map(::core::option::Option::None)?;
16599                {
16600                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
16601                        __map.serialize_entry("layer", __v)?;
16602                    }
16603                }
16604                if !::buffa::json_helpers::skip_if::is_zero_u64(
16605                    &self.expected_revision,
16606                ) {
16607                    __map
16608                        .serialize_entry(
16609                            "expectedRevision",
16610                            &::buffa::json_helpers::ProtoJson(&self.expected_revision),
16611                        )?;
16612                }
16613                __map.end()
16614            }
16615        }
16616        impl<'a> ::buffa::MessageName for UpsertLayerRequestView<'a> {
16617            const PACKAGE: &'static str = "polychart.v1";
16618            const NAME: &'static str = "UpsertLayerRequest";
16619            const FULL_NAME: &'static str = "polychart.v1.UpsertLayerRequest";
16620            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerRequest";
16621        }
16622        ::buffa::impl_default_view_instance!(UpsertLayerRequestView);
16623        ::buffa::impl_view_reborrow!(UpsertLayerRequestView);
16624        /** Self-contained, `'static` owned view of a `UpsertLayerRequest` message.
16625
16626 Wraps [`::buffa::OwnedView`]`<`[`UpsertLayerRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
16627
16628 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UpsertLayerRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
16629        #[derive(Clone, Debug)]
16630        pub struct UpsertLayerRequestOwnedView(
16631            ::buffa::OwnedView<UpsertLayerRequestView<'static>>,
16632        );
16633        impl UpsertLayerRequestOwnedView {
16634            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
16635            ///
16636            /// The view borrows directly from the buffer's data; the buffer is
16637            /// retained inside the returned handle.
16638            ///
16639            /// # Errors
16640            ///
16641            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
16642            /// protobuf data.
16643            pub fn decode(
16644                bytes: ::buffa::bytes::Bytes,
16645            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16646                ::core::result::Result::Ok(
16647                    UpsertLayerRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
16648                )
16649            }
16650            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
16651            /// max message size).
16652            ///
16653            /// # Errors
16654            ///
16655            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
16656            /// exceeds the configured limits.
16657            pub fn decode_with_options(
16658                bytes: ::buffa::bytes::Bytes,
16659                opts: &::buffa::DecodeOptions,
16660            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16661                ::core::result::Result::Ok(
16662                    UpsertLayerRequestOwnedView(
16663                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
16664                    ),
16665                )
16666            }
16667            /// Build from an owned message via an encode → decode round-trip.
16668            ///
16669            /// # Errors
16670            ///
16671            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
16672            /// somehow invalid (should not happen for well-formed messages).
16673            pub fn from_owned(
16674                msg: &super::super::UpsertLayerRequest,
16675            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16676                ::core::result::Result::Ok(
16677                    UpsertLayerRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
16678                )
16679            }
16680            /// Borrow the full [`UpsertLayerRequestView`] with its lifetime tied to `&self`.
16681            #[must_use]
16682            pub fn view(&self) -> &UpsertLayerRequestView<'_> {
16683                self.0.reborrow()
16684            }
16685            /// Convert to the owned message type.
16686            ///
16687            /// # Errors
16688            ///
16689            /// Returns an error if re-materializing preserved unknown fields
16690            /// fails (e.g. the unknown-field limit is exceeded).
16691            pub fn to_owned_message(
16692                &self,
16693            ) -> ::core::result::Result<
16694                super::super::UpsertLayerRequest,
16695                ::buffa::DecodeError,
16696            > {
16697                self.0.to_owned_message()
16698            }
16699            /// The underlying bytes buffer.
16700            #[must_use]
16701            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
16702                self.0.bytes()
16703            }
16704            /// Consume the handle, returning the underlying bytes buffer.
16705            #[must_use]
16706            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
16707                self.0.into_bytes()
16708            }
16709            /// Layer payload to create or update.
16710            ///
16711            /// Field 1: `layer`
16712            #[must_use]
16713            pub fn layer(
16714                &self,
16715            ) -> &::buffa::MessageFieldView<super::super::__buffa::view::LayerView<'_>> {
16716                &self.0.reborrow().layer
16717            }
16718            /// Expected current layer revision; 0 creates a new layer.
16719            ///
16720            /// Field 2: `expected_revision`
16721            #[must_use]
16722            pub fn expected_revision(&self) -> u64 {
16723                self.0.reborrow().expected_revision
16724            }
16725        }
16726        impl ::core::convert::From<::buffa::OwnedView<UpsertLayerRequestView<'static>>>
16727        for UpsertLayerRequestOwnedView {
16728            fn from(inner: ::buffa::OwnedView<UpsertLayerRequestView<'static>>) -> Self {
16729                UpsertLayerRequestOwnedView(inner)
16730            }
16731        }
16732        impl ::core::convert::From<UpsertLayerRequestOwnedView>
16733        for ::buffa::OwnedView<UpsertLayerRequestView<'static>> {
16734            fn from(wrapper: UpsertLayerRequestOwnedView) -> Self {
16735                wrapper.0
16736            }
16737        }
16738        impl ::core::convert::AsRef<::buffa::OwnedView<UpsertLayerRequestView<'static>>>
16739        for UpsertLayerRequestOwnedView {
16740            fn as_ref(&self) -> &::buffa::OwnedView<UpsertLayerRequestView<'static>> {
16741                &self.0
16742            }
16743        }
16744        impl ::buffa::HasMessageView for super::super::UpsertLayerRequest {
16745            type View<'a> = UpsertLayerRequestView<'a>;
16746            type ViewHandle = UpsertLayerRequestOwnedView;
16747        }
16748        impl ::serde::Serialize for UpsertLayerRequestOwnedView {
16749            fn serialize<__S: ::serde::Serializer>(
16750                &self,
16751                __s: __S,
16752            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16753                ::serde::Serialize::serialize(&self.0, __s)
16754            }
16755        }
16756        /// UpsertLayerResponse returns the committed layer.
16757        #[derive(Clone, Debug, Default)]
16758        pub struct UpsertLayerResponseView<'a> {
16759            /// Layer after server-side commit handling.
16760            ///
16761            /// Field 1: `layer`
16762            pub layer: ::buffa::MessageFieldView<
16763                super::super::__buffa::view::LayerView<'a>,
16764            >,
16765            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
16766        }
16767        impl<'a> ::buffa::MessageView<'a> for UpsertLayerResponseView<'a> {
16768            type Owned = super::super::UpsertLayerResponse;
16769            fn decode_view(
16770                buf: &'a [u8],
16771            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16772                let __limit = ::core::cell::Cell::new(
16773                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
16774                );
16775                <Self as ::buffa::MessageView>::decode_view_ctx(
16776                    buf,
16777                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
16778                )
16779            }
16780            fn decode_view_with_ctx(
16781                buf: &'a [u8],
16782                ctx: ::buffa::DecodeContext<'_>,
16783            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16784                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
16785            }
16786            fn merge_view_field(
16787                &mut self,
16788                tag: ::buffa::encoding::Tag,
16789                cur: &'a [u8],
16790                before_tag: &'a [u8],
16791                ctx: ::buffa::DecodeContext<'_>,
16792            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
16793                let _ = ctx;
16794                #[allow(unused_variables)]
16795                let view = self;
16796                let mut cur = cur;
16797                match tag.field_number() {
16798                    1u32 => {
16799                        ::buffa::encoding::check_wire_type(
16800                            tag,
16801                            ::buffa::encoding::WireType::LengthDelimited,
16802                        )?;
16803                        let __sub_ctx = ctx.descend()?;
16804                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
16805                        match view.layer.as_mut() {
16806                            Some(existing) => {
16807                                ::buffa::MessageView::merge_into_view(
16808                                    existing,
16809                                    sub,
16810                                    __sub_ctx,
16811                                )?
16812                            }
16813                            None => {
16814                                view.layer = ::buffa::MessageFieldView::set(
16815                                    <super::super::__buffa::view::LayerView as ::buffa::MessageView>::decode_view_ctx(
16816                                        sub,
16817                                        __sub_ctx,
16818                                    )?,
16819                                );
16820                            }
16821                        }
16822                    }
16823                    _ => {
16824                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
16825                        let span_len = before_tag.len() - cur.len();
16826                        view.__buffa_unknown_fields
16827                            .push_record(before_tag, span_len, ctx)?;
16828                    }
16829                }
16830                ::core::result::Result::Ok(cur)
16831            }
16832            fn to_owned_message(
16833                &self,
16834            ) -> ::core::result::Result<
16835                super::super::UpsertLayerResponse,
16836                ::buffa::DecodeError,
16837            > {
16838                self.to_owned_from_source(None)
16839            }
16840            #[allow(clippy::useless_conversion, clippy::needless_update)]
16841            fn to_owned_from_source(
16842                &self,
16843                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
16844            ) -> ::core::result::Result<
16845                super::super::UpsertLayerResponse,
16846                ::buffa::DecodeError,
16847            > {
16848                #[allow(unused_imports)]
16849                use ::buffa::alloc::string::ToString as _;
16850                let _ = __buffa_src;
16851                ::core::result::Result::Ok(super::super::UpsertLayerResponse {
16852                    layer: match self.layer.as_option() {
16853                        Some(v) => {
16854                            ::buffa::MessageField::<
16855                                super::super::Layer,
16856                            >::some(v.to_owned_from_source(__buffa_src)?)
16857                        }
16858                        None => ::buffa::MessageField::none(),
16859                    },
16860                    __buffa_unknown_fields: self
16861                        .__buffa_unknown_fields
16862                        .to_owned()?
16863                        .into(),
16864                    ..::core::default::Default::default()
16865                })
16866            }
16867        }
16868        impl<'a> ::buffa::ViewEncode<'a> for UpsertLayerResponseView<'a> {
16869            #[allow(clippy::needless_borrow, clippy::let_and_return)]
16870            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
16871                #[allow(unused_imports)]
16872                use ::buffa::Enumeration as _;
16873                let mut size = 0u32;
16874                if self.layer.is_set() {
16875                    let __slot = __cache.reserve();
16876                    let inner_size = self.layer.compute_size(__cache);
16877                    __cache.set(__slot, inner_size);
16878                    size
16879                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
16880                            + inner_size;
16881                }
16882                size += self.__buffa_unknown_fields.encoded_len() as u32;
16883                size
16884            }
16885            #[allow(clippy::needless_borrow)]
16886            fn write_to(
16887                &self,
16888                __cache: &mut ::buffa::SizeCache,
16889                buf: &mut impl ::buffa::bytes::BufMut,
16890            ) {
16891                #[allow(unused_imports)]
16892                use ::buffa::Enumeration as _;
16893                if self.layer.is_set() {
16894                    ::buffa::types::put_len_delimited_header(
16895                        1u32,
16896                        __cache.consume_next(),
16897                        buf,
16898                    );
16899                    self.layer.write_to(__cache, buf);
16900                }
16901                self.__buffa_unknown_fields.write_to(buf);
16902            }
16903        }
16904        /// Serializes this view as protobuf JSON.
16905        ///
16906        /// Implicit-presence fields with default values are omitted, `required`
16907        /// fields are always emitted, explicit-presence (`optional`) fields are
16908        /// emitted only when set, bytes fields are base64-encoded, and enum
16909        /// values are their proto name strings.
16910        ///
16911        /// This impl uses `serialize_map(None)` because the number of emitted
16912        /// fields depends on default-omission rules; serializers that require
16913        /// known map lengths (e.g. `bincode`) will return a runtime error.
16914        /// Use the owned message type for those formats.
16915        impl<'__a> ::serde::Serialize for UpsertLayerResponseView<'__a> {
16916            fn serialize<__S: ::serde::Serializer>(
16917                &self,
16918                __s: __S,
16919            ) -> ::core::result::Result<__S::Ok, __S::Error> {
16920                use ::serde::ser::SerializeMap as _;
16921                let mut __map = __s.serialize_map(::core::option::Option::None)?;
16922                {
16923                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
16924                        __map.serialize_entry("layer", __v)?;
16925                    }
16926                }
16927                __map.end()
16928            }
16929        }
16930        impl<'a> ::buffa::MessageName for UpsertLayerResponseView<'a> {
16931            const PACKAGE: &'static str = "polychart.v1";
16932            const NAME: &'static str = "UpsertLayerResponse";
16933            const FULL_NAME: &'static str = "polychart.v1.UpsertLayerResponse";
16934            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertLayerResponse";
16935        }
16936        ::buffa::impl_default_view_instance!(UpsertLayerResponseView);
16937        ::buffa::impl_view_reborrow!(UpsertLayerResponseView);
16938        /** Self-contained, `'static` owned view of a `UpsertLayerResponse` message.
16939
16940 Wraps [`::buffa::OwnedView`]`<`[`UpsertLayerResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
16941
16942 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UpsertLayerResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
16943        #[derive(Clone, Debug)]
16944        pub struct UpsertLayerResponseOwnedView(
16945            ::buffa::OwnedView<UpsertLayerResponseView<'static>>,
16946        );
16947        impl UpsertLayerResponseOwnedView {
16948            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
16949            ///
16950            /// The view borrows directly from the buffer's data; the buffer is
16951            /// retained inside the returned handle.
16952            ///
16953            /// # Errors
16954            ///
16955            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
16956            /// protobuf data.
16957            pub fn decode(
16958                bytes: ::buffa::bytes::Bytes,
16959            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16960                ::core::result::Result::Ok(
16961                    UpsertLayerResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
16962                )
16963            }
16964            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
16965            /// max message size).
16966            ///
16967            /// # Errors
16968            ///
16969            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
16970            /// exceeds the configured limits.
16971            pub fn decode_with_options(
16972                bytes: ::buffa::bytes::Bytes,
16973                opts: &::buffa::DecodeOptions,
16974            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16975                ::core::result::Result::Ok(
16976                    UpsertLayerResponseOwnedView(
16977                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
16978                    ),
16979                )
16980            }
16981            /// Build from an owned message via an encode → decode round-trip.
16982            ///
16983            /// # Errors
16984            ///
16985            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
16986            /// somehow invalid (should not happen for well-formed messages).
16987            pub fn from_owned(
16988                msg: &super::super::UpsertLayerResponse,
16989            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
16990                ::core::result::Result::Ok(
16991                    UpsertLayerResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
16992                )
16993            }
16994            /// Borrow the full [`UpsertLayerResponseView`] with its lifetime tied to `&self`.
16995            #[must_use]
16996            pub fn view(&self) -> &UpsertLayerResponseView<'_> {
16997                self.0.reborrow()
16998            }
16999            /// Convert to the owned message type.
17000            ///
17001            /// # Errors
17002            ///
17003            /// Returns an error if re-materializing preserved unknown fields
17004            /// fails (e.g. the unknown-field limit is exceeded).
17005            pub fn to_owned_message(
17006                &self,
17007            ) -> ::core::result::Result<
17008                super::super::UpsertLayerResponse,
17009                ::buffa::DecodeError,
17010            > {
17011                self.0.to_owned_message()
17012            }
17013            /// The underlying bytes buffer.
17014            #[must_use]
17015            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
17016                self.0.bytes()
17017            }
17018            /// Consume the handle, returning the underlying bytes buffer.
17019            #[must_use]
17020            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
17021                self.0.into_bytes()
17022            }
17023            /// Layer after server-side commit handling.
17024            ///
17025            /// Field 1: `layer`
17026            #[must_use]
17027            pub fn layer(
17028                &self,
17029            ) -> &::buffa::MessageFieldView<super::super::__buffa::view::LayerView<'_>> {
17030                &self.0.reborrow().layer
17031            }
17032        }
17033        impl ::core::convert::From<::buffa::OwnedView<UpsertLayerResponseView<'static>>>
17034        for UpsertLayerResponseOwnedView {
17035            fn from(
17036                inner: ::buffa::OwnedView<UpsertLayerResponseView<'static>>,
17037            ) -> Self {
17038                UpsertLayerResponseOwnedView(inner)
17039            }
17040        }
17041        impl ::core::convert::From<UpsertLayerResponseOwnedView>
17042        for ::buffa::OwnedView<UpsertLayerResponseView<'static>> {
17043            fn from(wrapper: UpsertLayerResponseOwnedView) -> Self {
17044                wrapper.0
17045            }
17046        }
17047        impl ::core::convert::AsRef<::buffa::OwnedView<UpsertLayerResponseView<'static>>>
17048        for UpsertLayerResponseOwnedView {
17049            fn as_ref(&self) -> &::buffa::OwnedView<UpsertLayerResponseView<'static>> {
17050                &self.0
17051            }
17052        }
17053        impl ::buffa::HasMessageView for super::super::UpsertLayerResponse {
17054            type View<'a> = UpsertLayerResponseView<'a>;
17055            type ViewHandle = UpsertLayerResponseOwnedView;
17056        }
17057        impl ::serde::Serialize for UpsertLayerResponseOwnedView {
17058            fn serialize<__S: ::serde::Serializer>(
17059                &self,
17060                __s: __S,
17061            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17062                ::serde::Serialize::serialize(&self.0, __s)
17063            }
17064        }
17065        /// DeleteLayerRequest soft-deletes a layer and its drawings using optimistic concurrency.
17066        #[derive(Clone, Debug, Default)]
17067        pub struct DeleteLayerRequestView<'a> {
17068            /// Layer to delete.
17069            ///
17070            /// Field 1: `layer`
17071            pub layer: ::buffa::MessageFieldView<
17072                super::super::__buffa::view::LayerRefView<'a>,
17073            >,
17074            /// Expected current layer revision.
17075            ///
17076            /// Field 2: `expected_revision`
17077            pub expected_revision: u64,
17078            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
17079        }
17080        impl<'a> ::buffa::MessageView<'a> for DeleteLayerRequestView<'a> {
17081            type Owned = super::super::DeleteLayerRequest;
17082            fn decode_view(
17083                buf: &'a [u8],
17084            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17085                let __limit = ::core::cell::Cell::new(
17086                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
17087                );
17088                <Self as ::buffa::MessageView>::decode_view_ctx(
17089                    buf,
17090                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
17091                )
17092            }
17093            fn decode_view_with_ctx(
17094                buf: &'a [u8],
17095                ctx: ::buffa::DecodeContext<'_>,
17096            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17097                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
17098            }
17099            fn merge_view_field(
17100                &mut self,
17101                tag: ::buffa::encoding::Tag,
17102                cur: &'a [u8],
17103                before_tag: &'a [u8],
17104                ctx: ::buffa::DecodeContext<'_>,
17105            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
17106                let _ = ctx;
17107                #[allow(unused_variables)]
17108                let view = self;
17109                let mut cur = cur;
17110                match tag.field_number() {
17111                    1u32 => {
17112                        ::buffa::encoding::check_wire_type(
17113                            tag,
17114                            ::buffa::encoding::WireType::LengthDelimited,
17115                        )?;
17116                        let __sub_ctx = ctx.descend()?;
17117                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
17118                        match view.layer.as_mut() {
17119                            Some(existing) => {
17120                                ::buffa::MessageView::merge_into_view(
17121                                    existing,
17122                                    sub,
17123                                    __sub_ctx,
17124                                )?
17125                            }
17126                            None => {
17127                                view.layer = ::buffa::MessageFieldView::set(
17128                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
17129                                        sub,
17130                                        __sub_ctx,
17131                                    )?,
17132                                );
17133                            }
17134                        }
17135                    }
17136                    2u32 => {
17137                        ::buffa::encoding::check_wire_type(
17138                            tag,
17139                            ::buffa::encoding::WireType::Fixed64,
17140                        )?;
17141                        view.expected_revision = ::buffa::types::decode_fixed64(
17142                            &mut cur,
17143                        )?;
17144                    }
17145                    _ => {
17146                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
17147                        let span_len = before_tag.len() - cur.len();
17148                        view.__buffa_unknown_fields
17149                            .push_record(before_tag, span_len, ctx)?;
17150                    }
17151                }
17152                ::core::result::Result::Ok(cur)
17153            }
17154            fn to_owned_message(
17155                &self,
17156            ) -> ::core::result::Result<
17157                super::super::DeleteLayerRequest,
17158                ::buffa::DecodeError,
17159            > {
17160                self.to_owned_from_source(None)
17161            }
17162            #[allow(clippy::useless_conversion, clippy::needless_update)]
17163            fn to_owned_from_source(
17164                &self,
17165                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
17166            ) -> ::core::result::Result<
17167                super::super::DeleteLayerRequest,
17168                ::buffa::DecodeError,
17169            > {
17170                #[allow(unused_imports)]
17171                use ::buffa::alloc::string::ToString as _;
17172                let _ = __buffa_src;
17173                ::core::result::Result::Ok(super::super::DeleteLayerRequest {
17174                    layer: match self.layer.as_option() {
17175                        Some(v) => {
17176                            ::buffa::MessageField::<
17177                                super::super::LayerRef,
17178                            >::some(v.to_owned_from_source(__buffa_src)?)
17179                        }
17180                        None => ::buffa::MessageField::none(),
17181                    },
17182                    expected_revision: self.expected_revision,
17183                    __buffa_unknown_fields: self
17184                        .__buffa_unknown_fields
17185                        .to_owned()?
17186                        .into(),
17187                    ..::core::default::Default::default()
17188                })
17189            }
17190        }
17191        impl<'a> ::buffa::ViewEncode<'a> for DeleteLayerRequestView<'a> {
17192            #[allow(clippy::needless_borrow, clippy::let_and_return)]
17193            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
17194                #[allow(unused_imports)]
17195                use ::buffa::Enumeration as _;
17196                let mut size = 0u32;
17197                if self.layer.is_set() {
17198                    let __slot = __cache.reserve();
17199                    let inner_size = self.layer.compute_size(__cache);
17200                    __cache.set(__slot, inner_size);
17201                    size
17202                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
17203                            + inner_size;
17204                }
17205                if self.expected_revision != 0u64 {
17206                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
17207                }
17208                size += self.__buffa_unknown_fields.encoded_len() as u32;
17209                size
17210            }
17211            #[allow(clippy::needless_borrow)]
17212            fn write_to(
17213                &self,
17214                __cache: &mut ::buffa::SizeCache,
17215                buf: &mut impl ::buffa::bytes::BufMut,
17216            ) {
17217                #[allow(unused_imports)]
17218                use ::buffa::Enumeration as _;
17219                if self.layer.is_set() {
17220                    ::buffa::types::put_len_delimited_header(
17221                        1u32,
17222                        __cache.consume_next(),
17223                        buf,
17224                    );
17225                    self.layer.write_to(__cache, buf);
17226                }
17227                if self.expected_revision != 0u64 {
17228                    ::buffa::types::put_fixed64_field(2u32, self.expected_revision, buf);
17229                }
17230                self.__buffa_unknown_fields.write_to(buf);
17231            }
17232        }
17233        /// Serializes this view as protobuf JSON.
17234        ///
17235        /// Implicit-presence fields with default values are omitted, `required`
17236        /// fields are always emitted, explicit-presence (`optional`) fields are
17237        /// emitted only when set, bytes fields are base64-encoded, and enum
17238        /// values are their proto name strings.
17239        ///
17240        /// This impl uses `serialize_map(None)` because the number of emitted
17241        /// fields depends on default-omission rules; serializers that require
17242        /// known map lengths (e.g. `bincode`) will return a runtime error.
17243        /// Use the owned message type for those formats.
17244        impl<'__a> ::serde::Serialize for DeleteLayerRequestView<'__a> {
17245            fn serialize<__S: ::serde::Serializer>(
17246                &self,
17247                __s: __S,
17248            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17249                use ::serde::ser::SerializeMap as _;
17250                let mut __map = __s.serialize_map(::core::option::Option::None)?;
17251                {
17252                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
17253                        __map.serialize_entry("layer", __v)?;
17254                    }
17255                }
17256                if !::buffa::json_helpers::skip_if::is_zero_u64(
17257                    &self.expected_revision,
17258                ) {
17259                    __map
17260                        .serialize_entry(
17261                            "expectedRevision",
17262                            &::buffa::json_helpers::ProtoJson(&self.expected_revision),
17263                        )?;
17264                }
17265                __map.end()
17266            }
17267        }
17268        impl<'a> ::buffa::MessageName for DeleteLayerRequestView<'a> {
17269            const PACKAGE: &'static str = "polychart.v1";
17270            const NAME: &'static str = "DeleteLayerRequest";
17271            const FULL_NAME: &'static str = "polychart.v1.DeleteLayerRequest";
17272            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerRequest";
17273        }
17274        ::buffa::impl_default_view_instance!(DeleteLayerRequestView);
17275        ::buffa::impl_view_reborrow!(DeleteLayerRequestView);
17276        /** Self-contained, `'static` owned view of a `DeleteLayerRequest` message.
17277
17278 Wraps [`::buffa::OwnedView`]`<`[`DeleteLayerRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
17279
17280 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DeleteLayerRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
17281        #[derive(Clone, Debug)]
17282        pub struct DeleteLayerRequestOwnedView(
17283            ::buffa::OwnedView<DeleteLayerRequestView<'static>>,
17284        );
17285        impl DeleteLayerRequestOwnedView {
17286            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
17287            ///
17288            /// The view borrows directly from the buffer's data; the buffer is
17289            /// retained inside the returned handle.
17290            ///
17291            /// # Errors
17292            ///
17293            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
17294            /// protobuf data.
17295            pub fn decode(
17296                bytes: ::buffa::bytes::Bytes,
17297            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17298                ::core::result::Result::Ok(
17299                    DeleteLayerRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
17300                )
17301            }
17302            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
17303            /// max message size).
17304            ///
17305            /// # Errors
17306            ///
17307            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
17308            /// exceeds the configured limits.
17309            pub fn decode_with_options(
17310                bytes: ::buffa::bytes::Bytes,
17311                opts: &::buffa::DecodeOptions,
17312            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17313                ::core::result::Result::Ok(
17314                    DeleteLayerRequestOwnedView(
17315                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
17316                    ),
17317                )
17318            }
17319            /// Build from an owned message via an encode → decode round-trip.
17320            ///
17321            /// # Errors
17322            ///
17323            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
17324            /// somehow invalid (should not happen for well-formed messages).
17325            pub fn from_owned(
17326                msg: &super::super::DeleteLayerRequest,
17327            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17328                ::core::result::Result::Ok(
17329                    DeleteLayerRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
17330                )
17331            }
17332            /// Borrow the full [`DeleteLayerRequestView`] with its lifetime tied to `&self`.
17333            #[must_use]
17334            pub fn view(&self) -> &DeleteLayerRequestView<'_> {
17335                self.0.reborrow()
17336            }
17337            /// Convert to the owned message type.
17338            ///
17339            /// # Errors
17340            ///
17341            /// Returns an error if re-materializing preserved unknown fields
17342            /// fails (e.g. the unknown-field limit is exceeded).
17343            pub fn to_owned_message(
17344                &self,
17345            ) -> ::core::result::Result<
17346                super::super::DeleteLayerRequest,
17347                ::buffa::DecodeError,
17348            > {
17349                self.0.to_owned_message()
17350            }
17351            /// The underlying bytes buffer.
17352            #[must_use]
17353            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
17354                self.0.bytes()
17355            }
17356            /// Consume the handle, returning the underlying bytes buffer.
17357            #[must_use]
17358            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
17359                self.0.into_bytes()
17360            }
17361            /// Layer to delete.
17362            ///
17363            /// Field 1: `layer`
17364            #[must_use]
17365            pub fn layer(
17366                &self,
17367            ) -> &::buffa::MessageFieldView<
17368                super::super::__buffa::view::LayerRefView<'_>,
17369            > {
17370                &self.0.reborrow().layer
17371            }
17372            /// Expected current layer revision.
17373            ///
17374            /// Field 2: `expected_revision`
17375            #[must_use]
17376            pub fn expected_revision(&self) -> u64 {
17377                self.0.reborrow().expected_revision
17378            }
17379        }
17380        impl ::core::convert::From<::buffa::OwnedView<DeleteLayerRequestView<'static>>>
17381        for DeleteLayerRequestOwnedView {
17382            fn from(inner: ::buffa::OwnedView<DeleteLayerRequestView<'static>>) -> Self {
17383                DeleteLayerRequestOwnedView(inner)
17384            }
17385        }
17386        impl ::core::convert::From<DeleteLayerRequestOwnedView>
17387        for ::buffa::OwnedView<DeleteLayerRequestView<'static>> {
17388            fn from(wrapper: DeleteLayerRequestOwnedView) -> Self {
17389                wrapper.0
17390            }
17391        }
17392        impl ::core::convert::AsRef<::buffa::OwnedView<DeleteLayerRequestView<'static>>>
17393        for DeleteLayerRequestOwnedView {
17394            fn as_ref(&self) -> &::buffa::OwnedView<DeleteLayerRequestView<'static>> {
17395                &self.0
17396            }
17397        }
17398        impl ::buffa::HasMessageView for super::super::DeleteLayerRequest {
17399            type View<'a> = DeleteLayerRequestView<'a>;
17400            type ViewHandle = DeleteLayerRequestOwnedView;
17401        }
17402        impl ::serde::Serialize for DeleteLayerRequestOwnedView {
17403            fn serialize<__S: ::serde::Serializer>(
17404                &self,
17405                __s: __S,
17406            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17407                ::serde::Serialize::serialize(&self.0, __s)
17408            }
17409        }
17410        /// DeleteLayerResponse returns the final layer revision after deletion.
17411        #[derive(Clone, Debug, Default)]
17412        pub struct DeleteLayerResponseView<'a> {
17413            /// Final layer revision after delete.
17414            ///
17415            /// Field 1: `layer_revision`
17416            pub layer_revision: u64,
17417            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
17418        }
17419        impl<'a> ::buffa::MessageView<'a> for DeleteLayerResponseView<'a> {
17420            type Owned = super::super::DeleteLayerResponse;
17421            fn decode_view(
17422                buf: &'a [u8],
17423            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17424                let __limit = ::core::cell::Cell::new(
17425                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
17426                );
17427                <Self as ::buffa::MessageView>::decode_view_ctx(
17428                    buf,
17429                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
17430                )
17431            }
17432            fn decode_view_with_ctx(
17433                buf: &'a [u8],
17434                ctx: ::buffa::DecodeContext<'_>,
17435            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17436                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
17437            }
17438            fn merge_view_field(
17439                &mut self,
17440                tag: ::buffa::encoding::Tag,
17441                cur: &'a [u8],
17442                before_tag: &'a [u8],
17443                ctx: ::buffa::DecodeContext<'_>,
17444            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
17445                let _ = ctx;
17446                #[allow(unused_variables)]
17447                let view = self;
17448                let mut cur = cur;
17449                match tag.field_number() {
17450                    1u32 => {
17451                        ::buffa::encoding::check_wire_type(
17452                            tag,
17453                            ::buffa::encoding::WireType::Fixed64,
17454                        )?;
17455                        view.layer_revision = ::buffa::types::decode_fixed64(&mut cur)?;
17456                    }
17457                    _ => {
17458                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
17459                        let span_len = before_tag.len() - cur.len();
17460                        view.__buffa_unknown_fields
17461                            .push_record(before_tag, span_len, ctx)?;
17462                    }
17463                }
17464                ::core::result::Result::Ok(cur)
17465            }
17466            fn to_owned_message(
17467                &self,
17468            ) -> ::core::result::Result<
17469                super::super::DeleteLayerResponse,
17470                ::buffa::DecodeError,
17471            > {
17472                self.to_owned_from_source(None)
17473            }
17474            #[allow(clippy::useless_conversion, clippy::needless_update)]
17475            fn to_owned_from_source(
17476                &self,
17477                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
17478            ) -> ::core::result::Result<
17479                super::super::DeleteLayerResponse,
17480                ::buffa::DecodeError,
17481            > {
17482                #[allow(unused_imports)]
17483                use ::buffa::alloc::string::ToString as _;
17484                let _ = __buffa_src;
17485                ::core::result::Result::Ok(super::super::DeleteLayerResponse {
17486                    layer_revision: self.layer_revision,
17487                    __buffa_unknown_fields: self
17488                        .__buffa_unknown_fields
17489                        .to_owned()?
17490                        .into(),
17491                    ..::core::default::Default::default()
17492                })
17493            }
17494        }
17495        impl<'a> ::buffa::ViewEncode<'a> for DeleteLayerResponseView<'a> {
17496            #[allow(clippy::needless_borrow, clippy::let_and_return)]
17497            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
17498                #[allow(unused_imports)]
17499                use ::buffa::Enumeration as _;
17500                let mut size = 0u32;
17501                if self.layer_revision != 0u64 {
17502                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
17503                }
17504                size += self.__buffa_unknown_fields.encoded_len() as u32;
17505                size
17506            }
17507            #[allow(clippy::needless_borrow)]
17508            fn write_to(
17509                &self,
17510                _cache: &mut ::buffa::SizeCache,
17511                buf: &mut impl ::buffa::bytes::BufMut,
17512            ) {
17513                #[allow(unused_imports)]
17514                use ::buffa::Enumeration as _;
17515                if self.layer_revision != 0u64 {
17516                    ::buffa::types::put_fixed64_field(1u32, self.layer_revision, buf);
17517                }
17518                self.__buffa_unknown_fields.write_to(buf);
17519            }
17520        }
17521        /// Serializes this view as protobuf JSON.
17522        ///
17523        /// Implicit-presence fields with default values are omitted, `required`
17524        /// fields are always emitted, explicit-presence (`optional`) fields are
17525        /// emitted only when set, bytes fields are base64-encoded, and enum
17526        /// values are their proto name strings.
17527        ///
17528        /// This impl uses `serialize_map(None)` because the number of emitted
17529        /// fields depends on default-omission rules; serializers that require
17530        /// known map lengths (e.g. `bincode`) will return a runtime error.
17531        /// Use the owned message type for those formats.
17532        impl<'__a> ::serde::Serialize for DeleteLayerResponseView<'__a> {
17533            fn serialize<__S: ::serde::Serializer>(
17534                &self,
17535                __s: __S,
17536            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17537                use ::serde::ser::SerializeMap as _;
17538                let mut __map = __s.serialize_map(::core::option::Option::None)?;
17539                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.layer_revision) {
17540                    __map
17541                        .serialize_entry(
17542                            "layerRevision",
17543                            &::buffa::json_helpers::ProtoJson(&self.layer_revision),
17544                        )?;
17545                }
17546                __map.end()
17547            }
17548        }
17549        impl<'a> ::buffa::MessageName for DeleteLayerResponseView<'a> {
17550            const PACKAGE: &'static str = "polychart.v1";
17551            const NAME: &'static str = "DeleteLayerResponse";
17552            const FULL_NAME: &'static str = "polychart.v1.DeleteLayerResponse";
17553            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteLayerResponse";
17554        }
17555        ::buffa::impl_default_view_instance!(DeleteLayerResponseView);
17556        ::buffa::impl_view_reborrow!(DeleteLayerResponseView);
17557        /** Self-contained, `'static` owned view of a `DeleteLayerResponse` message.
17558
17559 Wraps [`::buffa::OwnedView`]`<`[`DeleteLayerResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
17560
17561 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DeleteLayerResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
17562        #[derive(Clone, Debug)]
17563        pub struct DeleteLayerResponseOwnedView(
17564            ::buffa::OwnedView<DeleteLayerResponseView<'static>>,
17565        );
17566        impl DeleteLayerResponseOwnedView {
17567            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
17568            ///
17569            /// The view borrows directly from the buffer's data; the buffer is
17570            /// retained inside the returned handle.
17571            ///
17572            /// # Errors
17573            ///
17574            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
17575            /// protobuf data.
17576            pub fn decode(
17577                bytes: ::buffa::bytes::Bytes,
17578            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17579                ::core::result::Result::Ok(
17580                    DeleteLayerResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
17581                )
17582            }
17583            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
17584            /// max message size).
17585            ///
17586            /// # Errors
17587            ///
17588            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
17589            /// exceeds the configured limits.
17590            pub fn decode_with_options(
17591                bytes: ::buffa::bytes::Bytes,
17592                opts: &::buffa::DecodeOptions,
17593            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17594                ::core::result::Result::Ok(
17595                    DeleteLayerResponseOwnedView(
17596                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
17597                    ),
17598                )
17599            }
17600            /// Build from an owned message via an encode → decode round-trip.
17601            ///
17602            /// # Errors
17603            ///
17604            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
17605            /// somehow invalid (should not happen for well-formed messages).
17606            pub fn from_owned(
17607                msg: &super::super::DeleteLayerResponse,
17608            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17609                ::core::result::Result::Ok(
17610                    DeleteLayerResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
17611                )
17612            }
17613            /// Borrow the full [`DeleteLayerResponseView`] with its lifetime tied to `&self`.
17614            #[must_use]
17615            pub fn view(&self) -> &DeleteLayerResponseView<'_> {
17616                self.0.reborrow()
17617            }
17618            /// Convert to the owned message type.
17619            ///
17620            /// # Errors
17621            ///
17622            /// Returns an error if re-materializing preserved unknown fields
17623            /// fails (e.g. the unknown-field limit is exceeded).
17624            pub fn to_owned_message(
17625                &self,
17626            ) -> ::core::result::Result<
17627                super::super::DeleteLayerResponse,
17628                ::buffa::DecodeError,
17629            > {
17630                self.0.to_owned_message()
17631            }
17632            /// The underlying bytes buffer.
17633            #[must_use]
17634            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
17635                self.0.bytes()
17636            }
17637            /// Consume the handle, returning the underlying bytes buffer.
17638            #[must_use]
17639            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
17640                self.0.into_bytes()
17641            }
17642            /// Final layer revision after delete.
17643            ///
17644            /// Field 1: `layer_revision`
17645            #[must_use]
17646            pub fn layer_revision(&self) -> u64 {
17647                self.0.reborrow().layer_revision
17648            }
17649        }
17650        impl ::core::convert::From<::buffa::OwnedView<DeleteLayerResponseView<'static>>>
17651        for DeleteLayerResponseOwnedView {
17652            fn from(
17653                inner: ::buffa::OwnedView<DeleteLayerResponseView<'static>>,
17654            ) -> Self {
17655                DeleteLayerResponseOwnedView(inner)
17656            }
17657        }
17658        impl ::core::convert::From<DeleteLayerResponseOwnedView>
17659        for ::buffa::OwnedView<DeleteLayerResponseView<'static>> {
17660            fn from(wrapper: DeleteLayerResponseOwnedView) -> Self {
17661                wrapper.0
17662            }
17663        }
17664        impl ::core::convert::AsRef<::buffa::OwnedView<DeleteLayerResponseView<'static>>>
17665        for DeleteLayerResponseOwnedView {
17666            fn as_ref(&self) -> &::buffa::OwnedView<DeleteLayerResponseView<'static>> {
17667                &self.0
17668            }
17669        }
17670        impl ::buffa::HasMessageView for super::super::DeleteLayerResponse {
17671            type View<'a> = DeleteLayerResponseView<'a>;
17672            type ViewHandle = DeleteLayerResponseOwnedView;
17673        }
17674        impl ::serde::Serialize for DeleteLayerResponseOwnedView {
17675            fn serialize<__S: ::serde::Serializer>(
17676                &self,
17677                __s: __S,
17678            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17679                ::serde::Serialize::serialize(&self.0, __s)
17680            }
17681        }
17682        /// UpsertDrawingRequest creates or updates one drawing using the parent layer revision.
17683        #[derive(Clone, Debug, Default)]
17684        pub struct UpsertDrawingRequestView<'a> {
17685            /// Drawing payload to create or update.
17686            ///
17687            /// Field 1: `drawing`
17688            pub drawing: ::buffa::MessageFieldView<
17689                super::super::__buffa::view::DrawingView<'a>,
17690            >,
17691            /// Expected current revision of the parent layer.
17692            ///
17693            /// Field 2: `expected_layer_revision`
17694            pub expected_layer_revision: u64,
17695            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
17696        }
17697        impl<'a> ::buffa::MessageView<'a> for UpsertDrawingRequestView<'a> {
17698            type Owned = super::super::UpsertDrawingRequest;
17699            fn decode_view(
17700                buf: &'a [u8],
17701            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17702                let __limit = ::core::cell::Cell::new(
17703                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
17704                );
17705                <Self as ::buffa::MessageView>::decode_view_ctx(
17706                    buf,
17707                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
17708                )
17709            }
17710            fn decode_view_with_ctx(
17711                buf: &'a [u8],
17712                ctx: ::buffa::DecodeContext<'_>,
17713            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17714                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
17715            }
17716            fn merge_view_field(
17717                &mut self,
17718                tag: ::buffa::encoding::Tag,
17719                cur: &'a [u8],
17720                before_tag: &'a [u8],
17721                ctx: ::buffa::DecodeContext<'_>,
17722            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
17723                let _ = ctx;
17724                #[allow(unused_variables)]
17725                let view = self;
17726                let mut cur = cur;
17727                match tag.field_number() {
17728                    1u32 => {
17729                        ::buffa::encoding::check_wire_type(
17730                            tag,
17731                            ::buffa::encoding::WireType::LengthDelimited,
17732                        )?;
17733                        let __sub_ctx = ctx.descend()?;
17734                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
17735                        match view.drawing.as_mut() {
17736                            Some(existing) => {
17737                                ::buffa::MessageView::merge_into_view(
17738                                    existing,
17739                                    sub,
17740                                    __sub_ctx,
17741                                )?
17742                            }
17743                            None => {
17744                                view.drawing = ::buffa::MessageFieldView::set(
17745                                    <super::super::__buffa::view::DrawingView as ::buffa::MessageView>::decode_view_ctx(
17746                                        sub,
17747                                        __sub_ctx,
17748                                    )?,
17749                                );
17750                            }
17751                        }
17752                    }
17753                    2u32 => {
17754                        ::buffa::encoding::check_wire_type(
17755                            tag,
17756                            ::buffa::encoding::WireType::Fixed64,
17757                        )?;
17758                        view.expected_layer_revision = ::buffa::types::decode_fixed64(
17759                            &mut cur,
17760                        )?;
17761                    }
17762                    _ => {
17763                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
17764                        let span_len = before_tag.len() - cur.len();
17765                        view.__buffa_unknown_fields
17766                            .push_record(before_tag, span_len, ctx)?;
17767                    }
17768                }
17769                ::core::result::Result::Ok(cur)
17770            }
17771            fn to_owned_message(
17772                &self,
17773            ) -> ::core::result::Result<
17774                super::super::UpsertDrawingRequest,
17775                ::buffa::DecodeError,
17776            > {
17777                self.to_owned_from_source(None)
17778            }
17779            #[allow(clippy::useless_conversion, clippy::needless_update)]
17780            fn to_owned_from_source(
17781                &self,
17782                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
17783            ) -> ::core::result::Result<
17784                super::super::UpsertDrawingRequest,
17785                ::buffa::DecodeError,
17786            > {
17787                #[allow(unused_imports)]
17788                use ::buffa::alloc::string::ToString as _;
17789                let _ = __buffa_src;
17790                ::core::result::Result::Ok(super::super::UpsertDrawingRequest {
17791                    drawing: match self.drawing.as_option() {
17792                        Some(v) => {
17793                            ::buffa::MessageField::<
17794                                super::super::Drawing,
17795                            >::some(v.to_owned_from_source(__buffa_src)?)
17796                        }
17797                        None => ::buffa::MessageField::none(),
17798                    },
17799                    expected_layer_revision: self.expected_layer_revision,
17800                    __buffa_unknown_fields: self
17801                        .__buffa_unknown_fields
17802                        .to_owned()?
17803                        .into(),
17804                    ..::core::default::Default::default()
17805                })
17806            }
17807        }
17808        impl<'a> ::buffa::ViewEncode<'a> for UpsertDrawingRequestView<'a> {
17809            #[allow(clippy::needless_borrow, clippy::let_and_return)]
17810            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
17811                #[allow(unused_imports)]
17812                use ::buffa::Enumeration as _;
17813                let mut size = 0u32;
17814                if self.drawing.is_set() {
17815                    let __slot = __cache.reserve();
17816                    let inner_size = self.drawing.compute_size(__cache);
17817                    __cache.set(__slot, inner_size);
17818                    size
17819                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
17820                            + inner_size;
17821                }
17822                if self.expected_layer_revision != 0u64 {
17823                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
17824                }
17825                size += self.__buffa_unknown_fields.encoded_len() as u32;
17826                size
17827            }
17828            #[allow(clippy::needless_borrow)]
17829            fn write_to(
17830                &self,
17831                __cache: &mut ::buffa::SizeCache,
17832                buf: &mut impl ::buffa::bytes::BufMut,
17833            ) {
17834                #[allow(unused_imports)]
17835                use ::buffa::Enumeration as _;
17836                if self.drawing.is_set() {
17837                    ::buffa::types::put_len_delimited_header(
17838                        1u32,
17839                        __cache.consume_next(),
17840                        buf,
17841                    );
17842                    self.drawing.write_to(__cache, buf);
17843                }
17844                if self.expected_layer_revision != 0u64 {
17845                    ::buffa::types::put_fixed64_field(
17846                        2u32,
17847                        self.expected_layer_revision,
17848                        buf,
17849                    );
17850                }
17851                self.__buffa_unknown_fields.write_to(buf);
17852            }
17853        }
17854        /// Serializes this view as protobuf JSON.
17855        ///
17856        /// Implicit-presence fields with default values are omitted, `required`
17857        /// fields are always emitted, explicit-presence (`optional`) fields are
17858        /// emitted only when set, bytes fields are base64-encoded, and enum
17859        /// values are their proto name strings.
17860        ///
17861        /// This impl uses `serialize_map(None)` because the number of emitted
17862        /// fields depends on default-omission rules; serializers that require
17863        /// known map lengths (e.g. `bincode`) will return a runtime error.
17864        /// Use the owned message type for those formats.
17865        impl<'__a> ::serde::Serialize for UpsertDrawingRequestView<'__a> {
17866            fn serialize<__S: ::serde::Serializer>(
17867                &self,
17868                __s: __S,
17869            ) -> ::core::result::Result<__S::Ok, __S::Error> {
17870                use ::serde::ser::SerializeMap as _;
17871                let mut __map = __s.serialize_map(::core::option::Option::None)?;
17872                {
17873                    if let ::core::option::Option::Some(__v) = self.drawing.as_option() {
17874                        __map.serialize_entry("drawing", __v)?;
17875                    }
17876                }
17877                if !::buffa::json_helpers::skip_if::is_zero_u64(
17878                    &self.expected_layer_revision,
17879                ) {
17880                    __map
17881                        .serialize_entry(
17882                            "expectedLayerRevision",
17883                            &::buffa::json_helpers::ProtoJson(
17884                                &self.expected_layer_revision,
17885                            ),
17886                        )?;
17887                }
17888                __map.end()
17889            }
17890        }
17891        impl<'a> ::buffa::MessageName for UpsertDrawingRequestView<'a> {
17892            const PACKAGE: &'static str = "polychart.v1";
17893            const NAME: &'static str = "UpsertDrawingRequest";
17894            const FULL_NAME: &'static str = "polychart.v1.UpsertDrawingRequest";
17895            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingRequest";
17896        }
17897        ::buffa::impl_default_view_instance!(UpsertDrawingRequestView);
17898        ::buffa::impl_view_reborrow!(UpsertDrawingRequestView);
17899        /** Self-contained, `'static` owned view of a `UpsertDrawingRequest` message.
17900
17901 Wraps [`::buffa::OwnedView`]`<`[`UpsertDrawingRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
17902
17903 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UpsertDrawingRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
17904        #[derive(Clone, Debug)]
17905        pub struct UpsertDrawingRequestOwnedView(
17906            ::buffa::OwnedView<UpsertDrawingRequestView<'static>>,
17907        );
17908        impl UpsertDrawingRequestOwnedView {
17909            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
17910            ///
17911            /// The view borrows directly from the buffer's data; the buffer is
17912            /// retained inside the returned handle.
17913            ///
17914            /// # Errors
17915            ///
17916            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
17917            /// protobuf data.
17918            pub fn decode(
17919                bytes: ::buffa::bytes::Bytes,
17920            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17921                ::core::result::Result::Ok(
17922                    UpsertDrawingRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
17923                )
17924            }
17925            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
17926            /// max message size).
17927            ///
17928            /// # Errors
17929            ///
17930            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
17931            /// exceeds the configured limits.
17932            pub fn decode_with_options(
17933                bytes: ::buffa::bytes::Bytes,
17934                opts: &::buffa::DecodeOptions,
17935            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17936                ::core::result::Result::Ok(
17937                    UpsertDrawingRequestOwnedView(
17938                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
17939                    ),
17940                )
17941            }
17942            /// Build from an owned message via an encode → decode round-trip.
17943            ///
17944            /// # Errors
17945            ///
17946            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
17947            /// somehow invalid (should not happen for well-formed messages).
17948            pub fn from_owned(
17949                msg: &super::super::UpsertDrawingRequest,
17950            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
17951                ::core::result::Result::Ok(
17952                    UpsertDrawingRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
17953                )
17954            }
17955            /// Borrow the full [`UpsertDrawingRequestView`] with its lifetime tied to `&self`.
17956            #[must_use]
17957            pub fn view(&self) -> &UpsertDrawingRequestView<'_> {
17958                self.0.reborrow()
17959            }
17960            /// Convert to the owned message type.
17961            ///
17962            /// # Errors
17963            ///
17964            /// Returns an error if re-materializing preserved unknown fields
17965            /// fails (e.g. the unknown-field limit is exceeded).
17966            pub fn to_owned_message(
17967                &self,
17968            ) -> ::core::result::Result<
17969                super::super::UpsertDrawingRequest,
17970                ::buffa::DecodeError,
17971            > {
17972                self.0.to_owned_message()
17973            }
17974            /// The underlying bytes buffer.
17975            #[must_use]
17976            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
17977                self.0.bytes()
17978            }
17979            /// Consume the handle, returning the underlying bytes buffer.
17980            #[must_use]
17981            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
17982                self.0.into_bytes()
17983            }
17984            /// Drawing payload to create or update.
17985            ///
17986            /// Field 1: `drawing`
17987            #[must_use]
17988            pub fn drawing(
17989                &self,
17990            ) -> &::buffa::MessageFieldView<
17991                super::super::__buffa::view::DrawingView<'_>,
17992            > {
17993                &self.0.reborrow().drawing
17994            }
17995            /// Expected current revision of the parent layer.
17996            ///
17997            /// Field 2: `expected_layer_revision`
17998            #[must_use]
17999            pub fn expected_layer_revision(&self) -> u64 {
18000                self.0.reborrow().expected_layer_revision
18001            }
18002        }
18003        impl ::core::convert::From<::buffa::OwnedView<UpsertDrawingRequestView<'static>>>
18004        for UpsertDrawingRequestOwnedView {
18005            fn from(
18006                inner: ::buffa::OwnedView<UpsertDrawingRequestView<'static>>,
18007            ) -> Self {
18008                UpsertDrawingRequestOwnedView(inner)
18009            }
18010        }
18011        impl ::core::convert::From<UpsertDrawingRequestOwnedView>
18012        for ::buffa::OwnedView<UpsertDrawingRequestView<'static>> {
18013            fn from(wrapper: UpsertDrawingRequestOwnedView) -> Self {
18014                wrapper.0
18015            }
18016        }
18017        impl ::core::convert::AsRef<
18018            ::buffa::OwnedView<UpsertDrawingRequestView<'static>>,
18019        > for UpsertDrawingRequestOwnedView {
18020            fn as_ref(&self) -> &::buffa::OwnedView<UpsertDrawingRequestView<'static>> {
18021                &self.0
18022            }
18023        }
18024        impl ::buffa::HasMessageView for super::super::UpsertDrawingRequest {
18025            type View<'a> = UpsertDrawingRequestView<'a>;
18026            type ViewHandle = UpsertDrawingRequestOwnedView;
18027        }
18028        impl ::serde::Serialize for UpsertDrawingRequestOwnedView {
18029            fn serialize<__S: ::serde::Serializer>(
18030                &self,
18031                __s: __S,
18032            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18033                ::serde::Serialize::serialize(&self.0, __s)
18034            }
18035        }
18036        /// UpsertDrawingResponse returns the committed drawing and new parent layer revision.
18037        #[derive(Clone, Debug, Default)]
18038        pub struct UpsertDrawingResponseView<'a> {
18039            /// Drawing after server-side commit handling.
18040            ///
18041            /// Field 1: `drawing`
18042            pub drawing: ::buffa::MessageFieldView<
18043                super::super::__buffa::view::DrawingView<'a>,
18044            >,
18045            /// New parent layer revision after mutation.
18046            ///
18047            /// Field 2: `layer_revision`
18048            pub layer_revision: u64,
18049            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
18050        }
18051        impl<'a> ::buffa::MessageView<'a> for UpsertDrawingResponseView<'a> {
18052            type Owned = super::super::UpsertDrawingResponse;
18053            fn decode_view(
18054                buf: &'a [u8],
18055            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18056                let __limit = ::core::cell::Cell::new(
18057                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
18058                );
18059                <Self as ::buffa::MessageView>::decode_view_ctx(
18060                    buf,
18061                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
18062                )
18063            }
18064            fn decode_view_with_ctx(
18065                buf: &'a [u8],
18066                ctx: ::buffa::DecodeContext<'_>,
18067            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18068                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
18069            }
18070            fn merge_view_field(
18071                &mut self,
18072                tag: ::buffa::encoding::Tag,
18073                cur: &'a [u8],
18074                before_tag: &'a [u8],
18075                ctx: ::buffa::DecodeContext<'_>,
18076            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
18077                let _ = ctx;
18078                #[allow(unused_variables)]
18079                let view = self;
18080                let mut cur = cur;
18081                match tag.field_number() {
18082                    1u32 => {
18083                        ::buffa::encoding::check_wire_type(
18084                            tag,
18085                            ::buffa::encoding::WireType::LengthDelimited,
18086                        )?;
18087                        let __sub_ctx = ctx.descend()?;
18088                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
18089                        match view.drawing.as_mut() {
18090                            Some(existing) => {
18091                                ::buffa::MessageView::merge_into_view(
18092                                    existing,
18093                                    sub,
18094                                    __sub_ctx,
18095                                )?
18096                            }
18097                            None => {
18098                                view.drawing = ::buffa::MessageFieldView::set(
18099                                    <super::super::__buffa::view::DrawingView as ::buffa::MessageView>::decode_view_ctx(
18100                                        sub,
18101                                        __sub_ctx,
18102                                    )?,
18103                                );
18104                            }
18105                        }
18106                    }
18107                    2u32 => {
18108                        ::buffa::encoding::check_wire_type(
18109                            tag,
18110                            ::buffa::encoding::WireType::Fixed64,
18111                        )?;
18112                        view.layer_revision = ::buffa::types::decode_fixed64(&mut cur)?;
18113                    }
18114                    _ => {
18115                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
18116                        let span_len = before_tag.len() - cur.len();
18117                        view.__buffa_unknown_fields
18118                            .push_record(before_tag, span_len, ctx)?;
18119                    }
18120                }
18121                ::core::result::Result::Ok(cur)
18122            }
18123            fn to_owned_message(
18124                &self,
18125            ) -> ::core::result::Result<
18126                super::super::UpsertDrawingResponse,
18127                ::buffa::DecodeError,
18128            > {
18129                self.to_owned_from_source(None)
18130            }
18131            #[allow(clippy::useless_conversion, clippy::needless_update)]
18132            fn to_owned_from_source(
18133                &self,
18134                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
18135            ) -> ::core::result::Result<
18136                super::super::UpsertDrawingResponse,
18137                ::buffa::DecodeError,
18138            > {
18139                #[allow(unused_imports)]
18140                use ::buffa::alloc::string::ToString as _;
18141                let _ = __buffa_src;
18142                ::core::result::Result::Ok(super::super::UpsertDrawingResponse {
18143                    drawing: match self.drawing.as_option() {
18144                        Some(v) => {
18145                            ::buffa::MessageField::<
18146                                super::super::Drawing,
18147                            >::some(v.to_owned_from_source(__buffa_src)?)
18148                        }
18149                        None => ::buffa::MessageField::none(),
18150                    },
18151                    layer_revision: self.layer_revision,
18152                    __buffa_unknown_fields: self
18153                        .__buffa_unknown_fields
18154                        .to_owned()?
18155                        .into(),
18156                    ..::core::default::Default::default()
18157                })
18158            }
18159        }
18160        impl<'a> ::buffa::ViewEncode<'a> for UpsertDrawingResponseView<'a> {
18161            #[allow(clippy::needless_borrow, clippy::let_and_return)]
18162            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
18163                #[allow(unused_imports)]
18164                use ::buffa::Enumeration as _;
18165                let mut size = 0u32;
18166                if self.drawing.is_set() {
18167                    let __slot = __cache.reserve();
18168                    let inner_size = self.drawing.compute_size(__cache);
18169                    __cache.set(__slot, inner_size);
18170                    size
18171                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
18172                            + inner_size;
18173                }
18174                if self.layer_revision != 0u64 {
18175                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
18176                }
18177                size += self.__buffa_unknown_fields.encoded_len() as u32;
18178                size
18179            }
18180            #[allow(clippy::needless_borrow)]
18181            fn write_to(
18182                &self,
18183                __cache: &mut ::buffa::SizeCache,
18184                buf: &mut impl ::buffa::bytes::BufMut,
18185            ) {
18186                #[allow(unused_imports)]
18187                use ::buffa::Enumeration as _;
18188                if self.drawing.is_set() {
18189                    ::buffa::types::put_len_delimited_header(
18190                        1u32,
18191                        __cache.consume_next(),
18192                        buf,
18193                    );
18194                    self.drawing.write_to(__cache, buf);
18195                }
18196                if self.layer_revision != 0u64 {
18197                    ::buffa::types::put_fixed64_field(2u32, self.layer_revision, buf);
18198                }
18199                self.__buffa_unknown_fields.write_to(buf);
18200            }
18201        }
18202        /// Serializes this view as protobuf JSON.
18203        ///
18204        /// Implicit-presence fields with default values are omitted, `required`
18205        /// fields are always emitted, explicit-presence (`optional`) fields are
18206        /// emitted only when set, bytes fields are base64-encoded, and enum
18207        /// values are their proto name strings.
18208        ///
18209        /// This impl uses `serialize_map(None)` because the number of emitted
18210        /// fields depends on default-omission rules; serializers that require
18211        /// known map lengths (e.g. `bincode`) will return a runtime error.
18212        /// Use the owned message type for those formats.
18213        impl<'__a> ::serde::Serialize for UpsertDrawingResponseView<'__a> {
18214            fn serialize<__S: ::serde::Serializer>(
18215                &self,
18216                __s: __S,
18217            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18218                use ::serde::ser::SerializeMap as _;
18219                let mut __map = __s.serialize_map(::core::option::Option::None)?;
18220                {
18221                    if let ::core::option::Option::Some(__v) = self.drawing.as_option() {
18222                        __map.serialize_entry("drawing", __v)?;
18223                    }
18224                }
18225                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.layer_revision) {
18226                    __map
18227                        .serialize_entry(
18228                            "layerRevision",
18229                            &::buffa::json_helpers::ProtoJson(&self.layer_revision),
18230                        )?;
18231                }
18232                __map.end()
18233            }
18234        }
18235        impl<'a> ::buffa::MessageName for UpsertDrawingResponseView<'a> {
18236            const PACKAGE: &'static str = "polychart.v1";
18237            const NAME: &'static str = "UpsertDrawingResponse";
18238            const FULL_NAME: &'static str = "polychart.v1.UpsertDrawingResponse";
18239            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.UpsertDrawingResponse";
18240        }
18241        ::buffa::impl_default_view_instance!(UpsertDrawingResponseView);
18242        ::buffa::impl_view_reborrow!(UpsertDrawingResponseView);
18243        /** Self-contained, `'static` owned view of a `UpsertDrawingResponse` message.
18244
18245 Wraps [`::buffa::OwnedView`]`<`[`UpsertDrawingResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
18246
18247 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`UpsertDrawingResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
18248        #[derive(Clone, Debug)]
18249        pub struct UpsertDrawingResponseOwnedView(
18250            ::buffa::OwnedView<UpsertDrawingResponseView<'static>>,
18251        );
18252        impl UpsertDrawingResponseOwnedView {
18253            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
18254            ///
18255            /// The view borrows directly from the buffer's data; the buffer is
18256            /// retained inside the returned handle.
18257            ///
18258            /// # Errors
18259            ///
18260            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
18261            /// protobuf data.
18262            pub fn decode(
18263                bytes: ::buffa::bytes::Bytes,
18264            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18265                ::core::result::Result::Ok(
18266                    UpsertDrawingResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
18267                )
18268            }
18269            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
18270            /// max message size).
18271            ///
18272            /// # Errors
18273            ///
18274            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
18275            /// exceeds the configured limits.
18276            pub fn decode_with_options(
18277                bytes: ::buffa::bytes::Bytes,
18278                opts: &::buffa::DecodeOptions,
18279            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18280                ::core::result::Result::Ok(
18281                    UpsertDrawingResponseOwnedView(
18282                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
18283                    ),
18284                )
18285            }
18286            /// Build from an owned message via an encode → decode round-trip.
18287            ///
18288            /// # Errors
18289            ///
18290            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
18291            /// somehow invalid (should not happen for well-formed messages).
18292            pub fn from_owned(
18293                msg: &super::super::UpsertDrawingResponse,
18294            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18295                ::core::result::Result::Ok(
18296                    UpsertDrawingResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
18297                )
18298            }
18299            /// Borrow the full [`UpsertDrawingResponseView`] with its lifetime tied to `&self`.
18300            #[must_use]
18301            pub fn view(&self) -> &UpsertDrawingResponseView<'_> {
18302                self.0.reborrow()
18303            }
18304            /// Convert to the owned message type.
18305            ///
18306            /// # Errors
18307            ///
18308            /// Returns an error if re-materializing preserved unknown fields
18309            /// fails (e.g. the unknown-field limit is exceeded).
18310            pub fn to_owned_message(
18311                &self,
18312            ) -> ::core::result::Result<
18313                super::super::UpsertDrawingResponse,
18314                ::buffa::DecodeError,
18315            > {
18316                self.0.to_owned_message()
18317            }
18318            /// The underlying bytes buffer.
18319            #[must_use]
18320            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
18321                self.0.bytes()
18322            }
18323            /// Consume the handle, returning the underlying bytes buffer.
18324            #[must_use]
18325            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
18326                self.0.into_bytes()
18327            }
18328            /// Drawing after server-side commit handling.
18329            ///
18330            /// Field 1: `drawing`
18331            #[must_use]
18332            pub fn drawing(
18333                &self,
18334            ) -> &::buffa::MessageFieldView<
18335                super::super::__buffa::view::DrawingView<'_>,
18336            > {
18337                &self.0.reborrow().drawing
18338            }
18339            /// New parent layer revision after mutation.
18340            ///
18341            /// Field 2: `layer_revision`
18342            #[must_use]
18343            pub fn layer_revision(&self) -> u64 {
18344                self.0.reborrow().layer_revision
18345            }
18346        }
18347        impl ::core::convert::From<
18348            ::buffa::OwnedView<UpsertDrawingResponseView<'static>>,
18349        > for UpsertDrawingResponseOwnedView {
18350            fn from(
18351                inner: ::buffa::OwnedView<UpsertDrawingResponseView<'static>>,
18352            ) -> Self {
18353                UpsertDrawingResponseOwnedView(inner)
18354            }
18355        }
18356        impl ::core::convert::From<UpsertDrawingResponseOwnedView>
18357        for ::buffa::OwnedView<UpsertDrawingResponseView<'static>> {
18358            fn from(wrapper: UpsertDrawingResponseOwnedView) -> Self {
18359                wrapper.0
18360            }
18361        }
18362        impl ::core::convert::AsRef<
18363            ::buffa::OwnedView<UpsertDrawingResponseView<'static>>,
18364        > for UpsertDrawingResponseOwnedView {
18365            fn as_ref(&self) -> &::buffa::OwnedView<UpsertDrawingResponseView<'static>> {
18366                &self.0
18367            }
18368        }
18369        impl ::buffa::HasMessageView for super::super::UpsertDrawingResponse {
18370            type View<'a> = UpsertDrawingResponseView<'a>;
18371            type ViewHandle = UpsertDrawingResponseOwnedView;
18372        }
18373        impl ::serde::Serialize for UpsertDrawingResponseOwnedView {
18374            fn serialize<__S: ::serde::Serializer>(
18375                &self,
18376                __s: __S,
18377            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18378                ::serde::Serialize::serialize(&self.0, __s)
18379            }
18380        }
18381        /// DeleteDrawingRequest soft-deletes one drawing using the parent layer revision.
18382        #[derive(Clone, Debug, Default)]
18383        pub struct DeleteDrawingRequestView<'a> {
18384            /// Drawing to delete.
18385            ///
18386            /// Field 1: `drawing`
18387            pub drawing: ::buffa::MessageFieldView<
18388                super::super::__buffa::view::DrawingRefView<'a>,
18389            >,
18390            /// Parent layer that contains the drawing.
18391            ///
18392            /// Field 2: `layer`
18393            pub layer: ::buffa::MessageFieldView<
18394                super::super::__buffa::view::LayerRefView<'a>,
18395            >,
18396            /// Expected current revision of the parent layer.
18397            ///
18398            /// Field 3: `expected_layer_revision`
18399            pub expected_layer_revision: u64,
18400            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
18401        }
18402        impl<'a> ::buffa::MessageView<'a> for DeleteDrawingRequestView<'a> {
18403            type Owned = super::super::DeleteDrawingRequest;
18404            fn decode_view(
18405                buf: &'a [u8],
18406            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18407                let __limit = ::core::cell::Cell::new(
18408                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
18409                );
18410                <Self as ::buffa::MessageView>::decode_view_ctx(
18411                    buf,
18412                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
18413                )
18414            }
18415            fn decode_view_with_ctx(
18416                buf: &'a [u8],
18417                ctx: ::buffa::DecodeContext<'_>,
18418            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18419                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
18420            }
18421            fn merge_view_field(
18422                &mut self,
18423                tag: ::buffa::encoding::Tag,
18424                cur: &'a [u8],
18425                before_tag: &'a [u8],
18426                ctx: ::buffa::DecodeContext<'_>,
18427            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
18428                let _ = ctx;
18429                #[allow(unused_variables)]
18430                let view = self;
18431                let mut cur = cur;
18432                match tag.field_number() {
18433                    1u32 => {
18434                        ::buffa::encoding::check_wire_type(
18435                            tag,
18436                            ::buffa::encoding::WireType::LengthDelimited,
18437                        )?;
18438                        let __sub_ctx = ctx.descend()?;
18439                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
18440                        match view.drawing.as_mut() {
18441                            Some(existing) => {
18442                                ::buffa::MessageView::merge_into_view(
18443                                    existing,
18444                                    sub,
18445                                    __sub_ctx,
18446                                )?
18447                            }
18448                            None => {
18449                                view.drawing = ::buffa::MessageFieldView::set(
18450                                    <super::super::__buffa::view::DrawingRefView as ::buffa::MessageView>::decode_view_ctx(
18451                                        sub,
18452                                        __sub_ctx,
18453                                    )?,
18454                                );
18455                            }
18456                        }
18457                    }
18458                    2u32 => {
18459                        ::buffa::encoding::check_wire_type(
18460                            tag,
18461                            ::buffa::encoding::WireType::LengthDelimited,
18462                        )?;
18463                        let __sub_ctx = ctx.descend()?;
18464                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
18465                        match view.layer.as_mut() {
18466                            Some(existing) => {
18467                                ::buffa::MessageView::merge_into_view(
18468                                    existing,
18469                                    sub,
18470                                    __sub_ctx,
18471                                )?
18472                            }
18473                            None => {
18474                                view.layer = ::buffa::MessageFieldView::set(
18475                                    <super::super::__buffa::view::LayerRefView as ::buffa::MessageView>::decode_view_ctx(
18476                                        sub,
18477                                        __sub_ctx,
18478                                    )?,
18479                                );
18480                            }
18481                        }
18482                    }
18483                    3u32 => {
18484                        ::buffa::encoding::check_wire_type(
18485                            tag,
18486                            ::buffa::encoding::WireType::Fixed64,
18487                        )?;
18488                        view.expected_layer_revision = ::buffa::types::decode_fixed64(
18489                            &mut cur,
18490                        )?;
18491                    }
18492                    _ => {
18493                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
18494                        let span_len = before_tag.len() - cur.len();
18495                        view.__buffa_unknown_fields
18496                            .push_record(before_tag, span_len, ctx)?;
18497                    }
18498                }
18499                ::core::result::Result::Ok(cur)
18500            }
18501            fn to_owned_message(
18502                &self,
18503            ) -> ::core::result::Result<
18504                super::super::DeleteDrawingRequest,
18505                ::buffa::DecodeError,
18506            > {
18507                self.to_owned_from_source(None)
18508            }
18509            #[allow(clippy::useless_conversion, clippy::needless_update)]
18510            fn to_owned_from_source(
18511                &self,
18512                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
18513            ) -> ::core::result::Result<
18514                super::super::DeleteDrawingRequest,
18515                ::buffa::DecodeError,
18516            > {
18517                #[allow(unused_imports)]
18518                use ::buffa::alloc::string::ToString as _;
18519                let _ = __buffa_src;
18520                ::core::result::Result::Ok(super::super::DeleteDrawingRequest {
18521                    drawing: match self.drawing.as_option() {
18522                        Some(v) => {
18523                            ::buffa::MessageField::<
18524                                super::super::DrawingRef,
18525                            >::some(v.to_owned_from_source(__buffa_src)?)
18526                        }
18527                        None => ::buffa::MessageField::none(),
18528                    },
18529                    layer: match self.layer.as_option() {
18530                        Some(v) => {
18531                            ::buffa::MessageField::<
18532                                super::super::LayerRef,
18533                            >::some(v.to_owned_from_source(__buffa_src)?)
18534                        }
18535                        None => ::buffa::MessageField::none(),
18536                    },
18537                    expected_layer_revision: self.expected_layer_revision,
18538                    __buffa_unknown_fields: self
18539                        .__buffa_unknown_fields
18540                        .to_owned()?
18541                        .into(),
18542                    ..::core::default::Default::default()
18543                })
18544            }
18545        }
18546        impl<'a> ::buffa::ViewEncode<'a> for DeleteDrawingRequestView<'a> {
18547            #[allow(clippy::needless_borrow, clippy::let_and_return)]
18548            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
18549                #[allow(unused_imports)]
18550                use ::buffa::Enumeration as _;
18551                let mut size = 0u32;
18552                if self.drawing.is_set() {
18553                    let __slot = __cache.reserve();
18554                    let inner_size = self.drawing.compute_size(__cache);
18555                    __cache.set(__slot, inner_size);
18556                    size
18557                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
18558                            + inner_size;
18559                }
18560                if self.layer.is_set() {
18561                    let __slot = __cache.reserve();
18562                    let inner_size = self.layer.compute_size(__cache);
18563                    __cache.set(__slot, inner_size);
18564                    size
18565                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
18566                            + inner_size;
18567                }
18568                if self.expected_layer_revision != 0u64 {
18569                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
18570                }
18571                size += self.__buffa_unknown_fields.encoded_len() as u32;
18572                size
18573            }
18574            #[allow(clippy::needless_borrow)]
18575            fn write_to(
18576                &self,
18577                __cache: &mut ::buffa::SizeCache,
18578                buf: &mut impl ::buffa::bytes::BufMut,
18579            ) {
18580                #[allow(unused_imports)]
18581                use ::buffa::Enumeration as _;
18582                if self.drawing.is_set() {
18583                    ::buffa::types::put_len_delimited_header(
18584                        1u32,
18585                        __cache.consume_next(),
18586                        buf,
18587                    );
18588                    self.drawing.write_to(__cache, buf);
18589                }
18590                if self.layer.is_set() {
18591                    ::buffa::types::put_len_delimited_header(
18592                        2u32,
18593                        __cache.consume_next(),
18594                        buf,
18595                    );
18596                    self.layer.write_to(__cache, buf);
18597                }
18598                if self.expected_layer_revision != 0u64 {
18599                    ::buffa::types::put_fixed64_field(
18600                        3u32,
18601                        self.expected_layer_revision,
18602                        buf,
18603                    );
18604                }
18605                self.__buffa_unknown_fields.write_to(buf);
18606            }
18607        }
18608        /// Serializes this view as protobuf JSON.
18609        ///
18610        /// Implicit-presence fields with default values are omitted, `required`
18611        /// fields are always emitted, explicit-presence (`optional`) fields are
18612        /// emitted only when set, bytes fields are base64-encoded, and enum
18613        /// values are their proto name strings.
18614        ///
18615        /// This impl uses `serialize_map(None)` because the number of emitted
18616        /// fields depends on default-omission rules; serializers that require
18617        /// known map lengths (e.g. `bincode`) will return a runtime error.
18618        /// Use the owned message type for those formats.
18619        impl<'__a> ::serde::Serialize for DeleteDrawingRequestView<'__a> {
18620            fn serialize<__S: ::serde::Serializer>(
18621                &self,
18622                __s: __S,
18623            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18624                use ::serde::ser::SerializeMap as _;
18625                let mut __map = __s.serialize_map(::core::option::Option::None)?;
18626                {
18627                    if let ::core::option::Option::Some(__v) = self.drawing.as_option() {
18628                        __map.serialize_entry("drawing", __v)?;
18629                    }
18630                }
18631                {
18632                    if let ::core::option::Option::Some(__v) = self.layer.as_option() {
18633                        __map.serialize_entry("layer", __v)?;
18634                    }
18635                }
18636                if !::buffa::json_helpers::skip_if::is_zero_u64(
18637                    &self.expected_layer_revision,
18638                ) {
18639                    __map
18640                        .serialize_entry(
18641                            "expectedLayerRevision",
18642                            &::buffa::json_helpers::ProtoJson(
18643                                &self.expected_layer_revision,
18644                            ),
18645                        )?;
18646                }
18647                __map.end()
18648            }
18649        }
18650        impl<'a> ::buffa::MessageName for DeleteDrawingRequestView<'a> {
18651            const PACKAGE: &'static str = "polychart.v1";
18652            const NAME: &'static str = "DeleteDrawingRequest";
18653            const FULL_NAME: &'static str = "polychart.v1.DeleteDrawingRequest";
18654            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingRequest";
18655        }
18656        ::buffa::impl_default_view_instance!(DeleteDrawingRequestView);
18657        ::buffa::impl_view_reborrow!(DeleteDrawingRequestView);
18658        /** Self-contained, `'static` owned view of a `DeleteDrawingRequest` message.
18659
18660 Wraps [`::buffa::OwnedView`]`<`[`DeleteDrawingRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
18661
18662 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DeleteDrawingRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
18663        #[derive(Clone, Debug)]
18664        pub struct DeleteDrawingRequestOwnedView(
18665            ::buffa::OwnedView<DeleteDrawingRequestView<'static>>,
18666        );
18667        impl DeleteDrawingRequestOwnedView {
18668            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
18669            ///
18670            /// The view borrows directly from the buffer's data; the buffer is
18671            /// retained inside the returned handle.
18672            ///
18673            /// # Errors
18674            ///
18675            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
18676            /// protobuf data.
18677            pub fn decode(
18678                bytes: ::buffa::bytes::Bytes,
18679            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18680                ::core::result::Result::Ok(
18681                    DeleteDrawingRequestOwnedView(::buffa::OwnedView::decode(bytes)?),
18682                )
18683            }
18684            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
18685            /// max message size).
18686            ///
18687            /// # Errors
18688            ///
18689            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
18690            /// exceeds the configured limits.
18691            pub fn decode_with_options(
18692                bytes: ::buffa::bytes::Bytes,
18693                opts: &::buffa::DecodeOptions,
18694            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18695                ::core::result::Result::Ok(
18696                    DeleteDrawingRequestOwnedView(
18697                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
18698                    ),
18699                )
18700            }
18701            /// Build from an owned message via an encode → decode round-trip.
18702            ///
18703            /// # Errors
18704            ///
18705            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
18706            /// somehow invalid (should not happen for well-formed messages).
18707            pub fn from_owned(
18708                msg: &super::super::DeleteDrawingRequest,
18709            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18710                ::core::result::Result::Ok(
18711                    DeleteDrawingRequestOwnedView(::buffa::OwnedView::from_owned(msg)?),
18712                )
18713            }
18714            /// Borrow the full [`DeleteDrawingRequestView`] with its lifetime tied to `&self`.
18715            #[must_use]
18716            pub fn view(&self) -> &DeleteDrawingRequestView<'_> {
18717                self.0.reborrow()
18718            }
18719            /// Convert to the owned message type.
18720            ///
18721            /// # Errors
18722            ///
18723            /// Returns an error if re-materializing preserved unknown fields
18724            /// fails (e.g. the unknown-field limit is exceeded).
18725            pub fn to_owned_message(
18726                &self,
18727            ) -> ::core::result::Result<
18728                super::super::DeleteDrawingRequest,
18729                ::buffa::DecodeError,
18730            > {
18731                self.0.to_owned_message()
18732            }
18733            /// The underlying bytes buffer.
18734            #[must_use]
18735            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
18736                self.0.bytes()
18737            }
18738            /// Consume the handle, returning the underlying bytes buffer.
18739            #[must_use]
18740            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
18741                self.0.into_bytes()
18742            }
18743            /// Drawing to delete.
18744            ///
18745            /// Field 1: `drawing`
18746            #[must_use]
18747            pub fn drawing(
18748                &self,
18749            ) -> &::buffa::MessageFieldView<
18750                super::super::__buffa::view::DrawingRefView<'_>,
18751            > {
18752                &self.0.reborrow().drawing
18753            }
18754            /// Parent layer that contains the drawing.
18755            ///
18756            /// Field 2: `layer`
18757            #[must_use]
18758            pub fn layer(
18759                &self,
18760            ) -> &::buffa::MessageFieldView<
18761                super::super::__buffa::view::LayerRefView<'_>,
18762            > {
18763                &self.0.reborrow().layer
18764            }
18765            /// Expected current revision of the parent layer.
18766            ///
18767            /// Field 3: `expected_layer_revision`
18768            #[must_use]
18769            pub fn expected_layer_revision(&self) -> u64 {
18770                self.0.reborrow().expected_layer_revision
18771            }
18772        }
18773        impl ::core::convert::From<::buffa::OwnedView<DeleteDrawingRequestView<'static>>>
18774        for DeleteDrawingRequestOwnedView {
18775            fn from(
18776                inner: ::buffa::OwnedView<DeleteDrawingRequestView<'static>>,
18777            ) -> Self {
18778                DeleteDrawingRequestOwnedView(inner)
18779            }
18780        }
18781        impl ::core::convert::From<DeleteDrawingRequestOwnedView>
18782        for ::buffa::OwnedView<DeleteDrawingRequestView<'static>> {
18783            fn from(wrapper: DeleteDrawingRequestOwnedView) -> Self {
18784                wrapper.0
18785            }
18786        }
18787        impl ::core::convert::AsRef<
18788            ::buffa::OwnedView<DeleteDrawingRequestView<'static>>,
18789        > for DeleteDrawingRequestOwnedView {
18790            fn as_ref(&self) -> &::buffa::OwnedView<DeleteDrawingRequestView<'static>> {
18791                &self.0
18792            }
18793        }
18794        impl ::buffa::HasMessageView for super::super::DeleteDrawingRequest {
18795            type View<'a> = DeleteDrawingRequestView<'a>;
18796            type ViewHandle = DeleteDrawingRequestOwnedView;
18797        }
18798        impl ::serde::Serialize for DeleteDrawingRequestOwnedView {
18799            fn serialize<__S: ::serde::Serializer>(
18800                &self,
18801                __s: __S,
18802            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18803                ::serde::Serialize::serialize(&self.0, __s)
18804            }
18805        }
18806        /// DeleteDrawingResponse returns the new parent layer revision.
18807        #[derive(Clone, Debug, Default)]
18808        pub struct DeleteDrawingResponseView<'a> {
18809            /// New parent layer revision after deletion.
18810            ///
18811            /// Field 1: `layer_revision`
18812            pub layer_revision: u64,
18813            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
18814        }
18815        impl<'a> ::buffa::MessageView<'a> for DeleteDrawingResponseView<'a> {
18816            type Owned = super::super::DeleteDrawingResponse;
18817            fn decode_view(
18818                buf: &'a [u8],
18819            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18820                let __limit = ::core::cell::Cell::new(
18821                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
18822                );
18823                <Self as ::buffa::MessageView>::decode_view_ctx(
18824                    buf,
18825                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
18826                )
18827            }
18828            fn decode_view_with_ctx(
18829                buf: &'a [u8],
18830                ctx: ::buffa::DecodeContext<'_>,
18831            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18832                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
18833            }
18834            fn merge_view_field(
18835                &mut self,
18836                tag: ::buffa::encoding::Tag,
18837                cur: &'a [u8],
18838                before_tag: &'a [u8],
18839                ctx: ::buffa::DecodeContext<'_>,
18840            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
18841                let _ = ctx;
18842                #[allow(unused_variables)]
18843                let view = self;
18844                let mut cur = cur;
18845                match tag.field_number() {
18846                    1u32 => {
18847                        ::buffa::encoding::check_wire_type(
18848                            tag,
18849                            ::buffa::encoding::WireType::Fixed64,
18850                        )?;
18851                        view.layer_revision = ::buffa::types::decode_fixed64(&mut cur)?;
18852                    }
18853                    _ => {
18854                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
18855                        let span_len = before_tag.len() - cur.len();
18856                        view.__buffa_unknown_fields
18857                            .push_record(before_tag, span_len, ctx)?;
18858                    }
18859                }
18860                ::core::result::Result::Ok(cur)
18861            }
18862            fn to_owned_message(
18863                &self,
18864            ) -> ::core::result::Result<
18865                super::super::DeleteDrawingResponse,
18866                ::buffa::DecodeError,
18867            > {
18868                self.to_owned_from_source(None)
18869            }
18870            #[allow(clippy::useless_conversion, clippy::needless_update)]
18871            fn to_owned_from_source(
18872                &self,
18873                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
18874            ) -> ::core::result::Result<
18875                super::super::DeleteDrawingResponse,
18876                ::buffa::DecodeError,
18877            > {
18878                #[allow(unused_imports)]
18879                use ::buffa::alloc::string::ToString as _;
18880                let _ = __buffa_src;
18881                ::core::result::Result::Ok(super::super::DeleteDrawingResponse {
18882                    layer_revision: self.layer_revision,
18883                    __buffa_unknown_fields: self
18884                        .__buffa_unknown_fields
18885                        .to_owned()?
18886                        .into(),
18887                    ..::core::default::Default::default()
18888                })
18889            }
18890        }
18891        impl<'a> ::buffa::ViewEncode<'a> for DeleteDrawingResponseView<'a> {
18892            #[allow(clippy::needless_borrow, clippy::let_and_return)]
18893            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
18894                #[allow(unused_imports)]
18895                use ::buffa::Enumeration as _;
18896                let mut size = 0u32;
18897                if self.layer_revision != 0u64 {
18898                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
18899                }
18900                size += self.__buffa_unknown_fields.encoded_len() as u32;
18901                size
18902            }
18903            #[allow(clippy::needless_borrow)]
18904            fn write_to(
18905                &self,
18906                _cache: &mut ::buffa::SizeCache,
18907                buf: &mut impl ::buffa::bytes::BufMut,
18908            ) {
18909                #[allow(unused_imports)]
18910                use ::buffa::Enumeration as _;
18911                if self.layer_revision != 0u64 {
18912                    ::buffa::types::put_fixed64_field(1u32, self.layer_revision, buf);
18913                }
18914                self.__buffa_unknown_fields.write_to(buf);
18915            }
18916        }
18917        /// Serializes this view as protobuf JSON.
18918        ///
18919        /// Implicit-presence fields with default values are omitted, `required`
18920        /// fields are always emitted, explicit-presence (`optional`) fields are
18921        /// emitted only when set, bytes fields are base64-encoded, and enum
18922        /// values are their proto name strings.
18923        ///
18924        /// This impl uses `serialize_map(None)` because the number of emitted
18925        /// fields depends on default-omission rules; serializers that require
18926        /// known map lengths (e.g. `bincode`) will return a runtime error.
18927        /// Use the owned message type for those formats.
18928        impl<'__a> ::serde::Serialize for DeleteDrawingResponseView<'__a> {
18929            fn serialize<__S: ::serde::Serializer>(
18930                &self,
18931                __s: __S,
18932            ) -> ::core::result::Result<__S::Ok, __S::Error> {
18933                use ::serde::ser::SerializeMap as _;
18934                let mut __map = __s.serialize_map(::core::option::Option::None)?;
18935                if !::buffa::json_helpers::skip_if::is_zero_u64(&self.layer_revision) {
18936                    __map
18937                        .serialize_entry(
18938                            "layerRevision",
18939                            &::buffa::json_helpers::ProtoJson(&self.layer_revision),
18940                        )?;
18941                }
18942                __map.end()
18943            }
18944        }
18945        impl<'a> ::buffa::MessageName for DeleteDrawingResponseView<'a> {
18946            const PACKAGE: &'static str = "polychart.v1";
18947            const NAME: &'static str = "DeleteDrawingResponse";
18948            const FULL_NAME: &'static str = "polychart.v1.DeleteDrawingResponse";
18949            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.DeleteDrawingResponse";
18950        }
18951        ::buffa::impl_default_view_instance!(DeleteDrawingResponseView);
18952        ::buffa::impl_view_reborrow!(DeleteDrawingResponseView);
18953        /** Self-contained, `'static` owned view of a `DeleteDrawingResponse` message.
18954
18955 Wraps [`::buffa::OwnedView`]`<`[`DeleteDrawingResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
18956
18957 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`DeleteDrawingResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
18958        #[derive(Clone, Debug)]
18959        pub struct DeleteDrawingResponseOwnedView(
18960            ::buffa::OwnedView<DeleteDrawingResponseView<'static>>,
18961        );
18962        impl DeleteDrawingResponseOwnedView {
18963            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
18964            ///
18965            /// The view borrows directly from the buffer's data; the buffer is
18966            /// retained inside the returned handle.
18967            ///
18968            /// # Errors
18969            ///
18970            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
18971            /// protobuf data.
18972            pub fn decode(
18973                bytes: ::buffa::bytes::Bytes,
18974            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18975                ::core::result::Result::Ok(
18976                    DeleteDrawingResponseOwnedView(::buffa::OwnedView::decode(bytes)?),
18977                )
18978            }
18979            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
18980            /// max message size).
18981            ///
18982            /// # Errors
18983            ///
18984            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
18985            /// exceeds the configured limits.
18986            pub fn decode_with_options(
18987                bytes: ::buffa::bytes::Bytes,
18988                opts: &::buffa::DecodeOptions,
18989            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
18990                ::core::result::Result::Ok(
18991                    DeleteDrawingResponseOwnedView(
18992                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
18993                    ),
18994                )
18995            }
18996            /// Build from an owned message via an encode → decode round-trip.
18997            ///
18998            /// # Errors
18999            ///
19000            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
19001            /// somehow invalid (should not happen for well-formed messages).
19002            pub fn from_owned(
19003                msg: &super::super::DeleteDrawingResponse,
19004            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19005                ::core::result::Result::Ok(
19006                    DeleteDrawingResponseOwnedView(::buffa::OwnedView::from_owned(msg)?),
19007                )
19008            }
19009            /// Borrow the full [`DeleteDrawingResponseView`] with its lifetime tied to `&self`.
19010            #[must_use]
19011            pub fn view(&self) -> &DeleteDrawingResponseView<'_> {
19012                self.0.reborrow()
19013            }
19014            /// Convert to the owned message type.
19015            ///
19016            /// # Errors
19017            ///
19018            /// Returns an error if re-materializing preserved unknown fields
19019            /// fails (e.g. the unknown-field limit is exceeded).
19020            pub fn to_owned_message(
19021                &self,
19022            ) -> ::core::result::Result<
19023                super::super::DeleteDrawingResponse,
19024                ::buffa::DecodeError,
19025            > {
19026                self.0.to_owned_message()
19027            }
19028            /// The underlying bytes buffer.
19029            #[must_use]
19030            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
19031                self.0.bytes()
19032            }
19033            /// Consume the handle, returning the underlying bytes buffer.
19034            #[must_use]
19035            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
19036                self.0.into_bytes()
19037            }
19038            /// New parent layer revision after deletion.
19039            ///
19040            /// Field 1: `layer_revision`
19041            #[must_use]
19042            pub fn layer_revision(&self) -> u64 {
19043                self.0.reborrow().layer_revision
19044            }
19045        }
19046        impl ::core::convert::From<
19047            ::buffa::OwnedView<DeleteDrawingResponseView<'static>>,
19048        > for DeleteDrawingResponseOwnedView {
19049            fn from(
19050                inner: ::buffa::OwnedView<DeleteDrawingResponseView<'static>>,
19051            ) -> Self {
19052                DeleteDrawingResponseOwnedView(inner)
19053            }
19054        }
19055        impl ::core::convert::From<DeleteDrawingResponseOwnedView>
19056        for ::buffa::OwnedView<DeleteDrawingResponseView<'static>> {
19057            fn from(wrapper: DeleteDrawingResponseOwnedView) -> Self {
19058                wrapper.0
19059            }
19060        }
19061        impl ::core::convert::AsRef<
19062            ::buffa::OwnedView<DeleteDrawingResponseView<'static>>,
19063        > for DeleteDrawingResponseOwnedView {
19064            fn as_ref(&self) -> &::buffa::OwnedView<DeleteDrawingResponseView<'static>> {
19065                &self.0
19066            }
19067        }
19068        impl ::buffa::HasMessageView for super::super::DeleteDrawingResponse {
19069            type View<'a> = DeleteDrawingResponseView<'a>;
19070            type ViewHandle = DeleteDrawingResponseOwnedView;
19071        }
19072        impl ::serde::Serialize for DeleteDrawingResponseOwnedView {
19073            fn serialize<__S: ::serde::Serializer>(
19074                &self,
19075                __s: __S,
19076            ) -> ::core::result::Result<__S::Ok, __S::Error> {
19077                ::serde::Serialize::serialize(&self.0, __s)
19078            }
19079        }
19080        /// SetLayerSubscriptionsRequest replaces the caller's layer subscriptions for one market.
19081        #[derive(Clone, Debug, Default)]
19082        pub struct SetLayerSubscriptionsRequestView<'a> {
19083            /// Engine symbol identifier for the market whose subscriptions should be replaced.
19084            ///
19085            /// Field 1: `engine_symbol_id`
19086            pub engine_symbol_id: u32,
19087            /// Full replace for (viewer_id, engine_symbol_id).
19088            /// Server replaces all existing rows for the market with this list.
19089            ///
19090            /// Field 2: `subscriptions`
19091            pub subscriptions: ::buffa::RepeatedView<
19092                'a,
19093                super::super::__buffa::view::LayerSubscriptionView<'a>,
19094            >,
19095            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
19096        }
19097        impl<'a> ::buffa::MessageView<'a> for SetLayerSubscriptionsRequestView<'a> {
19098            type Owned = super::super::SetLayerSubscriptionsRequest;
19099            fn decode_view(
19100                buf: &'a [u8],
19101            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19102                let __limit = ::core::cell::Cell::new(
19103                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
19104                );
19105                <Self as ::buffa::MessageView>::decode_view_ctx(
19106                    buf,
19107                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
19108                )
19109            }
19110            fn decode_view_with_ctx(
19111                buf: &'a [u8],
19112                ctx: ::buffa::DecodeContext<'_>,
19113            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19114                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
19115            }
19116            fn merge_view_field(
19117                &mut self,
19118                tag: ::buffa::encoding::Tag,
19119                cur: &'a [u8],
19120                before_tag: &'a [u8],
19121                ctx: ::buffa::DecodeContext<'_>,
19122            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
19123                let _ = ctx;
19124                #[allow(unused_variables)]
19125                let view = self;
19126                let mut cur = cur;
19127                match tag.field_number() {
19128                    1u32 => {
19129                        ::buffa::encoding::check_wire_type(
19130                            tag,
19131                            ::buffa::encoding::WireType::Varint,
19132                        )?;
19133                        view.engine_symbol_id = ::buffa::types::decode_uint32(&mut cur)?;
19134                    }
19135                    2u32 => {
19136                        ::buffa::encoding::check_wire_type(
19137                            tag,
19138                            ::buffa::encoding::WireType::LengthDelimited,
19139                        )?;
19140                        let __sub_ctx = ctx.descend()?;
19141                        let sub = ::buffa::types::borrow_bytes(&mut cur)?;
19142                        view.subscriptions
19143                            .push(
19144                                <super::super::__buffa::view::LayerSubscriptionView as ::buffa::MessageView>::decode_view_ctx(
19145                                    sub,
19146                                    __sub_ctx,
19147                                )?,
19148                            );
19149                    }
19150                    _ => {
19151                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
19152                        let span_len = before_tag.len() - cur.len();
19153                        view.__buffa_unknown_fields
19154                            .push_record(before_tag, span_len, ctx)?;
19155                    }
19156                }
19157                ::core::result::Result::Ok(cur)
19158            }
19159            fn to_owned_message(
19160                &self,
19161            ) -> ::core::result::Result<
19162                super::super::SetLayerSubscriptionsRequest,
19163                ::buffa::DecodeError,
19164            > {
19165                self.to_owned_from_source(None)
19166            }
19167            #[allow(clippy::useless_conversion, clippy::needless_update)]
19168            fn to_owned_from_source(
19169                &self,
19170                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
19171            ) -> ::core::result::Result<
19172                super::super::SetLayerSubscriptionsRequest,
19173                ::buffa::DecodeError,
19174            > {
19175                #[allow(unused_imports)]
19176                use ::buffa::alloc::string::ToString as _;
19177                let _ = __buffa_src;
19178                ::core::result::Result::Ok(super::super::SetLayerSubscriptionsRequest {
19179                    engine_symbol_id: self.engine_symbol_id,
19180                    subscriptions: self
19181                        .subscriptions
19182                        .iter()
19183                        .map(|v| v.to_owned_from_source(__buffa_src))
19184                        .collect::<::core::result::Result<_, ::buffa::DecodeError>>()?,
19185                    __buffa_unknown_fields: self
19186                        .__buffa_unknown_fields
19187                        .to_owned()?
19188                        .into(),
19189                    ..::core::default::Default::default()
19190                })
19191            }
19192        }
19193        impl<'a> ::buffa::ViewEncode<'a> for SetLayerSubscriptionsRequestView<'a> {
19194            #[allow(clippy::needless_borrow, clippy::let_and_return)]
19195            fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
19196                #[allow(unused_imports)]
19197                use ::buffa::Enumeration as _;
19198                let mut size = 0u32;
19199                if self.engine_symbol_id != 0u32 {
19200                    size
19201                        += 1u32
19202                            + ::buffa::types::uint32_encoded_len(self.engine_symbol_id)
19203                                as u32;
19204                }
19205                for v in &self.subscriptions {
19206                    let __slot = __cache.reserve();
19207                    let inner_size = v.compute_size(__cache);
19208                    __cache.set(__slot, inner_size);
19209                    size
19210                        += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
19211                            + inner_size;
19212                }
19213                size += self.__buffa_unknown_fields.encoded_len() as u32;
19214                size
19215            }
19216            #[allow(clippy::needless_borrow)]
19217            fn write_to(
19218                &self,
19219                __cache: &mut ::buffa::SizeCache,
19220                buf: &mut impl ::buffa::bytes::BufMut,
19221            ) {
19222                #[allow(unused_imports)]
19223                use ::buffa::Enumeration as _;
19224                if self.engine_symbol_id != 0u32 {
19225                    ::buffa::types::put_uint32_field(1u32, self.engine_symbol_id, buf);
19226                }
19227                for v in &self.subscriptions {
19228                    ::buffa::types::put_len_delimited_header(
19229                        2u32,
19230                        __cache.consume_next(),
19231                        buf,
19232                    );
19233                    v.write_to(__cache, buf);
19234                }
19235                self.__buffa_unknown_fields.write_to(buf);
19236            }
19237        }
19238        /// Serializes this view as protobuf JSON.
19239        ///
19240        /// Implicit-presence fields with default values are omitted, `required`
19241        /// fields are always emitted, explicit-presence (`optional`) fields are
19242        /// emitted only when set, bytes fields are base64-encoded, and enum
19243        /// values are their proto name strings.
19244        ///
19245        /// This impl uses `serialize_map(None)` because the number of emitted
19246        /// fields depends on default-omission rules; serializers that require
19247        /// known map lengths (e.g. `bincode`) will return a runtime error.
19248        /// Use the owned message type for those formats.
19249        impl<'__a> ::serde::Serialize for SetLayerSubscriptionsRequestView<'__a> {
19250            fn serialize<__S: ::serde::Serializer>(
19251                &self,
19252                __s: __S,
19253            ) -> ::core::result::Result<__S::Ok, __S::Error> {
19254                use ::serde::ser::SerializeMap as _;
19255                let mut __map = __s.serialize_map(::core::option::Option::None)?;
19256                if !::buffa::json_helpers::skip_if::is_zero_u32(&self.engine_symbol_id) {
19257                    __map
19258                        .serialize_entry(
19259                            "engineSymbolId",
19260                            &::buffa::json_helpers::ProtoJson(&self.engine_symbol_id),
19261                        )?;
19262                }
19263                if !self.subscriptions.is_empty() {
19264                    __map.serialize_entry("subscriptions", &*self.subscriptions)?;
19265                }
19266                __map.end()
19267            }
19268        }
19269        impl<'a> ::buffa::MessageName for SetLayerSubscriptionsRequestView<'a> {
19270            const PACKAGE: &'static str = "polychart.v1";
19271            const NAME: &'static str = "SetLayerSubscriptionsRequest";
19272            const FULL_NAME: &'static str = "polychart.v1.SetLayerSubscriptionsRequest";
19273            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsRequest";
19274        }
19275        ::buffa::impl_default_view_instance!(SetLayerSubscriptionsRequestView);
19276        ::buffa::impl_view_reborrow!(SetLayerSubscriptionsRequestView);
19277        /** Self-contained, `'static` owned view of a `SetLayerSubscriptionsRequest` message.
19278
19279 Wraps [`::buffa::OwnedView`]`<`[`SetLayerSubscriptionsRequestView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
19280
19281 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`SetLayerSubscriptionsRequestView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
19282        #[derive(Clone, Debug)]
19283        pub struct SetLayerSubscriptionsRequestOwnedView(
19284            ::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>>,
19285        );
19286        impl SetLayerSubscriptionsRequestOwnedView {
19287            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
19288            ///
19289            /// The view borrows directly from the buffer's data; the buffer is
19290            /// retained inside the returned handle.
19291            ///
19292            /// # Errors
19293            ///
19294            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
19295            /// protobuf data.
19296            pub fn decode(
19297                bytes: ::buffa::bytes::Bytes,
19298            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19299                ::core::result::Result::Ok(
19300                    SetLayerSubscriptionsRequestOwnedView(
19301                        ::buffa::OwnedView::decode(bytes)?,
19302                    ),
19303                )
19304            }
19305            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
19306            /// max message size).
19307            ///
19308            /// # Errors
19309            ///
19310            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
19311            /// exceeds the configured limits.
19312            pub fn decode_with_options(
19313                bytes: ::buffa::bytes::Bytes,
19314                opts: &::buffa::DecodeOptions,
19315            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19316                ::core::result::Result::Ok(
19317                    SetLayerSubscriptionsRequestOwnedView(
19318                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
19319                    ),
19320                )
19321            }
19322            /// Build from an owned message via an encode → decode round-trip.
19323            ///
19324            /// # Errors
19325            ///
19326            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
19327            /// somehow invalid (should not happen for well-formed messages).
19328            pub fn from_owned(
19329                msg: &super::super::SetLayerSubscriptionsRequest,
19330            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19331                ::core::result::Result::Ok(
19332                    SetLayerSubscriptionsRequestOwnedView(
19333                        ::buffa::OwnedView::from_owned(msg)?,
19334                    ),
19335                )
19336            }
19337            /// Borrow the full [`SetLayerSubscriptionsRequestView`] with its lifetime tied to `&self`.
19338            #[must_use]
19339            pub fn view(&self) -> &SetLayerSubscriptionsRequestView<'_> {
19340                self.0.reborrow()
19341            }
19342            /// Convert to the owned message type.
19343            ///
19344            /// # Errors
19345            ///
19346            /// Returns an error if re-materializing preserved unknown fields
19347            /// fails (e.g. the unknown-field limit is exceeded).
19348            pub fn to_owned_message(
19349                &self,
19350            ) -> ::core::result::Result<
19351                super::super::SetLayerSubscriptionsRequest,
19352                ::buffa::DecodeError,
19353            > {
19354                self.0.to_owned_message()
19355            }
19356            /// The underlying bytes buffer.
19357            #[must_use]
19358            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
19359                self.0.bytes()
19360            }
19361            /// Consume the handle, returning the underlying bytes buffer.
19362            #[must_use]
19363            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
19364                self.0.into_bytes()
19365            }
19366            /// Engine symbol identifier for the market whose subscriptions should be replaced.
19367            ///
19368            /// Field 1: `engine_symbol_id`
19369            #[must_use]
19370            pub fn engine_symbol_id(&self) -> u32 {
19371                self.0.reborrow().engine_symbol_id
19372            }
19373            /// Full replace for (viewer_id, engine_symbol_id).
19374            /// Server replaces all existing rows for the market with this list.
19375            ///
19376            /// Field 2: `subscriptions`
19377            #[must_use]
19378            pub fn subscriptions(
19379                &self,
19380            ) -> &::buffa::RepeatedView<
19381                '_,
19382                super::super::__buffa::view::LayerSubscriptionView<'_>,
19383            > {
19384                &self.0.reborrow().subscriptions
19385            }
19386        }
19387        impl ::core::convert::From<
19388            ::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>>,
19389        > for SetLayerSubscriptionsRequestOwnedView {
19390            fn from(
19391                inner: ::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>>,
19392            ) -> Self {
19393                SetLayerSubscriptionsRequestOwnedView(inner)
19394            }
19395        }
19396        impl ::core::convert::From<SetLayerSubscriptionsRequestOwnedView>
19397        for ::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>> {
19398            fn from(wrapper: SetLayerSubscriptionsRequestOwnedView) -> Self {
19399                wrapper.0
19400            }
19401        }
19402        impl ::core::convert::AsRef<
19403            ::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>>,
19404        > for SetLayerSubscriptionsRequestOwnedView {
19405            fn as_ref(
19406                &self,
19407            ) -> &::buffa::OwnedView<SetLayerSubscriptionsRequestView<'static>> {
19408                &self.0
19409            }
19410        }
19411        impl ::buffa::HasMessageView for super::super::SetLayerSubscriptionsRequest {
19412            type View<'a> = SetLayerSubscriptionsRequestView<'a>;
19413            type ViewHandle = SetLayerSubscriptionsRequestOwnedView;
19414        }
19415        impl ::serde::Serialize for SetLayerSubscriptionsRequestOwnedView {
19416            fn serialize<__S: ::serde::Serializer>(
19417                &self,
19418                __s: __S,
19419            ) -> ::core::result::Result<__S::Ok, __S::Error> {
19420                ::serde::Serialize::serialize(&self.0, __s)
19421            }
19422        }
19423        /// SetLayerSubscriptionsResponse is empty when subscriptions were saved.
19424        #[derive(Clone, Debug, Default)]
19425        pub struct SetLayerSubscriptionsResponseView<'a> {
19426            pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
19427        }
19428        impl<'a> ::buffa::MessageView<'a> for SetLayerSubscriptionsResponseView<'a> {
19429            type Owned = super::super::SetLayerSubscriptionsResponse;
19430            fn decode_view(
19431                buf: &'a [u8],
19432            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19433                let __limit = ::core::cell::Cell::new(
19434                    ::buffa::DEFAULT_UNKNOWN_FIELD_LIMIT,
19435                );
19436                <Self as ::buffa::MessageView>::decode_view_ctx(
19437                    buf,
19438                    ::buffa::DecodeContext::new(::buffa::RECURSION_LIMIT, &__limit),
19439                )
19440            }
19441            fn decode_view_with_ctx(
19442                buf: &'a [u8],
19443                ctx: ::buffa::DecodeContext<'_>,
19444            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19445                <Self as ::buffa::MessageView>::decode_view_ctx(buf, ctx)
19446            }
19447            fn merge_view_field(
19448                &mut self,
19449                tag: ::buffa::encoding::Tag,
19450                cur: &'a [u8],
19451                before_tag: &'a [u8],
19452                ctx: ::buffa::DecodeContext<'_>,
19453            ) -> ::core::result::Result<&'a [u8], ::buffa::DecodeError> {
19454                let _ = ctx;
19455                #[allow(unused_variables)]
19456                let view = self;
19457                let mut cur = cur;
19458                match tag.field_number() {
19459                    _ => {
19460                        ::buffa::encoding::skip_field_depth(tag, &mut cur, ctx.depth())?;
19461                        let span_len = before_tag.len() - cur.len();
19462                        view.__buffa_unknown_fields
19463                            .push_record(before_tag, span_len, ctx)?;
19464                    }
19465                }
19466                ::core::result::Result::Ok(cur)
19467            }
19468            fn to_owned_message(
19469                &self,
19470            ) -> ::core::result::Result<
19471                super::super::SetLayerSubscriptionsResponse,
19472                ::buffa::DecodeError,
19473            > {
19474                self.to_owned_from_source(None)
19475            }
19476            #[allow(clippy::useless_conversion, clippy::needless_update)]
19477            fn to_owned_from_source(
19478                &self,
19479                __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
19480            ) -> ::core::result::Result<
19481                super::super::SetLayerSubscriptionsResponse,
19482                ::buffa::DecodeError,
19483            > {
19484                #[allow(unused_imports)]
19485                use ::buffa::alloc::string::ToString as _;
19486                let _ = __buffa_src;
19487                ::core::result::Result::Ok(super::super::SetLayerSubscriptionsResponse {
19488                    __buffa_unknown_fields: self
19489                        .__buffa_unknown_fields
19490                        .to_owned()?
19491                        .into(),
19492                    ..::core::default::Default::default()
19493                })
19494            }
19495        }
19496        impl<'a> ::buffa::ViewEncode<'a> for SetLayerSubscriptionsResponseView<'a> {
19497            #[allow(clippy::needless_borrow, clippy::let_and_return)]
19498            fn compute_size(&self, _cache: &mut ::buffa::SizeCache) -> u32 {
19499                #[allow(unused_imports)]
19500                use ::buffa::Enumeration as _;
19501                let mut size = 0u32;
19502                size += self.__buffa_unknown_fields.encoded_len() as u32;
19503                size
19504            }
19505            #[allow(clippy::needless_borrow)]
19506            fn write_to(
19507                &self,
19508                _cache: &mut ::buffa::SizeCache,
19509                buf: &mut impl ::buffa::bytes::BufMut,
19510            ) {
19511                #[allow(unused_imports)]
19512                use ::buffa::Enumeration as _;
19513                self.__buffa_unknown_fields.write_to(buf);
19514            }
19515        }
19516        /// Serializes this view as protobuf JSON.
19517        ///
19518        /// Implicit-presence fields with default values are omitted, `required`
19519        /// fields are always emitted, explicit-presence (`optional`) fields are
19520        /// emitted only when set, bytes fields are base64-encoded, and enum
19521        /// values are their proto name strings.
19522        ///
19523        /// This impl uses `serialize_map(None)` because the number of emitted
19524        /// fields depends on default-omission rules; serializers that require
19525        /// known map lengths (e.g. `bincode`) will return a runtime error.
19526        /// Use the owned message type for those formats.
19527        impl<'__a> ::serde::Serialize for SetLayerSubscriptionsResponseView<'__a> {
19528            fn serialize<__S: ::serde::Serializer>(
19529                &self,
19530                __s: __S,
19531            ) -> ::core::result::Result<__S::Ok, __S::Error> {
19532                use ::serde::ser::SerializeMap as _;
19533                let mut __map = __s.serialize_map(::core::option::Option::None)?;
19534                __map.end()
19535            }
19536        }
19537        impl<'a> ::buffa::MessageName for SetLayerSubscriptionsResponseView<'a> {
19538            const PACKAGE: &'static str = "polychart.v1";
19539            const NAME: &'static str = "SetLayerSubscriptionsResponse";
19540            const FULL_NAME: &'static str = "polychart.v1.SetLayerSubscriptionsResponse";
19541            const TYPE_URL: &'static str = "type.googleapis.com/polychart.v1.SetLayerSubscriptionsResponse";
19542        }
19543        ::buffa::impl_default_view_instance!(SetLayerSubscriptionsResponseView);
19544        ::buffa::impl_view_reborrow!(SetLayerSubscriptionsResponseView);
19545        /** Self-contained, `'static` owned view of a `SetLayerSubscriptionsResponse` message.
19546
19547 Wraps [`::buffa::OwnedView`]`<`[`SetLayerSubscriptionsResponseView`]`<'static>>`: the decoded view and the [`::buffa::bytes::Bytes`] buffer it borrows from travel together, so the handle is `'static` and `Send + Sync` — suitable for async handlers, spawned tasks, and anywhere a `'static` bound is required.
19548
19549 Field accessors return borrows tied to `&self`. Use [`Self::view`] to get the full [`SetLayerSubscriptionsResponseView`] when you need struct patterns, iteration helpers, or to pass the view to lifetime-parameterised code.*/
19550        #[derive(Clone, Debug)]
19551        pub struct SetLayerSubscriptionsResponseOwnedView(
19552            ::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>>,
19553        );
19554        impl SetLayerSubscriptionsResponseOwnedView {
19555            /// Decode an owned view from a [`::buffa::bytes::Bytes`] buffer.
19556            ///
19557            /// The view borrows directly from the buffer's data; the buffer is
19558            /// retained inside the returned handle.
19559            ///
19560            /// # Errors
19561            ///
19562            /// Returns [`::buffa::DecodeError`] if the buffer contains invalid
19563            /// protobuf data.
19564            pub fn decode(
19565                bytes: ::buffa::bytes::Bytes,
19566            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19567                ::core::result::Result::Ok(
19568                    SetLayerSubscriptionsResponseOwnedView(
19569                        ::buffa::OwnedView::decode(bytes)?,
19570                    ),
19571                )
19572            }
19573            /// Decode with custom [`::buffa::DecodeOptions`] (recursion limit,
19574            /// max message size).
19575            ///
19576            /// # Errors
19577            ///
19578            /// Returns [`::buffa::DecodeError`] if the buffer is invalid or
19579            /// exceeds the configured limits.
19580            pub fn decode_with_options(
19581                bytes: ::buffa::bytes::Bytes,
19582                opts: &::buffa::DecodeOptions,
19583            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19584                ::core::result::Result::Ok(
19585                    SetLayerSubscriptionsResponseOwnedView(
19586                        ::buffa::OwnedView::decode_with_options(bytes, opts)?,
19587                    ),
19588                )
19589            }
19590            /// Build from an owned message via an encode → decode round-trip.
19591            ///
19592            /// # Errors
19593            ///
19594            /// Returns [`::buffa::DecodeError`] if the re-encoded bytes are
19595            /// somehow invalid (should not happen for well-formed messages).
19596            pub fn from_owned(
19597                msg: &super::super::SetLayerSubscriptionsResponse,
19598            ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
19599                ::core::result::Result::Ok(
19600                    SetLayerSubscriptionsResponseOwnedView(
19601                        ::buffa::OwnedView::from_owned(msg)?,
19602                    ),
19603                )
19604            }
19605            /// Borrow the full [`SetLayerSubscriptionsResponseView`] with its lifetime tied to `&self`.
19606            #[must_use]
19607            pub fn view(&self) -> &SetLayerSubscriptionsResponseView<'_> {
19608                self.0.reborrow()
19609            }
19610            /// Convert to the owned message type.
19611            ///
19612            /// # Errors
19613            ///
19614            /// Returns an error if re-materializing preserved unknown fields
19615            /// fails (e.g. the unknown-field limit is exceeded).
19616            pub fn to_owned_message(
19617                &self,
19618            ) -> ::core::result::Result<
19619                super::super::SetLayerSubscriptionsResponse,
19620                ::buffa::DecodeError,
19621            > {
19622                self.0.to_owned_message()
19623            }
19624            /// The underlying bytes buffer.
19625            #[must_use]
19626            pub fn bytes(&self) -> &::buffa::bytes::Bytes {
19627                self.0.bytes()
19628            }
19629            /// Consume the handle, returning the underlying bytes buffer.
19630            #[must_use]
19631            pub fn into_bytes(self) -> ::buffa::bytes::Bytes {
19632                self.0.into_bytes()
19633            }
19634        }
19635        impl ::core::convert::From<
19636            ::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>>,
19637        > for SetLayerSubscriptionsResponseOwnedView {
19638            fn from(
19639                inner: ::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>>,
19640            ) -> Self {
19641                SetLayerSubscriptionsResponseOwnedView(inner)
19642            }
19643        }
19644        impl ::core::convert::From<SetLayerSubscriptionsResponseOwnedView>
19645        for ::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>> {
19646            fn from(wrapper: SetLayerSubscriptionsResponseOwnedView) -> Self {
19647                wrapper.0
19648            }
19649        }
19650        impl ::core::convert::AsRef<
19651            ::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>>,
19652        > for SetLayerSubscriptionsResponseOwnedView {
19653            fn as_ref(
19654                &self,
19655            ) -> &::buffa::OwnedView<SetLayerSubscriptionsResponseView<'static>> {
19656                &self.0
19657            }
19658        }
19659        impl ::buffa::HasMessageView for super::super::SetLayerSubscriptionsResponse {
19660            type View<'a> = SetLayerSubscriptionsResponseView<'a>;
19661            type ViewHandle = SetLayerSubscriptionsResponseOwnedView;
19662        }
19663        impl ::serde::Serialize for SetLayerSubscriptionsResponseOwnedView {
19664            fn serialize<__S: ::serde::Serializer>(
19665                &self,
19666                __s: __S,
19667            ) -> ::core::result::Result<__S::Ok, __S::Error> {
19668                ::serde::Serialize::serialize(&self.0, __s)
19669            }
19670        }
19671    }
19672    /// Register this package's `Any` type entries and extension entries.
19673    pub fn register_types(reg: &mut ::buffa::type_registry::TypeRegistry) {
19674        reg.register_json_any(super::__LAYER_REF_JSON_ANY);
19675        reg.register_json_any(super::__DRAWING_REF_JSON_ANY);
19676        reg.register_json_any(super::__LAYER_JSON_ANY);
19677        reg.register_json_any(super::__DRAWING_JSON_ANY);
19678        reg.register_json_any(super::__LAYER_SUBSCRIPTION_JSON_ANY);
19679        reg.register_json_any(super::__GET_MARKET_LAYERS_REQUEST_JSON_ANY);
19680        reg.register_json_any(super::__GET_MARKET_LAYERS_RESPONSE_JSON_ANY);
19681        reg.register_json_any(super::__LIST_INBOX_MARKET_LAYERS_REQUEST_JSON_ANY);
19682        reg.register_json_any(super::__LIST_INBOX_MARKET_LAYERS_RESPONSE_JSON_ANY);
19683        reg.register_json_any(super::__GET_LAYER_SNAPSHOT_REQUEST_JSON_ANY);
19684        reg.register_json_any(super::__GET_LAYER_SNAPSHOT_RESPONSE_JSON_ANY);
19685        reg.register_json_any(super::__RESOLVE_LAYER_SHARE_TOKEN_REQUEST_JSON_ANY);
19686        reg.register_json_any(super::__RESOLVE_LAYER_SHARE_TOKEN_RESPONSE_JSON_ANY);
19687        reg.register_json_any(super::__GET_LAYER_SUBSCRIBE_TOKENS_REQUEST_JSON_ANY);
19688        reg.register_json_any(super::__LAYER_SUBSCRIBE_TOKEN_JSON_ANY);
19689        reg.register_json_any(super::__GET_LAYER_SUBSCRIBE_TOKENS_RESPONSE_JSON_ANY);
19690        reg.register_json_any(super::__CREATE_LAYER_SHARE_LINK_REQUEST_JSON_ANY);
19691        reg.register_json_any(super::__CREATE_LAYER_SHARE_LINK_RESPONSE_JSON_ANY);
19692        reg.register_json_any(super::__REVOKE_LAYER_SHARE_LINK_REQUEST_JSON_ANY);
19693        reg.register_json_any(super::__REVOKE_LAYER_SHARE_LINK_RESPONSE_JSON_ANY);
19694        reg.register_json_any(super::__PUBLISHED_LAYER_JSON_ANY);
19695        reg.register_json_any(super::__LIST_OWNER_PUBLISHED_LAYERS_REQUEST_JSON_ANY);
19696        reg.register_json_any(super::__LIST_OWNER_PUBLISHED_LAYERS_RESPONSE_JSON_ANY);
19697        reg.register_json_any(super::__PUBLISH_LAYER_REQUEST_JSON_ANY);
19698        reg.register_json_any(super::__PUBLISH_LAYER_RESPONSE_JSON_ANY);
19699        reg.register_json_any(super::__UNPUBLISH_LAYER_REQUEST_JSON_ANY);
19700        reg.register_json_any(super::__UNPUBLISH_LAYER_RESPONSE_JSON_ANY);
19701        reg.register_json_any(super::__UPSERT_LAYER_REQUEST_JSON_ANY);
19702        reg.register_json_any(super::__UPSERT_LAYER_RESPONSE_JSON_ANY);
19703        reg.register_json_any(super::__DELETE_LAYER_REQUEST_JSON_ANY);
19704        reg.register_json_any(super::__DELETE_LAYER_RESPONSE_JSON_ANY);
19705        reg.register_json_any(super::__UPSERT_DRAWING_REQUEST_JSON_ANY);
19706        reg.register_json_any(super::__UPSERT_DRAWING_RESPONSE_JSON_ANY);
19707        reg.register_json_any(super::__DELETE_DRAWING_REQUEST_JSON_ANY);
19708        reg.register_json_any(super::__DELETE_DRAWING_RESPONSE_JSON_ANY);
19709        reg.register_json_any(super::__SET_LAYER_SUBSCRIPTIONS_REQUEST_JSON_ANY);
19710        reg.register_json_any(super::__SET_LAYER_SUBSCRIPTIONS_RESPONSE_JSON_ANY);
19711    }
19712}
19713#[doc(inline)]
19714pub use self::__buffa::view::LayerRefView;
19715#[doc(inline)]
19716pub use self::__buffa::view::LayerRefOwnedView;
19717#[doc(inline)]
19718pub use self::__buffa::view::DrawingRefView;
19719#[doc(inline)]
19720pub use self::__buffa::view::DrawingRefOwnedView;
19721#[doc(inline)]
19722pub use self::__buffa::view::LayerView;
19723#[doc(inline)]
19724pub use self::__buffa::view::LayerOwnedView;
19725#[doc(inline)]
19726pub use self::__buffa::view::DrawingView;
19727#[doc(inline)]
19728pub use self::__buffa::view::DrawingOwnedView;
19729#[doc(inline)]
19730pub use self::__buffa::view::LayerSubscriptionView;
19731#[doc(inline)]
19732pub use self::__buffa::view::LayerSubscriptionOwnedView;
19733#[doc(inline)]
19734pub use self::__buffa::view::GetMarketLayersRequestView;
19735#[doc(inline)]
19736pub use self::__buffa::view::GetMarketLayersRequestOwnedView;
19737#[doc(inline)]
19738pub use self::__buffa::view::GetMarketLayersResponseView;
19739#[doc(inline)]
19740pub use self::__buffa::view::GetMarketLayersResponseOwnedView;
19741#[doc(inline)]
19742pub use self::__buffa::view::ListInboxMarketLayersRequestView;
19743#[doc(inline)]
19744pub use self::__buffa::view::ListInboxMarketLayersRequestOwnedView;
19745#[doc(inline)]
19746pub use self::__buffa::view::ListInboxMarketLayersResponseView;
19747#[doc(inline)]
19748pub use self::__buffa::view::ListInboxMarketLayersResponseOwnedView;
19749#[doc(inline)]
19750pub use self::__buffa::view::GetLayerSnapshotRequestView;
19751#[doc(inline)]
19752pub use self::__buffa::view::GetLayerSnapshotRequestOwnedView;
19753#[doc(inline)]
19754pub use self::__buffa::view::GetLayerSnapshotResponseView;
19755#[doc(inline)]
19756pub use self::__buffa::view::GetLayerSnapshotResponseOwnedView;
19757#[doc(inline)]
19758pub use self::__buffa::view::ResolveLayerShareTokenRequestView;
19759#[doc(inline)]
19760pub use self::__buffa::view::ResolveLayerShareTokenRequestOwnedView;
19761#[doc(inline)]
19762pub use self::__buffa::view::ResolveLayerShareTokenResponseView;
19763#[doc(inline)]
19764pub use self::__buffa::view::ResolveLayerShareTokenResponseOwnedView;
19765#[doc(inline)]
19766pub use self::__buffa::view::GetLayerSubscribeTokensRequestView;
19767#[doc(inline)]
19768pub use self::__buffa::view::GetLayerSubscribeTokensRequestOwnedView;
19769#[doc(inline)]
19770pub use self::__buffa::view::LayerSubscribeTokenView;
19771#[doc(inline)]
19772pub use self::__buffa::view::LayerSubscribeTokenOwnedView;
19773#[doc(inline)]
19774pub use self::__buffa::view::GetLayerSubscribeTokensResponseView;
19775#[doc(inline)]
19776pub use self::__buffa::view::GetLayerSubscribeTokensResponseOwnedView;
19777#[doc(inline)]
19778pub use self::__buffa::view::CreateLayerShareLinkRequestView;
19779#[doc(inline)]
19780pub use self::__buffa::view::CreateLayerShareLinkRequestOwnedView;
19781#[doc(inline)]
19782pub use self::__buffa::view::CreateLayerShareLinkResponseView;
19783#[doc(inline)]
19784pub use self::__buffa::view::CreateLayerShareLinkResponseOwnedView;
19785#[doc(inline)]
19786pub use self::__buffa::view::RevokeLayerShareLinkRequestView;
19787#[doc(inline)]
19788pub use self::__buffa::view::RevokeLayerShareLinkRequestOwnedView;
19789#[doc(inline)]
19790pub use self::__buffa::view::RevokeLayerShareLinkResponseView;
19791#[doc(inline)]
19792pub use self::__buffa::view::RevokeLayerShareLinkResponseOwnedView;
19793#[doc(inline)]
19794pub use self::__buffa::view::PublishedLayerView;
19795#[doc(inline)]
19796pub use self::__buffa::view::PublishedLayerOwnedView;
19797#[doc(inline)]
19798pub use self::__buffa::view::ListOwnerPublishedLayersRequestView;
19799#[doc(inline)]
19800pub use self::__buffa::view::ListOwnerPublishedLayersRequestOwnedView;
19801#[doc(inline)]
19802pub use self::__buffa::view::ListOwnerPublishedLayersResponseView;
19803#[doc(inline)]
19804pub use self::__buffa::view::ListOwnerPublishedLayersResponseOwnedView;
19805#[doc(inline)]
19806pub use self::__buffa::view::PublishLayerRequestView;
19807#[doc(inline)]
19808pub use self::__buffa::view::PublishLayerRequestOwnedView;
19809#[doc(inline)]
19810pub use self::__buffa::view::PublishLayerResponseView;
19811#[doc(inline)]
19812pub use self::__buffa::view::PublishLayerResponseOwnedView;
19813#[doc(inline)]
19814pub use self::__buffa::view::UnpublishLayerRequestView;
19815#[doc(inline)]
19816pub use self::__buffa::view::UnpublishLayerRequestOwnedView;
19817#[doc(inline)]
19818pub use self::__buffa::view::UnpublishLayerResponseView;
19819#[doc(inline)]
19820pub use self::__buffa::view::UnpublishLayerResponseOwnedView;
19821#[doc(inline)]
19822pub use self::__buffa::view::UpsertLayerRequestView;
19823#[doc(inline)]
19824pub use self::__buffa::view::UpsertLayerRequestOwnedView;
19825#[doc(inline)]
19826pub use self::__buffa::view::UpsertLayerResponseView;
19827#[doc(inline)]
19828pub use self::__buffa::view::UpsertLayerResponseOwnedView;
19829#[doc(inline)]
19830pub use self::__buffa::view::DeleteLayerRequestView;
19831#[doc(inline)]
19832pub use self::__buffa::view::DeleteLayerRequestOwnedView;
19833#[doc(inline)]
19834pub use self::__buffa::view::DeleteLayerResponseView;
19835#[doc(inline)]
19836pub use self::__buffa::view::DeleteLayerResponseOwnedView;
19837#[doc(inline)]
19838pub use self::__buffa::view::UpsertDrawingRequestView;
19839#[doc(inline)]
19840pub use self::__buffa::view::UpsertDrawingRequestOwnedView;
19841#[doc(inline)]
19842pub use self::__buffa::view::UpsertDrawingResponseView;
19843#[doc(inline)]
19844pub use self::__buffa::view::UpsertDrawingResponseOwnedView;
19845#[doc(inline)]
19846pub use self::__buffa::view::DeleteDrawingRequestView;
19847#[doc(inline)]
19848pub use self::__buffa::view::DeleteDrawingRequestOwnedView;
19849#[doc(inline)]
19850pub use self::__buffa::view::DeleteDrawingResponseView;
19851#[doc(inline)]
19852pub use self::__buffa::view::DeleteDrawingResponseOwnedView;
19853#[doc(inline)]
19854pub use self::__buffa::view::SetLayerSubscriptionsRequestView;
19855#[doc(inline)]
19856pub use self::__buffa::view::SetLayerSubscriptionsRequestOwnedView;
19857#[doc(inline)]
19858pub use self::__buffa::view::SetLayerSubscriptionsResponseView;
19859#[doc(inline)]
19860pub use self::__buffa::view::SetLayerSubscriptionsResponseOwnedView;
19861#[doc(inline)]
19862pub use self::__buffa::register_types;