// This file was generated by Cobalt's Config parser based on the configuration
// YAML in the cobalt_config repository. Edit the YAML there to make changes.
#ifndef COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
#define COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_

#include <cstdint>

const char kCustomerName[] = "customer";
const uint32_t kCustomerId = 10;
const char kProjectName[] = "project";
const uint32_t kProjectId = 5;

// Linear bucket constants for linear buckets
const int64_t kLinearBucketsIntBucketsFloor = 0;
const uint32_t kLinearBucketsIntBucketsNumBuckets = 140;
const uint32_t kLinearBucketsIntBucketsStepSize = 5;

// Exponential bucket constants for exponential buckets report
const int64_t kExponentialBucketsReportIntBucketsFloor = 0;
const uint32_t kExponentialBucketsReportIntBucketsNumBuckets = 3;
const uint32_t kExponentialBucketsReportIntBucketsInitialStep = 2;
const uint32_t kExponentialBucketsReportIntBucketsStepMultiplier = 2;

// Metric ID Constants
// the_metric_name
const uint32_t kTheMetricNameMetricId = 100;
// the_other_metric_name
const uint32_t kTheOtherMetricNameMetricId = 200;
// event groups
const uint32_t kEventGroupsMetricId = 300;
// linear buckets
const uint32_t kLinearBucketsMetricId = 400;
// exponential buckets
const uint32_t kExponentialBucketsMetricId = 500;
// metric
const uint32_t kMetricMetricId = 600;
// second metric
const uint32_t kSecondMetricMetricId = 601;

// Enum for the_other_metric_name (Metric Dimension 0)
namespace __the_other_metric_name_metric_dimension_0_internal_scope_do_not_use__ {
enum Enum {
  AnEvent = 0,
  AnotherEvent = 1,
  AThirdEvent = 2,
};
}  // __the_other_metric_name_metric_dimension_0_internal_scope_do_not_use__
using TheOtherMetricNameMetricDimension0 = __the_other_metric_name_metric_dimension_0_internal_scope_do_not_use__::Enum;
const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnEvent = TheOtherMetricNameMetricDimension0::AnEvent;
const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AnotherEvent = TheOtherMetricNameMetricDimension0::AnotherEvent;
const TheOtherMetricNameMetricDimension0 TheOtherMetricNameMetricDimension0_AThirdEvent = TheOtherMetricNameMetricDimension0::AThirdEvent;

// Alias for event groups (Metric Dimension The First Group) which has the same event codes
using EventGroupsMetricDimensionTheFirstGroup = TheOtherMetricNameMetricDimension0;
const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnEvent = EventGroupsMetricDimensionTheFirstGroup::AnEvent;
const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AnotherEvent = EventGroupsMetricDimensionTheFirstGroup::AnotherEvent;
const EventGroupsMetricDimensionTheFirstGroup EventGroupsMetricDimensionTheFirstGroup_AThirdEvent = EventGroupsMetricDimensionTheFirstGroup::AThirdEvent;

// Enum for project (Metric Dimension A second group)
namespace __project_metric_dimension_a_second_group_internal_scope_do_not_use__ {
enum Enum {
  This = 1,
  Is = 2,
  Another = 3,
  Test = 4,
};
}  // __project_metric_dimension_a_second_group_internal_scope_do_not_use__
using ProjectMetricDimensionASecondGroup = __project_metric_dimension_a_second_group_internal_scope_do_not_use__::Enum;
// Alias for event groups (Metric Dimension A second group) which has the same event codes
using EventGroupsMetricDimensionASecondGroup = ProjectMetricDimensionASecondGroup;
const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_This = EventGroupsMetricDimensionASecondGroup::This;
const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Is = EventGroupsMetricDimensionASecondGroup::Is;
const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Another = EventGroupsMetricDimensionASecondGroup::Another;
const EventGroupsMetricDimensionASecondGroup EventGroupsMetricDimensionASecondGroup_Test = EventGroupsMetricDimensionASecondGroup::Test;

// Enum for project (Metric Dimension 2)
namespace __project_metric_dimension_2_internal_scope_do_not_use__ {
enum Enum {
  ThisMetric = 0,
  HasNo = 2,
  Name = 4,
  Alias = HasNo,
};
}  // __project_metric_dimension_2_internal_scope_do_not_use__
using ProjectMetricDimension2 = __project_metric_dimension_2_internal_scope_do_not_use__::Enum;
// Alias for event groups (Metric Dimension 2) which has the same event codes
using EventGroupsMetricDimension2 = ProjectMetricDimension2;
const EventGroupsMetricDimension2 EventGroupsMetricDimension2_ThisMetric = EventGroupsMetricDimension2::ThisMetric;
const EventGroupsMetricDimension2 EventGroupsMetricDimension2_HasNo = EventGroupsMetricDimension2::HasNo;
const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Name = EventGroupsMetricDimension2::Name;
const EventGroupsMetricDimension2 EventGroupsMetricDimension2_Alias = EventGroupsMetricDimension2::Alias;

// Enum for project (Metric Dimension First)
namespace __project_metric_dimension_first_internal_scope_do_not_use__ {
enum Enum {
  A = 1,
  Set = 2,
  OfEvent = 3,
  Codes = 4,
};
}  // __project_metric_dimension_first_internal_scope_do_not_use__
using ProjectMetricDimensionFirst = __project_metric_dimension_first_internal_scope_do_not_use__::Enum;
// Alias for metric (Metric Dimension First) which has the same event codes
using MetricMetricDimensionFirst = ProjectMetricDimensionFirst;
const MetricMetricDimensionFirst MetricMetricDimensionFirst_A = MetricMetricDimensionFirst::A;
const MetricMetricDimensionFirst MetricMetricDimensionFirst_Set = MetricMetricDimensionFirst::Set;
const MetricMetricDimensionFirst MetricMetricDimensionFirst_OfEvent = MetricMetricDimensionFirst::OfEvent;
const MetricMetricDimensionFirst MetricMetricDimensionFirst_Codes = MetricMetricDimensionFirst::Codes;

// Alias for second metric (Metric Dimension First) which has the same event codes
using SecondMetricMetricDimensionFirst = ProjectMetricDimensionFirst;
const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_A = SecondMetricMetricDimensionFirst::A;
const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Set = SecondMetricMetricDimensionFirst::Set;
const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_OfEvent = SecondMetricMetricDimensionFirst::OfEvent;
const SecondMetricMetricDimensionFirst SecondMetricMetricDimensionFirst_Codes = SecondMetricMetricDimensionFirst::Codes;

// Enum for project (Metric Dimension Second)
namespace __project_metric_dimension_second_internal_scope_do_not_use__ {
enum Enum {
  Some = 0,
  More = 4,
  Event = 8,
  Codes = 16,
};
}  // __project_metric_dimension_second_internal_scope_do_not_use__
using ProjectMetricDimensionSecond = __project_metric_dimension_second_internal_scope_do_not_use__::Enum;
// Alias for metric (Metric Dimension Second) which has the same event codes
using MetricMetricDimensionSecond = ProjectMetricDimensionSecond;
const MetricMetricDimensionSecond MetricMetricDimensionSecond_Some = MetricMetricDimensionSecond::Some;
const MetricMetricDimensionSecond MetricMetricDimensionSecond_More = MetricMetricDimensionSecond::More;
const MetricMetricDimensionSecond MetricMetricDimensionSecond_Event = MetricMetricDimensionSecond::Event;
const MetricMetricDimensionSecond MetricMetricDimensionSecond_Codes = MetricMetricDimensionSecond::Codes;

// Alias for second metric (Metric Dimension Second) which has the same event codes
using SecondMetricMetricDimensionSecond = ProjectMetricDimensionSecond;
const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Some = SecondMetricMetricDimensionSecond::Some;
const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_More = SecondMetricMetricDimensionSecond::More;
const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Event = SecondMetricMetricDimensionSecond::Event;
const SecondMetricMetricDimensionSecond SecondMetricMetricDimensionSecond_Codes = SecondMetricMetricDimensionSecond::Codes;

// The base64 encoding of the bytes of a serialized CobaltRegistry proto message.
const char kConfig[] = "KooHCghjdXN0b21lchAKGvsGCgdwcm9qZWN0EAUaVQoPdGhlX21ldHJpY19uYW1lEAoYBSBkYhEKCnRoZV9yZXBvcnQQChiPTmIWChB0aGVfb3RoZXJfcmVwb3J0EBQYA3IIY3VzdG9tZXJ6B3Byb2plY3QafwoVdGhlX290aGVyX21ldHJpY19uYW1lEAoYBSDIASgBUAFiEAoKdGhlX3JlcG9ydBAKGAdyCGN1c3RvbWVyegdwcm9qZWN0ggE1EgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYyAEa+gEKDGV2ZW50IGdyb3VwcxAKGAUgrAIoAVABYhAKCnRoZV9yZXBvcnQQHhgHcghjdXN0b21lcnoHcHJvamVjdIIBRQoPVGhlIEZpcnN0IEdyb3VwEgsIABIHQW5FdmVudBIQCAESDEFub3RoZXJFdmVudBIRCAISDUEgdGhpcmQgZXZlbnQYAoIBOQoOQSBzZWNvbmQgZ3JvdXASCAgBEgRUaGlzEgYIAhICSXMSCwgDEgdhbm90aGVyEggIBBIEVGVzdIIBNRIOCAASClRoaXNNZXRyaWMSCQgCEgVIYXNObxIICAQSBE5hbWUqDgoFSGFzTm8SBUFsaWFzGjMKDmxpbmVhciBidWNrZXRzEAoYBSCQA0IHEgUQjAEYBXIIY3VzdG9tZXJ6B3Byb2plY3QaRQoTZXhwb25lbnRpYWwgYnVja2V0cxAKGAUg9ANiFAoGcmVwb3J0EChSCAoGEAMYAiACcghjdXN0b21lcnoHcHJvamVjdBqJAQoGbWV0cmljEAoYBSDYBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVzGpABCg1zZWNvbmQgbWV0cmljEAoYBSDZBHIIY3VzdG9tZXJ6B3Byb2plY3SCAS8KBUZpcnN0EgUIARIBQRIHCAISA1NldBILCAMSB09mRXZlbnQSCQgEEgVDb2Rlc4IBMgoGU2Vjb25kEggIABIEU29tZRIICAQSBE1vcmUSCQgIEgVFdmVudBIJCBASBUNvZGVz";

#endif  // COBALT_REGISTRY_CUSTOMER_PROJECT_GEN_
