1// Copyright 2021 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.26.0
18// 	protoc        v3.12.2
19// source: google/cloud/billing/budgets/v1/budget_model.proto
20
21package budgets
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	_ "google.golang.org/genproto/googleapis/api/annotations"
28	date "google.golang.org/genproto/googleapis/type/date"
29	money "google.golang.org/genproto/googleapis/type/money"
30	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
31	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
32	structpb "google.golang.org/protobuf/types/known/structpb"
33)
34
35const (
36	// Verify that this generated code is sufficiently up-to-date.
37	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
38	// Verify that runtime/protoimpl is sufficiently up-to-date.
39	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
40)
41
42// A `CalendarPeriod` represents the abstract concept of a time period that
43// has a canonical start. Grammatically, "the start of the current
44// `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian
45// Pacific Time (UTC-8).
46type CalendarPeriod int32
47
48const (
49	CalendarPeriod_CALENDAR_PERIOD_UNSPECIFIED CalendarPeriod = 0
50	// A month. Month starts on the first day of each month, such as January 1,
51	// February 1, March 1, and so on.
52	CalendarPeriod_MONTH CalendarPeriod = 1
53	// A quarter. Quarters start on dates January 1, April 1, July 1, and October
54	// 1 of each year.
55	CalendarPeriod_QUARTER CalendarPeriod = 2
56	// A year. Year starts on January 1.
57	CalendarPeriod_YEAR CalendarPeriod = 3
58)
59
60// Enum value maps for CalendarPeriod.
61var (
62	CalendarPeriod_name = map[int32]string{
63		0: "CALENDAR_PERIOD_UNSPECIFIED",
64		1: "MONTH",
65		2: "QUARTER",
66		3: "YEAR",
67	}
68	CalendarPeriod_value = map[string]int32{
69		"CALENDAR_PERIOD_UNSPECIFIED": 0,
70		"MONTH":                       1,
71		"QUARTER":                     2,
72		"YEAR":                        3,
73	}
74)
75
76func (x CalendarPeriod) Enum() *CalendarPeriod {
77	p := new(CalendarPeriod)
78	*p = x
79	return p
80}
81
82func (x CalendarPeriod) String() string {
83	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
84}
85
86func (CalendarPeriod) Descriptor() protoreflect.EnumDescriptor {
87	return file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[0].Descriptor()
88}
89
90func (CalendarPeriod) Type() protoreflect.EnumType {
91	return &file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[0]
92}
93
94func (x CalendarPeriod) Number() protoreflect.EnumNumber {
95	return protoreflect.EnumNumber(x)
96}
97
98// Deprecated: Use CalendarPeriod.Descriptor instead.
99func (CalendarPeriod) EnumDescriptor() ([]byte, []int) {
100	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{0}
101}
102
103// The type of basis used to determine if spend has passed the threshold.
104type ThresholdRule_Basis int32
105
106const (
107	// Unspecified threshold basis.
108	ThresholdRule_BASIS_UNSPECIFIED ThresholdRule_Basis = 0
109	// Use current spend as the basis for comparison against the threshold.
110	ThresholdRule_CURRENT_SPEND ThresholdRule_Basis = 1
111	// Use forecasted spend for the period as the basis for comparison against
112	// the threshold.
113	// FORECASTED_SPEND can only be set when the budget's time period is a
114	// [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
115	// It cannot be set in combination with
116	// [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
117	ThresholdRule_FORECASTED_SPEND ThresholdRule_Basis = 2
118)
119
120// Enum value maps for ThresholdRule_Basis.
121var (
122	ThresholdRule_Basis_name = map[int32]string{
123		0: "BASIS_UNSPECIFIED",
124		1: "CURRENT_SPEND",
125		2: "FORECASTED_SPEND",
126	}
127	ThresholdRule_Basis_value = map[string]int32{
128		"BASIS_UNSPECIFIED": 0,
129		"CURRENT_SPEND":     1,
130		"FORECASTED_SPEND":  2,
131	}
132)
133
134func (x ThresholdRule_Basis) Enum() *ThresholdRule_Basis {
135	p := new(ThresholdRule_Basis)
136	*p = x
137	return p
138}
139
140func (x ThresholdRule_Basis) String() string {
141	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
142}
143
144func (ThresholdRule_Basis) Descriptor() protoreflect.EnumDescriptor {
145	return file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[1].Descriptor()
146}
147
148func (ThresholdRule_Basis) Type() protoreflect.EnumType {
149	return &file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[1]
150}
151
152func (x ThresholdRule_Basis) Number() protoreflect.EnumNumber {
153	return protoreflect.EnumNumber(x)
154}
155
156// Deprecated: Use ThresholdRule_Basis.Descriptor instead.
157func (ThresholdRule_Basis) EnumDescriptor() ([]byte, []int) {
158	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{3, 0}
159}
160
161// Specifies how credits are applied when determining the spend for
162// threshold calculations. Budgets track the total cost minus any applicable
163// selected credits.
164// [See the documentation for a list of credit
165// types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type).
166type Filter_CreditTypesTreatment int32
167
168const (
169	Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED Filter_CreditTypesTreatment = 0
170	// All types of credit are subtracted from the gross cost to determine the
171	// spend for threshold calculations.
172	Filter_INCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 1
173	// All types of credit are added to the net cost to determine the spend for
174	// threshold calculations.
175	Filter_EXCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 2
176	// [Credit
177	// types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type)
178	// specified in the credit_types field are subtracted from the
179	// gross cost to determine the spend for threshold calculations.
180	Filter_INCLUDE_SPECIFIED_CREDITS Filter_CreditTypesTreatment = 3
181)
182
183// Enum value maps for Filter_CreditTypesTreatment.
184var (
185	Filter_CreditTypesTreatment_name = map[int32]string{
186		0: "CREDIT_TYPES_TREATMENT_UNSPECIFIED",
187		1: "INCLUDE_ALL_CREDITS",
188		2: "EXCLUDE_ALL_CREDITS",
189		3: "INCLUDE_SPECIFIED_CREDITS",
190	}
191	Filter_CreditTypesTreatment_value = map[string]int32{
192		"CREDIT_TYPES_TREATMENT_UNSPECIFIED": 0,
193		"INCLUDE_ALL_CREDITS":                1,
194		"EXCLUDE_ALL_CREDITS":                2,
195		"INCLUDE_SPECIFIED_CREDITS":          3,
196	}
197)
198
199func (x Filter_CreditTypesTreatment) Enum() *Filter_CreditTypesTreatment {
200	p := new(Filter_CreditTypesTreatment)
201	*p = x
202	return p
203}
204
205func (x Filter_CreditTypesTreatment) String() string {
206	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
207}
208
209func (Filter_CreditTypesTreatment) Descriptor() protoreflect.EnumDescriptor {
210	return file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[2].Descriptor()
211}
212
213func (Filter_CreditTypesTreatment) Type() protoreflect.EnumType {
214	return &file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes[2]
215}
216
217func (x Filter_CreditTypesTreatment) Number() protoreflect.EnumNumber {
218	return protoreflect.EnumNumber(x)
219}
220
221// Deprecated: Use Filter_CreditTypesTreatment.Descriptor instead.
222func (Filter_CreditTypesTreatment) EnumDescriptor() ([]byte, []int) {
223	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{5, 0}
224}
225
226// A budget is a plan that describes what you expect to spend on Cloud
227// projects, plus the rules to execute as spend is tracked against that plan,
228// (for example, send an alert when 90% of the target spend is met).
229// The budget time period is configurable, with options such as month (default),
230// quarter, year, or custom time period.
231type Budget struct {
232	state         protoimpl.MessageState
233	sizeCache     protoimpl.SizeCache
234	unknownFields protoimpl.UnknownFields
235
236	// Output only. Resource name of the budget.
237	// The resource name implies the scope of a budget. Values are of the form
238	// `billingAccounts/{billingAccountId}/budgets/{budgetId}`.
239	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
240	// User data for display name in UI. The name must be less than or equal to 60
241	// characters.
242	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
243	// Optional. Filters that define which resources are used to compute the
244	// actual spend against the budget amount, such as projects, services, and the
245	// budget's time period, as well as other filters.
246	BudgetFilter *Filter `protobuf:"bytes,3,opt,name=budget_filter,json=budgetFilter,proto3" json:"budget_filter,omitempty"`
247	// Required. Budgeted amount.
248	Amount *BudgetAmount `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
249	// Optional. Rules that trigger alerts (notifications of thresholds
250	// being crossed) when spend exceeds the specified percentages of the budget.
251	ThresholdRules []*ThresholdRule `protobuf:"bytes,5,rep,name=threshold_rules,json=thresholdRules,proto3" json:"threshold_rules,omitempty"`
252	// Optional. Rules to apply to notifications sent based on budget spend and
253	// thresholds.
254	NotificationsRule *NotificationsRule `protobuf:"bytes,6,opt,name=notifications_rule,json=notificationsRule,proto3" json:"notifications_rule,omitempty"`
255	// Optional. Etag to validate that the object is unchanged for a
256	// read-modify-write operation.
257	// An empty etag will cause an update to overwrite other changes.
258	Etag string `protobuf:"bytes,7,opt,name=etag,proto3" json:"etag,omitempty"`
259}
260
261func (x *Budget) Reset() {
262	*x = Budget{}
263	if protoimpl.UnsafeEnabled {
264		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[0]
265		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
266		ms.StoreMessageInfo(mi)
267	}
268}
269
270func (x *Budget) String() string {
271	return protoimpl.X.MessageStringOf(x)
272}
273
274func (*Budget) ProtoMessage() {}
275
276func (x *Budget) ProtoReflect() protoreflect.Message {
277	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[0]
278	if protoimpl.UnsafeEnabled && x != nil {
279		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
280		if ms.LoadMessageInfo() == nil {
281			ms.StoreMessageInfo(mi)
282		}
283		return ms
284	}
285	return mi.MessageOf(x)
286}
287
288// Deprecated: Use Budget.ProtoReflect.Descriptor instead.
289func (*Budget) Descriptor() ([]byte, []int) {
290	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{0}
291}
292
293func (x *Budget) GetName() string {
294	if x != nil {
295		return x.Name
296	}
297	return ""
298}
299
300func (x *Budget) GetDisplayName() string {
301	if x != nil {
302		return x.DisplayName
303	}
304	return ""
305}
306
307func (x *Budget) GetBudgetFilter() *Filter {
308	if x != nil {
309		return x.BudgetFilter
310	}
311	return nil
312}
313
314func (x *Budget) GetAmount() *BudgetAmount {
315	if x != nil {
316		return x.Amount
317	}
318	return nil
319}
320
321func (x *Budget) GetThresholdRules() []*ThresholdRule {
322	if x != nil {
323		return x.ThresholdRules
324	}
325	return nil
326}
327
328func (x *Budget) GetNotificationsRule() *NotificationsRule {
329	if x != nil {
330		return x.NotificationsRule
331	}
332	return nil
333}
334
335func (x *Budget) GetEtag() string {
336	if x != nil {
337		return x.Etag
338	}
339	return ""
340}
341
342// The budgeted amount for each usage period.
343type BudgetAmount struct {
344	state         protoimpl.MessageState
345	sizeCache     protoimpl.SizeCache
346	unknownFields protoimpl.UnknownFields
347
348	// Specification for what amount to use as the budget.
349	//
350	// Types that are assignable to BudgetAmount:
351	//	*BudgetAmount_SpecifiedAmount
352	//	*BudgetAmount_LastPeriodAmount
353	BudgetAmount isBudgetAmount_BudgetAmount `protobuf_oneof:"budget_amount"`
354}
355
356func (x *BudgetAmount) Reset() {
357	*x = BudgetAmount{}
358	if protoimpl.UnsafeEnabled {
359		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[1]
360		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
361		ms.StoreMessageInfo(mi)
362	}
363}
364
365func (x *BudgetAmount) String() string {
366	return protoimpl.X.MessageStringOf(x)
367}
368
369func (*BudgetAmount) ProtoMessage() {}
370
371func (x *BudgetAmount) ProtoReflect() protoreflect.Message {
372	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[1]
373	if protoimpl.UnsafeEnabled && x != nil {
374		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
375		if ms.LoadMessageInfo() == nil {
376			ms.StoreMessageInfo(mi)
377		}
378		return ms
379	}
380	return mi.MessageOf(x)
381}
382
383// Deprecated: Use BudgetAmount.ProtoReflect.Descriptor instead.
384func (*BudgetAmount) Descriptor() ([]byte, []int) {
385	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{1}
386}
387
388func (m *BudgetAmount) GetBudgetAmount() isBudgetAmount_BudgetAmount {
389	if m != nil {
390		return m.BudgetAmount
391	}
392	return nil
393}
394
395func (x *BudgetAmount) GetSpecifiedAmount() *money.Money {
396	if x, ok := x.GetBudgetAmount().(*BudgetAmount_SpecifiedAmount); ok {
397		return x.SpecifiedAmount
398	}
399	return nil
400}
401
402func (x *BudgetAmount) GetLastPeriodAmount() *LastPeriodAmount {
403	if x, ok := x.GetBudgetAmount().(*BudgetAmount_LastPeriodAmount); ok {
404		return x.LastPeriodAmount
405	}
406	return nil
407}
408
409type isBudgetAmount_BudgetAmount interface {
410	isBudgetAmount_BudgetAmount()
411}
412
413type BudgetAmount_SpecifiedAmount struct {
414	// A specified amount to use as the budget.
415	// `currency_code` is optional. If specified when creating a budget, it must
416	// match the currency of the billing account. If specified when updating a
417	// budget, it must match the currency_code of the existing budget.
418	// The `currency_code` is provided on output.
419	SpecifiedAmount *money.Money `protobuf:"bytes,1,opt,name=specified_amount,json=specifiedAmount,proto3,oneof"`
420}
421
422type BudgetAmount_LastPeriodAmount struct {
423	// Use the last period's actual spend as the budget for the present period.
424	// LastPeriodAmount can only be set when the budget's time period is a
425	// [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period].
426	// It cannot be set in combination with
427	// [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
428	LastPeriodAmount *LastPeriodAmount `protobuf:"bytes,2,opt,name=last_period_amount,json=lastPeriodAmount,proto3,oneof"`
429}
430
431func (*BudgetAmount_SpecifiedAmount) isBudgetAmount_BudgetAmount() {}
432
433func (*BudgetAmount_LastPeriodAmount) isBudgetAmount_BudgetAmount() {}
434
435// Describes a budget amount targeted to the last
436// [Filter.calendar_period][google.cloud.billing.budgets.v1.Filter.calendar_period]
437// spend. At this time, the amount is automatically 100% of the last calendar
438// period's spend; that is, there are no other options yet.
439// Future configuration options will be described here (for example, configuring
440// a percentage of last period's spend).
441// LastPeriodAmount cannot be set for a budget configured with
442// a
443// [Filter.custom_period][google.cloud.billing.budgets.v1.Filter.custom_period].
444type LastPeriodAmount struct {
445	state         protoimpl.MessageState
446	sizeCache     protoimpl.SizeCache
447	unknownFields protoimpl.UnknownFields
448}
449
450func (x *LastPeriodAmount) Reset() {
451	*x = LastPeriodAmount{}
452	if protoimpl.UnsafeEnabled {
453		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[2]
454		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
455		ms.StoreMessageInfo(mi)
456	}
457}
458
459func (x *LastPeriodAmount) String() string {
460	return protoimpl.X.MessageStringOf(x)
461}
462
463func (*LastPeriodAmount) ProtoMessage() {}
464
465func (x *LastPeriodAmount) ProtoReflect() protoreflect.Message {
466	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[2]
467	if protoimpl.UnsafeEnabled && x != nil {
468		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
469		if ms.LoadMessageInfo() == nil {
470			ms.StoreMessageInfo(mi)
471		}
472		return ms
473	}
474	return mi.MessageOf(x)
475}
476
477// Deprecated: Use LastPeriodAmount.ProtoReflect.Descriptor instead.
478func (*LastPeriodAmount) Descriptor() ([]byte, []int) {
479	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{2}
480}
481
482// ThresholdRule contains a definition of a threshold which triggers
483// an alert (a notification of a threshold being crossed) to be sent when
484// spend goes above the specified amount.
485// Alerts are automatically e-mailed to users with the Billing Account
486// Administrator role or the Billing Account User role.
487// The thresholds here have no effect on notifications sent to anything
488// configured under `Budget.all_updates_rule`.
489type ThresholdRule struct {
490	state         protoimpl.MessageState
491	sizeCache     protoimpl.SizeCache
492	unknownFields protoimpl.UnknownFields
493
494	// Required. Send an alert when this threshold is exceeded.
495	// This is a 1.0-based percentage, so 0.5 = 50%.
496	// Validation: non-negative number.
497	ThresholdPercent float64 `protobuf:"fixed64,1,opt,name=threshold_percent,json=thresholdPercent,proto3" json:"threshold_percent,omitempty"`
498	// Optional. The type of basis used to determine if spend has passed the
499	// threshold. Behavior defaults to CURRENT_SPEND if not set.
500	SpendBasis ThresholdRule_Basis `protobuf:"varint,2,opt,name=spend_basis,json=spendBasis,proto3,enum=google.cloud.billing.budgets.v1.ThresholdRule_Basis" json:"spend_basis,omitempty"`
501}
502
503func (x *ThresholdRule) Reset() {
504	*x = ThresholdRule{}
505	if protoimpl.UnsafeEnabled {
506		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[3]
507		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
508		ms.StoreMessageInfo(mi)
509	}
510}
511
512func (x *ThresholdRule) String() string {
513	return protoimpl.X.MessageStringOf(x)
514}
515
516func (*ThresholdRule) ProtoMessage() {}
517
518func (x *ThresholdRule) ProtoReflect() protoreflect.Message {
519	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[3]
520	if protoimpl.UnsafeEnabled && x != nil {
521		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
522		if ms.LoadMessageInfo() == nil {
523			ms.StoreMessageInfo(mi)
524		}
525		return ms
526	}
527	return mi.MessageOf(x)
528}
529
530// Deprecated: Use ThresholdRule.ProtoReflect.Descriptor instead.
531func (*ThresholdRule) Descriptor() ([]byte, []int) {
532	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{3}
533}
534
535func (x *ThresholdRule) GetThresholdPercent() float64 {
536	if x != nil {
537		return x.ThresholdPercent
538	}
539	return 0
540}
541
542func (x *ThresholdRule) GetSpendBasis() ThresholdRule_Basis {
543	if x != nil {
544		return x.SpendBasis
545	}
546	return ThresholdRule_BASIS_UNSPECIFIED
547}
548
549// NotificationsRule defines notifications that are sent based on budget spend
550// and thresholds.
551type NotificationsRule struct {
552	state         protoimpl.MessageState
553	sizeCache     protoimpl.SizeCache
554	unknownFields protoimpl.UnknownFields
555
556	// Optional. The name of the Pub/Sub topic where budget related messages will
557	// be published, in the form `projects/{project_id}/topics/{topic_id}`.
558	// Updates are sent at regular intervals to the topic. The topic needs to be
559	// created before the budget is created; see
560	// https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications
561	// for more details.
562	// Caller is expected to have
563	// `pubsub.topics.setIamPolicy` permission on the topic when it's set for a
564	// budget, otherwise, the API call will fail with PERMISSION_DENIED. See
565	// https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications
566	// for more details on Pub/Sub roles and permissions.
567	PubsubTopic string `protobuf:"bytes,1,opt,name=pubsub_topic,json=pubsubTopic,proto3" json:"pubsub_topic,omitempty"`
568	// Optional. Required when
569	// [NotificationsRule.pubsub_topic][google.cloud.billing.budgets.v1.NotificationsRule.pubsub_topic]
570	// is set. The schema version of the notification sent to
571	// [NotificationsRule.pubsub_topic][google.cloud.billing.budgets.v1.NotificationsRule.pubsub_topic].
572	// Only "1.0" is accepted. It represents the JSON schema as defined in
573	// https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format.
574	SchemaVersion string `protobuf:"bytes,2,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
575	// Optional. Targets to send notifications to when a threshold is exceeded.
576	// This is in addition to default recipients who have billing account IAM
577	// roles. The value is the full REST resource name of a monitoring
578	// notification channel with the form
579	// `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5
580	// channels are allowed. See
581	// https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients
582	// for more details.
583	MonitoringNotificationChannels []string `protobuf:"bytes,3,rep,name=monitoring_notification_channels,json=monitoringNotificationChannels,proto3" json:"monitoring_notification_channels,omitempty"`
584	// Optional. When set to true, disables default notifications sent when a
585	// threshold is exceeded. Default notifications are sent to those with Billing
586	// Account Administrator and Billing Account User IAM roles for the target
587	// account.
588	DisableDefaultIamRecipients bool `protobuf:"varint,4,opt,name=disable_default_iam_recipients,json=disableDefaultIamRecipients,proto3" json:"disable_default_iam_recipients,omitempty"`
589}
590
591func (x *NotificationsRule) Reset() {
592	*x = NotificationsRule{}
593	if protoimpl.UnsafeEnabled {
594		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[4]
595		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
596		ms.StoreMessageInfo(mi)
597	}
598}
599
600func (x *NotificationsRule) String() string {
601	return protoimpl.X.MessageStringOf(x)
602}
603
604func (*NotificationsRule) ProtoMessage() {}
605
606func (x *NotificationsRule) ProtoReflect() protoreflect.Message {
607	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[4]
608	if protoimpl.UnsafeEnabled && x != nil {
609		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
610		if ms.LoadMessageInfo() == nil {
611			ms.StoreMessageInfo(mi)
612		}
613		return ms
614	}
615	return mi.MessageOf(x)
616}
617
618// Deprecated: Use NotificationsRule.ProtoReflect.Descriptor instead.
619func (*NotificationsRule) Descriptor() ([]byte, []int) {
620	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{4}
621}
622
623func (x *NotificationsRule) GetPubsubTopic() string {
624	if x != nil {
625		return x.PubsubTopic
626	}
627	return ""
628}
629
630func (x *NotificationsRule) GetSchemaVersion() string {
631	if x != nil {
632		return x.SchemaVersion
633	}
634	return ""
635}
636
637func (x *NotificationsRule) GetMonitoringNotificationChannels() []string {
638	if x != nil {
639		return x.MonitoringNotificationChannels
640	}
641	return nil
642}
643
644func (x *NotificationsRule) GetDisableDefaultIamRecipients() bool {
645	if x != nil {
646		return x.DisableDefaultIamRecipients
647	}
648	return false
649}
650
651// A filter for a budget, limiting the scope of the cost to calculate.
652type Filter struct {
653	state         protoimpl.MessageState
654	sizeCache     protoimpl.SizeCache
655	unknownFields protoimpl.UnknownFields
656
657	// Optional. A set of projects of the form `projects/{project}`,
658	// specifying that usage from only this set of projects should be
659	// included in the budget. If omitted, the report will include all usage for
660	// the billing account, regardless of which project the usage occurred on.
661	// Only zero or one project can be specified currently.
662	Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
663	// Optional. If
664	// [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment]
665	// is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be
666	// subtracted from gross cost to determine the spend for threshold
667	// calculations. See [a list of acceptable credit type
668	// values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type).
669	//
670	// If
671	// [Filter.credit_types_treatment][google.cloud.billing.budgets.v1.Filter.credit_types_treatment]
672	// is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty.
673	CreditTypes []string `protobuf:"bytes,7,rep,name=credit_types,json=creditTypes,proto3" json:"credit_types,omitempty"`
674	// Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.
675	CreditTypesTreatment Filter_CreditTypesTreatment `protobuf:"varint,4,opt,name=credit_types_treatment,json=creditTypesTreatment,proto3,enum=google.cloud.billing.budgets.v1.Filter_CreditTypesTreatment" json:"credit_types_treatment,omitempty"`
676	// Optional. A set of services of the form `services/{service_id}`,
677	// specifying that usage from only this set of services should be
678	// included in the budget. If omitted, the report will include usage for
679	// all the services.
680	// The service names are available through the Catalog API:
681	// https://cloud.google.com/billing/v1/how-tos/catalog-api.
682	Services []string `protobuf:"bytes,3,rep,name=services,proto3" json:"services,omitempty"`
683	// Optional. A set of subaccounts of the form `billingAccounts/{account_id}`,
684	// specifying that usage from only this set of subaccounts should be included
685	// in the budget. If a subaccount is set to the name of the parent account,
686	// usage from the parent account will be included. If the field is omitted,
687	// the report will include usage from the parent account and all subaccounts,
688	// if they exist.
689	Subaccounts []string `protobuf:"bytes,5,rep,name=subaccounts,proto3" json:"subaccounts,omitempty"`
690	// Optional. A single label and value pair specifying that usage from only
691	// this set of labeled resources should be included in the budget. Currently,
692	// multiple entries or multiple values per entry are not allowed. If omitted,
693	// the report will include all labeled and unlabeled usage.
694	Labels map[string]*structpb.ListValue `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
695	// Multiple options to choose the budget's time period, specifying that only
696	// usage that occurs during this time period should be included in the budget.
697	// If not set, the `usage_period` defaults to CalendarPeriod.MONTH.
698	//
699	// Types that are assignable to UsagePeriod:
700	//	*Filter_CalendarPeriod
701	//	*Filter_CustomPeriod
702	UsagePeriod isFilter_UsagePeriod `protobuf_oneof:"usage_period"`
703}
704
705func (x *Filter) Reset() {
706	*x = Filter{}
707	if protoimpl.UnsafeEnabled {
708		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[5]
709		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
710		ms.StoreMessageInfo(mi)
711	}
712}
713
714func (x *Filter) String() string {
715	return protoimpl.X.MessageStringOf(x)
716}
717
718func (*Filter) ProtoMessage() {}
719
720func (x *Filter) ProtoReflect() protoreflect.Message {
721	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[5]
722	if protoimpl.UnsafeEnabled && x != nil {
723		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
724		if ms.LoadMessageInfo() == nil {
725			ms.StoreMessageInfo(mi)
726		}
727		return ms
728	}
729	return mi.MessageOf(x)
730}
731
732// Deprecated: Use Filter.ProtoReflect.Descriptor instead.
733func (*Filter) Descriptor() ([]byte, []int) {
734	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{5}
735}
736
737func (x *Filter) GetProjects() []string {
738	if x != nil {
739		return x.Projects
740	}
741	return nil
742}
743
744func (x *Filter) GetCreditTypes() []string {
745	if x != nil {
746		return x.CreditTypes
747	}
748	return nil
749}
750
751func (x *Filter) GetCreditTypesTreatment() Filter_CreditTypesTreatment {
752	if x != nil {
753		return x.CreditTypesTreatment
754	}
755	return Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED
756}
757
758func (x *Filter) GetServices() []string {
759	if x != nil {
760		return x.Services
761	}
762	return nil
763}
764
765func (x *Filter) GetSubaccounts() []string {
766	if x != nil {
767		return x.Subaccounts
768	}
769	return nil
770}
771
772func (x *Filter) GetLabels() map[string]*structpb.ListValue {
773	if x != nil {
774		return x.Labels
775	}
776	return nil
777}
778
779func (m *Filter) GetUsagePeriod() isFilter_UsagePeriod {
780	if m != nil {
781		return m.UsagePeriod
782	}
783	return nil
784}
785
786func (x *Filter) GetCalendarPeriod() CalendarPeriod {
787	if x, ok := x.GetUsagePeriod().(*Filter_CalendarPeriod); ok {
788		return x.CalendarPeriod
789	}
790	return CalendarPeriod_CALENDAR_PERIOD_UNSPECIFIED
791}
792
793func (x *Filter) GetCustomPeriod() *CustomPeriod {
794	if x, ok := x.GetUsagePeriod().(*Filter_CustomPeriod); ok {
795		return x.CustomPeriod
796	}
797	return nil
798}
799
800type isFilter_UsagePeriod interface {
801	isFilter_UsagePeriod()
802}
803
804type Filter_CalendarPeriod struct {
805	// Optional. Specifies to track usage for recurring calendar period.
806	// For example, assume that CalendarPeriod.QUARTER is set. The budget will
807	// track usage from April 1 to June 30, when the current calendar month is
808	// April, May, June. After that, it will track usage from July 1 to
809	// September 30 when the current calendar month is July, August, September,
810	// so on.
811	CalendarPeriod CalendarPeriod `protobuf:"varint,8,opt,name=calendar_period,json=calendarPeriod,proto3,enum=google.cloud.billing.budgets.v1.CalendarPeriod,oneof"`
812}
813
814type Filter_CustomPeriod struct {
815	// Optional. Specifies to track usage from any start date (required) to any
816	// end date (optional). This time period is static, it does not recur.
817	CustomPeriod *CustomPeriod `protobuf:"bytes,9,opt,name=custom_period,json=customPeriod,proto3,oneof"`
818}
819
820func (*Filter_CalendarPeriod) isFilter_UsagePeriod() {}
821
822func (*Filter_CustomPeriod) isFilter_UsagePeriod() {}
823
824// All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).
825type CustomPeriod struct {
826	state         protoimpl.MessageState
827	sizeCache     protoimpl.SizeCache
828	unknownFields protoimpl.UnknownFields
829
830	// Required. The start date must be after January 1, 2017.
831	StartDate *date.Date `protobuf:"bytes,1,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"`
832	// Optional. The end date of the time period. Budgets with elapsed end date
833	// won't be processed. If unset, specifies to track all usage incurred since
834	// the start_date.
835	EndDate *date.Date `protobuf:"bytes,2,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"`
836}
837
838func (x *CustomPeriod) Reset() {
839	*x = CustomPeriod{}
840	if protoimpl.UnsafeEnabled {
841		mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[6]
842		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
843		ms.StoreMessageInfo(mi)
844	}
845}
846
847func (x *CustomPeriod) String() string {
848	return protoimpl.X.MessageStringOf(x)
849}
850
851func (*CustomPeriod) ProtoMessage() {}
852
853func (x *CustomPeriod) ProtoReflect() protoreflect.Message {
854	mi := &file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[6]
855	if protoimpl.UnsafeEnabled && x != nil {
856		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
857		if ms.LoadMessageInfo() == nil {
858			ms.StoreMessageInfo(mi)
859		}
860		return ms
861	}
862	return mi.MessageOf(x)
863}
864
865// Deprecated: Use CustomPeriod.ProtoReflect.Descriptor instead.
866func (*CustomPeriod) Descriptor() ([]byte, []int) {
867	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP(), []int{6}
868}
869
870func (x *CustomPeriod) GetStartDate() *date.Date {
871	if x != nil {
872		return x.StartDate
873	}
874	return nil
875}
876
877func (x *CustomPeriod) GetEndDate() *date.Date {
878	if x != nil {
879		return x.EndDate
880	}
881	return nil
882}
883
884var File_google_cloud_billing_budgets_v1_budget_model_proto protoreflect.FileDescriptor
885
886var file_google_cloud_billing_budgets_v1_budget_model_proto_rawDesc = []byte{
887	0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62,
888	0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2f, 0x76,
889	0x31, 0x2f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x70,
890	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
891	0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65,
892	0x74, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
893	0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72,
894	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
895	0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
896	0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
897	0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
898	0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74,
899	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
900	0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
901	0x22, 0xa1, 0x04, 0x0a, 0x06, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e,
902	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04,
903	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f,
904	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
905	0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x62, 0x75, 0x64, 0x67, 0x65,
906	0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
907	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69,
908	0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31,
909	0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x62, 0x75,
910	0x64, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x06, 0x61, 0x6d,
911	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f,
912	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e,
913	0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x64,
914	0x67, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06,
915	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68,
916	0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
917	0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
918	0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76,
919	0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x42,
920	0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52,
921	0x75, 0x6c, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
922	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
923	0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
924	0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e,
925	0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
926	0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66,
927	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04,
928	0x65, 0x74, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
929	0x04, 0x65, 0x74, 0x61, 0x67, 0x3a, 0x5d, 0xea, 0x41, 0x5a, 0x0a, 0x24, 0x62, 0x69, 0x6c, 0x6c,
930	0x69, 0x6e, 0x67, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
931	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74,
932	0x12, 0x32, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
933	0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
934	0x6e, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x64,
935	0x67, 0x65, 0x74, 0x7d, 0x22, 0xc3, 0x01, 0x0a, 0x0c, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x41,
936	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x10, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69,
937	0x65, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
938	0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x6f,
939	0x6e, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64,
940	0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70,
941	0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
942	0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
943	0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74,
944	0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x41,
945	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x65, 0x72,
946	0x69, 0x6f, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x62, 0x75, 0x64,
947	0x67, 0x65, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x61,
948	0x73, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6,
949	0x01, 0x0a, 0x0d, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65,
950	0x12, 0x30, 0x0a, 0x11, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65,
951	0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x02,
952	0x52, 0x10, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65,
953	0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x61, 0x73, 0x69,
954	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
955	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62,
956	0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68,
957	0x6f, 0x6c, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x73, 0x42, 0x03, 0xe0,
958	0x41, 0x01, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x61, 0x73, 0x69, 0x73, 0x22, 0x47,
959	0x0a, 0x05, 0x42, 0x61, 0x73, 0x69, 0x73, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x41, 0x53, 0x49, 0x53,
960	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11,
961	0x0a, 0x0d, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x10,
962	0x01, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x4f, 0x52, 0x45, 0x43, 0x41, 0x53, 0x54, 0x45, 0x44, 0x5f,
963	0x53, 0x50, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x22, 0x80, 0x02, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69,
964	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x26, 0x0a,
965	0x0c, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20,
966	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62,
967	0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f,
968	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
969	0x41, 0x01, 0x52, 0x0d, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
970	0x6e, 0x12, 0x4d, 0x0a, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f,
971	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61,
972	0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01,
973	0x52, 0x1e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69,
974	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73,
975	0x12, 0x48, 0x0a, 0x1e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61,
976	0x75, 0x6c, 0x74, 0x5f, 0x69, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e,
977	0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1b, 0x64,
978	0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x61, 0x6d,
979	0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x99, 0x06, 0x0a, 0x06, 0x46,
980	0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
981	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x72,
982	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74,
983	0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
984	0x01, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x77,
985	0x0a, 0x16, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x74,
986	0x72, 0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c,
987	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69,
988	0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31,
989	0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79,
990	0x70, 0x65, 0x73, 0x54, 0x72, 0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41,
991	0x01, 0x52, 0x14, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x54, 0x72,
992	0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69,
993	0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08,
994	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x61,
995	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0,
996	0x41, 0x01, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12,
997	0x50, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
998	0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
999	0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76,
1000	0x31, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
1001	0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
1002	0x73, 0x12, 0x5f, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x5f, 0x70, 0x65,
1003	0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f,
1004	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e,
1005	0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c,
1006	0x65, 0x6e, 0x64, 0x61, 0x72, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x01,
1007	0x48, 0x00, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x50, 0x65, 0x72, 0x69,
1008	0x6f, 0x64, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x65, 0x72,
1009	0x69, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
1010	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67,
1011	0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74,
1012	0x6f, 0x6d, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52,
1013	0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0x55, 0x0a,
1014	0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
1015	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30,
1016	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
1017	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
1018	0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
1019	0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x54,
1020	0x79, 0x70, 0x65, 0x73, 0x54, 0x72, 0x65, 0x61, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a,
1021	0x22, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x53, 0x5f, 0x54, 0x52,
1022	0x45, 0x41, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
1023	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45,
1024	0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x53, 0x10, 0x01, 0x12, 0x17,
1025	0x0a, 0x13, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x43, 0x52,
1026	0x45, 0x44, 0x49, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x43, 0x4c, 0x55,
1027	0x44, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x43, 0x52, 0x45,
1028	0x44, 0x49, 0x54, 0x53, 0x10, 0x03, 0x42, 0x0e, 0x0a, 0x0c, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f,
1029	0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x78, 0x0a, 0x0c, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
1030	0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
1031	0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f,
1032	0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0,
1033	0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a,
1034	0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
1035	0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61,
1036	0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65,
1037	0x2a, 0x53, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x50, 0x65, 0x72, 0x69,
1038	0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x41, 0x4c, 0x45, 0x4e, 0x44, 0x41, 0x52, 0x5f, 0x50,
1039	0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
1040	0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x01, 0x12, 0x0b,
1041	0x0a, 0x07, 0x51, 0x55, 0x41, 0x52, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x59,
1042	0x45, 0x41, 0x52, 0x10, 0x03, 0x42, 0x81, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
1043	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x6c, 0x6c, 0x69,
1044	0x6e, 0x67, 0x2e, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x42,
1045	0x75, 0x64, 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
1046	0x01, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
1047	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,
1048	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62,
1049	0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x2f, 0x76,
1050	0x31, 0x3b, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1051	0x33,
1052}
1053
1054var (
1055	file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescOnce sync.Once
1056	file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescData = file_google_cloud_billing_budgets_v1_budget_model_proto_rawDesc
1057)
1058
1059func file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescGZIP() []byte {
1060	file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescOnce.Do(func() {
1061		file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescData)
1062	})
1063	return file_google_cloud_billing_budgets_v1_budget_model_proto_rawDescData
1064}
1065
1066var file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
1067var file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
1068var file_google_cloud_billing_budgets_v1_budget_model_proto_goTypes = []interface{}{
1069	(CalendarPeriod)(0),              // 0: google.cloud.billing.budgets.v1.CalendarPeriod
1070	(ThresholdRule_Basis)(0),         // 1: google.cloud.billing.budgets.v1.ThresholdRule.Basis
1071	(Filter_CreditTypesTreatment)(0), // 2: google.cloud.billing.budgets.v1.Filter.CreditTypesTreatment
1072	(*Budget)(nil),                   // 3: google.cloud.billing.budgets.v1.Budget
1073	(*BudgetAmount)(nil),             // 4: google.cloud.billing.budgets.v1.BudgetAmount
1074	(*LastPeriodAmount)(nil),         // 5: google.cloud.billing.budgets.v1.LastPeriodAmount
1075	(*ThresholdRule)(nil),            // 6: google.cloud.billing.budgets.v1.ThresholdRule
1076	(*NotificationsRule)(nil),        // 7: google.cloud.billing.budgets.v1.NotificationsRule
1077	(*Filter)(nil),                   // 8: google.cloud.billing.budgets.v1.Filter
1078	(*CustomPeriod)(nil),             // 9: google.cloud.billing.budgets.v1.CustomPeriod
1079	nil,                              // 10: google.cloud.billing.budgets.v1.Filter.LabelsEntry
1080	(*money.Money)(nil),              // 11: google.type.Money
1081	(*date.Date)(nil),                // 12: google.type.Date
1082	(*structpb.ListValue)(nil),       // 13: google.protobuf.ListValue
1083}
1084var file_google_cloud_billing_budgets_v1_budget_model_proto_depIdxs = []int32{
1085	8,  // 0: google.cloud.billing.budgets.v1.Budget.budget_filter:type_name -> google.cloud.billing.budgets.v1.Filter
1086	4,  // 1: google.cloud.billing.budgets.v1.Budget.amount:type_name -> google.cloud.billing.budgets.v1.BudgetAmount
1087	6,  // 2: google.cloud.billing.budgets.v1.Budget.threshold_rules:type_name -> google.cloud.billing.budgets.v1.ThresholdRule
1088	7,  // 3: google.cloud.billing.budgets.v1.Budget.notifications_rule:type_name -> google.cloud.billing.budgets.v1.NotificationsRule
1089	11, // 4: google.cloud.billing.budgets.v1.BudgetAmount.specified_amount:type_name -> google.type.Money
1090	5,  // 5: google.cloud.billing.budgets.v1.BudgetAmount.last_period_amount:type_name -> google.cloud.billing.budgets.v1.LastPeriodAmount
1091	1,  // 6: google.cloud.billing.budgets.v1.ThresholdRule.spend_basis:type_name -> google.cloud.billing.budgets.v1.ThresholdRule.Basis
1092	2,  // 7: google.cloud.billing.budgets.v1.Filter.credit_types_treatment:type_name -> google.cloud.billing.budgets.v1.Filter.CreditTypesTreatment
1093	10, // 8: google.cloud.billing.budgets.v1.Filter.labels:type_name -> google.cloud.billing.budgets.v1.Filter.LabelsEntry
1094	0,  // 9: google.cloud.billing.budgets.v1.Filter.calendar_period:type_name -> google.cloud.billing.budgets.v1.CalendarPeriod
1095	9,  // 10: google.cloud.billing.budgets.v1.Filter.custom_period:type_name -> google.cloud.billing.budgets.v1.CustomPeriod
1096	12, // 11: google.cloud.billing.budgets.v1.CustomPeriod.start_date:type_name -> google.type.Date
1097	12, // 12: google.cloud.billing.budgets.v1.CustomPeriod.end_date:type_name -> google.type.Date
1098	13, // 13: google.cloud.billing.budgets.v1.Filter.LabelsEntry.value:type_name -> google.protobuf.ListValue
1099	14, // [14:14] is the sub-list for method output_type
1100	14, // [14:14] is the sub-list for method input_type
1101	14, // [14:14] is the sub-list for extension type_name
1102	14, // [14:14] is the sub-list for extension extendee
1103	0,  // [0:14] is the sub-list for field type_name
1104}
1105
1106func init() { file_google_cloud_billing_budgets_v1_budget_model_proto_init() }
1107func file_google_cloud_billing_budgets_v1_budget_model_proto_init() {
1108	if File_google_cloud_billing_budgets_v1_budget_model_proto != nil {
1109		return
1110	}
1111	if !protoimpl.UnsafeEnabled {
1112		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
1113			switch v := v.(*Budget); i {
1114			case 0:
1115				return &v.state
1116			case 1:
1117				return &v.sizeCache
1118			case 2:
1119				return &v.unknownFields
1120			default:
1121				return nil
1122			}
1123		}
1124		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
1125			switch v := v.(*BudgetAmount); i {
1126			case 0:
1127				return &v.state
1128			case 1:
1129				return &v.sizeCache
1130			case 2:
1131				return &v.unknownFields
1132			default:
1133				return nil
1134			}
1135		}
1136		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
1137			switch v := v.(*LastPeriodAmount); i {
1138			case 0:
1139				return &v.state
1140			case 1:
1141				return &v.sizeCache
1142			case 2:
1143				return &v.unknownFields
1144			default:
1145				return nil
1146			}
1147		}
1148		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
1149			switch v := v.(*ThresholdRule); i {
1150			case 0:
1151				return &v.state
1152			case 1:
1153				return &v.sizeCache
1154			case 2:
1155				return &v.unknownFields
1156			default:
1157				return nil
1158			}
1159		}
1160		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
1161			switch v := v.(*NotificationsRule); i {
1162			case 0:
1163				return &v.state
1164			case 1:
1165				return &v.sizeCache
1166			case 2:
1167				return &v.unknownFields
1168			default:
1169				return nil
1170			}
1171		}
1172		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
1173			switch v := v.(*Filter); i {
1174			case 0:
1175				return &v.state
1176			case 1:
1177				return &v.sizeCache
1178			case 2:
1179				return &v.unknownFields
1180			default:
1181				return nil
1182			}
1183		}
1184		file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
1185			switch v := v.(*CustomPeriod); i {
1186			case 0:
1187				return &v.state
1188			case 1:
1189				return &v.sizeCache
1190			case 2:
1191				return &v.unknownFields
1192			default:
1193				return nil
1194			}
1195		}
1196	}
1197	file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[1].OneofWrappers = []interface{}{
1198		(*BudgetAmount_SpecifiedAmount)(nil),
1199		(*BudgetAmount_LastPeriodAmount)(nil),
1200	}
1201	file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes[5].OneofWrappers = []interface{}{
1202		(*Filter_CalendarPeriod)(nil),
1203		(*Filter_CustomPeriod)(nil),
1204	}
1205	type x struct{}
1206	out := protoimpl.TypeBuilder{
1207		File: protoimpl.DescBuilder{
1208			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1209			RawDescriptor: file_google_cloud_billing_budgets_v1_budget_model_proto_rawDesc,
1210			NumEnums:      3,
1211			NumMessages:   8,
1212			NumExtensions: 0,
1213			NumServices:   0,
1214		},
1215		GoTypes:           file_google_cloud_billing_budgets_v1_budget_model_proto_goTypes,
1216		DependencyIndexes: file_google_cloud_billing_budgets_v1_budget_model_proto_depIdxs,
1217		EnumInfos:         file_google_cloud_billing_budgets_v1_budget_model_proto_enumTypes,
1218		MessageInfos:      file_google_cloud_billing_budgets_v1_budget_model_proto_msgTypes,
1219	}.Build()
1220	File_google_cloud_billing_budgets_v1_budget_model_proto = out.File
1221	file_google_cloud_billing_budgets_v1_budget_model_proto_rawDesc = nil
1222	file_google_cloud_billing_budgets_v1_budget_model_proto_goTypes = nil
1223	file_google_cloud_billing_budgets_v1_budget_model_proto_depIdxs = nil
1224}
1225