Skip to main content

megacommerce_proto/
common.v1.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ConfigMain {
5    #[prost(string, optional, tag = "1")]
6    pub env: ::core::option::Option<::prost::alloc::string::String>,
7    #[prost(string, optional, tag = "2")]
8    pub site_name: ::core::option::Option<::prost::alloc::string::String>,
9    #[prost(string, optional, tag = "3")]
10    pub site_url: ::core::option::Option<::prost::alloc::string::String>,
11    #[prost(bool, optional, tag = "5")]
12    pub enable_link_previews: ::core::option::Option<bool>,
13    #[prost(string, optional, tag = "6")]
14    pub restrict_link_previews: ::core::option::Option<::prost::alloc::string::String>,
15    #[prost(bool, optional, tag = "7")]
16    pub enable_client_performance_debugging: ::core::option::Option<bool>,
17    #[prost(bool, optional, tag = "8")]
18    pub enable_gif_picker: ::core::option::Option<bool>,
19    #[prost(bool, optional, tag = "9")]
20    pub enable_custom_emoji: ::core::option::Option<bool>,
21    #[prost(bool, optional, tag = "10")]
22    pub enable_emoji_picker: ::core::option::Option<bool>,
23    #[prost(int64, optional, tag = "11")]
24    pub time_between_user_typing_updates_milliseconds: ::core::option::Option<i64>,
25    #[prost(bool, optional, tag = "12")]
26    pub enable_file_search: ::core::option::Option<bool>,
27    #[prost(bool, optional, tag = "13")]
28    pub enable_user_typing_messages: ::core::option::Option<bool>,
29    #[prost(bool, optional, tag = "14")]
30    pub enable_user_statuses: ::core::option::Option<bool>,
31    #[prost(bool, optional, tag = "15")]
32    pub enable_email_invitations: ::core::option::Option<bool>,
33    #[prost(bool, optional, tag = "16")]
34    pub enable_svgs: ::core::option::Option<bool>,
35    #[prost(bool, optional, tag = "17")]
36    pub allow_persistent_notifications: ::core::option::Option<bool>,
37    #[prost(int32, optional, tag = "18")]
38    pub persistent_notification_interval_minutes: ::core::option::Option<i32>,
39    #[prost(int32, optional, tag = "19")]
40    pub persistent_notification_max_count: ::core::option::Option<i32>,
41    #[prost(int32, optional, tag = "20")]
42    pub persistent_notification_max_recipients: ::core::option::Option<i32>,
43    #[prost(int32, optional, tag = "21")]
44    pub feature_flag_sync_interval_seconds: ::core::option::Option<i32>,
45    #[prost(bool, optional, tag = "22")]
46    pub allow_synced_drafts: ::core::option::Option<bool>,
47}
48#[derive(serde::Serialize, serde::Deserialize)]
49#[derive(Clone, PartialEq, ::prost::Message)]
50pub struct ConfigServices {
51    #[prost(string, optional, tag = "1")]
52    pub common_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
53    #[prost(string, optional, tag = "2")]
54    pub user_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
55    #[prost(string, optional, tag = "3")]
56    pub products_service_grpc_url: ::core::option::Option<
57        ::prost::alloc::string::String,
58    >,
59    #[prost(string, optional, tag = "4")]
60    pub jaeger_collector_url: ::core::option::Option<::prost::alloc::string::String>,
61    #[prost(string, optional, tag = "5")]
62    pub common_service_prometheus_url: ::core::option::Option<
63        ::prost::alloc::string::String,
64    >,
65    #[prost(string, optional, tag = "6")]
66    pub user_service_prometheus_url: ::core::option::Option<
67        ::prost::alloc::string::String,
68    >,
69    #[prost(string, optional, tag = "7")]
70    pub products_service_prometheus_url: ::core::option::Option<
71        ::prost::alloc::string::String,
72    >,
73    #[prost(int64, optional, tag = "8")]
74    pub users_service_max_receive_message_size_bytes: ::core::option::Option<i64>,
75    #[prost(string, optional, tag = "9")]
76    pub auth_service_grpc_url: ::core::option::Option<::prost::alloc::string::String>,
77    #[prost(string, optional, tag = "10")]
78    pub auth_service_prometheus_url: ::core::option::Option<
79        ::prost::alloc::string::String,
80    >,
81    #[prost(string, tag = "11")]
82    pub search_service_grpc_url: ::prost::alloc::string::String,
83    #[prost(string, tag = "12")]
84    pub search_service_prometheus_url: ::prost::alloc::string::String,
85    #[prost(string, tag = "13")]
86    pub orders_service_grpc_url: ::prost::alloc::string::String,
87    #[prost(string, tag = "14")]
88    pub orders_service_prometheus_url: ::prost::alloc::string::String,
89    #[prost(int64, tag = "15")]
90    pub orders_service_max_receive_message_size_bytes: i64,
91    #[prost(string, tag = "16")]
92    pub inventory_service_grpc_url: ::prost::alloc::string::String,
93    #[prost(string, tag = "17")]
94    pub inventory_service_prometheus_url: ::prost::alloc::string::String,
95    #[prost(int64, tag = "18")]
96    pub inventory_service_max_receive_message_size_bytes: i64,
97}
98#[derive(serde::Serialize, serde::Deserialize)]
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct ConfigObservability {
101    #[prost(bool, tag = "1")]
102    pub enable_tracing: bool,
103    #[prost(bool, tag = "2")]
104    pub enable_metrics: bool,
105    #[prost(bool, tag = "3")]
106    pub enable_profiling: bool,
107    #[prost(double, tag = "4")]
108    pub tracing_sample_rate: f64,
109    #[prost(string, tag = "5")]
110    pub jaeger_endpoint: ::prost::alloc::string::String,
111    #[prost(string, tag = "6")]
112    pub prometheus_pushgateway: ::prost::alloc::string::String,
113    #[prost(string, tag = "7")]
114    pub otel_grpc_endpoint: ::prost::alloc::string::String,
115}
116#[derive(serde::Serialize, serde::Deserialize)]
117#[derive(Clone, PartialEq, ::prost::Message)]
118pub struct ConfigOAuth {
119    #[prost(string, optional, tag = "1")]
120    pub oauth_provider_url: ::core::option::Option<::prost::alloc::string::String>,
121    #[prost(string, optional, tag = "2")]
122    pub oauth_client_id: ::core::option::Option<::prost::alloc::string::String>,
123    #[prost(string, optional, tag = "3")]
124    pub oauth_client_secret: ::core::option::Option<::prost::alloc::string::String>,
125    #[prost(string, optional, tag = "4")]
126    pub oauth_db_dsn: ::core::option::Option<::prost::alloc::string::String>,
127    #[prost(string, optional, tag = "5")]
128    pub oauth_redirect_url: ::core::option::Option<::prost::alloc::string::String>,
129    #[prost(string, optional, tag = "6")]
130    pub oauth_login_url: ::core::option::Option<::prost::alloc::string::String>,
131    #[prost(string, optional, tag = "7")]
132    pub oauth_consent_url: ::core::option::Option<::prost::alloc::string::String>,
133    #[prost(string, optional, tag = "8")]
134    pub oauth_response_type: ::core::option::Option<::prost::alloc::string::String>,
135    #[prost(string, repeated, tag = "9")]
136    pub oauth_scope: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
137    #[prost(string, optional, tag = "10")]
138    pub oauth_admin_url: ::core::option::Option<::prost::alloc::string::String>,
139    #[prost(string, optional, tag = "11")]
140    pub oauth_backend_url: ::core::option::Option<::prost::alloc::string::String>,
141    #[prost(string, optional, tag = "12")]
142    pub frontend_login_url: ::core::option::Option<::prost::alloc::string::String>,
143    #[prost(string, optional, tag = "13")]
144    pub frontend_login_error_url: ::core::option::Option<::prost::alloc::string::String>,
145    #[prost(string, repeated, tag = "14")]
146    pub oauth_grant_access_token_audience: ::prost::alloc::vec::Vec<
147        ::prost::alloc::string::String,
148    >,
149}
150#[derive(serde::Serialize, serde::Deserialize)]
151#[derive(Clone, PartialEq, ::prost::Message)]
152pub struct ConfigSecurity {
153    #[prost(int32, optional, tag = "1")]
154    pub access_token_expiry_web_in_hours: ::core::option::Option<i32>,
155    #[prost(int32, optional, tag = "2")]
156    pub access_token_expiry_mobile_in_hours: ::core::option::Option<i32>,
157    #[prost(int32, optional, tag = "3")]
158    pub access_token_expiry_sso_in_hours: ::core::option::Option<i32>,
159    #[prost(int32, optional, tag = "4")]
160    pub access_token_cache_in_minutes: ::core::option::Option<i32>,
161    #[prost(int32, optional, tag = "5")]
162    pub refresh_token_expiry_in_hours: ::core::option::Option<i32>,
163    #[prost(int32, optional, tag = "6")]
164    pub maximum_login_attempts: ::core::option::Option<i32>,
165    #[prost(bool, optional, tag = "7")]
166    pub terminate_sessions_on_password_change: ::core::option::Option<bool>,
167    #[prost(string, optional, tag = "8")]
168    pub email_confirmation_url: ::core::option::Option<::prost::alloc::string::String>,
169    #[prost(string, optional, tag = "9")]
170    pub password_reset_url: ::core::option::Option<::prost::alloc::string::String>,
171    #[prost(uint32, optional, tag = "10")]
172    pub token_confirmation_expiry_in_hours: ::core::option::Option<u32>,
173    #[prost(uint32, optional, tag = "11")]
174    pub token_password_reset_expiry_in_hours: ::core::option::Option<u32>,
175    #[prost(bool, optional, tag = "12")]
176    pub enable_insecure_outgoing_connections: ::core::option::Option<bool>,
177    #[prost(bool, optional, tag = "13")]
178    pub enable_multifactor_authentication: ::core::option::Option<bool>,
179    #[prost(bool, optional, tag = "14")]
180    pub enforce_multifactor_authentication: ::core::option::Option<bool>,
181    #[prost(bool, optional, tag = "15")]
182    pub enable_oauth_service_provider: ::core::option::Option<bool>,
183    #[prost(bool, optional, tag = "16")]
184    pub enable_outgoing_oauth_connections: ::core::option::Option<bool>,
185    #[prost(string, optional, tag = "17")]
186    pub allow_cors_from: ::core::option::Option<::prost::alloc::string::String>,
187    #[prost(string, optional, tag = "18")]
188    pub cors_exposed_headers: ::core::option::Option<::prost::alloc::string::String>,
189    #[prost(bool, optional, tag = "19")]
190    pub cors_allow_credentials: ::core::option::Option<bool>,
191    #[prost(bool, optional, tag = "20")]
192    pub cors_debug: ::core::option::Option<bool>,
193    #[prost(bool, optional, tag = "21")]
194    pub allow_cookies_for_subdomains: ::core::option::Option<bool>,
195}
196#[derive(serde::Serialize, serde::Deserialize)]
197#[derive(Clone, PartialEq, ::prost::Message)]
198pub struct CacheConfig {
199    #[prost(string, optional, tag = "1")]
200    pub cache_type: ::core::option::Option<::prost::alloc::string::String>,
201    #[prost(string, optional, tag = "2")]
202    pub redis_address: ::core::option::Option<::prost::alloc::string::String>,
203    #[prost(string, optional, tag = "3")]
204    pub redis_password: ::core::option::Option<::prost::alloc::string::String>,
205    #[prost(int32, optional, tag = "4")]
206    pub redis_db: ::core::option::Option<i32>,
207    #[prost(string, optional, tag = "5")]
208    pub redis_cache_prefix: ::core::option::Option<::prost::alloc::string::String>,
209    #[prost(bool, optional, tag = "6")]
210    pub disable_client_cache: ::core::option::Option<bool>,
211}
212#[derive(serde::Serialize, serde::Deserialize)]
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct ConfigMetrics {
215    #[prost(bool, optional, tag = "1")]
216    pub enable: ::core::option::Option<bool>,
217    #[prost(int32, optional, tag = "2")]
218    pub block_profile_rate: ::core::option::Option<i32>,
219    #[prost(string, optional, tag = "3")]
220    pub listen_address: ::core::option::Option<::prost::alloc::string::String>,
221    #[prost(bool, optional, tag = "4")]
222    pub enable_client_metrics: ::core::option::Option<bool>,
223    #[prost(bool, optional, tag = "5")]
224    pub enable_notification_metrics: ::core::option::Option<bool>,
225    #[prost(string, repeated, tag = "6")]
226    pub client_side_user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
227}
228#[derive(serde::Serialize, serde::Deserialize)]
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct ConfigSso {
231    #[prost(bool, optional, tag = "1")]
232    pub enable: ::core::option::Option<bool>,
233    #[prost(string, optional, tag = "2")]
234    pub secret: ::core::option::Option<::prost::alloc::string::String>,
235    #[prost(string, optional, tag = "3")]
236    pub id: ::core::option::Option<::prost::alloc::string::String>,
237    #[prost(string, optional, tag = "4")]
238    pub scope: ::core::option::Option<::prost::alloc::string::String>,
239    #[prost(string, optional, tag = "5")]
240    pub auth_endpoint: ::core::option::Option<::prost::alloc::string::String>,
241    #[prost(string, optional, tag = "6")]
242    pub token_endpoint: ::core::option::Option<::prost::alloc::string::String>,
243    #[prost(string, optional, tag = "7")]
244    pub user_api_endpoint: ::core::option::Option<::prost::alloc::string::String>,
245    #[prost(string, optional, tag = "8")]
246    pub discovery_endpoint: ::core::option::Option<::prost::alloc::string::String>,
247    #[prost(string, optional, tag = "9")]
248    pub button_text: ::core::option::Option<::prost::alloc::string::String>,
249    #[prost(string, optional, tag = "10")]
250    pub button_color: ::core::option::Option<::prost::alloc::string::String>,
251}
252#[derive(serde::Serialize, serde::Deserialize)]
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct ConfigSql {
255    #[prost(string, optional, tag = "1")]
256    pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
257    #[prost(string, optional, tag = "2")]
258    pub data_source: ::core::option::Option<::prost::alloc::string::String>,
259    #[prost(int32, optional, tag = "3")]
260    pub max_idle_conns: ::core::option::Option<i32>,
261    #[prost(int32, optional, tag = "4")]
262    pub conn_max_lifetime_milliseconds: ::core::option::Option<i32>,
263    #[prost(int32, optional, tag = "5")]
264    pub conn_max_idle_time_milliseconds: ::core::option::Option<i32>,
265    #[prost(int32, optional, tag = "6")]
266    pub max_open_conns: ::core::option::Option<i32>,
267    #[prost(bool, optional, tag = "7")]
268    pub trace: ::core::option::Option<bool>,
269    #[prost(string, optional, tag = "8")]
270    pub at_rest_encrypt_key: ::core::option::Option<::prost::alloc::string::String>,
271    #[prost(int32, optional, tag = "9")]
272    pub query_timeout: ::core::option::Option<i32>,
273    #[prost(bool, optional, tag = "10")]
274    pub disable_database_search: ::core::option::Option<bool>,
275}
276#[derive(serde::Serialize, serde::Deserialize)]
277#[derive(Clone, Copy, PartialEq, ::prost::Message)]
278pub struct ConfigPassword {
279    #[prost(int32, optional, tag = "1")]
280    pub minimum_length: ::core::option::Option<i32>,
281    #[prost(int32, optional, tag = "2")]
282    pub maximum_length: ::core::option::Option<i32>,
283    #[prost(bool, optional, tag = "3")]
284    pub lowercase: ::core::option::Option<bool>,
285    #[prost(bool, optional, tag = "4")]
286    pub number: ::core::option::Option<bool>,
287    #[prost(bool, optional, tag = "5")]
288    pub uppercase: ::core::option::Option<bool>,
289    #[prost(bool, optional, tag = "6")]
290    pub symbol: ::core::option::Option<bool>,
291    #[prost(bool, optional, tag = "7")]
292    pub enable_forgot_link: ::core::option::Option<bool>,
293}
294#[derive(serde::Serialize, serde::Deserialize)]
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct ConfigFile {
297    #[prost(bool, optional, tag = "1")]
298    pub enable_file_attachments: ::core::option::Option<bool>,
299    #[prost(bool, optional, tag = "2")]
300    pub enable_mobile_upload: ::core::option::Option<bool>,
301    #[prost(bool, optional, tag = "3")]
302    pub enable_mobile_download: ::core::option::Option<bool>,
303    #[prost(int64, optional, tag = "4")]
304    pub max_image_resolution: ::core::option::Option<i64>,
305    #[prost(int64, optional, tag = "5")]
306    pub max_image_decoder_concurrency: ::core::option::Option<i64>,
307    #[prost(string, optional, tag = "6")]
308    pub driver_name: ::core::option::Option<::prost::alloc::string::String>,
309    #[prost(string, optional, tag = "7")]
310    pub amazon_s3_access_key_id: ::core::option::Option<::prost::alloc::string::String>,
311    #[prost(string, optional, tag = "8")]
312    pub amazon_s3_secret_access_key: ::core::option::Option<
313        ::prost::alloc::string::String,
314    >,
315    #[prost(string, optional, tag = "9")]
316    pub amazon_s3_bucket: ::core::option::Option<::prost::alloc::string::String>,
317    #[prost(string, optional, tag = "10")]
318    pub amazon_s3_path_prefix: ::core::option::Option<::prost::alloc::string::String>,
319    #[prost(string, optional, tag = "11")]
320    pub amazon_s3_region: ::core::option::Option<::prost::alloc::string::String>,
321    #[prost(string, optional, tag = "12")]
322    pub amazon_s3_endpoint: ::core::option::Option<::prost::alloc::string::String>,
323    #[prost(bool, optional, tag = "13")]
324    pub amazon_s3_ssl: ::core::option::Option<bool>,
325    #[prost(bool, optional, tag = "14")]
326    pub amazon_s3_sign_v2: ::core::option::Option<bool>,
327    #[prost(bool, optional, tag = "15")]
328    pub amazon_s3_sse: ::core::option::Option<bool>,
329    #[prost(bool, optional, tag = "16")]
330    pub amazon_s3_trace: ::core::option::Option<bool>,
331    #[prost(int64, optional, tag = "17")]
332    pub amazon_s3_request_timeout_milliseconds: ::core::option::Option<i64>,
333    #[prost(int64, optional, tag = "18")]
334    pub amazon_s3_upload_part_size_bytes: ::core::option::Option<i64>,
335    #[prost(string, optional, tag = "19")]
336    pub amazon_s3_storage_class: ::core::option::Option<::prost::alloc::string::String>,
337}
338#[derive(serde::Serialize, serde::Deserialize)]
339#[derive(Clone, PartialEq, ::prost::Message)]
340pub struct ConfigEmail {
341    #[prost(bool, optional, tag = "1")]
342    pub send_email_notifications: ::core::option::Option<bool>,
343    #[prost(bool, optional, tag = "2")]
344    pub require_email_verification: ::core::option::Option<bool>,
345    #[prost(string, optional, tag = "3")]
346    pub feedback_email: ::core::option::Option<::prost::alloc::string::String>,
347    #[prost(string, optional, tag = "4")]
348    pub reply_to_address: ::core::option::Option<::prost::alloc::string::String>,
349    #[prost(bool, optional, tag = "5")]
350    pub enable_smtp_auth: ::core::option::Option<bool>,
351    #[prost(string, optional, tag = "6")]
352    pub smtp_username: ::core::option::Option<::prost::alloc::string::String>,
353    #[prost(string, optional, tag = "7")]
354    pub smtp_password: ::core::option::Option<::prost::alloc::string::String>,
355    #[prost(string, optional, tag = "8")]
356    pub smtp_server: ::core::option::Option<::prost::alloc::string::String>,
357    #[prost(string, optional, tag = "9")]
358    pub smtp_port: ::core::option::Option<::prost::alloc::string::String>,
359    #[prost(int32, optional, tag = "10")]
360    pub smtp_server_timeout: ::core::option::Option<i32>,
361    #[prost(string, optional, tag = "11")]
362    pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
363    #[prost(bool, optional, tag = "12")]
364    pub send_push_notifications: ::core::option::Option<bool>,
365    #[prost(string, optional, tag = "13")]
366    pub push_notification_server: ::core::option::Option<::prost::alloc::string::String>,
367    #[prost(string, optional, tag = "14")]
368    pub push_notification_contents: ::core::option::Option<
369        ::prost::alloc::string::String,
370    >,
371    #[prost(int32, optional, tag = "15")]
372    pub push_notification_buffer: ::core::option::Option<i32>,
373    #[prost(bool, optional, tag = "16")]
374    pub enable_email_batching: ::core::option::Option<bool>,
375    #[prost(int32, optional, tag = "17")]
376    pub email_batching_buffer_size: ::core::option::Option<i32>,
377    #[prost(int32, optional, tag = "18")]
378    pub email_batching_interval: ::core::option::Option<i32>,
379    #[prost(bool, optional, tag = "19")]
380    pub skip_server_certificate_verification: ::core::option::Option<bool>,
381    #[prost(string, optional, tag = "20")]
382    pub email_notification_contents_type: ::core::option::Option<
383        ::prost::alloc::string::String,
384    >,
385    #[prost(string, optional, tag = "21")]
386    pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
387    #[prost(string, optional, tag = "22")]
388    pub login_button_border_color: ::core::option::Option<
389        ::prost::alloc::string::String,
390    >,
391    #[prost(string, optional, tag = "23")]
392    pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
393    #[prost(int32, optional, tag = "24")]
394    pub rate_limiting_memory_size: ::core::option::Option<i32>,
395    #[prost(int32, optional, tag = "25")]
396    pub rate_limiting_per_hour: ::core::option::Option<i32>,
397    #[prost(int32, optional, tag = "26")]
398    pub rate_limiting_max_burst: ::core::option::Option<i32>,
399}
400#[derive(serde::Serialize, serde::Deserialize)]
401#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct ConfigRateLimit {
403    #[prost(bool, optional, tag = "1")]
404    pub enable: ::core::option::Option<bool>,
405    #[prost(int32, optional, tag = "2")]
406    pub per_sec: ::core::option::Option<i32>,
407    #[prost(int32, optional, tag = "3")]
408    pub max_burst: ::core::option::Option<i32>,
409    #[prost(int32, optional, tag = "4")]
410    pub memory_store_size: ::core::option::Option<i32>,
411    #[prost(bool, optional, tag = "5")]
412    pub vary_by_remote_addr: ::core::option::Option<bool>,
413    #[prost(bool, optional, tag = "6")]
414    pub vary_by_user: ::core::option::Option<bool>,
415    #[prost(string, tag = "7")]
416    pub vary_by_header: ::prost::alloc::string::String,
417}
418#[derive(serde::Serialize, serde::Deserialize)]
419#[derive(Clone, Copy, PartialEq, ::prost::Message)]
420pub struct ConfigPrivacy {
421    #[prost(bool, optional, tag = "1")]
422    pub show_email_address: ::core::option::Option<bool>,
423    #[prost(bool, optional, tag = "2")]
424    pub show_full_name: ::core::option::Option<bool>,
425}
426#[derive(serde::Serialize, serde::Deserialize)]
427#[derive(Clone, PartialEq, ::prost::Message)]
428pub struct ConfigSupport {
429    #[prost(string, optional, tag = "1")]
430    pub terms_of_service_link: ::core::option::Option<::prost::alloc::string::String>,
431    #[prost(string, optional, tag = "2")]
432    pub privacy_policy_link: ::core::option::Option<::prost::alloc::string::String>,
433    #[prost(string, optional, tag = "3")]
434    pub about_link: ::core::option::Option<::prost::alloc::string::String>,
435    #[prost(string, optional, tag = "4")]
436    pub help_link: ::core::option::Option<::prost::alloc::string::String>,
437    #[prost(string, optional, tag = "5")]
438    pub report_a_problem_link: ::core::option::Option<::prost::alloc::string::String>,
439    #[prost(string, optional, tag = "6")]
440    pub forgot_password_link: ::core::option::Option<::prost::alloc::string::String>,
441    #[prost(string, optional, tag = "7")]
442    pub support_email: ::core::option::Option<::prost::alloc::string::String>,
443}
444#[derive(serde::Serialize, serde::Deserialize)]
445#[derive(Clone, PartialEq, ::prost::Message)]
446pub struct ConfigLocalization {
447    #[prost(string, optional, tag = "1")]
448    pub default_server_locale: ::core::option::Option<::prost::alloc::string::String>,
449    #[prost(string, optional, tag = "2")]
450    pub default_client_locale: ::core::option::Option<::prost::alloc::string::String>,
451    #[prost(string, repeated, tag = "3")]
452    pub available_locales: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
453}
454#[derive(serde::Serialize, serde::Deserialize)]
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct ConfigLdap {
457    /// Basic
458    #[prost(bool, optional, tag = "1")]
459    pub enable: ::core::option::Option<bool>,
460    #[prost(bool, optional, tag = "2")]
461    pub enable_sync: ::core::option::Option<bool>,
462    #[prost(string, optional, tag = "3")]
463    pub ldap_server: ::core::option::Option<::prost::alloc::string::String>,
464    #[prost(int32, optional, tag = "4")]
465    pub ldap_port: ::core::option::Option<i32>,
466    #[prost(string, optional, tag = "5")]
467    pub connection_security: ::core::option::Option<::prost::alloc::string::String>,
468    #[prost(string, optional, tag = "6")]
469    pub base_dn: ::core::option::Option<::prost::alloc::string::String>,
470    #[prost(string, optional, tag = "7")]
471    pub bind_username: ::core::option::Option<::prost::alloc::string::String>,
472    #[prost(string, optional, tag = "8")]
473    pub bind_password: ::core::option::Option<::prost::alloc::string::String>,
474    #[prost(int32, optional, tag = "9")]
475    pub maximum_login_attempts: ::core::option::Option<i32>,
476    /// Filtering
477    #[prost(string, optional, tag = "10")]
478    pub user_filter: ::core::option::Option<::prost::alloc::string::String>,
479    #[prost(string, optional, tag = "11")]
480    pub group_filter: ::core::option::Option<::prost::alloc::string::String>,
481    #[prost(bool, optional, tag = "12")]
482    pub enable_admin_filter: ::core::option::Option<bool>,
483    #[prost(string, optional, tag = "13")]
484    pub admin_filter: ::core::option::Option<::prost::alloc::string::String>,
485    /// Group Mapping
486    #[prost(string, optional, tag = "14")]
487    pub group_display_name_attribute: ::core::option::Option<
488        ::prost::alloc::string::String,
489    >,
490    #[prost(string, optional, tag = "15")]
491    pub group_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
492    /// User Mapping
493    #[prost(string, optional, tag = "16")]
494    pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
495    #[prost(string, optional, tag = "17")]
496    pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
497    #[prost(string, optional, tag = "18")]
498    pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
499    #[prost(string, optional, tag = "19")]
500    pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
501    #[prost(string, optional, tag = "20")]
502    pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
503    #[prost(string, optional, tag = "21")]
504    pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
505    #[prost(string, optional, tag = "22")]
506    pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
507    #[prost(string, optional, tag = "23")]
508    pub login_id_attribute: ::core::option::Option<::prost::alloc::string::String>,
509    #[prost(string, optional, tag = "24")]
510    pub picture_attribute: ::core::option::Option<::prost::alloc::string::String>,
511    /// Synchronization
512    #[prost(int32, optional, tag = "25")]
513    pub sync_interval_minutes: ::core::option::Option<i32>,
514    /// Advanced
515    #[prost(int32, optional, tag = "26")]
516    pub query_timeout: ::core::option::Option<i32>,
517    #[prost(int32, optional, tag = "27")]
518    pub max_page_size: ::core::option::Option<i32>,
519    /// Customization
520    #[prost(string, optional, tag = "28")]
521    pub login_field_name: ::core::option::Option<::prost::alloc::string::String>,
522    #[prost(string, optional, tag = "29")]
523    pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
524    #[prost(string, optional, tag = "30")]
525    pub login_button_border_color: ::core::option::Option<
526        ::prost::alloc::string::String,
527    >,
528    #[prost(string, optional, tag = "31")]
529    pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
530}
531#[derive(serde::Serialize, serde::Deserialize)]
532#[derive(Clone, PartialEq, ::prost::Message)]
533pub struct ConfigSaml {
534    /// Basic
535    #[prost(bool, optional, tag = "1")]
536    pub enable: ::core::option::Option<bool>,
537    #[prost(bool, optional, tag = "2")]
538    pub enable_sync_with_ldap: ::core::option::Option<bool>,
539    #[prost(bool, optional, tag = "3")]
540    pub enable_sync_with_ldap_include_auth: ::core::option::Option<bool>,
541    #[prost(bool, optional, tag = "4")]
542    pub ignore_guests_ldap_sync: ::core::option::Option<bool>,
543    #[prost(bool, optional, tag = "5")]
544    pub verify: ::core::option::Option<bool>,
545    #[prost(bool, optional, tag = "6")]
546    pub encrypt: ::core::option::Option<bool>,
547    #[prost(bool, optional, tag = "7")]
548    pub sign_request: ::core::option::Option<bool>,
549    #[prost(string, optional, tag = "8")]
550    pub idp_url: ::core::option::Option<::prost::alloc::string::String>,
551    #[prost(string, optional, tag = "9")]
552    pub idp_descriptor_url: ::core::option::Option<::prost::alloc::string::String>,
553    #[prost(string, optional, tag = "10")]
554    pub idp_metadata_url: ::core::option::Option<::prost::alloc::string::String>,
555    #[prost(string, optional, tag = "11")]
556    pub service_provider_identifier: ::core::option::Option<
557        ::prost::alloc::string::String,
558    >,
559    #[prost(string, optional, tag = "12")]
560    pub assertion_consumer_service_url: ::core::option::Option<
561        ::prost::alloc::string::String,
562    >,
563    #[prost(string, optional, tag = "13")]
564    pub signature_algorithm: ::core::option::Option<::prost::alloc::string::String>,
565    #[prost(string, optional, tag = "14")]
566    pub canonical_algorithm: ::core::option::Option<::prost::alloc::string::String>,
567    #[prost(string, optional, tag = "15")]
568    pub scoping_idp_provider_id: ::core::option::Option<::prost::alloc::string::String>,
569    #[prost(string, optional, tag = "16")]
570    pub scoping_idp_name: ::core::option::Option<::prost::alloc::string::String>,
571    #[prost(string, optional, tag = "17")]
572    pub idp_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
573    #[prost(string, optional, tag = "18")]
574    pub public_certificate_file: ::core::option::Option<::prost::alloc::string::String>,
575    #[prost(string, optional, tag = "19")]
576    pub private_key_file: ::core::option::Option<::prost::alloc::string::String>,
577    /// User Mapping
578    #[prost(string, optional, tag = "20")]
579    pub id_attribute: ::core::option::Option<::prost::alloc::string::String>,
580    #[prost(bool, optional, tag = "21")]
581    pub enable_admin_attribute: ::core::option::Option<bool>,
582    #[prost(string, optional, tag = "22")]
583    pub admin_attribute: ::core::option::Option<::prost::alloc::string::String>,
584    #[prost(string, optional, tag = "23")]
585    pub first_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
586    #[prost(string, optional, tag = "24")]
587    pub last_name_attribute: ::core::option::Option<::prost::alloc::string::String>,
588    #[prost(string, optional, tag = "25")]
589    pub email_attribute: ::core::option::Option<::prost::alloc::string::String>,
590    #[prost(string, optional, tag = "26")]
591    pub username_attribute: ::core::option::Option<::prost::alloc::string::String>,
592    #[prost(string, optional, tag = "27")]
593    pub nickname_attribute: ::core::option::Option<::prost::alloc::string::String>,
594    #[prost(string, optional, tag = "28")]
595    pub locale_attribute: ::core::option::Option<::prost::alloc::string::String>,
596    #[prost(string, optional, tag = "29")]
597    pub position_attribute: ::core::option::Option<::prost::alloc::string::String>,
598    #[prost(string, optional, tag = "30")]
599    pub login_button_text: ::core::option::Option<::prost::alloc::string::String>,
600    #[prost(string, optional, tag = "31")]
601    pub login_button_color: ::core::option::Option<::prost::alloc::string::String>,
602    #[prost(string, optional, tag = "32")]
603    pub login_button_border_color: ::core::option::Option<
604        ::prost::alloc::string::String,
605    >,
606    #[prost(string, optional, tag = "33")]
607    pub login_button_text_color: ::core::option::Option<::prost::alloc::string::String>,
608}
609#[derive(serde::Serialize, serde::Deserialize)]
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct ConfigNativeApp {
612    #[prost(string, repeated, tag = "1")]
613    pub app_custom_url_schemes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
614    #[prost(string, optional, tag = "2")]
615    pub app_download_link: ::core::option::Option<::prost::alloc::string::String>,
616    #[prost(string, optional, tag = "3")]
617    pub android_app_download_link: ::core::option::Option<
618        ::prost::alloc::string::String,
619    >,
620    #[prost(string, optional, tag = "4")]
621    pub ios_app_download_link: ::core::option::Option<::prost::alloc::string::String>,
622    #[prost(bool, optional, tag = "5")]
623    pub mobile_external_browser: ::core::option::Option<bool>,
624    #[prost(bool, optional, tag = "6")]
625    pub mobile_enable_biometrics: ::core::option::Option<bool>,
626    #[prost(bool, optional, tag = "7")]
627    pub mobile_prevent_screen_capture: ::core::option::Option<bool>,
628    #[prost(bool, optional, tag = "8")]
629    pub mobile_jailbreak_protection: ::core::option::Option<bool>,
630}
631#[derive(serde::Serialize, serde::Deserialize)]
632#[derive(Clone, PartialEq, ::prost::Message)]
633pub struct ConfigMeilisearch {
634    #[prost(string, repeated, tag = "1")]
635    pub server_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
636    /// Meilisearch-specific authentication
637    #[prost(string, optional, tag = "2")]
638    pub master_key: ::core::option::Option<::prost::alloc::string::String>,
639    #[prost(bool, optional, tag = "3")]
640    pub enable_indexing: ::core::option::Option<bool>,
641    #[prost(bool, optional, tag = "4")]
642    pub enable_searching: ::core::option::Option<bool>,
643    #[prost(bool, optional, tag = "5")]
644    pub enable_autocomplete: ::core::option::Option<bool>,
645    /// concurrency limiter
646    #[prost(int32, optional, tag = "6")]
647    pub max_concurrency: ::core::option::Option<i32>,
648    #[prost(int32, optional, tag = "7")]
649    pub request_timeout_seconds: ::core::option::Option<i32>,
650    /// Meilisearch-specific options
651    #[prost(string, optional, tag = "8")]
652    pub index_prefix: ::core::option::Option<::prost::alloc::string::String>,
653    /// performance tuning
654    #[prost(int32, optional, tag = "9")]
655    pub search_cutoff_ms: ::core::option::Option<i32>,
656    #[prost(bool, optional, tag = "10")]
657    pub enable_typo_tolerance: ::core::option::Option<bool>,
658    #[prost(string, tag = "11")]
659    pub kafka_broker: ::prost::alloc::string::String,
660    #[prost(string, tag = "12")]
661    pub kafka_group_id: ::prost::alloc::string::String,
662    #[prost(string, tag = "13")]
663    pub kafak_topic: ::prost::alloc::string::String,
664    #[prost(string, tag = "14")]
665    pub kafak_topic_dlq: ::prost::alloc::string::String,
666    /// how long to wait for Meili task to finish (ms)
667    #[prost(int32, optional, tag = "15")]
668    pub task_max_wait_ms: ::core::option::Option<i32>,
669    /// per-endpoint retry attempts
670    #[prost(int32, optional, tag = "16")]
671    pub task_max_retries: ::core::option::Option<i32>,
672    /// initial backoff (ms)
673    #[prost(int32, optional, tag = "17")]
674    pub task_backoff_base_ms: ::core::option::Option<i32>,
675    /// how long to wait for in-flight tasks on shutdown
676    #[prost(int32, optional, tag = "18")]
677    pub shutdown_wait_secs: ::core::option::Option<i32>,
678}
679#[derive(serde::Serialize, serde::Deserialize)]
680#[derive(Clone, PartialEq, ::prost::Message)]
681pub struct ConfigBleve {
682    #[prost(string, optional, tag = "1")]
683    pub index_dir: ::core::option::Option<::prost::alloc::string::String>,
684    #[prost(bool, optional, tag = "2")]
685    pub enable_indexing: ::core::option::Option<bool>,
686    #[prost(bool, optional, tag = "3")]
687    pub enable_searching: ::core::option::Option<bool>,
688    #[prost(bool, optional, tag = "4")]
689    pub enable_autocomplete: ::core::option::Option<bool>,
690    #[prost(int32, optional, tag = "5")]
691    pub bulk_indexing_time_window_seconds: ::core::option::Option<i32>,
692    #[prost(int32, optional, tag = "6")]
693    pub batch_size: ::core::option::Option<i32>,
694}
695#[derive(serde::Serialize, serde::Deserialize)]
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct ConfigDataRetention {
698    #[prost(bool, optional, tag = "1")]
699    pub enable_message_deletion: ::core::option::Option<bool>,
700    #[prost(bool, optional, tag = "2")]
701    pub enable_file_deletion: ::core::option::Option<bool>,
702    #[prost(bool, optional, tag = "3")]
703    pub enable_boards_deletion: ::core::option::Option<bool>,
704    #[prost(int32, optional, tag = "4")]
705    pub message_retention_hours: ::core::option::Option<i32>,
706    #[prost(int32, optional, tag = "5")]
707    pub file_retention_hours: ::core::option::Option<i32>,
708    #[prost(int32, optional, tag = "6")]
709    pub boards_retention_days: ::core::option::Option<i32>,
710    #[prost(string, optional, tag = "7")]
711    pub deletion_job_start_time: ::core::option::Option<::prost::alloc::string::String>,
712    #[prost(int32, optional, tag = "8")]
713    pub batch_size: ::core::option::Option<i32>,
714    #[prost(int32, optional, tag = "9")]
715    pub time_between_batches_milliseconds: ::core::option::Option<i32>,
716    #[prost(int32, optional, tag = "10")]
717    pub retention_ids_batch_size: ::core::option::Option<i32>,
718}
719#[derive(serde::Serialize, serde::Deserialize)]
720#[derive(Clone, PartialEq, ::prost::Message)]
721pub struct ConfigImageProxy {
722    #[prost(bool, optional, tag = "1")]
723    pub enable: ::core::option::Option<bool>,
724    #[prost(string, optional, tag = "2")]
725    pub image_proxy_type: ::core::option::Option<::prost::alloc::string::String>,
726    #[prost(string, optional, tag = "3")]
727    pub remote_image_proxy_url: ::core::option::Option<::prost::alloc::string::String>,
728    #[prost(string, optional, tag = "4")]
729    pub remote_image_proxy_options: ::core::option::Option<
730        ::prost::alloc::string::String,
731    >,
732}
733#[derive(serde::Serialize, serde::Deserialize)]
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct ConfigProducts {
736    #[prost(uint64, tag = "1")]
737    pub product_image_max_size_mb: u64,
738    #[prost(string, repeated, tag = "2")]
739    pub product_image_accepted_formats: ::prost::alloc::vec::Vec<
740        ::prost::alloc::string::String,
741    >,
742    #[prost(uint64, tag = "3")]
743    pub product_image_max_width: u64,
744    #[prost(uint64, tag = "4")]
745    pub product_image_max_height: u64,
746    #[prost(uint64, tag = "5")]
747    pub product_image_min_width: u64,
748    #[prost(uint64, tag = "6")]
749    pub product_image_min_height: u64,
750    #[prost(uint64, tag = "7")]
751    pub product_images_min_count_per_variant: u64,
752    #[prost(uint64, tag = "8")]
753    pub product_images_max_count_per_variant: u64,
754    #[prost(uint64, tag = "9")]
755    pub product_media_max_direct_uploading_size_mb: u64,
756}
757#[derive(serde::Serialize, serde::Deserialize)]
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct Config {
760    #[prost(message, optional, tag = "1")]
761    pub main: ::core::option::Option<ConfigMain>,
762    #[prost(message, optional, tag = "2")]
763    pub services: ::core::option::Option<ConfigServices>,
764    #[prost(message, optional, tag = "3")]
765    pub security: ::core::option::Option<ConfigSecurity>,
766    #[prost(message, optional, tag = "4")]
767    pub cache: ::core::option::Option<CacheConfig>,
768    #[prost(message, optional, tag = "5")]
769    pub metrics: ::core::option::Option<ConfigMetrics>,
770    #[prost(message, optional, tag = "6")]
771    pub sso: ::core::option::Option<ConfigSso>,
772    #[prost(message, optional, tag = "7")]
773    pub sql: ::core::option::Option<ConfigSql>,
774    #[prost(message, optional, tag = "8")]
775    pub password: ::core::option::Option<ConfigPassword>,
776    #[prost(message, optional, tag = "9")]
777    pub file: ::core::option::Option<ConfigFile>,
778    #[prost(message, optional, tag = "10")]
779    pub email: ::core::option::Option<ConfigEmail>,
780    #[prost(message, optional, tag = "11")]
781    pub rate_limit: ::core::option::Option<ConfigRateLimit>,
782    #[prost(message, optional, tag = "12")]
783    pub privacy: ::core::option::Option<ConfigPrivacy>,
784    #[prost(message, optional, tag = "13")]
785    pub support: ::core::option::Option<ConfigSupport>,
786    #[prost(message, optional, tag = "14")]
787    pub localization: ::core::option::Option<ConfigLocalization>,
788    #[prost(message, optional, tag = "15")]
789    pub ldap: ::core::option::Option<ConfigLdap>,
790    #[prost(message, optional, tag = "16")]
791    pub saml: ::core::option::Option<ConfigSaml>,
792    #[prost(message, optional, tag = "17")]
793    pub native_app: ::core::option::Option<ConfigNativeApp>,
794    #[prost(message, optional, tag = "18")]
795    pub meilisearch: ::core::option::Option<ConfigMeilisearch>,
796    #[prost(message, optional, tag = "19")]
797    pub bleve: ::core::option::Option<ConfigBleve>,
798    #[prost(message, optional, tag = "20")]
799    pub data_retention: ::core::option::Option<ConfigDataRetention>,
800    #[prost(message, optional, tag = "21")]
801    pub image_proxy: ::core::option::Option<ConfigImageProxy>,
802    #[prost(message, optional, tag = "22")]
803    pub oauth: ::core::option::Option<ConfigOAuth>,
804    #[prost(message, optional, tag = "23")]
805    pub products: ::core::option::Option<ConfigProducts>,
806    #[prost(message, optional, tag = "24")]
807    pub observability: ::core::option::Option<ConfigObservability>,
808}
809#[derive(serde::Serialize, serde::Deserialize)]
810#[derive(Clone, Copy, PartialEq, ::prost::Message)]
811pub struct ConfigGetRequest {
812    #[prost(enumeration = "Environment", tag = "1")]
813    pub env: i32,
814}
815#[derive(serde::Serialize, serde::Deserialize)]
816#[derive(Clone, PartialEq, ::prost::Message)]
817pub struct ConfigGetResponse {
818    #[prost(oneof = "config_get_response::Response", tags = "1, 2")]
819    pub response: ::core::option::Option<config_get_response::Response>,
820}
821/// Nested message and enum types in `ConfigGetResponse`.
822pub mod config_get_response {
823    #[derive(serde::Serialize, serde::Deserialize)]
824    #[derive(Clone, PartialEq, ::prost::Oneof)]
825    pub enum Response {
826        #[prost(message, tag = "1")]
827        Data(super::Config),
828        #[prost(message, tag = "2")]
829        Error(super::super::super::shared::v1::AppError),
830    }
831}
832#[derive(serde::Serialize, serde::Deserialize)]
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct ConfigUpdateRequest {
835    #[prost(message, optional, tag = "1")]
836    pub config: ::core::option::Option<Config>,
837}
838#[derive(serde::Serialize, serde::Deserialize)]
839#[derive(Clone, PartialEq, ::prost::Message)]
840pub struct ConfigUpdateResponse {
841    #[prost(oneof = "config_update_response::Response", tags = "1, 2")]
842    pub response: ::core::option::Option<config_update_response::Response>,
843}
844/// Nested message and enum types in `ConfigUpdateResponse`.
845pub mod config_update_response {
846    #[derive(serde::Serialize, serde::Deserialize)]
847    #[derive(Clone, PartialEq, ::prost::Oneof)]
848    pub enum Response {
849        #[prost(message, tag = "1")]
850        Data(super::Config),
851        #[prost(message, tag = "2")]
852        Error(super::super::super::shared::v1::AppError),
853    }
854}
855#[derive(serde::Serialize, serde::Deserialize)]
856#[derive(Clone, PartialEq, ::prost::Message)]
857pub struct ConfigListenerResponse {
858    #[prost(oneof = "config_listener_response::Response", tags = "1, 2")]
859    pub response: ::core::option::Option<config_listener_response::Response>,
860}
861/// Nested message and enum types in `ConfigListenerResponse`.
862pub mod config_listener_response {
863    #[derive(serde::Serialize, serde::Deserialize)]
864    #[derive(Clone, PartialEq, ::prost::Oneof)]
865    pub enum Response {
866        #[prost(message, tag = "1")]
867        Data(super::Config),
868        #[prost(message, tag = "2")]
869        Error(super::super::super::shared::v1::AppError),
870    }
871}
872#[derive(serde::Serialize, serde::Deserialize)]
873#[derive(Clone, PartialEq, ::prost::Message)]
874pub struct ConfigListenerRequest {
875    #[prost(string, tag = "1")]
876    pub client_id: ::prost::alloc::string::String,
877}
878#[derive(serde::Serialize, serde::Deserialize)]
879#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
880#[repr(i32)]
881pub enum Environment {
882    Local = 0,
883    Dev = 1,
884    Production = 2,
885}
886impl Environment {
887    /// String value of the enum field names used in the ProtoBuf definition.
888    ///
889    /// The values are not transformed in any way and thus are considered stable
890    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
891    pub fn as_str_name(&self) -> &'static str {
892        match self {
893            Self::Local => "LOCAL",
894            Self::Dev => "DEV",
895            Self::Production => "PRODUCTION",
896        }
897    }
898    /// Creates an enum from field names used in the ProtoBuf definition.
899    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
900        match value {
901            "LOCAL" => Some(Self::Local),
902            "DEV" => Some(Self::Dev),
903            "PRODUCTION" => Some(Self::Production),
904            _ => None,
905        }
906    }
907}
908#[derive(serde::Serialize, serde::Deserialize)]
909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
910pub struct TranslationsGetRequest {}
911#[derive(serde::Serialize, serde::Deserialize)]
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct TranslationsGetResponse {
914    #[prost(map = "string, message", tag = "1")]
915    pub data: ::std::collections::HashMap<
916        ::prost::alloc::string::String,
917        TranslationElements,
918    >,
919    #[prost(message, optional, tag = "2")]
920    pub error: ::core::option::Option<super::super::shared::v1::AppError>,
921}
922#[derive(serde::Serialize, serde::Deserialize)]
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct TranslationsForLangGetRequest {
925    #[prost(string, tag = "1")]
926    pub lang: ::prost::alloc::string::String,
927}
928#[derive(serde::Serialize, serde::Deserialize)]
929#[derive(Clone, PartialEq, ::prost::Message)]
930pub struct TranslationsForLangGetResponse {
931    #[prost(oneof = "translations_for_lang_get_response::Response", tags = "1, 2")]
932    pub response: ::core::option::Option<translations_for_lang_get_response::Response>,
933}
934/// Nested message and enum types in `TranslationsForLangGetResponse`.
935pub mod translations_for_lang_get_response {
936    #[derive(serde::Serialize, serde::Deserialize)]
937    #[derive(Clone, PartialEq, ::prost::Oneof)]
938    pub enum Response {
939        #[prost(message, tag = "1")]
940        Data(super::TranslationElements),
941        #[prost(message, tag = "2")]
942        Error(super::super::super::shared::v1::AppError),
943    }
944}
945#[derive(serde::Serialize, serde::Deserialize)]
946#[derive(Clone, PartialEq, ::prost::Message)]
947pub struct TranslationElement {
948    #[prost(string, tag = "1")]
949    pub id: ::prost::alloc::string::String,
950    #[prost(string, tag = "2")]
951    pub tr: ::prost::alloc::string::String,
952}
953#[derive(serde::Serialize, serde::Deserialize)]
954#[derive(Clone, PartialEq, ::prost::Message)]
955pub struct TranslationElements {
956    #[prost(message, repeated, tag = "1")]
957    pub trans: ::prost::alloc::vec::Vec<TranslationElement>,
958}
959/// Generated client implementations.
960pub mod common_service_client {
961    #![allow(
962        unused_variables,
963        dead_code,
964        missing_docs,
965        clippy::wildcard_imports,
966        clippy::let_unit_value,
967    )]
968    use tonic::codegen::*;
969    use tonic::codegen::http::Uri;
970    #[derive(Debug, Clone)]
971    pub struct CommonServiceClient<T> {
972        inner: tonic::client::Grpc<T>,
973    }
974    impl CommonServiceClient<tonic::transport::Channel> {
975        /// Attempt to create a new client by connecting to a given endpoint.
976        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
977        where
978            D: TryInto<tonic::transport::Endpoint>,
979            D::Error: Into<StdError>,
980        {
981            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
982            Ok(Self::new(conn))
983        }
984    }
985    impl<T> CommonServiceClient<T>
986    where
987        T: tonic::client::GrpcService<tonic::body::Body>,
988        T::Error: Into<StdError>,
989        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
990        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
991    {
992        pub fn new(inner: T) -> Self {
993            let inner = tonic::client::Grpc::new(inner);
994            Self { inner }
995        }
996        pub fn with_origin(inner: T, origin: Uri) -> Self {
997            let inner = tonic::client::Grpc::with_origin(inner, origin);
998            Self { inner }
999        }
1000        pub fn with_interceptor<F>(
1001            inner: T,
1002            interceptor: F,
1003        ) -> CommonServiceClient<InterceptedService<T, F>>
1004        where
1005            F: tonic::service::Interceptor,
1006            T::ResponseBody: Default,
1007            T: tonic::codegen::Service<
1008                http::Request<tonic::body::Body>,
1009                Response = http::Response<
1010                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1011                >,
1012            >,
1013            <T as tonic::codegen::Service<
1014                http::Request<tonic::body::Body>,
1015            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1016        {
1017            CommonServiceClient::new(InterceptedService::new(inner, interceptor))
1018        }
1019        /// Compress requests with the given encoding.
1020        ///
1021        /// This requires the server to support it otherwise it might respond with an
1022        /// error.
1023        #[must_use]
1024        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1025            self.inner = self.inner.send_compressed(encoding);
1026            self
1027        }
1028        /// Enable decompressing responses.
1029        #[must_use]
1030        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1031            self.inner = self.inner.accept_compressed(encoding);
1032            self
1033        }
1034        /// Limits the maximum size of a decoded message.
1035        ///
1036        /// Default: `4MB`
1037        #[must_use]
1038        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1039            self.inner = self.inner.max_decoding_message_size(limit);
1040            self
1041        }
1042        /// Limits the maximum size of an encoded message.
1043        ///
1044        /// Default: `usize::MAX`
1045        #[must_use]
1046        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1047            self.inner = self.inner.max_encoding_message_size(limit);
1048            self
1049        }
1050        pub async fn ping(
1051            &mut self,
1052            request: impl tonic::IntoRequest<
1053                super::super::super::shared::v1::PingRequest,
1054            >,
1055        ) -> std::result::Result<
1056            tonic::Response<super::super::super::shared::v1::PingResponse>,
1057            tonic::Status,
1058        > {
1059            self.inner
1060                .ready()
1061                .await
1062                .map_err(|e| {
1063                    tonic::Status::unknown(
1064                        format!("Service was not ready: {}", e.into()),
1065                    )
1066                })?;
1067            let codec = tonic::codec::ProstCodec::default();
1068            let path = http::uri::PathAndQuery::from_static(
1069                "/common.v1.CommonService/Ping",
1070            );
1071            let mut req = request.into_request();
1072            req.extensions_mut()
1073                .insert(GrpcMethod::new("common.v1.CommonService", "Ping"));
1074            self.inner.unary(req, path, codec).await
1075        }
1076        pub async fn config_get(
1077            &mut self,
1078            request: impl tonic::IntoRequest<super::ConfigGetRequest>,
1079        ) -> std::result::Result<
1080            tonic::Response<super::ConfigGetResponse>,
1081            tonic::Status,
1082        > {
1083            self.inner
1084                .ready()
1085                .await
1086                .map_err(|e| {
1087                    tonic::Status::unknown(
1088                        format!("Service was not ready: {}", e.into()),
1089                    )
1090                })?;
1091            let codec = tonic::codec::ProstCodec::default();
1092            let path = http::uri::PathAndQuery::from_static(
1093                "/common.v1.CommonService/ConfigGet",
1094            );
1095            let mut req = request.into_request();
1096            req.extensions_mut()
1097                .insert(GrpcMethod::new("common.v1.CommonService", "ConfigGet"));
1098            self.inner.unary(req, path, codec).await
1099        }
1100        pub async fn config_update(
1101            &mut self,
1102            request: impl tonic::IntoRequest<super::ConfigUpdateRequest>,
1103        ) -> std::result::Result<
1104            tonic::Response<super::ConfigUpdateResponse>,
1105            tonic::Status,
1106        > {
1107            self.inner
1108                .ready()
1109                .await
1110                .map_err(|e| {
1111                    tonic::Status::unknown(
1112                        format!("Service was not ready: {}", e.into()),
1113                    )
1114                })?;
1115            let codec = tonic::codec::ProstCodec::default();
1116            let path = http::uri::PathAndQuery::from_static(
1117                "/common.v1.CommonService/ConfigUpdate",
1118            );
1119            let mut req = request.into_request();
1120            req.extensions_mut()
1121                .insert(GrpcMethod::new("common.v1.CommonService", "ConfigUpdate"));
1122            self.inner.unary(req, path, codec).await
1123        }
1124        pub async fn config_listener(
1125            &mut self,
1126            request: impl tonic::IntoRequest<super::ConfigListenerRequest>,
1127        ) -> std::result::Result<
1128            tonic::Response<tonic::codec::Streaming<super::ConfigListenerResponse>>,
1129            tonic::Status,
1130        > {
1131            self.inner
1132                .ready()
1133                .await
1134                .map_err(|e| {
1135                    tonic::Status::unknown(
1136                        format!("Service was not ready: {}", e.into()),
1137                    )
1138                })?;
1139            let codec = tonic::codec::ProstCodec::default();
1140            let path = http::uri::PathAndQuery::from_static(
1141                "/common.v1.CommonService/ConfigListener",
1142            );
1143            let mut req = request.into_request();
1144            req.extensions_mut()
1145                .insert(GrpcMethod::new("common.v1.CommonService", "ConfigListener"));
1146            self.inner.server_streaming(req, path, codec).await
1147        }
1148        pub async fn translations_get(
1149            &mut self,
1150            request: impl tonic::IntoRequest<super::TranslationsGetRequest>,
1151        ) -> std::result::Result<
1152            tonic::Response<super::TranslationsGetResponse>,
1153            tonic::Status,
1154        > {
1155            self.inner
1156                .ready()
1157                .await
1158                .map_err(|e| {
1159                    tonic::Status::unknown(
1160                        format!("Service was not ready: {}", e.into()),
1161                    )
1162                })?;
1163            let codec = tonic::codec::ProstCodec::default();
1164            let path = http::uri::PathAndQuery::from_static(
1165                "/common.v1.CommonService/TranslationsGet",
1166            );
1167            let mut req = request.into_request();
1168            req.extensions_mut()
1169                .insert(GrpcMethod::new("common.v1.CommonService", "TranslationsGet"));
1170            self.inner.unary(req, path, codec).await
1171        }
1172        pub async fn translations_for_lang_get(
1173            &mut self,
1174            request: impl tonic::IntoRequest<super::TranslationsForLangGetRequest>,
1175        ) -> std::result::Result<
1176            tonic::Response<super::TranslationsForLangGetResponse>,
1177            tonic::Status,
1178        > {
1179            self.inner
1180                .ready()
1181                .await
1182                .map_err(|e| {
1183                    tonic::Status::unknown(
1184                        format!("Service was not ready: {}", e.into()),
1185                    )
1186                })?;
1187            let codec = tonic::codec::ProstCodec::default();
1188            let path = http::uri::PathAndQuery::from_static(
1189                "/common.v1.CommonService/TranslationsForLangGet",
1190            );
1191            let mut req = request.into_request();
1192            req.extensions_mut()
1193                .insert(
1194                    GrpcMethod::new("common.v1.CommonService", "TranslationsForLangGet"),
1195                );
1196            self.inner.unary(req, path, codec).await
1197        }
1198    }
1199}
1200/// Generated server implementations.
1201pub mod common_service_server {
1202    #![allow(
1203        unused_variables,
1204        dead_code,
1205        missing_docs,
1206        clippy::wildcard_imports,
1207        clippy::let_unit_value,
1208    )]
1209    use tonic::codegen::*;
1210    /// Generated trait containing gRPC methods that should be implemented for use with CommonServiceServer.
1211    #[async_trait]
1212    pub trait CommonService: std::marker::Send + std::marker::Sync + 'static {
1213        async fn ping(
1214            &self,
1215            request: tonic::Request<super::super::super::shared::v1::PingRequest>,
1216        ) -> std::result::Result<
1217            tonic::Response<super::super::super::shared::v1::PingResponse>,
1218            tonic::Status,
1219        >;
1220        async fn config_get(
1221            &self,
1222            request: tonic::Request<super::ConfigGetRequest>,
1223        ) -> std::result::Result<
1224            tonic::Response<super::ConfigGetResponse>,
1225            tonic::Status,
1226        >;
1227        async fn config_update(
1228            &self,
1229            request: tonic::Request<super::ConfigUpdateRequest>,
1230        ) -> std::result::Result<
1231            tonic::Response<super::ConfigUpdateResponse>,
1232            tonic::Status,
1233        >;
1234        /// Server streaming response type for the ConfigListener method.
1235        type ConfigListenerStream: tonic::codegen::tokio_stream::Stream<
1236                Item = std::result::Result<super::ConfigListenerResponse, tonic::Status>,
1237            >
1238            + std::marker::Send
1239            + 'static;
1240        async fn config_listener(
1241            &self,
1242            request: tonic::Request<super::ConfigListenerRequest>,
1243        ) -> std::result::Result<
1244            tonic::Response<Self::ConfigListenerStream>,
1245            tonic::Status,
1246        >;
1247        async fn translations_get(
1248            &self,
1249            request: tonic::Request<super::TranslationsGetRequest>,
1250        ) -> std::result::Result<
1251            tonic::Response<super::TranslationsGetResponse>,
1252            tonic::Status,
1253        >;
1254        async fn translations_for_lang_get(
1255            &self,
1256            request: tonic::Request<super::TranslationsForLangGetRequest>,
1257        ) -> std::result::Result<
1258            tonic::Response<super::TranslationsForLangGetResponse>,
1259            tonic::Status,
1260        >;
1261    }
1262    #[derive(Debug)]
1263    pub struct CommonServiceServer<T> {
1264        inner: Arc<T>,
1265        accept_compression_encodings: EnabledCompressionEncodings,
1266        send_compression_encodings: EnabledCompressionEncodings,
1267        max_decoding_message_size: Option<usize>,
1268        max_encoding_message_size: Option<usize>,
1269    }
1270    impl<T> CommonServiceServer<T> {
1271        pub fn new(inner: T) -> Self {
1272            Self::from_arc(Arc::new(inner))
1273        }
1274        pub fn from_arc(inner: Arc<T>) -> Self {
1275            Self {
1276                inner,
1277                accept_compression_encodings: Default::default(),
1278                send_compression_encodings: Default::default(),
1279                max_decoding_message_size: None,
1280                max_encoding_message_size: None,
1281            }
1282        }
1283        pub fn with_interceptor<F>(
1284            inner: T,
1285            interceptor: F,
1286        ) -> InterceptedService<Self, F>
1287        where
1288            F: tonic::service::Interceptor,
1289        {
1290            InterceptedService::new(Self::new(inner), interceptor)
1291        }
1292        /// Enable decompressing requests with the given encoding.
1293        #[must_use]
1294        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1295            self.accept_compression_encodings.enable(encoding);
1296            self
1297        }
1298        /// Compress responses with the given encoding, if the client supports it.
1299        #[must_use]
1300        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1301            self.send_compression_encodings.enable(encoding);
1302            self
1303        }
1304        /// Limits the maximum size of a decoded message.
1305        ///
1306        /// Default: `4MB`
1307        #[must_use]
1308        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1309            self.max_decoding_message_size = Some(limit);
1310            self
1311        }
1312        /// Limits the maximum size of an encoded message.
1313        ///
1314        /// Default: `usize::MAX`
1315        #[must_use]
1316        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1317            self.max_encoding_message_size = Some(limit);
1318            self
1319        }
1320    }
1321    impl<T, B> tonic::codegen::Service<http::Request<B>> for CommonServiceServer<T>
1322    where
1323        T: CommonService,
1324        B: Body + std::marker::Send + 'static,
1325        B::Error: Into<StdError> + std::marker::Send + 'static,
1326    {
1327        type Response = http::Response<tonic::body::Body>;
1328        type Error = std::convert::Infallible;
1329        type Future = BoxFuture<Self::Response, Self::Error>;
1330        fn poll_ready(
1331            &mut self,
1332            _cx: &mut Context<'_>,
1333        ) -> Poll<std::result::Result<(), Self::Error>> {
1334            Poll::Ready(Ok(()))
1335        }
1336        fn call(&mut self, req: http::Request<B>) -> Self::Future {
1337            match req.uri().path() {
1338                "/common.v1.CommonService/Ping" => {
1339                    #[allow(non_camel_case_types)]
1340                    struct PingSvc<T: CommonService>(pub Arc<T>);
1341                    impl<
1342                        T: CommonService,
1343                    > tonic::server::UnaryService<
1344                        super::super::super::shared::v1::PingRequest,
1345                    > for PingSvc<T> {
1346                        type Response = super::super::super::shared::v1::PingResponse;
1347                        type Future = BoxFuture<
1348                            tonic::Response<Self::Response>,
1349                            tonic::Status,
1350                        >;
1351                        fn call(
1352                            &mut self,
1353                            request: tonic::Request<
1354                                super::super::super::shared::v1::PingRequest,
1355                            >,
1356                        ) -> Self::Future {
1357                            let inner = Arc::clone(&self.0);
1358                            let fut = async move {
1359                                <T as CommonService>::ping(&inner, request).await
1360                            };
1361                            Box::pin(fut)
1362                        }
1363                    }
1364                    let accept_compression_encodings = self.accept_compression_encodings;
1365                    let send_compression_encodings = self.send_compression_encodings;
1366                    let max_decoding_message_size = self.max_decoding_message_size;
1367                    let max_encoding_message_size = self.max_encoding_message_size;
1368                    let inner = self.inner.clone();
1369                    let fut = async move {
1370                        let method = PingSvc(inner);
1371                        let codec = tonic::codec::ProstCodec::default();
1372                        let mut grpc = tonic::server::Grpc::new(codec)
1373                            .apply_compression_config(
1374                                accept_compression_encodings,
1375                                send_compression_encodings,
1376                            )
1377                            .apply_max_message_size_config(
1378                                max_decoding_message_size,
1379                                max_encoding_message_size,
1380                            );
1381                        let res = grpc.unary(method, req).await;
1382                        Ok(res)
1383                    };
1384                    Box::pin(fut)
1385                }
1386                "/common.v1.CommonService/ConfigGet" => {
1387                    #[allow(non_camel_case_types)]
1388                    struct ConfigGetSvc<T: CommonService>(pub Arc<T>);
1389                    impl<
1390                        T: CommonService,
1391                    > tonic::server::UnaryService<super::ConfigGetRequest>
1392                    for ConfigGetSvc<T> {
1393                        type Response = super::ConfigGetResponse;
1394                        type Future = BoxFuture<
1395                            tonic::Response<Self::Response>,
1396                            tonic::Status,
1397                        >;
1398                        fn call(
1399                            &mut self,
1400                            request: tonic::Request<super::ConfigGetRequest>,
1401                        ) -> Self::Future {
1402                            let inner = Arc::clone(&self.0);
1403                            let fut = async move {
1404                                <T as CommonService>::config_get(&inner, request).await
1405                            };
1406                            Box::pin(fut)
1407                        }
1408                    }
1409                    let accept_compression_encodings = self.accept_compression_encodings;
1410                    let send_compression_encodings = self.send_compression_encodings;
1411                    let max_decoding_message_size = self.max_decoding_message_size;
1412                    let max_encoding_message_size = self.max_encoding_message_size;
1413                    let inner = self.inner.clone();
1414                    let fut = async move {
1415                        let method = ConfigGetSvc(inner);
1416                        let codec = tonic::codec::ProstCodec::default();
1417                        let mut grpc = tonic::server::Grpc::new(codec)
1418                            .apply_compression_config(
1419                                accept_compression_encodings,
1420                                send_compression_encodings,
1421                            )
1422                            .apply_max_message_size_config(
1423                                max_decoding_message_size,
1424                                max_encoding_message_size,
1425                            );
1426                        let res = grpc.unary(method, req).await;
1427                        Ok(res)
1428                    };
1429                    Box::pin(fut)
1430                }
1431                "/common.v1.CommonService/ConfigUpdate" => {
1432                    #[allow(non_camel_case_types)]
1433                    struct ConfigUpdateSvc<T: CommonService>(pub Arc<T>);
1434                    impl<
1435                        T: CommonService,
1436                    > tonic::server::UnaryService<super::ConfigUpdateRequest>
1437                    for ConfigUpdateSvc<T> {
1438                        type Response = super::ConfigUpdateResponse;
1439                        type Future = BoxFuture<
1440                            tonic::Response<Self::Response>,
1441                            tonic::Status,
1442                        >;
1443                        fn call(
1444                            &mut self,
1445                            request: tonic::Request<super::ConfigUpdateRequest>,
1446                        ) -> Self::Future {
1447                            let inner = Arc::clone(&self.0);
1448                            let fut = async move {
1449                                <T as CommonService>::config_update(&inner, request).await
1450                            };
1451                            Box::pin(fut)
1452                        }
1453                    }
1454                    let accept_compression_encodings = self.accept_compression_encodings;
1455                    let send_compression_encodings = self.send_compression_encodings;
1456                    let max_decoding_message_size = self.max_decoding_message_size;
1457                    let max_encoding_message_size = self.max_encoding_message_size;
1458                    let inner = self.inner.clone();
1459                    let fut = async move {
1460                        let method = ConfigUpdateSvc(inner);
1461                        let codec = tonic::codec::ProstCodec::default();
1462                        let mut grpc = tonic::server::Grpc::new(codec)
1463                            .apply_compression_config(
1464                                accept_compression_encodings,
1465                                send_compression_encodings,
1466                            )
1467                            .apply_max_message_size_config(
1468                                max_decoding_message_size,
1469                                max_encoding_message_size,
1470                            );
1471                        let res = grpc.unary(method, req).await;
1472                        Ok(res)
1473                    };
1474                    Box::pin(fut)
1475                }
1476                "/common.v1.CommonService/ConfigListener" => {
1477                    #[allow(non_camel_case_types)]
1478                    struct ConfigListenerSvc<T: CommonService>(pub Arc<T>);
1479                    impl<
1480                        T: CommonService,
1481                    > tonic::server::ServerStreamingService<super::ConfigListenerRequest>
1482                    for ConfigListenerSvc<T> {
1483                        type Response = super::ConfigListenerResponse;
1484                        type ResponseStream = T::ConfigListenerStream;
1485                        type Future = BoxFuture<
1486                            tonic::Response<Self::ResponseStream>,
1487                            tonic::Status,
1488                        >;
1489                        fn call(
1490                            &mut self,
1491                            request: tonic::Request<super::ConfigListenerRequest>,
1492                        ) -> Self::Future {
1493                            let inner = Arc::clone(&self.0);
1494                            let fut = async move {
1495                                <T as CommonService>::config_listener(&inner, request).await
1496                            };
1497                            Box::pin(fut)
1498                        }
1499                    }
1500                    let accept_compression_encodings = self.accept_compression_encodings;
1501                    let send_compression_encodings = self.send_compression_encodings;
1502                    let max_decoding_message_size = self.max_decoding_message_size;
1503                    let max_encoding_message_size = self.max_encoding_message_size;
1504                    let inner = self.inner.clone();
1505                    let fut = async move {
1506                        let method = ConfigListenerSvc(inner);
1507                        let codec = tonic::codec::ProstCodec::default();
1508                        let mut grpc = tonic::server::Grpc::new(codec)
1509                            .apply_compression_config(
1510                                accept_compression_encodings,
1511                                send_compression_encodings,
1512                            )
1513                            .apply_max_message_size_config(
1514                                max_decoding_message_size,
1515                                max_encoding_message_size,
1516                            );
1517                        let res = grpc.server_streaming(method, req).await;
1518                        Ok(res)
1519                    };
1520                    Box::pin(fut)
1521                }
1522                "/common.v1.CommonService/TranslationsGet" => {
1523                    #[allow(non_camel_case_types)]
1524                    struct TranslationsGetSvc<T: CommonService>(pub Arc<T>);
1525                    impl<
1526                        T: CommonService,
1527                    > tonic::server::UnaryService<super::TranslationsGetRequest>
1528                    for TranslationsGetSvc<T> {
1529                        type Response = super::TranslationsGetResponse;
1530                        type Future = BoxFuture<
1531                            tonic::Response<Self::Response>,
1532                            tonic::Status,
1533                        >;
1534                        fn call(
1535                            &mut self,
1536                            request: tonic::Request<super::TranslationsGetRequest>,
1537                        ) -> Self::Future {
1538                            let inner = Arc::clone(&self.0);
1539                            let fut = async move {
1540                                <T as CommonService>::translations_get(&inner, request)
1541                                    .await
1542                            };
1543                            Box::pin(fut)
1544                        }
1545                    }
1546                    let accept_compression_encodings = self.accept_compression_encodings;
1547                    let send_compression_encodings = self.send_compression_encodings;
1548                    let max_decoding_message_size = self.max_decoding_message_size;
1549                    let max_encoding_message_size = self.max_encoding_message_size;
1550                    let inner = self.inner.clone();
1551                    let fut = async move {
1552                        let method = TranslationsGetSvc(inner);
1553                        let codec = tonic::codec::ProstCodec::default();
1554                        let mut grpc = tonic::server::Grpc::new(codec)
1555                            .apply_compression_config(
1556                                accept_compression_encodings,
1557                                send_compression_encodings,
1558                            )
1559                            .apply_max_message_size_config(
1560                                max_decoding_message_size,
1561                                max_encoding_message_size,
1562                            );
1563                        let res = grpc.unary(method, req).await;
1564                        Ok(res)
1565                    };
1566                    Box::pin(fut)
1567                }
1568                "/common.v1.CommonService/TranslationsForLangGet" => {
1569                    #[allow(non_camel_case_types)]
1570                    struct TranslationsForLangGetSvc<T: CommonService>(pub Arc<T>);
1571                    impl<
1572                        T: CommonService,
1573                    > tonic::server::UnaryService<super::TranslationsForLangGetRequest>
1574                    for TranslationsForLangGetSvc<T> {
1575                        type Response = super::TranslationsForLangGetResponse;
1576                        type Future = BoxFuture<
1577                            tonic::Response<Self::Response>,
1578                            tonic::Status,
1579                        >;
1580                        fn call(
1581                            &mut self,
1582                            request: tonic::Request<super::TranslationsForLangGetRequest>,
1583                        ) -> Self::Future {
1584                            let inner = Arc::clone(&self.0);
1585                            let fut = async move {
1586                                <T as CommonService>::translations_for_lang_get(
1587                                        &inner,
1588                                        request,
1589                                    )
1590                                    .await
1591                            };
1592                            Box::pin(fut)
1593                        }
1594                    }
1595                    let accept_compression_encodings = self.accept_compression_encodings;
1596                    let send_compression_encodings = self.send_compression_encodings;
1597                    let max_decoding_message_size = self.max_decoding_message_size;
1598                    let max_encoding_message_size = self.max_encoding_message_size;
1599                    let inner = self.inner.clone();
1600                    let fut = async move {
1601                        let method = TranslationsForLangGetSvc(inner);
1602                        let codec = tonic::codec::ProstCodec::default();
1603                        let mut grpc = tonic::server::Grpc::new(codec)
1604                            .apply_compression_config(
1605                                accept_compression_encodings,
1606                                send_compression_encodings,
1607                            )
1608                            .apply_max_message_size_config(
1609                                max_decoding_message_size,
1610                                max_encoding_message_size,
1611                            );
1612                        let res = grpc.unary(method, req).await;
1613                        Ok(res)
1614                    };
1615                    Box::pin(fut)
1616                }
1617                _ => {
1618                    Box::pin(async move {
1619                        let mut response = http::Response::new(
1620                            tonic::body::Body::default(),
1621                        );
1622                        let headers = response.headers_mut();
1623                        headers
1624                            .insert(
1625                                tonic::Status::GRPC_STATUS,
1626                                (tonic::Code::Unimplemented as i32).into(),
1627                            );
1628                        headers
1629                            .insert(
1630                                http::header::CONTENT_TYPE,
1631                                tonic::metadata::GRPC_CONTENT_TYPE,
1632                            );
1633                        Ok(response)
1634                    })
1635                }
1636            }
1637        }
1638    }
1639    impl<T> Clone for CommonServiceServer<T> {
1640        fn clone(&self) -> Self {
1641            let inner = self.inner.clone();
1642            Self {
1643                inner,
1644                accept_compression_encodings: self.accept_compression_encodings,
1645                send_compression_encodings: self.send_compression_encodings,
1646                max_decoding_message_size: self.max_decoding_message_size,
1647                max_encoding_message_size: self.max_encoding_message_size,
1648            }
1649        }
1650    }
1651    /// Generated gRPC service name
1652    pub const SERVICE_NAME: &str = "common.v1.CommonService";
1653    impl<T> tonic::server::NamedService for CommonServiceServer<T> {
1654        const NAME: &'static str = SERVICE_NAME;
1655    }
1656}