// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v3.21.12
// source: yandex/cloud/billing/usage_records/v1/common_types.proto

package usageRecords

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Enum for time period grouping options used to control the granularity of time-based data aggregation.
// This determines how the time series data is grouped in responses (e.g., daily, monthly reports).
type TimeGrouping int32

const (
	TimeGrouping_TIME_GROUPING_UNSPECIFIED TimeGrouping = 0 // Default unspecified value. Typically treated as DAY.
	// Group reports by day.
	TimeGrouping_DAY TimeGrouping = 1
	// Group reports by week.
	TimeGrouping_WEEK TimeGrouping = 2
	// Group reports by month.
	TimeGrouping_MONTH TimeGrouping = 3
	// Group reports by quarter (3-month periods).
	TimeGrouping_QUARTER TimeGrouping = 4
	// Group reports by year.
	TimeGrouping_YEAR TimeGrouping = 5
)

// Enum value maps for TimeGrouping.
var (
	TimeGrouping_name = map[int32]string{
		0: "TIME_GROUPING_UNSPECIFIED",
		1: "DAY",
		2: "WEEK",
		3: "MONTH",
		4: "QUARTER",
		5: "YEAR",
	}
	TimeGrouping_value = map[string]int32{
		"TIME_GROUPING_UNSPECIFIED": 0,
		"DAY":                       1,
		"WEEK":                      2,
		"MONTH":                     3,
		"QUARTER":                   4,
		"YEAR":                      5,
	}
)

func (x TimeGrouping) Enum() *TimeGrouping {
	p := new(TimeGrouping)
	*p = x
	return p
}

func (x TimeGrouping) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (TimeGrouping) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes[0].Descriptor()
}

func (TimeGrouping) Type() protoreflect.EnumType {
	return &file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes[0]
}

func (x TimeGrouping) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use TimeGrouping.Descriptor instead.
func (TimeGrouping) EnumDescriptor() ([]byte, []int) {
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescGZIP(), []int{0}
}

// Enum for supported currency codes used in billing and financial reports.
type Currency int32

const (
	Currency_CURRENCY_UNSPECIFIED Currency = 0 // Unspecified or unknown currency.
	Currency_RUB                  Currency = 1 // Russian Ruble
	Currency_USD                  Currency = 2 // US Dollar
	Currency_KZT                  Currency = 3 // Kazakhstani Tenge
	Currency_EUR                  Currency = 4 // Euro
)

// Enum value maps for Currency.
var (
	Currency_name = map[int32]string{
		0: "CURRENCY_UNSPECIFIED",
		1: "RUB",
		2: "USD",
		3: "KZT",
		4: "EUR",
	}
	Currency_value = map[string]int32{
		"CURRENCY_UNSPECIFIED": 0,
		"RUB":                  1,
		"USD":                  2,
		"KZT":                  3,
		"EUR":                  4,
	}
)

func (x Currency) Enum() *Currency {
	p := new(Currency)
	*p = x
	return p
}

func (x Currency) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Currency) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes[1].Descriptor()
}

func (Currency) Type() protoreflect.EnumType {
	return &file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes[1]
}

func (x Currency) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Currency.Descriptor instead.
func (Currency) EnumDescriptor() ([]byte, []int) {
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescGZIP(), []int{1}
}

// StringDecimal representation for financial values
// Used to ensure precise handling of monetary values
type StringDecimal struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// String representation of the decimal value to avoid floating-point precision issues
	Value         string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StringDecimal) Reset() {
	*x = StringDecimal{}
	mi := &file_yandex_cloud_billing_usage_records_v1_common_types_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StringDecimal) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringDecimal) ProtoMessage() {}

func (x *StringDecimal) ProtoReflect() protoreflect.Message {
	mi := &file_yandex_cloud_billing_usage_records_v1_common_types_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StringDecimal.ProtoReflect.Descriptor instead.
func (*StringDecimal) Descriptor() ([]byte, []int) {
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescGZIP(), []int{0}
}

func (x *StringDecimal) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

var File_yandex_cloud_billing_usage_records_v1_common_types_proto protoreflect.FileDescriptor

const file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDesc = "" +
	"\n" +
	"8yandex/cloud/billing/usage_records/v1/common_types.proto\x12%yandex.cloud.billing.usage_records.v1\"%\n" +
	"\rStringDecimal\x12\x14\n" +
	"\x05value\x18\x01 \x01(\tR\x05value*b\n" +
	"\fTimeGrouping\x12\x1d\n" +
	"\x19TIME_GROUPING_UNSPECIFIED\x10\x00\x12\a\n" +
	"\x03DAY\x10\x01\x12\b\n" +
	"\x04WEEK\x10\x02\x12\t\n" +
	"\x05MONTH\x10\x03\x12\v\n" +
	"\aQUARTER\x10\x04\x12\b\n" +
	"\x04YEAR\x10\x05*H\n" +
	"\bCurrency\x12\x18\n" +
	"\x14CURRENCY_UNSPECIFIED\x10\x00\x12\a\n" +
	"\x03RUB\x10\x01\x12\a\n" +
	"\x03USD\x10\x02\x12\a\n" +
	"\x03KZT\x10\x03\x12\a\n" +
	"\x03EUR\x10\x04B\x83\x01\n" +
	")yandex.cloud.api.billing.usage_records.v1ZVgithub.com/yandex-cloud/go-genproto/yandex/cloud/billing/usage_records/v1;usageRecordsb\x06proto3"

var (
	file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescOnce sync.Once
	file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescData []byte
)

func file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescGZIP() []byte {
	file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDesc), len(file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDesc)))
	})
	return file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDescData
}

var file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_yandex_cloud_billing_usage_records_v1_common_types_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_yandex_cloud_billing_usage_records_v1_common_types_proto_goTypes = []any{
	(TimeGrouping)(0),     // 0: yandex.cloud.billing.usage_records.v1.TimeGrouping
	(Currency)(0),         // 1: yandex.cloud.billing.usage_records.v1.Currency
	(*StringDecimal)(nil), // 2: yandex.cloud.billing.usage_records.v1.StringDecimal
}
var file_yandex_cloud_billing_usage_records_v1_common_types_proto_depIdxs = []int32{
	0, // [0:0] is the sub-list for method output_type
	0, // [0:0] is the sub-list for method input_type
	0, // [0:0] is the sub-list for extension type_name
	0, // [0:0] is the sub-list for extension extendee
	0, // [0:0] is the sub-list for field type_name
}

func init() { file_yandex_cloud_billing_usage_records_v1_common_types_proto_init() }
func file_yandex_cloud_billing_usage_records_v1_common_types_proto_init() {
	if File_yandex_cloud_billing_usage_records_v1_common_types_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDesc), len(file_yandex_cloud_billing_usage_records_v1_common_types_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_billing_usage_records_v1_common_types_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_billing_usage_records_v1_common_types_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_billing_usage_records_v1_common_types_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_billing_usage_records_v1_common_types_proto_msgTypes,
	}.Build()
	File_yandex_cloud_billing_usage_records_v1_common_types_proto = out.File
	file_yandex_cloud_billing_usage_records_v1_common_types_proto_goTypes = nil
	file_yandex_cloud_billing_usage_records_v1_common_types_proto_depIdxs = nil
}
