// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v4.24.4
// source: google/actions/sdk/v2/files.proto

package sdk

import (
	reflect "reflect"
	sync "sync"

	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

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)
)

// Wrapper for a list of files.
type Files struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Only one type of files can be sent to the server at a time, config files or
	// data files.
	//
	// Types that are assignable to FileType:
	//
	//	*Files_ConfigFiles
	//	*Files_DataFiles
	FileType isFiles_FileType `protobuf_oneof:"file_type"`
}

func (x *Files) Reset() {
	*x = Files{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_actions_sdk_v2_files_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Files) ProtoMessage() {}

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

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

func (m *Files) GetFileType() isFiles_FileType {
	if m != nil {
		return m.FileType
	}
	return nil
}

func (x *Files) GetConfigFiles() *ConfigFiles {
	if x, ok := x.GetFileType().(*Files_ConfigFiles); ok {
		return x.ConfigFiles
	}
	return nil
}

func (x *Files) GetDataFiles() *DataFiles {
	if x, ok := x.GetFileType().(*Files_DataFiles); ok {
		return x.DataFiles
	}
	return nil
}

type isFiles_FileType interface {
	isFiles_FileType()
}

type Files_ConfigFiles struct {
	// List of config files. This includes manifest, settings, interaction model
	// resource bundles and more.
	ConfigFiles *ConfigFiles `protobuf:"bytes,1,opt,name=config_files,json=configFiles,proto3,oneof"`
}

type Files_DataFiles struct {
	// List of data files. This includes image, audio file, cloud function
	// source code.
	DataFiles *DataFiles `protobuf:"bytes,2,opt,name=data_files,json=dataFiles,proto3,oneof"`
}

func (*Files_ConfigFiles) isFiles_FileType() {}

func (*Files_DataFiles) isFiles_FileType() {}

var File_google_actions_sdk_v2_files_proto protoreflect.FileDescriptor

var file_google_actions_sdk_v2_files_proto_rawDesc = []byte{
	0x0a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x32, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x76, 0x32, 0x1a, 0x27, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x76,
	0x32, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x32, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x01, 0x0a, 0x05, 0x46,
	0x69, 0x6c, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66,
	0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
	0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x48, 0x00,
	0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x41, 0x0a,
	0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x69,
	0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73,
	0x42, 0x0b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x63, 0x0a,
	0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x76, 0x32, 0x42, 0x0a, 0x46, 0x69, 0x6c, 0x65,
	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x32, 0x3b, 0x73,
	0x64, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_actions_sdk_v2_files_proto_rawDescOnce sync.Once
	file_google_actions_sdk_v2_files_proto_rawDescData = file_google_actions_sdk_v2_files_proto_rawDesc
)

func file_google_actions_sdk_v2_files_proto_rawDescGZIP() []byte {
	file_google_actions_sdk_v2_files_proto_rawDescOnce.Do(func() {
		file_google_actions_sdk_v2_files_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_actions_sdk_v2_files_proto_rawDescData)
	})
	return file_google_actions_sdk_v2_files_proto_rawDescData
}

var file_google_actions_sdk_v2_files_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_google_actions_sdk_v2_files_proto_goTypes = []interface{}{
	(*Files)(nil),       // 0: google.actions.sdk.v2.Files
	(*ConfigFiles)(nil), // 1: google.actions.sdk.v2.ConfigFiles
	(*DataFiles)(nil),   // 2: google.actions.sdk.v2.DataFiles
}
var file_google_actions_sdk_v2_files_proto_depIdxs = []int32{
	1, // 0: google.actions.sdk.v2.Files.config_files:type_name -> google.actions.sdk.v2.ConfigFiles
	2, // 1: google.actions.sdk.v2.Files.data_files:type_name -> google.actions.sdk.v2.DataFiles
	2, // [2:2] is the sub-list for method output_type
	2, // [2:2] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_google_actions_sdk_v2_files_proto_init() }
func file_google_actions_sdk_v2_files_proto_init() {
	if File_google_actions_sdk_v2_files_proto != nil {
		return
	}
	file_google_actions_sdk_v2_config_file_proto_init()
	file_google_actions_sdk_v2_data_file_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_google_actions_sdk_v2_files_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Files); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_actions_sdk_v2_files_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*Files_ConfigFiles)(nil),
		(*Files_DataFiles)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_actions_sdk_v2_files_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_actions_sdk_v2_files_proto_goTypes,
		DependencyIndexes: file_google_actions_sdk_v2_files_proto_depIdxs,
		MessageInfos:      file_google_actions_sdk_v2_files_proto_msgTypes,
	}.Build()
	File_google_actions_sdk_v2_files_proto = out.File
	file_google_actions_sdk_v2_files_proto_rawDesc = nil
	file_google_actions_sdk_v2_files_proto_goTypes = nil
	file_google_actions_sdk_v2_files_proto_depIdxs = nil
}
