// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_building_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers.h>
#else
 #import "GPBProtocolBuffers.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

CF_EXTERN_C_BEGIN

@class KEYAPISTELEMETRYCONTROLV1Building;
@class KEYAPISTELEMETRYCONTROLV1BuildingFilter;
@class KEYAPISTELEMETRYCONTROLV1BuildingGroup;
@class KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter;
@class KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging;
@class KEYAPISTELEMETRYCONTROLV1BuildingPaging;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent;
@class KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType

/** Справочник типов сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По Идентификатору группы пользователя */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_GroupId = 1,

  /** По Объекту строительства */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_BuildingId = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType

/** Справочник типов сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По уникальному ключу */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_Id = 1,

  /** По наименованию */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_Title = 2,

  /** По дате создания */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_CreatedAt = 3,

  /** По дате изменения */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_ChangedAt = 4,

  /** По ФИАС */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_FiasId = 5,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1Building_MrfType

/** Справочник МРФ (Макрорегионы) */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Building_MrfType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_MrfTypeUnknown = 0,

  /** Центр */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_Tsentr = 1,

  /** Юг */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_Yug = 2,

  /** Урал */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_Ural = 3,

  /** Сибирь */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_Sibir = 4,

  /** Северо-Запад */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_SeveroZapad = 5,

  /** Дальний Восток */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_DalniyVostok = 6,

  /** Волга */
  KEYAPISTELEMETRYCONTROLV1Building_MrfType_Volga = 7,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1Building_MrfType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1Building_MrfType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1Building_RfType

/** Справочник РФ (Регионы) */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Building_RfType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1Building_RfType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_RfTypeUnknown = 0,

  /** Республика Башкортостан */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ufa = 1,

  /** Кировская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kirov = 2,

  /** Ивановский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ivanovo = 3,

  /** Калужский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kaluga = 4,

  /** Костромской филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kostroma = 5,

  /** Курский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kursk = 6,

  /** Липецкий филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Lipetsk = 7,

  /** Московская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Mosoblast = 8,

  /** Орловский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Orel = 9,

  /** Рязанский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ryazan = 10,

  /** Тамбовский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tambov = 11,

  /** Тверской филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tver = 12,

  /** Ярославский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Yaroslavl = 13,

  /** Смоленский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Smolensk = 14,

  /** Тульский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tula = 15,

  /** Москва */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Moscow = 16,

  /** ЕАО */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Eao = 17,

  /** Филиал в Тюменской и Курганской областях */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kurgan = 18,

  /** Филиал в Тюменской и Курганской областях */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tumen = 19,

  /** Ханты-Мансийский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Hanty = 20,

  /** Амурская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Amur = 21,

  /** Камчатский край */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kamchatka = 22,

  /** Магаданская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Magadan = 23,

  /** Приморский край */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Primorye = 24,

  /** Сахалинская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Sakhalin = 25,

  /** Хабаровский край */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Khabarovsk = 26,

  /** Забайкальский край */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Chita = 27,

  /** ЧАО */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Chukotka = 28,

  /** Архангельск */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Archangelsk = 29,

  /** Вологда */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Vologda = 30,

  /** Калининград */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kaliningrad = 31,

  /** Карелия */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Karelia = 32,

  /** Коми */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Komi = 33,

  /** Лен область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Lenoblast = 34,

  /** Мурманск */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Murmansk = 35,

  /** Новгород */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Novgorod = 36,

  /** Псков */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Pskov = 37,

  /** СПб */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Spb = 38,

  /** Алтайский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Altai = 39,

  /** Бурятский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Buryatiya = 40,

  /** Иркутский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Irkutsk = 41,

  /** Кемеровский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kemerovo = 42,

  /** Красноярский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Krasnoyarsk = 43,

  /** Омский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Omsk = 44,

  /** Республика Хакасия */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Hakasiya = 45,

  /** Республика Алтай */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Raltay = 46,

  /** Республика Тыва */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tuva = 47,

  /** Томский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Tomsk = 48,

  /** Оренбургская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Orenburg = 49,

  /** Белгородский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Belgorod = 50,

  /** Саха */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Sakha = 51,

  /** Екатеринбургский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ekt = 52,

  /** Волгоградский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Volgograd = 53,

  /** Ямало-Ненецкий филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Yamal = 54,

  /** Челябинский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Chelyabinsk = 55,

  /** Пермский филиал ПАО "Ростелеком" */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Perm = 56,

  /** Республика Марий Эл */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Maryel = 57,

  /** Пензенская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Penza = 58,

  /** Ингушский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ingushetia = 59,

  /** Кабардино-Балкарский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Nalchik = 60,

  /** Калмыцкий филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Elista = 61,

  /** Ростовский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Rostov = 62,

  /** Дагестанский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Mahachkala = 63,

  /** Республика Мордовия */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Mordoviya = 64,

  /** Республика Татарстан (Татарстан) */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Kazan = 65,

  /** Самарская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Samara = 66,

  /** Саратовская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Saratov = 67,

  /** Удмуртская Республика */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Udmurtiya = 68,

  /** Ульяновская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Ulyanovsk = 69,

  /** Чувашская Республика - Чувашия */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Chuvashiya = 70,

  /** Нижегородская область */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Nnovgorod = 71,

  /** Брянский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Bryansk = 72,

  /** Владимирский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Vladimir = 73,

  /** Воронежский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Voronezh = 74,

  /** Северо-Осетинский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Vladikavkaz = 75,

  /** Ставропольский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Stavropol = 76,

  /** Республика Карачаево-Черкесская */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Cherkessk = 77,

  /** Республика Адыгея */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Maykop = 78,

  /** Астраханский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Astrakhan = 79,

  /** Краснодарский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Krasnodar = 80,

  /** Тестовый */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Test = 81,

  /** Новосибирский филиал */
  KEYAPISTELEMETRYCONTROLV1Building_RfType_Novosibirsk = 82,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1Building_RfType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1Building_RfType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1Building_StatusType

/** Статусы объектов строительства */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Building_StatusType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_StatusTypeUnknown = 0,

  /** СМР */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_Building = 1,

  /** Реализован */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_Acceptance = 2,

  /** Обслуживание */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_Active = 3,

  /** Снят с обслуживания */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_Archive = 4,

  /** Отказ от заключения договора */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_Cancelled = 5,

  /** Тестовый */
  KEYAPISTELEMETRYCONTROLV1Building_StatusType_TestStatusType = 6,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1Building_StatusType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISTELEMETRYCONTROLV1Building_StatusType_IsValidValue(int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlBuildingV1Root

/**
 * Exposes the extension registry for this file.
 *
 * The base class provides:
 * @code
 *   + (GPBExtensionRegistry *)extensionRegistry;
 * @endcode
 * which is a @c GPBExtensionRegistry that includes all the extensions defined by
 * this file and all files that it depends on.
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlBuildingV1Root : GPBRootObject
@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingRequest : GPBMessage

/** Объект строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachRequest_FieldNumber_BuildingGroup = 1,
};

/**
 * Запрос сохранения связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachRequest : GPBMessage

/** Связь объекта строительства и группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroup *buildingGroup;
/** Test to see if @c buildingGroup has been set. */
@property(nonatomic, readwrite) BOOL hasBuildingGroup;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос сохранения объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_Type_OneOfCase typeOneOfCase;

/** Объект строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostBuildingResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1PostBuildingResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachResponse

/**
 * Ответ на запрос сохранения связи объекта строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PutBuildingGroupAttachResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingRequest : GPBMessage

/** Идентификатор объекта строительства */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_Type_OneOfCase typeOneOfCase;

/** Объект строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest : GPBMessage

/** Фильтр индикаторов */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация по индикаторам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest_ClearPaginationOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingListRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest : GPBMessage

/** Фильтр связей объектов строительства и группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest_ClearPaginationOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано), то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1BuildingGroupPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingGroupPaging *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1BuildingPaging

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingPaging_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYCONTROLV1BuildingPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация объектов строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1BuildingPaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано), то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1BuildingPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1BuildingPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1BuildingPaging_OrderByType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1BuildingPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingPaging *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1BuildingPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1BuildingPaging_DirectionType_RawValue(KEYAPISTELEMETRYCONTROLV1BuildingPaging *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения списка объектов строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_Type_OneOfCase typeOneOfCase;

/** Индикатор */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingListResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения списка связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_Type_OneOfCase typeOneOfCase;

/** Связь объекта строительства и группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroup *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupListResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_FieldNumber_RequestId = 1,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_FieldNumber_UpsertBuildingEvent = 2,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_FieldNumber_RemoveBuildingEvent = 3,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_Event_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_Event_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_Event_OneOfCase_UpsertBuildingEvent = 2,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_Event_OneOfCase_RemoveBuildingEvent = 3,
};

/**
 * Событие создания/изменения объекта строительства на сервера
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse : GPBMessage

/** Идентификатор запроса */
@property(nonatomic, readwrite, copy, null_resettable) NSString *requestId;

/** Событие */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_Event_OneOfCase eventOneOfCase;

/** Событие создания/обновления объекта строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent *upsertBuildingEvent;

/** Событие удаления объекта строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent *removeBuildingEvent;

@end

/**
 * Clears whatever value was set for the oneof 'event'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_ClearEventOneOfCase(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent_FieldNumber_Id_p = 1,
};

/**
 * Событие удаления объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_RemoveBuildingEvent : GPBMessage

/** Идентификатор объекта строительства */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent_FieldNumber_Data_p = 1,
};

/**
 * Событие создания/обновления объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexResponse_UpsertBuildingEvent : GPBMessage

/** Объект строительства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Building *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_FieldNumber_RequestId = 1,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_FieldNumber_BuildingAsyncStatus = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_Task_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_Task_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_Task_OneOfCase_BuildingAsyncStatus = 2,
};

/**
 * Запрос создания задачи с клиента на сервере
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest : GPBMessage

/** Идентификатор запроса */
@property(nonatomic, readwrite, copy, null_resettable) NSString *requestId;

/** Задача с клиента */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_Task_OneOfCase taskOneOfCase;

/** Результат обработки объекта строительства на клиенте */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus *buildingAsyncStatus;

@end

/**
 * Clears whatever value was set for the oneof 'task'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_ClearTaskOneOfCase(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_FieldNumber_BuildingId = 1,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_FieldNumber_Data_p = 2,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_FieldNumber_Error = 3,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Type_OneOfCase_Data_p = 2,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Type_OneOfCase_Error = 3,
};

/**
 * Результат обработки объекта строительства на клиенте
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus : GPBMessage

/** Идентификатор объекта строительства */
@property(nonatomic, readwrite) int32_t buildingId;

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Type_OneOfCase typeOneOfCase;

/** Успех */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success

/**
 * Команда принята
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Success : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_FieldNumber_Unknown = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason_OneOfCase_Unknown = 1,
};

/**
 * Ошибки обработки объекта строительства на клиенте
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_Reason_OneOfCase reasonOneOfCase;

/** Неизвестная ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError *unknown;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_ClearReasonOneOfCase(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError_FieldNumber_Message = 1,
};

/**
 * Неизвестная ошибка на стороне клиента
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostBuildingFullDuplexRequest_BuildingAsyncStatus_Error_UnknownError : GPBMessage

/**
 * Произвольный текст ошибки на стороне клиента.
 * Отправляется в случае если в спецификации нет подходящей ошибки.
 * После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1BuildingFilter

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_FiasIdArray = 1,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_Title = 2,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_AfterCreatedAt = 3,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_BeforeCreatedAt = 4,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_MrfTypesArray = 5,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_RfTypesArray = 6,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_StatusTypesArray = 7,
  KEYAPISTELEMETRYCONTROLV1BuildingFilter_FieldNumber_OrponsArray = 8,
};

/**
 * Фильтр для запроса объектов строительства.
 * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
 * При передаче нескольких разных параметров фильтра они работают в выборке через И
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1BuildingFilter : GPBMessage

/** По ФИАС */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<GPBStringValue*> *fiasIdArray;
/** The number of items in @c fiasIdArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger fiasIdArray_Count;

/** По заголовку */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *title;
/** Test to see if @c title has been set. */
@property(nonatomic, readwrite) BOOL hasTitle;

/** По нижней границе дате создания */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *afterCreatedAt;
/** Test to see if @c afterCreatedAt has been set. */
@property(nonatomic, readwrite) BOOL hasAfterCreatedAt;

/** По верхней границе дате создания */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beforeCreatedAt;
/** Test to see if @c beforeCreatedAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeforeCreatedAt;

/** По МРФ (Макрорегион) */
// |mrfTypesArray| contains |KEYAPISTELEMETRYCONTROLV1Building_MrfType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *mrfTypesArray;
/** The number of items in @c mrfTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger mrfTypesArray_Count;

/** По РФ (Регион) */
// |rfTypesArray| contains |KEYAPISTELEMETRYCONTROLV1Building_RfType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *rfTypesArray;
/** The number of items in @c rfTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger rfTypesArray_Count;

/** По статусам объекта строительства */
// |statusTypesArray| contains |KEYAPISTELEMETRYCONTROLV1Building_StatusType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *statusTypesArray;
/** The number of items in @c statusTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger statusTypesArray_Count;

/** По ОРПОНам */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt64Array *orponsArray;
/** The number of items in @c orponsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger orponsArray_Count;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter_FieldNumber_GroupIdsArray = 1,
  KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter_FieldNumber_BuildingIdsArray = 2,
};

/**
 * Фильтр для запроса связей объектов строительства и группы пользователя.
 * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
 * При передаче нескольких разных параметров фильтра они работают в выборке через И
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter : GPBMessage

/** По Идентификатору группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *groupIdsArray;
/** The number of items in @c groupIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger groupIdsArray_Count;

/** По Объекту строительства */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *buildingIdsArray;
/** The number of items in @c buildingIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger buildingIdsArray_Count;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingCountRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества объектов строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingCountRequest : GPBMessage

/** Фильтр по индикаторам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountRequest : GPBMessage

/** Фильтр связей объектов строительства и группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroupFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества объектов строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего индикаторов */
@property(nonatomic, readwrite) int32_t data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingCountResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего связей объектов строительства и группы пользователя */
@property(nonatomic, readwrite) int32_t data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse_ClearTypeOneOfCase(KEYAPISTELEMETRYCONTROLV1GetBuildingGroupCountResponse *message);

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteBuildingRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1DeleteBuildingRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1DeleteBuildingRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос удаления объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteBuildingRequest : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteBuildingResponse

/**
 * Ответ на запрос удаления объекта строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteBuildingResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachRequest_FieldNumber_BuildingGroup = 1,
};

/**
 * Запрос удаления связей объектов строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachRequest : GPBMessage

/** Связь объекта строительства и группы пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1BuildingGroup *buildingGroup;
/** Test to see if @c buildingGroup has been set. */
@property(nonatomic, readwrite) BOOL hasBuildingGroup;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachResponse

/**
 * Ответ на запрос удаления связи объекта строительства и группы пользователя
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PutBuildingGroupDetachResponse : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1Building

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1Building_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_Id_p = 1,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_Title = 2,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_CreatedAt = 3,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_ChangedAt = 4,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_UtcOffset = 5,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_FiasId = 6,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_MrfType = 7,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_RfType = 8,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_StatusType = 9,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_FullAddress = 10,
  KEYAPISTELEMETRYCONTROLV1Building_FieldNumber_Orpon = 11,
};

/**
 * Объект строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1Building : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

/** Наименование объекта строительства */
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/** Дата создания */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата последнего изменения.
 * Заполняется и обновляется сервером.
 * Заполняется при создании и изменении.
 * Является версией объекта
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *changedAt;
/** Test to see if @c changedAt has been set. */
@property(nonatomic, readwrite) BOOL hasChangedAt;

/** Смещение временной зоны объекта строительства от UTC в минутах */
@property(nonatomic, readwrite) int32_t utcOffset;

/** ФИАС */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *fiasId;
/** Test to see if @c fiasId has been set. */
@property(nonatomic, readwrite) BOOL hasFiasId;

/** Принадлежность объекта строительства к МРФ */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1Building_MrfType mrfType;

/** Принадлежность объекта строительства к РФ */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1Building_RfType rfType;

/** Статус объекта строительства */
@property(nonatomic, readwrite) KEYAPISTELEMETRYCONTROLV1Building_StatusType statusType;

/** Адрес объекта строительства */
@property(nonatomic, readwrite, copy, null_resettable) NSString *fullAddress;

/** ОРПОН */
@property(nonatomic, readwrite) int64_t orpon;

@end

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1Building's @c mrfType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1Building_MrfType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1Building's @c mrfType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1Building_MrfType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1Building's @c rfType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1Building_RfType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1Building's @c rfType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1Building_RfType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISTELEMETRYCONTROLV1Building's @c statusType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISTELEMETRYCONTROLV1Building_StatusType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message);
/**
 * Sets the raw value of an @c KEYAPISTELEMETRYCONTROLV1Building's @c statusType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISTELEMETRYCONTROLV1Building_StatusType_RawValue(KEYAPISTELEMETRYCONTROLV1Building *message, int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1BuildingGroup

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1BuildingGroup_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1BuildingGroup_FieldNumber_GroupId = 1,
  KEYAPISTELEMETRYCONTROLV1BuildingGroup_FieldNumber_BuildingId = 2,
};

/**
 * Связка объекта строительства и группы пользователя.
 * Задает область ресурсов (resource scope), доступную пользователю.
 * Используется для контроля доступа к объекту строительства
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1BuildingGroup : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupId;

/**
 * Идентификатор объекта строительства.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t buildingId;

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
