// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v0/resources/account_budget_proposal.proto

package resources // import "google.golang.org/genproto/googleapis/ads/googleads/v0/resources"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import wrappers "github.com/golang/protobuf/ptypes/wrappers"
import enums "google.golang.org/genproto/googleapis/ads/googleads/v0/enums"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

// An account-level budget proposal.
//
// All fields prefixed with 'proposed' may not necessarily be applied directly.
// For example, proposed spending limits may be adjusted before their
// application.  This is true if the 'proposed' field has an 'approved'
// counterpart, e.g. spending limits.
//
// Please note that the proposal type (proposal_type) changes which fields are
// required and which must remain empty.
type AccountBudgetProposal struct {
	// The resource name of the proposal.
	// AccountBudgetProposal resource names have the form:
	//
	//
	// `customers/{customer_id}/accountBudgetProposals/{account_budget_proposal_id}`
	ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	// The ID of the proposal.
	Id *wrappers.Int64Value `protobuf:"bytes,14,opt,name=id,proto3" json:"id,omitempty"`
	// The resource name of the billing setup associated with this proposal.
	BillingSetup *wrappers.StringValue `protobuf:"bytes,2,opt,name=billing_setup,json=billingSetup,proto3" json:"billing_setup,omitempty"`
	// The resource name of the account-level budget associated with this
	// proposal.
	AccountBudget *wrappers.StringValue `protobuf:"bytes,3,opt,name=account_budget,json=accountBudget,proto3" json:"account_budget,omitempty"`
	// The type of this proposal, e.g. END to end the budget associated with this
	// proposal.
	ProposalType enums.AccountBudgetProposalTypeEnum_AccountBudgetProposalType `protobuf:"varint,4,opt,name=proposal_type,json=proposalType,proto3,enum=google.ads.googleads.v0.enums.AccountBudgetProposalTypeEnum_AccountBudgetProposalType" json:"proposal_type,omitempty"`
	// The status of this proposal.
	// When a new proposal is created, the status defaults to PENDING.
	Status enums.AccountBudgetProposalStatusEnum_AccountBudgetProposalStatus `protobuf:"varint,15,opt,name=status,proto3,enum=google.ads.googleads.v0.enums.AccountBudgetProposalStatusEnum_AccountBudgetProposalStatus" json:"status,omitempty"`
	// The name to assign to the account-level budget.
	ProposedName *wrappers.StringValue `protobuf:"bytes,5,opt,name=proposed_name,json=proposedName,proto3" json:"proposed_name,omitempty"`
	// The approved start date time in yyyy-mm-dd hh:mm:ss format.
	ApprovedStartDateTime *wrappers.StringValue `protobuf:"bytes,20,opt,name=approved_start_date_time,json=approvedStartDateTime,proto3" json:"approved_start_date_time,omitempty"`
	// A purchase order number is a value that enables the user to help them
	// reference this budget in their monthly invoices.
	ProposedPurchaseOrderNumber *wrappers.StringValue `protobuf:"bytes,12,opt,name=proposed_purchase_order_number,json=proposedPurchaseOrderNumber,proto3" json:"proposed_purchase_order_number,omitempty"`
	// Notes associated with this budget.
	ProposedNotes *wrappers.StringValue `protobuf:"bytes,13,opt,name=proposed_notes,json=proposedNotes,proto3" json:"proposed_notes,omitempty"`
	// The date time when this account-level budget proposal was created, which is
	// not the same as its approval date time, if applicable.
	CreationDateTime *wrappers.StringValue `protobuf:"bytes,16,opt,name=creation_date_time,json=creationDateTime,proto3" json:"creation_date_time,omitempty"`
	// The date time when this account-level budget was approved, if applicable.
	ApprovalDateTime *wrappers.StringValue `protobuf:"bytes,17,opt,name=approval_date_time,json=approvalDateTime,proto3" json:"approval_date_time,omitempty"`
	// The proposed start date time of the account-level budget, which cannot be
	// in the past.
	//
	// Types that are valid to be assigned to ProposedStartTime:
	//	*AccountBudgetProposal_ProposedStartDateTime
	//	*AccountBudgetProposal_ProposedStartTimeType
	ProposedStartTime isAccountBudgetProposal_ProposedStartTime `protobuf_oneof:"proposed_start_time"`
	// The proposed end date time of the account-level budget, which cannot be in
	// the past.
	//
	// Types that are valid to be assigned to ProposedEndTime:
	//	*AccountBudgetProposal_ProposedEndDateTime
	//	*AccountBudgetProposal_ProposedEndTimeType
	ProposedEndTime isAccountBudgetProposal_ProposedEndTime `protobuf_oneof:"proposed_end_time"`
	// The approved end date time of the account-level budget.
	//
	// Types that are valid to be assigned to ApprovedEndTime:
	//	*AccountBudgetProposal_ApprovedEndDateTime
	//	*AccountBudgetProposal_ApprovedEndTimeType
	ApprovedEndTime isAccountBudgetProposal_ApprovedEndTime `protobuf_oneof:"approved_end_time"`
	// The proposed spending limit.
	//
	// Types that are valid to be assigned to ProposedSpendingLimit:
	//	*AccountBudgetProposal_ProposedSpendingLimitMicros
	//	*AccountBudgetProposal_ProposedSpendingLimitType
	ProposedSpendingLimit isAccountBudgetProposal_ProposedSpendingLimit `protobuf_oneof:"proposed_spending_limit"`
	// The approved spending limit.
	//
	// Types that are valid to be assigned to ApprovedSpendingLimit:
	//	*AccountBudgetProposal_ApprovedSpendingLimitMicros
	//	*AccountBudgetProposal_ApprovedSpendingLimitType
	ApprovedSpendingLimit isAccountBudgetProposal_ApprovedSpendingLimit `protobuf_oneof:"approved_spending_limit"`
	XXX_NoUnkeyedLiteral  struct{}                                      `json:"-"`
	XXX_unrecognized      []byte                                        `json:"-"`
	XXX_sizecache         int32                                         `json:"-"`
}

func (m *AccountBudgetProposal) Reset()         { *m = AccountBudgetProposal{} }
func (m *AccountBudgetProposal) String() string { return proto.CompactTextString(m) }
func (*AccountBudgetProposal) ProtoMessage()    {}
func (*AccountBudgetProposal) Descriptor() ([]byte, []int) {
	return fileDescriptor_account_budget_proposal_13bbb9bf380a278c, []int{0}
}
func (m *AccountBudgetProposal) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_AccountBudgetProposal.Unmarshal(m, b)
}
func (m *AccountBudgetProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_AccountBudgetProposal.Marshal(b, m, deterministic)
}
func (dst *AccountBudgetProposal) XXX_Merge(src proto.Message) {
	xxx_messageInfo_AccountBudgetProposal.Merge(dst, src)
}
func (m *AccountBudgetProposal) XXX_Size() int {
	return xxx_messageInfo_AccountBudgetProposal.Size(m)
}
func (m *AccountBudgetProposal) XXX_DiscardUnknown() {
	xxx_messageInfo_AccountBudgetProposal.DiscardUnknown(m)
}

var xxx_messageInfo_AccountBudgetProposal proto.InternalMessageInfo

func (m *AccountBudgetProposal) GetResourceName() string {
	if m != nil {
		return m.ResourceName
	}
	return ""
}

func (m *AccountBudgetProposal) GetId() *wrappers.Int64Value {
	if m != nil {
		return m.Id
	}
	return nil
}

func (m *AccountBudgetProposal) GetBillingSetup() *wrappers.StringValue {
	if m != nil {
		return m.BillingSetup
	}
	return nil
}

func (m *AccountBudgetProposal) GetAccountBudget() *wrappers.StringValue {
	if m != nil {
		return m.AccountBudget
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposalType() enums.AccountBudgetProposalTypeEnum_AccountBudgetProposalType {
	if m != nil {
		return m.ProposalType
	}
	return enums.AccountBudgetProposalTypeEnum_UNSPECIFIED
}

func (m *AccountBudgetProposal) GetStatus() enums.AccountBudgetProposalStatusEnum_AccountBudgetProposalStatus {
	if m != nil {
		return m.Status
	}
	return enums.AccountBudgetProposalStatusEnum_UNSPECIFIED
}

func (m *AccountBudgetProposal) GetProposedName() *wrappers.StringValue {
	if m != nil {
		return m.ProposedName
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovedStartDateTime() *wrappers.StringValue {
	if m != nil {
		return m.ApprovedStartDateTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedPurchaseOrderNumber() *wrappers.StringValue {
	if m != nil {
		return m.ProposedPurchaseOrderNumber
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedNotes() *wrappers.StringValue {
	if m != nil {
		return m.ProposedNotes
	}
	return nil
}

func (m *AccountBudgetProposal) GetCreationDateTime() *wrappers.StringValue {
	if m != nil {
		return m.CreationDateTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovalDateTime() *wrappers.StringValue {
	if m != nil {
		return m.ApprovalDateTime
	}
	return nil
}

type isAccountBudgetProposal_ProposedStartTime interface {
	isAccountBudgetProposal_ProposedStartTime()
}

type AccountBudgetProposal_ProposedStartDateTime struct {
	ProposedStartDateTime *wrappers.StringValue `protobuf:"bytes,18,opt,name=proposed_start_date_time,json=proposedStartDateTime,proto3,oneof"`
}

type AccountBudgetProposal_ProposedStartTimeType struct {
	ProposedStartTimeType enums.TimeTypeEnum_TimeType `protobuf:"varint,7,opt,name=proposed_start_time_type,json=proposedStartTimeType,proto3,enum=google.ads.googleads.v0.enums.TimeTypeEnum_TimeType,oneof"`
}

func (*AccountBudgetProposal_ProposedStartDateTime) isAccountBudgetProposal_ProposedStartTime() {}

func (*AccountBudgetProposal_ProposedStartTimeType) isAccountBudgetProposal_ProposedStartTime() {}

func (m *AccountBudgetProposal) GetProposedStartTime() isAccountBudgetProposal_ProposedStartTime {
	if m != nil {
		return m.ProposedStartTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedStartDateTime() *wrappers.StringValue {
	if x, ok := m.GetProposedStartTime().(*AccountBudgetProposal_ProposedStartDateTime); ok {
		return x.ProposedStartDateTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedStartTimeType() enums.TimeTypeEnum_TimeType {
	if x, ok := m.GetProposedStartTime().(*AccountBudgetProposal_ProposedStartTimeType); ok {
		return x.ProposedStartTimeType
	}
	return enums.TimeTypeEnum_UNSPECIFIED
}

type isAccountBudgetProposal_ProposedEndTime interface {
	isAccountBudgetProposal_ProposedEndTime()
}

type AccountBudgetProposal_ProposedEndDateTime struct {
	ProposedEndDateTime *wrappers.StringValue `protobuf:"bytes,19,opt,name=proposed_end_date_time,json=proposedEndDateTime,proto3,oneof"`
}

type AccountBudgetProposal_ProposedEndTimeType struct {
	ProposedEndTimeType enums.TimeTypeEnum_TimeType `protobuf:"varint,9,opt,name=proposed_end_time_type,json=proposedEndTimeType,proto3,enum=google.ads.googleads.v0.enums.TimeTypeEnum_TimeType,oneof"`
}

func (*AccountBudgetProposal_ProposedEndDateTime) isAccountBudgetProposal_ProposedEndTime() {}

func (*AccountBudgetProposal_ProposedEndTimeType) isAccountBudgetProposal_ProposedEndTime() {}

func (m *AccountBudgetProposal) GetProposedEndTime() isAccountBudgetProposal_ProposedEndTime {
	if m != nil {
		return m.ProposedEndTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedEndDateTime() *wrappers.StringValue {
	if x, ok := m.GetProposedEndTime().(*AccountBudgetProposal_ProposedEndDateTime); ok {
		return x.ProposedEndDateTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedEndTimeType() enums.TimeTypeEnum_TimeType {
	if x, ok := m.GetProposedEndTime().(*AccountBudgetProposal_ProposedEndTimeType); ok {
		return x.ProposedEndTimeType
	}
	return enums.TimeTypeEnum_UNSPECIFIED
}

type isAccountBudgetProposal_ApprovedEndTime interface {
	isAccountBudgetProposal_ApprovedEndTime()
}

type AccountBudgetProposal_ApprovedEndDateTime struct {
	ApprovedEndDateTime *wrappers.StringValue `protobuf:"bytes,21,opt,name=approved_end_date_time,json=approvedEndDateTime,proto3,oneof"`
}

type AccountBudgetProposal_ApprovedEndTimeType struct {
	ApprovedEndTimeType enums.TimeTypeEnum_TimeType `protobuf:"varint,22,opt,name=approved_end_time_type,json=approvedEndTimeType,proto3,enum=google.ads.googleads.v0.enums.TimeTypeEnum_TimeType,oneof"`
}

func (*AccountBudgetProposal_ApprovedEndDateTime) isAccountBudgetProposal_ApprovedEndTime() {}

func (*AccountBudgetProposal_ApprovedEndTimeType) isAccountBudgetProposal_ApprovedEndTime() {}

func (m *AccountBudgetProposal) GetApprovedEndTime() isAccountBudgetProposal_ApprovedEndTime {
	if m != nil {
		return m.ApprovedEndTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovedEndDateTime() *wrappers.StringValue {
	if x, ok := m.GetApprovedEndTime().(*AccountBudgetProposal_ApprovedEndDateTime); ok {
		return x.ApprovedEndDateTime
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovedEndTimeType() enums.TimeTypeEnum_TimeType {
	if x, ok := m.GetApprovedEndTime().(*AccountBudgetProposal_ApprovedEndTimeType); ok {
		return x.ApprovedEndTimeType
	}
	return enums.TimeTypeEnum_UNSPECIFIED
}

type isAccountBudgetProposal_ProposedSpendingLimit interface {
	isAccountBudgetProposal_ProposedSpendingLimit()
}

type AccountBudgetProposal_ProposedSpendingLimitMicros struct {
	ProposedSpendingLimitMicros *wrappers.Int64Value `protobuf:"bytes,10,opt,name=proposed_spending_limit_micros,json=proposedSpendingLimitMicros,proto3,oneof"`
}

type AccountBudgetProposal_ProposedSpendingLimitType struct {
	ProposedSpendingLimitType enums.SpendingLimitTypeEnum_SpendingLimitType `protobuf:"varint,11,opt,name=proposed_spending_limit_type,json=proposedSpendingLimitType,proto3,enum=google.ads.googleads.v0.enums.SpendingLimitTypeEnum_SpendingLimitType,oneof"`
}

func (*AccountBudgetProposal_ProposedSpendingLimitMicros) isAccountBudgetProposal_ProposedSpendingLimit() {
}

func (*AccountBudgetProposal_ProposedSpendingLimitType) isAccountBudgetProposal_ProposedSpendingLimit() {
}

func (m *AccountBudgetProposal) GetProposedSpendingLimit() isAccountBudgetProposal_ProposedSpendingLimit {
	if m != nil {
		return m.ProposedSpendingLimit
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedSpendingLimitMicros() *wrappers.Int64Value {
	if x, ok := m.GetProposedSpendingLimit().(*AccountBudgetProposal_ProposedSpendingLimitMicros); ok {
		return x.ProposedSpendingLimitMicros
	}
	return nil
}

func (m *AccountBudgetProposal) GetProposedSpendingLimitType() enums.SpendingLimitTypeEnum_SpendingLimitType {
	if x, ok := m.GetProposedSpendingLimit().(*AccountBudgetProposal_ProposedSpendingLimitType); ok {
		return x.ProposedSpendingLimitType
	}
	return enums.SpendingLimitTypeEnum_UNSPECIFIED
}

type isAccountBudgetProposal_ApprovedSpendingLimit interface {
	isAccountBudgetProposal_ApprovedSpendingLimit()
}

type AccountBudgetProposal_ApprovedSpendingLimitMicros struct {
	ApprovedSpendingLimitMicros *wrappers.Int64Value `protobuf:"bytes,23,opt,name=approved_spending_limit_micros,json=approvedSpendingLimitMicros,proto3,oneof"`
}

type AccountBudgetProposal_ApprovedSpendingLimitType struct {
	ApprovedSpendingLimitType enums.SpendingLimitTypeEnum_SpendingLimitType `protobuf:"varint,24,opt,name=approved_spending_limit_type,json=approvedSpendingLimitType,proto3,enum=google.ads.googleads.v0.enums.SpendingLimitTypeEnum_SpendingLimitType,oneof"`
}

func (*AccountBudgetProposal_ApprovedSpendingLimitMicros) isAccountBudgetProposal_ApprovedSpendingLimit() {
}

func (*AccountBudgetProposal_ApprovedSpendingLimitType) isAccountBudgetProposal_ApprovedSpendingLimit() {
}

func (m *AccountBudgetProposal) GetApprovedSpendingLimit() isAccountBudgetProposal_ApprovedSpendingLimit {
	if m != nil {
		return m.ApprovedSpendingLimit
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovedSpendingLimitMicros() *wrappers.Int64Value {
	if x, ok := m.GetApprovedSpendingLimit().(*AccountBudgetProposal_ApprovedSpendingLimitMicros); ok {
		return x.ApprovedSpendingLimitMicros
	}
	return nil
}

func (m *AccountBudgetProposal) GetApprovedSpendingLimitType() enums.SpendingLimitTypeEnum_SpendingLimitType {
	if x, ok := m.GetApprovedSpendingLimit().(*AccountBudgetProposal_ApprovedSpendingLimitType); ok {
		return x.ApprovedSpendingLimitType
	}
	return enums.SpendingLimitTypeEnum_UNSPECIFIED
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*AccountBudgetProposal) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _AccountBudgetProposal_OneofMarshaler, _AccountBudgetProposal_OneofUnmarshaler, _AccountBudgetProposal_OneofSizer, []interface{}{
		(*AccountBudgetProposal_ProposedStartDateTime)(nil),
		(*AccountBudgetProposal_ProposedStartTimeType)(nil),
		(*AccountBudgetProposal_ProposedEndDateTime)(nil),
		(*AccountBudgetProposal_ProposedEndTimeType)(nil),
		(*AccountBudgetProposal_ApprovedEndDateTime)(nil),
		(*AccountBudgetProposal_ApprovedEndTimeType)(nil),
		(*AccountBudgetProposal_ProposedSpendingLimitMicros)(nil),
		(*AccountBudgetProposal_ProposedSpendingLimitType)(nil),
		(*AccountBudgetProposal_ApprovedSpendingLimitMicros)(nil),
		(*AccountBudgetProposal_ApprovedSpendingLimitType)(nil),
	}
}

func _AccountBudgetProposal_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*AccountBudgetProposal)
	// proposed_start_time
	switch x := m.ProposedStartTime.(type) {
	case *AccountBudgetProposal_ProposedStartDateTime:
		b.EncodeVarint(18<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ProposedStartDateTime); err != nil {
			return err
		}
	case *AccountBudgetProposal_ProposedStartTimeType:
		b.EncodeVarint(7<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ProposedStartTimeType))
	case nil:
	default:
		return fmt.Errorf("AccountBudgetProposal.ProposedStartTime has unexpected type %T", x)
	}
	// proposed_end_time
	switch x := m.ProposedEndTime.(type) {
	case *AccountBudgetProposal_ProposedEndDateTime:
		b.EncodeVarint(19<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ProposedEndDateTime); err != nil {
			return err
		}
	case *AccountBudgetProposal_ProposedEndTimeType:
		b.EncodeVarint(9<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ProposedEndTimeType))
	case nil:
	default:
		return fmt.Errorf("AccountBudgetProposal.ProposedEndTime has unexpected type %T", x)
	}
	// approved_end_time
	switch x := m.ApprovedEndTime.(type) {
	case *AccountBudgetProposal_ApprovedEndDateTime:
		b.EncodeVarint(21<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ApprovedEndDateTime); err != nil {
			return err
		}
	case *AccountBudgetProposal_ApprovedEndTimeType:
		b.EncodeVarint(22<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ApprovedEndTimeType))
	case nil:
	default:
		return fmt.Errorf("AccountBudgetProposal.ApprovedEndTime has unexpected type %T", x)
	}
	// proposed_spending_limit
	switch x := m.ProposedSpendingLimit.(type) {
	case *AccountBudgetProposal_ProposedSpendingLimitMicros:
		b.EncodeVarint(10<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ProposedSpendingLimitMicros); err != nil {
			return err
		}
	case *AccountBudgetProposal_ProposedSpendingLimitType:
		b.EncodeVarint(11<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ProposedSpendingLimitType))
	case nil:
	default:
		return fmt.Errorf("AccountBudgetProposal.ProposedSpendingLimit has unexpected type %T", x)
	}
	// approved_spending_limit
	switch x := m.ApprovedSpendingLimit.(type) {
	case *AccountBudgetProposal_ApprovedSpendingLimitMicros:
		b.EncodeVarint(23<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.ApprovedSpendingLimitMicros); err != nil {
			return err
		}
	case *AccountBudgetProposal_ApprovedSpendingLimitType:
		b.EncodeVarint(24<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.ApprovedSpendingLimitType))
	case nil:
	default:
		return fmt.Errorf("AccountBudgetProposal.ApprovedSpendingLimit has unexpected type %T", x)
	}
	return nil
}

func _AccountBudgetProposal_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*AccountBudgetProposal)
	switch tag {
	case 18: // proposed_start_time.proposed_start_date_time
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(wrappers.StringValue)
		err := b.DecodeMessage(msg)
		m.ProposedStartTime = &AccountBudgetProposal_ProposedStartDateTime{msg}
		return true, err
	case 7: // proposed_start_time.proposed_start_time_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.ProposedStartTime = &AccountBudgetProposal_ProposedStartTimeType{enums.TimeTypeEnum_TimeType(x)}
		return true, err
	case 19: // proposed_end_time.proposed_end_date_time
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(wrappers.StringValue)
		err := b.DecodeMessage(msg)
		m.ProposedEndTime = &AccountBudgetProposal_ProposedEndDateTime{msg}
		return true, err
	case 9: // proposed_end_time.proposed_end_time_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.ProposedEndTime = &AccountBudgetProposal_ProposedEndTimeType{enums.TimeTypeEnum_TimeType(x)}
		return true, err
	case 21: // approved_end_time.approved_end_date_time
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(wrappers.StringValue)
		err := b.DecodeMessage(msg)
		m.ApprovedEndTime = &AccountBudgetProposal_ApprovedEndDateTime{msg}
		return true, err
	case 22: // approved_end_time.approved_end_time_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.ApprovedEndTime = &AccountBudgetProposal_ApprovedEndTimeType{enums.TimeTypeEnum_TimeType(x)}
		return true, err
	case 10: // proposed_spending_limit.proposed_spending_limit_micros
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(wrappers.Int64Value)
		err := b.DecodeMessage(msg)
		m.ProposedSpendingLimit = &AccountBudgetProposal_ProposedSpendingLimitMicros{msg}
		return true, err
	case 11: // proposed_spending_limit.proposed_spending_limit_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.ProposedSpendingLimit = &AccountBudgetProposal_ProposedSpendingLimitType{enums.SpendingLimitTypeEnum_SpendingLimitType(x)}
		return true, err
	case 23: // approved_spending_limit.approved_spending_limit_micros
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(wrappers.Int64Value)
		err := b.DecodeMessage(msg)
		m.ApprovedSpendingLimit = &AccountBudgetProposal_ApprovedSpendingLimitMicros{msg}
		return true, err
	case 24: // approved_spending_limit.approved_spending_limit_type
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.ApprovedSpendingLimit = &AccountBudgetProposal_ApprovedSpendingLimitType{enums.SpendingLimitTypeEnum_SpendingLimitType(x)}
		return true, err
	default:
		return false, nil
	}
}

func _AccountBudgetProposal_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*AccountBudgetProposal)
	// proposed_start_time
	switch x := m.ProposedStartTime.(type) {
	case *AccountBudgetProposal_ProposedStartDateTime:
		s := proto.Size(x.ProposedStartDateTime)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *AccountBudgetProposal_ProposedStartTimeType:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(x.ProposedStartTimeType))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// proposed_end_time
	switch x := m.ProposedEndTime.(type) {
	case *AccountBudgetProposal_ProposedEndDateTime:
		s := proto.Size(x.ProposedEndDateTime)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *AccountBudgetProposal_ProposedEndTimeType:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(x.ProposedEndTimeType))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// approved_end_time
	switch x := m.ApprovedEndTime.(type) {
	case *AccountBudgetProposal_ApprovedEndDateTime:
		s := proto.Size(x.ApprovedEndDateTime)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *AccountBudgetProposal_ApprovedEndTimeType:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.ApprovedEndTimeType))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// proposed_spending_limit
	switch x := m.ProposedSpendingLimit.(type) {
	case *AccountBudgetProposal_ProposedSpendingLimitMicros:
		s := proto.Size(x.ProposedSpendingLimitMicros)
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *AccountBudgetProposal_ProposedSpendingLimitType:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(x.ProposedSpendingLimitType))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// approved_spending_limit
	switch x := m.ApprovedSpendingLimit.(type) {
	case *AccountBudgetProposal_ApprovedSpendingLimitMicros:
		s := proto.Size(x.ApprovedSpendingLimitMicros)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *AccountBudgetProposal_ApprovedSpendingLimitType:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.ApprovedSpendingLimitType))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

func init() {
	proto.RegisterType((*AccountBudgetProposal)(nil), "google.ads.googleads.v0.resources.AccountBudgetProposal")
}

func init() {
	proto.RegisterFile("google/ads/googleads/v0/resources/account_budget_proposal.proto", fileDescriptor_account_budget_proposal_13bbb9bf380a278c)
}

var fileDescriptor_account_budget_proposal_13bbb9bf380a278c = []byte{
	// 830 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xdf, 0x6e, 0xdb, 0x36,
	0x14, 0xc6, 0x67, 0x39, 0xcb, 0x10, 0xc6, 0xce, 0x12, 0x79, 0x4e, 0x94, 0x3f, 0x08, 0x92, 0x0d,
	0x01, 0x02, 0x0c, 0x93, 0x8d, 0x2c, 0xd8, 0x00, 0xed, 0x62, 0xb3, 0xb7, 0x2c, 0x59, 0xb0, 0xa6,
	0x86, 0x9c, 0xba, 0x40, 0x60, 0x40, 0xa0, 0x2d, 0x56, 0x15, 0x2a, 0x89, 0x02, 0x49, 0xa5, 0x08,
	0xfa, 0x00, 0x45, 0x5f, 0xa3, 0x97, 0x7d, 0x94, 0xbe, 0x45, 0x6f, 0xfb, 0x14, 0x05, 0x25, 0x91,
	0x96, 0x6c, 0x2b, 0x16, 0x92, 0xde, 0x51, 0x22, 0xbf, 0xef, 0x9c, 0xdf, 0xe1, 0x21, 0x25, 0xf0,
	0xa7, 0x83, 0xb1, 0xe3, 0xa1, 0x16, 0xb4, 0x69, 0x2b, 0x19, 0xf2, 0xd1, 0x6d, 0xbb, 0x45, 0x10,
	0xc5, 0x11, 0x19, 0x23, 0xda, 0x82, 0xe3, 0x31, 0x8e, 0x02, 0x66, 0x8d, 0x22, 0xdb, 0x41, 0xcc,
	0x0a, 0x09, 0x0e, 0x31, 0x85, 0x9e, 0x1e, 0x12, 0xcc, 0xb0, 0x7a, 0x98, 0xa8, 0x74, 0x68, 0x53,
	0x5d, 0x1a, 0xe8, 0xb7, 0x6d, 0x5d, 0x1a, 0xec, 0x74, 0x8b, 0x62, 0xa0, 0x20, 0xf2, 0x0b, 0xfd,
	0x2d, 0xca, 0x20, 0x8b, 0x68, 0x12, 0x66, 0xe7, 0xaf, 0x87, 0x79, 0xb0, 0xbb, 0x10, 0xa5, 0x0e,
	0xbf, 0xdf, 0xef, 0x40, 0x43, 0x14, 0xd8, 0x6e, 0xe0, 0x58, 0x9e, 0xeb, 0xbb, 0x2c, 0x2b, 0xfc,
	0xe5, 0x7e, 0x21, 0x73, 0x7d, 0x94, 0x5d, 0xbe, 0x9f, 0x2e, 0x8f, 0x9f, 0x46, 0xd1, 0x8b, 0xd6,
	0x6b, 0x02, 0xc3, 0x10, 0x91, 0x94, 0xe4, 0xc7, 0x4f, 0xeb, 0xa0, 0xd9, 0x49, 0xd2, 0xed, 0xc6,
	0xd9, 0xf6, 0xd2, 0x64, 0xd5, 0x9f, 0x40, 0x5d, 0x14, 0xcd, 0x0a, 0xa0, 0x8f, 0xb4, 0xca, 0x41,
	0xe5, 0x78, 0xc5, 0xac, 0x89, 0x97, 0x57, 0xd0, 0x47, 0xea, 0xcf, 0x40, 0x71, 0x6d, 0x6d, 0xed,
	0xa0, 0x72, 0xbc, 0x7a, 0xb2, 0x9b, 0x56, 0x5c, 0x17, 0xb1, 0xf4, 0xff, 0x02, 0xf6, 0xdb, 0xe9,
	0x00, 0x7a, 0x11, 0x32, 0x15, 0xd7, 0x56, 0x3b, 0xa0, 0x3e, 0x72, 0x3d, 0x8f, 0x63, 0x51, 0xc4,
	0xa2, 0x50, 0x53, 0x62, 0xdd, 0xde, 0x8c, 0xae, 0xcf, 0x88, 0x1b, 0x38, 0x89, 0xb0, 0x96, 0x4a,
	0xfa, 0x5c, 0xa1, 0xfe, 0x0d, 0xd6, 0xf2, 0xc5, 0xd5, 0xaa, 0x25, 0x3c, 0xea, 0x30, 0x4b, 0xa8,
	0xbe, 0x01, 0xf5, 0xdc, 0x96, 0x68, 0x4b, 0x07, 0x95, 0xe3, 0xb5, 0x93, 0x81, 0x5e, 0xd4, 0x3c,
	0x71, 0x69, 0xf5, 0xb9, 0x65, 0xba, 0xbe, 0x0b, 0xd1, 0x59, 0x10, 0xf9, 0xc5, 0xb3, 0x66, 0x2d,
	0xcc, 0x3c, 0xa9, 0x04, 0x2c, 0x27, 0xad, 0xa4, 0x7d, 0x1f, 0x47, 0xbd, 0x79, 0x48, 0xd4, 0x7e,
	0xec, 0x50, 0x1c, 0x37, 0x99, 0x37, 0xd3, 0x48, 0xbc, 0xf0, 0x49, 0x0e, 0xc8, 0x4e, 0xb6, 0xf2,
	0xdb, 0x32, 0x85, 0x17, 0x92, 0x78, 0xa3, 0x9f, 0x01, 0x0d, 0x86, 0x21, 0xc1, 0xb7, 0xc8, 0xe6,
	0x47, 0x81, 0x30, 0xcb, 0x86, 0x0c, 0x59, 0xbc, 0xdd, 0xb4, 0x1f, 0x4a, 0xb8, 0x35, 0x85, 0xba,
	0xcf, 0xc5, 0xff, 0x40, 0x86, 0xae, 0x5d, 0x1f, 0xa9, 0x10, 0xec, 0xcb, 0xcc, 0xc2, 0x88, 0x8c,
	0x5f, 0x42, 0x8a, 0x2c, 0x4c, 0x6c, 0x44, 0xac, 0x20, 0xf2, 0x47, 0x88, 0x68, 0xb5, 0x12, 0xe6,
	0xbb, 0xc2, 0xa3, 0x97, 0x5a, 0x3c, 0xe5, 0x0e, 0x57, 0xb1, 0x01, 0x6f, 0x99, 0x09, 0x3c, 0x66,
	0x88, 0x6a, 0xf5, 0x32, 0x2d, 0x23, 0xe9, 0xb9, 0x44, 0xbd, 0x04, 0xea, 0x98, 0x20, 0xc8, 0x5c,
	0x1c, 0x64, 0xc0, 0xd7, 0x4b, 0x18, 0xad, 0x0b, 0x9d, 0x64, 0xbe, 0x04, 0x6a, 0x52, 0x0c, 0xe8,
	0x65, 0xbc, 0x36, 0xca, 0x78, 0x09, 0x9d, 0xf4, 0x7a, 0x0e, 0x34, 0x09, 0x37, 0xbd, 0x2d, 0xea,
	0x62, 0xc7, 0x8b, 0x6f, 0xcc, 0xa6, 0xd0, 0xe7, 0x37, 0x06, 0xcf, 0x18, 0xcb, 0x9b, 0x45, 0xfb,
	0x2e, 0x6e, 0xdc, 0xd3, 0x05, 0x8d, 0xcb, 0x6d, 0xe4, 0xe9, 0x10, 0x0f, 0x33, 0x01, 0xc5, 0x84,
	0xda, 0x07, 0x9b, 0x32, 0x20, 0x0a, 0xec, 0x0c, 0x47, 0xa3, 0x04, 0x47, 0xc5, 0x6c, 0x08, 0xf5,
	0x59, 0x60, 0x4b, 0x8a, 0x57, 0x53, 0xa6, 0x13, 0x86, 0x95, 0x47, 0x30, 0xe4, 0x83, 0x65, 0x09,
	0xe4, 0x11, 0xc9, 0x13, 0x34, 0x4b, 0x10, 0x28, 0x66, 0x43, 0xa8, 0xa7, 0x08, 0x72, 0xa6, 0x13,
	0x82, 0xcd, 0x47, 0x10, 0xe4, 0x83, 0x49, 0x82, 0x51, 0xe6, 0x34, 0x4e, 0x7d, 0x81, 0x7c, 0x77,
	0x4c, 0x30, 0xd5, 0xc0, 0xc2, 0x9b, 0xfe, 0xa2, 0x3a, 0x39, 0x8e, 0xfd, 0xd4, 0xe3, 0x7f, 0x6e,
	0xf1, 0x24, 0x76, 0x50, 0xdf, 0x55, 0xc0, 0x5e, 0x51, 0x90, 0x98, 0x6b, 0x35, 0xe6, 0xfa, 0x77,
	0x01, 0x57, 0xce, 0x5a, 0x02, 0xce, 0xbc, 0xbd, 0xa8, 0x9a, 0xdb, 0x73, 0xb3, 0x11, 0xbc, 0x93,
	0x4b, 0x6d, 0x2e, 0xef, 0xd6, 0x62, 0xde, 0x25, 0x73, 0x57, 0xde, 0x6d, 0x05, 0xbc, 0x45, 0x41,
	0x62, 0x5e, 0xed, 0xab, 0xf2, 0x2e, 0x99, 0xdb, 0x73, 0xb3, 0xe1, 0x93, 0xdd, 0x26, 0x68, 0xcc,
	0x39, 0xd4, 0xdd, 0x06, 0xd8, 0x98, 0x39, 0x25, 0xfc, 0xe5, 0x4c, 0xe3, 0x75, 0xb7, 0xc1, 0x56,
	0xc1, 0xde, 0xf1, 0xa9, 0x02, 0xcc, 0xee, 0x5b, 0x05, 0x1c, 0x8d, 0xb1, 0xaf, 0x2f, 0xfc, 0x37,
	0xeb, 0xee, 0xcc, 0xfd, 0x9a, 0xf5, 0x78, 0xd5, 0x7b, 0x95, 0x9b, 0xcb, 0xd4, 0xc0, 0xc1, 0x1e,
	0x0c, 0x1c, 0x1d, 0x13, 0xa7, 0xe5, 0xa0, 0x20, 0xde, 0x13, 0xf1, 0x2b, 0x14, 0xba, 0xf4, 0x9e,
	0x9f, 0xc7, 0x3f, 0xe4, 0xe8, 0xbd, 0x52, 0x3d, 0xef, 0x74, 0x3e, 0x28, 0x87, 0xe7, 0x89, 0x65,
	0xc7, 0xa6, 0x7a, 0x32, 0xe4, 0xa3, 0x41, 0x5b, 0x37, 0xc5, 0xca, 0x8f, 0x62, 0xcd, 0xb0, 0x63,
	0xd3, 0xa1, 0x5c, 0x33, 0x1c, 0xb4, 0x87, 0x72, 0xcd, 0x67, 0xe5, 0x28, 0x99, 0x30, 0x8c, 0x8e,
	0x4d, 0x0d, 0x43, 0xae, 0x32, 0x8c, 0x41, 0xdb, 0x30, 0xe4, 0xba, 0xd1, 0x72, 0x9c, 0xec, 0xaf,
	0x5f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xf2, 0x38, 0x7d, 0xe8, 0x0a, 0x00, 0x00,
}
