syntax = "proto3";

package telegram;

service TelegramBotService {
  rpc ForwardManagerChatMessageTg (ForwardManagerChatMessageTgRequest) returns (ForwardManagerChatMessageTgResponse);
  rpc GetCrmLanguages (GetCrmLanguagesRequest) returns (GetCrmLanguagesResponse);
  rpc SetCrmLanguages (SetCrmLanguagesRequest) returns (SetCrmLanguagesResponse);
  rpc GetCrmMenuTexts (GetCrmMenuTextsRequest) returns (GetCrmMenuTextsResponse);
  rpc SetCrmMenuTexts (SetCrmMenuTextsRequest) returns (SetCrmMenuTextsResponse);
  rpc GetCrmManagerTexts (GetCrmManagerTextsRequest) returns (GetCrmManagerTextsResponse);
  rpc SetCrmManagerTexts (SetCrmManagerTextsRequest) returns (SetCrmManagerTextsResponse);
  rpc GetCrmExchangeRateTexts (GetCrmExchangeRateTextsRequest) returns (GetCrmExchangeRateTextsResponse);
  rpc SetCrmExchangeRateTexts (SetCrmExchangeRateTextsRequest) returns (SetCrmExchangeRateTextsResponse);
  rpc GetCrmExchangeTexts (GetCrmExchangeTextsRequest) returns (GetCrmExchangeTextsResponse);
  rpc SetCrmExchangeTexts (SetCrmExchangeTextsRequest) returns (SetCrmExchangeTextsResponse);
  rpc GetCrmPromocodeTexts (GetCrmPromocodeTextsRequest) returns (GetCrmPromocodeTextsResponse);
  rpc SetCrmPromocodeTexts (SetCrmPromocodeTextsRequest) returns (SetCrmPromocodeTextsResponse);
  rpc GetCrmReferralTexts (GetCrmReferralTextsRequest) returns (GetCrmReferralTextsResponse);
  rpc SetCrmReferralTexts (SetCrmReferralTextsRequest) returns (SetCrmReferralTextsResponse);
  rpc GetCrmLinks (GetCrmLinksRequest) returns (GetCrmLinksResponse);
  rpc SetCrmLinks (SetCrmLinksRequest) returns (SetCrmLinksResponse);
  rpc GetCrmExchangeCurrencies (GetCrmExchangeCurrenciesRequest) returns (GetCrmExchangeCurrenciesResponse);
  rpc AddCrmExchangeCurrency (AddCrmExchangeCurrencyRequest) returns (AddCrmExchangeCurrencyResponse);
  rpc UpdateCrmExchangeCurrency (UpdateCrmExchangeCurrencyRequest) returns (UpdateCrmExchangeCurrencyResponse);
  rpc SetCrmExchangeCurrencyToCurrencies (SetCrmExchangeCurrencyToCurrenciesRequest) returns (SetCrmExchangeCurrencyToCurrenciesResponse);
  rpc GetCrmExchangeReceiveMethods (GetCrmExchangeReceiveMethodsRequest) returns (GetCrmExchangeReceiveMethodsResponse);
  rpc SetCrmExchangeReceiveMethods (SetCrmExchangeReceiveMethodsRequest) returns (SetCrmExchangeReceiveMethodsResponse);
}

message ForwardManagerChatMessageTgRequest {
  string forward_secret = 1;
  string text = 2;
  bool is_echo = 3;
  string wallet_client_id = 4;
  optional string wallet_manager_id = 5;
  optional string datetime = 6;
  optional string content = 7;
  optional string message_id = 8;
  // JSON для reply_to: отсутствие поля — нет ответа; строка "null" — null; иначе JSON-значение.
  optional string reply_to_json = 9;
}

message ForwardManagerChatMessageTgResponse {
  bool ok = 1;
}

message CrmLanguagesLocaleItem {
  string language = 1;
  string label = 2;
  string hello = 3;
  string menu_title = 4;
}

message GetCrmLanguagesRequest {}

message GetCrmLanguagesResponse {
  string language_menu_title = 1;
  repeated CrmLanguagesLocaleItem items = 2;
}

message SetCrmLanguagesRequest {
  string language_menu_title = 1;
  repeated CrmLanguagesLocaleItem items = 2;
}

message SetCrmLanguagesResponse {
  string language_menu_title = 1;
  repeated CrmLanguagesLocaleItem items = 2;
}

message CrmMenuItem {
  string language = 1;
  string manager = 2;
  string exchange = 3;
  string rates = 4;
  string moneta = 5;
  string promocode = 6;
  string partners = 7;
  string offices = 8;
}

message GetCrmMenuTextsRequest {}

message GetCrmMenuTextsResponse {
  repeated CrmMenuItem items = 1;
}

message SetCrmMenuTextsRequest {
  repeated CrmMenuItem items = 1;
}

message SetCrmMenuTextsResponse {
  repeated CrmMenuItem items = 1;
}

message CrmManagerTextsItem {
  string language = 1;
  string close_dialog_button_text = 2;
  string dialog_opened_text = 3;
  string dialog_closed_text = 4;
  string manager_opened_notification = 5;
  string user_closed_dialog_manager_text = 6;
}

message GetCrmManagerTextsRequest {}

message GetCrmManagerTextsResponse {
  repeated CrmManagerTextsItem items = 1;
}

message SetCrmManagerTextsRequest {
  repeated CrmManagerTextsItem items = 1;
}

message SetCrmManagerTextsResponse {
  repeated CrmManagerTextsItem items = 1;
}

message CrmExchangeRateTextsItem {
  string language = 1;
  string rates_unavailable_text = 2;
  string rates_title_text = 3;
}

message GetCrmExchangeRateTextsRequest {}

message GetCrmExchangeRateTextsResponse {
  repeated CrmExchangeRateTextsItem items = 1;
}

message SetCrmExchangeRateTextsRequest {
  repeated CrmExchangeRateTextsItem items = 1;
}

message SetCrmExchangeRateTextsResponse {
  repeated CrmExchangeRateTextsItem items = 1;
}

message CrmExchangeTextsItem {
  string language = 1;
  string cancel_button_text = 2;
  string close_dialog_button_text = 3;
  string exchange_cancelled_text = 4;
  string exchange_error_text = 5;
  string select_from_currency_text = 6;
  string select_to_currency_text = 7;
  string invalid_amount_text = 8;
  string amount_question_text = 9;
  string select_receive_method_text = 10;
  string exchange_request_created_text = 11;
  string exchange_request_manager_text = 12;
  string rate_not_found_text = 13;
  string invalid_state_text = 14;
}

message GetCrmExchangeTextsRequest {}

message GetCrmExchangeTextsResponse {
  repeated CrmExchangeTextsItem items = 1;
}

message SetCrmExchangeTextsRequest {
  repeated CrmExchangeTextsItem items = 1;
}

message SetCrmExchangeTextsResponse {
  repeated CrmExchangeTextsItem items = 1;
}

message CrmPromocodeTextsItem {
  string language = 1;
  string cancel_button_text = 2;
  string enter_promocode_text = 3;
  string promocode_cancelled_text = 4;
  string promocode_received_text = 5;
  string promocode_submitted_manager_text = 6;
}

message GetCrmPromocodeTextsRequest {}

message GetCrmPromocodeTextsResponse {
  repeated CrmPromocodeTextsItem items = 1;
}

message SetCrmPromocodeTextsRequest {
  repeated CrmPromocodeTextsItem items = 1;
}

message SetCrmPromocodeTextsResponse {
  repeated CrmPromocodeTextsItem items = 1;
}

message CrmReferralTextsItem {
  string language = 1;
  string referral_info_text = 2;
  string referral_link_line_template = 3;
  string referral_unavailable_text = 4;
}

message GetCrmReferralTextsRequest {}

message GetCrmReferralTextsResponse {
  repeated CrmReferralTextsItem items = 1;
}

message SetCrmReferralTextsRequest {
  repeated CrmReferralTextsItem items = 1;
}

message SetCrmReferralTextsResponse {
  repeated CrmReferralTextsItem items = 1;
}

message GetCrmLinksRequest {}

message GetCrmLinksResponse {
  string partners_mini_app_url = 1;
  string offices_mini_app_url = 2;
}

message SetCrmLinksRequest {
  string partners_mini_app_url = 1;
  string offices_mini_app_url = 2;
}

message SetCrmLinksResponse {
  string partners_mini_app_url = 1;
  string offices_mini_app_url = 2;
}

message CrmExchangeCurrencyItem {
  string from_currency = 1;
  repeated string to_currencies = 2;
}

message GetCrmExchangeCurrenciesRequest {}

message GetCrmExchangeCurrenciesResponse {
  repeated CrmExchangeCurrencyItem items = 1;
}

message AddCrmExchangeCurrencyRequest {
  string from_currency = 1;
}

message AddCrmExchangeCurrencyResponse {
  CrmExchangeCurrencyItem item = 1;
}

message UpdateCrmExchangeCurrencyRequest {
  string from_currency = 1;
  string new_from_currency = 2;
}

message UpdateCrmExchangeCurrencyResponse {
  CrmExchangeCurrencyItem item = 1;
}

message SetCrmExchangeCurrencyToCurrenciesRequest {
  string from_currency = 1;
  repeated string to_currencies = 2;
}

message SetCrmExchangeCurrencyToCurrenciesResponse {
  CrmExchangeCurrencyItem item = 1;
}

message CrmExchangeReceiveMethodsItem {
  string language = 1;
  repeated string methods = 2;
}

message GetCrmExchangeReceiveMethodsRequest {}

message GetCrmExchangeReceiveMethodsResponse {
  repeated CrmExchangeReceiveMethodsItem items = 1;
}

message SetCrmExchangeReceiveMethodsRequest {
  repeated CrmExchangeReceiveMethodsItem items = 1;
}

message SetCrmExchangeReceiveMethodsResponse {
  repeated CrmExchangeReceiveMethodsItem items = 1;
}
