// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v5.29.3
// source: s3.proto

package s3_pb

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

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

type S3ConfigureRequest struct {
	state                      protoimpl.MessageState `protogen:"open.v1"`
	S3ConfigurationFileContent []byte                 `protobuf:"bytes,1,opt,name=s3_configuration_file_content,json=s3ConfigurationFileContent,proto3" json:"s3_configuration_file_content,omitempty"`
	unknownFields              protoimpl.UnknownFields
	sizeCache                  protoimpl.SizeCache
}

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

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

func (*S3ConfigureRequest) ProtoMessage() {}

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

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

func (x *S3ConfigureRequest) GetS3ConfigurationFileContent() []byte {
	if x != nil {
		return x.S3ConfigurationFileContent
	}
	return nil
}

type S3ConfigureResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *S3ConfigureResponse) Reset() {
	*x = S3ConfigureResponse{}
	mi := &file_s3_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*S3ConfigureResponse) ProtoMessage() {}

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

// Deprecated: Use S3ConfigureResponse.ProtoReflect.Descriptor instead.
func (*S3ConfigureResponse) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{1}
}

type S3CircuitBreakerConfig struct {
	state         protoimpl.MessageState              `protogen:"open.v1"`
	Global        *S3CircuitBreakerOptions            `protobuf:"bytes,1,opt,name=global,proto3" json:"global,omitempty"`
	Buckets       map[string]*S3CircuitBreakerOptions `protobuf:"bytes,2,rep,name=buckets,proto3" json:"buckets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *S3CircuitBreakerConfig) Reset() {
	*x = S3CircuitBreakerConfig{}
	mi := &file_s3_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*S3CircuitBreakerConfig) ProtoMessage() {}

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

// Deprecated: Use S3CircuitBreakerConfig.ProtoReflect.Descriptor instead.
func (*S3CircuitBreakerConfig) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{2}
}

func (x *S3CircuitBreakerConfig) GetGlobal() *S3CircuitBreakerOptions {
	if x != nil {
		return x.Global
	}
	return nil
}

func (x *S3CircuitBreakerConfig) GetBuckets() map[string]*S3CircuitBreakerOptions {
	if x != nil {
		return x.Buckets
	}
	return nil
}

type S3CircuitBreakerOptions struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Enabled       bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	Actions       map[string]int64       `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *S3CircuitBreakerOptions) Reset() {
	*x = S3CircuitBreakerOptions{}
	mi := &file_s3_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*S3CircuitBreakerOptions) ProtoMessage() {}

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

// Deprecated: Use S3CircuitBreakerOptions.ProtoReflect.Descriptor instead.
func (*S3CircuitBreakerOptions) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{3}
}

func (x *S3CircuitBreakerOptions) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *S3CircuitBreakerOptions) GetActions() map[string]int64 {
	if x != nil {
		return x.Actions
	}
	return nil
}

type CORSRule struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	AllowedHeaders []string               `protobuf:"bytes,1,rep,name=allowed_headers,json=allowedHeaders,proto3" json:"allowed_headers,omitempty"`
	AllowedMethods []string               `protobuf:"bytes,2,rep,name=allowed_methods,json=allowedMethods,proto3" json:"allowed_methods,omitempty"`
	AllowedOrigins []string               `protobuf:"bytes,3,rep,name=allowed_origins,json=allowedOrigins,proto3" json:"allowed_origins,omitempty"`
	ExposeHeaders  []string               `protobuf:"bytes,4,rep,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
	MaxAgeSeconds  int32                  `protobuf:"varint,5,opt,name=max_age_seconds,json=maxAgeSeconds,proto3" json:"max_age_seconds,omitempty"`
	Id             string                 `protobuf:"bytes,6,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *CORSRule) Reset() {
	*x = CORSRule{}
	mi := &file_s3_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CORSRule) ProtoMessage() {}

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

// Deprecated: Use CORSRule.ProtoReflect.Descriptor instead.
func (*CORSRule) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{4}
}

func (x *CORSRule) GetAllowedHeaders() []string {
	if x != nil {
		return x.AllowedHeaders
	}
	return nil
}

func (x *CORSRule) GetAllowedMethods() []string {
	if x != nil {
		return x.AllowedMethods
	}
	return nil
}

func (x *CORSRule) GetAllowedOrigins() []string {
	if x != nil {
		return x.AllowedOrigins
	}
	return nil
}

func (x *CORSRule) GetExposeHeaders() []string {
	if x != nil {
		return x.ExposeHeaders
	}
	return nil
}

func (x *CORSRule) GetMaxAgeSeconds() int32 {
	if x != nil {
		return x.MaxAgeSeconds
	}
	return 0
}

func (x *CORSRule) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type CORSConfiguration struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	CorsRules     []*CORSRule            `protobuf:"bytes,1,rep,name=cors_rules,json=corsRules,proto3" json:"cors_rules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CORSConfiguration) Reset() {
	*x = CORSConfiguration{}
	mi := &file_s3_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CORSConfiguration) ProtoMessage() {}

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

// Deprecated: Use CORSConfiguration.ProtoReflect.Descriptor instead.
func (*CORSConfiguration) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{5}
}

func (x *CORSConfiguration) GetCorsRules() []*CORSRule {
	if x != nil {
		return x.CorsRules
	}
	return nil
}

type BucketMetadata struct {
	state         protoimpl.MessageState   `protogen:"open.v1"`
	Tags          map[string]string        `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Cors          *CORSConfiguration       `protobuf:"bytes,2,opt,name=cors,proto3" json:"cors,omitempty"`
	Encryption    *EncryptionConfiguration `protobuf:"bytes,3,opt,name=encryption,proto3" json:"encryption,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BucketMetadata) Reset() {
	*x = BucketMetadata{}
	mi := &file_s3_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BucketMetadata) ProtoMessage() {}

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

// Deprecated: Use BucketMetadata.ProtoReflect.Descriptor instead.
func (*BucketMetadata) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{6}
}

func (x *BucketMetadata) GetTags() map[string]string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *BucketMetadata) GetCors() *CORSConfiguration {
	if x != nil {
		return x.Cors
	}
	return nil
}

func (x *BucketMetadata) GetEncryption() *EncryptionConfiguration {
	if x != nil {
		return x.Encryption
	}
	return nil
}

type EncryptionConfiguration struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	SseAlgorithm     string                 `protobuf:"bytes,1,opt,name=sse_algorithm,json=sseAlgorithm,proto3" json:"sse_algorithm,omitempty"`                // "AES256" or "aws:kms"
	KmsKeyId         string                 `protobuf:"bytes,2,opt,name=kms_key_id,json=kmsKeyId,proto3" json:"kms_key_id,omitempty"`                          // KMS key ID (optional for aws:kms)
	BucketKeyEnabled bool                   `protobuf:"varint,3,opt,name=bucket_key_enabled,json=bucketKeyEnabled,proto3" json:"bucket_key_enabled,omitempty"` // S3 Bucket Keys optimization
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *EncryptionConfiguration) Reset() {
	*x = EncryptionConfiguration{}
	mi := &file_s3_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*EncryptionConfiguration) ProtoMessage() {}

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

// Deprecated: Use EncryptionConfiguration.ProtoReflect.Descriptor instead.
func (*EncryptionConfiguration) Descriptor() ([]byte, []int) {
	return file_s3_proto_rawDescGZIP(), []int{7}
}

func (x *EncryptionConfiguration) GetSseAlgorithm() string {
	if x != nil {
		return x.SseAlgorithm
	}
	return ""
}

func (x *EncryptionConfiguration) GetKmsKeyId() string {
	if x != nil {
		return x.KmsKeyId
	}
	return ""
}

func (x *EncryptionConfiguration) GetBucketKeyEnabled() bool {
	if x != nil {
		return x.BucketKeyEnabled
	}
	return false
}

var File_s3_proto protoreflect.FileDescriptor

const file_s3_proto_rawDesc = "" +
	"\n" +
	"\bs3.proto\x12\fmessaging_pb\"W\n" +
	"\x12S3ConfigureRequest\x12A\n" +
	"\x1ds3_configuration_file_content\x18\x01 \x01(\fR\x1as3ConfigurationFileContent\"\x15\n" +
	"\x13S3ConfigureResponse\"\x87\x02\n" +
	"\x16S3CircuitBreakerConfig\x12=\n" +
	"\x06global\x18\x01 \x01(\v2%.messaging_pb.S3CircuitBreakerOptionsR\x06global\x12K\n" +
	"\abuckets\x18\x02 \x03(\v21.messaging_pb.S3CircuitBreakerConfig.BucketsEntryR\abuckets\x1aa\n" +
	"\fBucketsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12;\n" +
	"\x05value\x18\x02 \x01(\v2%.messaging_pb.S3CircuitBreakerOptionsR\x05value:\x028\x01\"\xbd\x01\n" +
	"\x17S3CircuitBreakerOptions\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12L\n" +
	"\aactions\x18\x02 \x03(\v22.messaging_pb.S3CircuitBreakerOptions.ActionsEntryR\aactions\x1a:\n" +
	"\fActionsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01\"\xe4\x01\n" +
	"\bCORSRule\x12'\n" +
	"\x0fallowed_headers\x18\x01 \x03(\tR\x0eallowedHeaders\x12'\n" +
	"\x0fallowed_methods\x18\x02 \x03(\tR\x0eallowedMethods\x12'\n" +
	"\x0fallowed_origins\x18\x03 \x03(\tR\x0eallowedOrigins\x12%\n" +
	"\x0eexpose_headers\x18\x04 \x03(\tR\rexposeHeaders\x12&\n" +
	"\x0fmax_age_seconds\x18\x05 \x01(\x05R\rmaxAgeSeconds\x12\x0e\n" +
	"\x02id\x18\x06 \x01(\tR\x02id\"J\n" +
	"\x11CORSConfiguration\x125\n" +
	"\n" +
	"cors_rules\x18\x01 \x03(\v2\x16.messaging_pb.CORSRuleR\tcorsRules\"\x81\x02\n" +
	"\x0eBucketMetadata\x12:\n" +
	"\x04tags\x18\x01 \x03(\v2&.messaging_pb.BucketMetadata.TagsEntryR\x04tags\x123\n" +
	"\x04cors\x18\x02 \x01(\v2\x1f.messaging_pb.CORSConfigurationR\x04cors\x12E\n" +
	"\n" +
	"encryption\x18\x03 \x01(\v2%.messaging_pb.EncryptionConfigurationR\n" +
	"encryption\x1a7\n" +
	"\tTagsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8a\x01\n" +
	"\x17EncryptionConfiguration\x12#\n" +
	"\rsse_algorithm\x18\x01 \x01(\tR\fsseAlgorithm\x12\x1c\n" +
	"\n" +
	"kms_key_id\x18\x02 \x01(\tR\bkmsKeyId\x12,\n" +
	"\x12bucket_key_enabled\x18\x03 \x01(\bR\x10bucketKeyEnabled2_\n" +
	"\tSeaweedS3\x12R\n" +
	"\tConfigure\x12 .messaging_pb.S3ConfigureRequest\x1a!.messaging_pb.S3ConfigureResponse\"\x00BI\n" +
	"\x10seaweedfs.clientB\aS3ProtoZ,github.com/seaweedfs/seaweedfs/weed/pb/s3_pbb\x06proto3"

var (
	file_s3_proto_rawDescOnce sync.Once
	file_s3_proto_rawDescData []byte
)

func file_s3_proto_rawDescGZIP() []byte {
	file_s3_proto_rawDescOnce.Do(func() {
		file_s3_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_s3_proto_rawDesc), len(file_s3_proto_rawDesc)))
	})
	return file_s3_proto_rawDescData
}

var file_s3_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_s3_proto_goTypes = []any{
	(*S3ConfigureRequest)(nil),      // 0: messaging_pb.S3ConfigureRequest
	(*S3ConfigureResponse)(nil),     // 1: messaging_pb.S3ConfigureResponse
	(*S3CircuitBreakerConfig)(nil),  // 2: messaging_pb.S3CircuitBreakerConfig
	(*S3CircuitBreakerOptions)(nil), // 3: messaging_pb.S3CircuitBreakerOptions
	(*CORSRule)(nil),                // 4: messaging_pb.CORSRule
	(*CORSConfiguration)(nil),       // 5: messaging_pb.CORSConfiguration
	(*BucketMetadata)(nil),          // 6: messaging_pb.BucketMetadata
	(*EncryptionConfiguration)(nil), // 7: messaging_pb.EncryptionConfiguration
	nil,                             // 8: messaging_pb.S3CircuitBreakerConfig.BucketsEntry
	nil,                             // 9: messaging_pb.S3CircuitBreakerOptions.ActionsEntry
	nil,                             // 10: messaging_pb.BucketMetadata.TagsEntry
}
var file_s3_proto_depIdxs = []int32{
	3,  // 0: messaging_pb.S3CircuitBreakerConfig.global:type_name -> messaging_pb.S3CircuitBreakerOptions
	8,  // 1: messaging_pb.S3CircuitBreakerConfig.buckets:type_name -> messaging_pb.S3CircuitBreakerConfig.BucketsEntry
	9,  // 2: messaging_pb.S3CircuitBreakerOptions.actions:type_name -> messaging_pb.S3CircuitBreakerOptions.ActionsEntry
	4,  // 3: messaging_pb.CORSConfiguration.cors_rules:type_name -> messaging_pb.CORSRule
	10, // 4: messaging_pb.BucketMetadata.tags:type_name -> messaging_pb.BucketMetadata.TagsEntry
	5,  // 5: messaging_pb.BucketMetadata.cors:type_name -> messaging_pb.CORSConfiguration
	7,  // 6: messaging_pb.BucketMetadata.encryption:type_name -> messaging_pb.EncryptionConfiguration
	3,  // 7: messaging_pb.S3CircuitBreakerConfig.BucketsEntry.value:type_name -> messaging_pb.S3CircuitBreakerOptions
	0,  // 8: messaging_pb.SeaweedS3.Configure:input_type -> messaging_pb.S3ConfigureRequest
	1,  // 9: messaging_pb.SeaweedS3.Configure:output_type -> messaging_pb.S3ConfigureResponse
	9,  // [9:10] is the sub-list for method output_type
	8,  // [8:9] is the sub-list for method input_type
	8,  // [8:8] is the sub-list for extension type_name
	8,  // [8:8] is the sub-list for extension extendee
	0,  // [0:8] is the sub-list for field type_name
}

func init() { file_s3_proto_init() }
func file_s3_proto_init() {
	if File_s3_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_s3_proto_rawDesc), len(file_s3_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   11,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_s3_proto_goTypes,
		DependencyIndexes: file_s3_proto_depIdxs,
		MessageInfos:      file_s3_proto_msgTypes,
	}.Build()
	File_s3_proto = out.File
	file_s3_proto_goTypes = nil
	file_s3_proto_depIdxs = nil
}
