// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.9
// 	protoc        v6.31.1
// source: github.com/buildbarn/bb-storage/pkg/proto/configuration/blobstore/blobstore.proto

package blobstore

import (
	blockdevice "github.com/buildbarn/bb-storage/pkg/proto/configuration/blockdevice"
	aws "github.com/buildbarn/bb-storage/pkg/proto/configuration/cloud/aws"
	gcp "github.com/buildbarn/bb-storage/pkg/proto/configuration/cloud/gcp"
	digest "github.com/buildbarn/bb-storage/pkg/proto/configuration/digest"
	grpc "github.com/buildbarn/bb-storage/pkg/proto/configuration/grpc"
	client "github.com/buildbarn/bb-storage/pkg/proto/configuration/http/client"
	status "google.golang.org/genproto/googleapis/rpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	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 BlobstoreConfiguration struct {
	state                     protoimpl.MessageState   `protogen:"open.v1"`
	ContentAddressableStorage *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=content_addressable_storage,json=contentAddressableStorage,proto3" json:"content_addressable_storage,omitempty"`
	ActionCache               *BlobAccessConfiguration `protobuf:"bytes,2,opt,name=action_cache,json=actionCache,proto3" json:"action_cache,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

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

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

func (*BlobstoreConfiguration) ProtoMessage() {}

func (x *BlobstoreConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 BlobstoreConfiguration.ProtoReflect.Descriptor instead.
func (*BlobstoreConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{0}
}

func (x *BlobstoreConfiguration) GetContentAddressableStorage() *BlobAccessConfiguration {
	if x != nil {
		return x.ContentAddressableStorage
	}
	return nil
}

func (x *BlobstoreConfiguration) GetActionCache() *BlobAccessConfiguration {
	if x != nil {
		return x.ActionCache
	}
	return nil
}

type BlobAccessConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Backend:
	//
	//	*BlobAccessConfiguration_ReadCaching
	//	*BlobAccessConfiguration_Grpc
	//	*BlobAccessConfiguration_Error
	//	*BlobAccessConfiguration_Sharding
	//	*BlobAccessConfiguration_Mirrored
	//	*BlobAccessConfiguration_Local
	//	*BlobAccessConfiguration_ExistenceCaching
	//	*BlobAccessConfiguration_CompletenessChecking
	//	*BlobAccessConfiguration_ReadFallback
	//	*BlobAccessConfiguration_ReferenceExpanding
	//	*BlobAccessConfiguration_Demultiplexing
	//	*BlobAccessConfiguration_HierarchicalInstanceNames
	//	*BlobAccessConfiguration_ActionResultExpiring
	//	*BlobAccessConfiguration_ReadCanarying
	//	*BlobAccessConfiguration_ZipReading
	//	*BlobAccessConfiguration_ZipWriting
	//	*BlobAccessConfiguration_WithLabels
	//	*BlobAccessConfiguration_Label
	//	*BlobAccessConfiguration_DeadlineEnforcing
	Backend       isBlobAccessConfiguration_Backend `protobuf_oneof:"backend"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BlobAccessConfiguration) ProtoMessage() {}

func (x *BlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 BlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*BlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{1}
}

func (x *BlobAccessConfiguration) GetBackend() isBlobAccessConfiguration_Backend {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *BlobAccessConfiguration) GetReadCaching() *ReadCachingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ReadCaching); ok {
			return x.ReadCaching
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetGrpc() *grpc.ClientConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Grpc); ok {
			return x.Grpc
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetError() *status.Status {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Error); ok {
			return x.Error
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetSharding() *ShardingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Sharding); ok {
			return x.Sharding
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetMirrored() *MirroredBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Mirrored); ok {
			return x.Mirrored
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetLocal() *LocalBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Local); ok {
			return x.Local
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetExistenceCaching() *ExistenceCachingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ExistenceCaching); ok {
			return x.ExistenceCaching
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetCompletenessChecking() *CompletenessCheckingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_CompletenessChecking); ok {
			return x.CompletenessChecking
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetReadFallback() *ReadFallbackBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ReadFallback); ok {
			return x.ReadFallback
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetReferenceExpanding() *ReferenceExpandingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ReferenceExpanding); ok {
			return x.ReferenceExpanding
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetDemultiplexing() *DemultiplexingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Demultiplexing); ok {
			return x.Demultiplexing
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetHierarchicalInstanceNames() *BlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_HierarchicalInstanceNames); ok {
			return x.HierarchicalInstanceNames
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetActionResultExpiring() *ActionResultExpiringBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ActionResultExpiring); ok {
			return x.ActionResultExpiring
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetReadCanarying() *ReadCanaryingBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ReadCanarying); ok {
			return x.ReadCanarying
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetZipReading() *ZIPBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ZipReading); ok {
			return x.ZipReading
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetZipWriting() *ZIPBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_ZipWriting); ok {
			return x.ZipWriting
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetWithLabels() *WithLabelsBlobAccessConfiguration {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_WithLabels); ok {
			return x.WithLabels
		}
	}
	return nil
}

func (x *BlobAccessConfiguration) GetLabel() string {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_Label); ok {
			return x.Label
		}
	}
	return ""
}

func (x *BlobAccessConfiguration) GetDeadlineEnforcing() *DeadlineEnforcingBlobAccess {
	if x != nil {
		if x, ok := x.Backend.(*BlobAccessConfiguration_DeadlineEnforcing); ok {
			return x.DeadlineEnforcing
		}
	}
	return nil
}

type isBlobAccessConfiguration_Backend interface {
	isBlobAccessConfiguration_Backend()
}

type BlobAccessConfiguration_ReadCaching struct {
	ReadCaching *ReadCachingBlobAccessConfiguration `protobuf:"bytes,4,opt,name=read_caching,json=readCaching,proto3,oneof"`
}

type BlobAccessConfiguration_Grpc struct {
	Grpc *grpc.ClientConfiguration `protobuf:"bytes,7,opt,name=grpc,proto3,oneof"`
}

type BlobAccessConfiguration_Error struct {
	Error *status.Status `protobuf:"bytes,8,opt,name=error,proto3,oneof"`
}

type BlobAccessConfiguration_Sharding struct {
	Sharding *ShardingBlobAccessConfiguration `protobuf:"bytes,9,opt,name=sharding,proto3,oneof"`
}

type BlobAccessConfiguration_Mirrored struct {
	Mirrored *MirroredBlobAccessConfiguration `protobuf:"bytes,14,opt,name=mirrored,proto3,oneof"`
}

type BlobAccessConfiguration_Local struct {
	Local *LocalBlobAccessConfiguration `protobuf:"bytes,15,opt,name=local,proto3,oneof"`
}

type BlobAccessConfiguration_ExistenceCaching struct {
	ExistenceCaching *ExistenceCachingBlobAccessConfiguration `protobuf:"bytes,16,opt,name=existence_caching,json=existenceCaching,proto3,oneof"`
}

type BlobAccessConfiguration_CompletenessChecking struct {
	CompletenessChecking *CompletenessCheckingBlobAccessConfiguration `protobuf:"bytes,17,opt,name=completeness_checking,json=completenessChecking,proto3,oneof"`
}

type BlobAccessConfiguration_ReadFallback struct {
	ReadFallback *ReadFallbackBlobAccessConfiguration `protobuf:"bytes,18,opt,name=read_fallback,json=readFallback,proto3,oneof"`
}

type BlobAccessConfiguration_ReferenceExpanding struct {
	ReferenceExpanding *ReferenceExpandingBlobAccessConfiguration `protobuf:"bytes,19,opt,name=reference_expanding,json=referenceExpanding,proto3,oneof"`
}

type BlobAccessConfiguration_Demultiplexing struct {
	Demultiplexing *DemultiplexingBlobAccessConfiguration `protobuf:"bytes,20,opt,name=demultiplexing,proto3,oneof"`
}

type BlobAccessConfiguration_HierarchicalInstanceNames struct {
	HierarchicalInstanceNames *BlobAccessConfiguration `protobuf:"bytes,21,opt,name=hierarchical_instance_names,json=hierarchicalInstanceNames,proto3,oneof"`
}

type BlobAccessConfiguration_ActionResultExpiring struct {
	ActionResultExpiring *ActionResultExpiringBlobAccessConfiguration `protobuf:"bytes,22,opt,name=action_result_expiring,json=actionResultExpiring,proto3,oneof"`
}

type BlobAccessConfiguration_ReadCanarying struct {
	ReadCanarying *ReadCanaryingBlobAccessConfiguration `protobuf:"bytes,23,opt,name=read_canarying,json=readCanarying,proto3,oneof"`
}

type BlobAccessConfiguration_ZipReading struct {
	ZipReading *ZIPBlobAccessConfiguration `protobuf:"bytes,24,opt,name=zip_reading,json=zipReading,proto3,oneof"`
}

type BlobAccessConfiguration_ZipWriting struct {
	ZipWriting *ZIPBlobAccessConfiguration `protobuf:"bytes,25,opt,name=zip_writing,json=zipWriting,proto3,oneof"`
}

type BlobAccessConfiguration_WithLabels struct {
	WithLabels *WithLabelsBlobAccessConfiguration `protobuf:"bytes,26,opt,name=with_labels,json=withLabels,proto3,oneof"`
}

type BlobAccessConfiguration_Label struct {
	Label string `protobuf:"bytes,27,opt,name=label,proto3,oneof"`
}

type BlobAccessConfiguration_DeadlineEnforcing struct {
	DeadlineEnforcing *DeadlineEnforcingBlobAccess `protobuf:"bytes,28,opt,name=deadline_enforcing,json=deadlineEnforcing,proto3,oneof"`
}

func (*BlobAccessConfiguration_ReadCaching) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Grpc) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Error) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Sharding) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Mirrored) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Local) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ExistenceCaching) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_CompletenessChecking) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ReadFallback) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ReferenceExpanding) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Demultiplexing) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_HierarchicalInstanceNames) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ActionResultExpiring) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ReadCanarying) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ZipReading) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_ZipWriting) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_WithLabels) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_Label) isBlobAccessConfiguration_Backend() {}

func (*BlobAccessConfiguration_DeadlineEnforcing) isBlobAccessConfiguration_Backend() {}

type ReadCachingBlobAccessConfiguration struct {
	state         protoimpl.MessageState       `protogen:"open.v1"`
	Slow          *BlobAccessConfiguration     `protobuf:"bytes,1,opt,name=slow,proto3" json:"slow,omitempty"`
	Fast          *BlobAccessConfiguration     `protobuf:"bytes,2,opt,name=fast,proto3" json:"fast,omitempty"`
	Replicator    *BlobReplicatorConfiguration `protobuf:"bytes,3,opt,name=replicator,proto3" json:"replicator,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReadCachingBlobAccessConfiguration) ProtoMessage() {}

func (x *ReadCachingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 ReadCachingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ReadCachingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{2}
}

func (x *ReadCachingBlobAccessConfiguration) GetSlow() *BlobAccessConfiguration {
	if x != nil {
		return x.Slow
	}
	return nil
}

func (x *ReadCachingBlobAccessConfiguration) GetFast() *BlobAccessConfiguration {
	if x != nil {
		return x.Fast
	}
	return nil
}

func (x *ReadCachingBlobAccessConfiguration) GetReplicator() *BlobReplicatorConfiguration {
	if x != nil {
		return x.Replicator
	}
	return nil
}

type ShardingBlobAccessConfiguration struct {
	state         protoimpl.MessageState                            `protogen:"open.v1"`
	Shards        map[string]*ShardingBlobAccessConfiguration_Shard `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Legacy        *ShardingBlobAccessConfiguration_Legacy           `protobuf:"bytes,3,opt,name=legacy,proto3" json:"legacy,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ShardingBlobAccessConfiguration) ProtoMessage() {}

func (x *ShardingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 ShardingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ShardingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{3}
}

func (x *ShardingBlobAccessConfiguration) GetShards() map[string]*ShardingBlobAccessConfiguration_Shard {
	if x != nil {
		return x.Shards
	}
	return nil
}

func (x *ShardingBlobAccessConfiguration) GetLegacy() *ShardingBlobAccessConfiguration_Legacy {
	if x != nil {
		return x.Legacy
	}
	return nil
}

type MirroredBlobAccessConfiguration struct {
	state          protoimpl.MessageState       `protogen:"open.v1"`
	BackendA       *BlobAccessConfiguration     `protobuf:"bytes,1,opt,name=backend_a,json=backendA,proto3" json:"backend_a,omitempty"`
	BackendB       *BlobAccessConfiguration     `protobuf:"bytes,2,opt,name=backend_b,json=backendB,proto3" json:"backend_b,omitempty"`
	ReplicatorAToB *BlobReplicatorConfiguration `protobuf:"bytes,3,opt,name=replicator_a_to_b,json=replicatorAToB,proto3" json:"replicator_a_to_b,omitempty"`
	ReplicatorBToA *BlobReplicatorConfiguration `protobuf:"bytes,4,opt,name=replicator_b_to_a,json=replicatorBToA,proto3" json:"replicator_b_to_a,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*MirroredBlobAccessConfiguration) ProtoMessage() {}

func (x *MirroredBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 MirroredBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*MirroredBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{4}
}

func (x *MirroredBlobAccessConfiguration) GetBackendA() *BlobAccessConfiguration {
	if x != nil {
		return x.BackendA
	}
	return nil
}

func (x *MirroredBlobAccessConfiguration) GetBackendB() *BlobAccessConfiguration {
	if x != nil {
		return x.BackendB
	}
	return nil
}

func (x *MirroredBlobAccessConfiguration) GetReplicatorAToB() *BlobReplicatorConfiguration {
	if x != nil {
		return x.ReplicatorAToB
	}
	return nil
}

func (x *MirroredBlobAccessConfiguration) GetReplicatorBToA() *BlobReplicatorConfiguration {
	if x != nil {
		return x.ReplicatorBToA
	}
	return nil
}

type LocalBlobAccessConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to KeyLocationMapBackend:
	//
	//	*LocalBlobAccessConfiguration_KeyLocationMapInMemory_
	//	*LocalBlobAccessConfiguration_KeyLocationMapOnBlockDevice
	KeyLocationMapBackend            isLocalBlobAccessConfiguration_KeyLocationMapBackend `protobuf_oneof:"key_location_map_backend"`
	KeyLocationMapMaximumGetAttempts uint32                                               `protobuf:"varint,2,opt,name=key_location_map_maximum_get_attempts,json=keyLocationMapMaximumGetAttempts,proto3" json:"key_location_map_maximum_get_attempts,omitempty"`
	KeyLocationMapMaximumPutAttempts int64                                                `protobuf:"varint,3,opt,name=key_location_map_maximum_put_attempts,json=keyLocationMapMaximumPutAttempts,proto3" json:"key_location_map_maximum_put_attempts,omitempty"`
	OldBlocks                        int32                                                `protobuf:"varint,5,opt,name=old_blocks,json=oldBlocks,proto3" json:"old_blocks,omitempty"`
	CurrentBlocks                    int32                                                `protobuf:"varint,6,opt,name=current_blocks,json=currentBlocks,proto3" json:"current_blocks,omitempty"`
	NewBlocks                        int32                                                `protobuf:"varint,7,opt,name=new_blocks,json=newBlocks,proto3" json:"new_blocks,omitempty"`
	// Types that are valid to be assigned to BlocksBackend:
	//
	//	*LocalBlobAccessConfiguration_BlocksInMemory_
	//	*LocalBlobAccessConfiguration_BlocksOnBlockDevice_
	BlocksBackend             isLocalBlobAccessConfiguration_BlocksBackend `protobuf_oneof:"blocks_backend"`
	Persistent                *LocalBlobAccessConfiguration_Persistent     `protobuf:"bytes,13,opt,name=persistent,proto3" json:"persistent,omitempty"`
	HierarchicalInstanceNames bool                                         `protobuf:"varint,14,opt,name=hierarchical_instance_names,json=hierarchicalInstanceNames,proto3" json:"hierarchical_instance_names,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

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

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

func (*LocalBlobAccessConfiguration) ProtoMessage() {}

func (x *LocalBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 LocalBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*LocalBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{5}
}

func (x *LocalBlobAccessConfiguration) GetKeyLocationMapBackend() isLocalBlobAccessConfiguration_KeyLocationMapBackend {
	if x != nil {
		return x.KeyLocationMapBackend
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetKeyLocationMapInMemory() *LocalBlobAccessConfiguration_KeyLocationMapInMemory {
	if x != nil {
		if x, ok := x.KeyLocationMapBackend.(*LocalBlobAccessConfiguration_KeyLocationMapInMemory_); ok {
			return x.KeyLocationMapInMemory
		}
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetKeyLocationMapOnBlockDevice() *blockdevice.Configuration {
	if x != nil {
		if x, ok := x.KeyLocationMapBackend.(*LocalBlobAccessConfiguration_KeyLocationMapOnBlockDevice); ok {
			return x.KeyLocationMapOnBlockDevice
		}
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetKeyLocationMapMaximumGetAttempts() uint32 {
	if x != nil {
		return x.KeyLocationMapMaximumGetAttempts
	}
	return 0
}

func (x *LocalBlobAccessConfiguration) GetKeyLocationMapMaximumPutAttempts() int64 {
	if x != nil {
		return x.KeyLocationMapMaximumPutAttempts
	}
	return 0
}

func (x *LocalBlobAccessConfiguration) GetOldBlocks() int32 {
	if x != nil {
		return x.OldBlocks
	}
	return 0
}

func (x *LocalBlobAccessConfiguration) GetCurrentBlocks() int32 {
	if x != nil {
		return x.CurrentBlocks
	}
	return 0
}

func (x *LocalBlobAccessConfiguration) GetNewBlocks() int32 {
	if x != nil {
		return x.NewBlocks
	}
	return 0
}

func (x *LocalBlobAccessConfiguration) GetBlocksBackend() isLocalBlobAccessConfiguration_BlocksBackend {
	if x != nil {
		return x.BlocksBackend
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetBlocksInMemory() *LocalBlobAccessConfiguration_BlocksInMemory {
	if x != nil {
		if x, ok := x.BlocksBackend.(*LocalBlobAccessConfiguration_BlocksInMemory_); ok {
			return x.BlocksInMemory
		}
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetBlocksOnBlockDevice() *LocalBlobAccessConfiguration_BlocksOnBlockDevice {
	if x != nil {
		if x, ok := x.BlocksBackend.(*LocalBlobAccessConfiguration_BlocksOnBlockDevice_); ok {
			return x.BlocksOnBlockDevice
		}
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetPersistent() *LocalBlobAccessConfiguration_Persistent {
	if x != nil {
		return x.Persistent
	}
	return nil
}

func (x *LocalBlobAccessConfiguration) GetHierarchicalInstanceNames() bool {
	if x != nil {
		return x.HierarchicalInstanceNames
	}
	return false
}

type isLocalBlobAccessConfiguration_KeyLocationMapBackend interface {
	isLocalBlobAccessConfiguration_KeyLocationMapBackend()
}

type LocalBlobAccessConfiguration_KeyLocationMapInMemory_ struct {
	KeyLocationMapInMemory *LocalBlobAccessConfiguration_KeyLocationMapInMemory `protobuf:"bytes,11,opt,name=key_location_map_in_memory,json=keyLocationMapInMemory,proto3,oneof"`
}

type LocalBlobAccessConfiguration_KeyLocationMapOnBlockDevice struct {
	KeyLocationMapOnBlockDevice *blockdevice.Configuration `protobuf:"bytes,12,opt,name=key_location_map_on_block_device,json=keyLocationMapOnBlockDevice,proto3,oneof"`
}

func (*LocalBlobAccessConfiguration_KeyLocationMapInMemory_) isLocalBlobAccessConfiguration_KeyLocationMapBackend() {
}

func (*LocalBlobAccessConfiguration_KeyLocationMapOnBlockDevice) isLocalBlobAccessConfiguration_KeyLocationMapBackend() {
}

type isLocalBlobAccessConfiguration_BlocksBackend interface {
	isLocalBlobAccessConfiguration_BlocksBackend()
}

type LocalBlobAccessConfiguration_BlocksInMemory_ struct {
	BlocksInMemory *LocalBlobAccessConfiguration_BlocksInMemory `protobuf:"bytes,9,opt,name=blocks_in_memory,json=blocksInMemory,proto3,oneof"`
}

type LocalBlobAccessConfiguration_BlocksOnBlockDevice_ struct {
	BlocksOnBlockDevice *LocalBlobAccessConfiguration_BlocksOnBlockDevice `protobuf:"bytes,10,opt,name=blocks_on_block_device,json=blocksOnBlockDevice,proto3,oneof"`
}

func (*LocalBlobAccessConfiguration_BlocksInMemory_) isLocalBlobAccessConfiguration_BlocksBackend() {}

func (*LocalBlobAccessConfiguration_BlocksOnBlockDevice_) isLocalBlobAccessConfiguration_BlocksBackend() {
}

type ExistenceCachingBlobAccessConfiguration struct {
	state          protoimpl.MessageState              `protogen:"open.v1"`
	Backend        *BlobAccessConfiguration            `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	ExistenceCache *digest.ExistenceCacheConfiguration `protobuf:"bytes,2,opt,name=existence_cache,json=existenceCache,proto3" json:"existence_cache,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ExistenceCachingBlobAccessConfiguration) ProtoMessage() {}

func (x *ExistenceCachingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 ExistenceCachingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ExistenceCachingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{6}
}

func (x *ExistenceCachingBlobAccessConfiguration) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *ExistenceCachingBlobAccessConfiguration) GetExistenceCache() *digest.ExistenceCacheConfiguration {
	if x != nil {
		return x.ExistenceCache
	}
	return nil
}

type CompletenessCheckingBlobAccessConfiguration struct {
	state                     protoimpl.MessageState   `protogen:"open.v1"`
	Backend                   *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	MaximumTotalTreeSizeBytes int64                    `protobuf:"varint,2,opt,name=maximum_total_tree_size_bytes,json=maximumTotalTreeSizeBytes,proto3" json:"maximum_total_tree_size_bytes,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

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

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

func (*CompletenessCheckingBlobAccessConfiguration) ProtoMessage() {}

func (x *CompletenessCheckingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_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 CompletenessCheckingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*CompletenessCheckingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{7}
}

func (x *CompletenessCheckingBlobAccessConfiguration) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *CompletenessCheckingBlobAccessConfiguration) GetMaximumTotalTreeSizeBytes() int64 {
	if x != nil {
		return x.MaximumTotalTreeSizeBytes
	}
	return 0
}

type ReadFallbackBlobAccessConfiguration struct {
	state         protoimpl.MessageState       `protogen:"open.v1"`
	Primary       *BlobAccessConfiguration     `protobuf:"bytes,1,opt,name=primary,proto3" json:"primary,omitempty"`
	Secondary     *BlobAccessConfiguration     `protobuf:"bytes,2,opt,name=secondary,proto3" json:"secondary,omitempty"`
	Replicator    *BlobReplicatorConfiguration `protobuf:"bytes,3,opt,name=replicator,proto3" json:"replicator,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReadFallbackBlobAccessConfiguration) Reset() {
	*x = ReadFallbackBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReadFallbackBlobAccessConfiguration) ProtoMessage() {}

func (x *ReadFallbackBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[8]
	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 ReadFallbackBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ReadFallbackBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{8}
}

func (x *ReadFallbackBlobAccessConfiguration) GetPrimary() *BlobAccessConfiguration {
	if x != nil {
		return x.Primary
	}
	return nil
}

func (x *ReadFallbackBlobAccessConfiguration) GetSecondary() *BlobAccessConfiguration {
	if x != nil {
		return x.Secondary
	}
	return nil
}

func (x *ReadFallbackBlobAccessConfiguration) GetReplicator() *BlobReplicatorConfiguration {
	if x != nil {
		return x.Replicator
	}
	return nil
}

type ReferenceExpandingBlobAccessConfiguration struct {
	state                             protoimpl.MessageState          `protogen:"open.v1"`
	IndirectContentAddressableStorage *BlobAccessConfiguration        `protobuf:"bytes,1,opt,name=indirect_content_addressable_storage,json=indirectContentAddressableStorage,proto3" json:"indirect_content_addressable_storage,omitempty"`
	AwsSession                        *aws.SessionConfiguration       `protobuf:"bytes,2,opt,name=aws_session,json=awsSession,proto3" json:"aws_session,omitempty"`
	HttpClient                        *client.Configuration           `protobuf:"bytes,3,opt,name=http_client,json=httpClient,proto3" json:"http_client,omitempty"`
	GcpClientOptions                  *gcp.ClientOptionsConfiguration `protobuf:"bytes,4,opt,name=gcp_client_options,json=gcpClientOptions,proto3" json:"gcp_client_options,omitempty"`
	ContentAddressableStorage         *BlobAccessConfiguration        `protobuf:"bytes,5,opt,name=content_addressable_storage,json=contentAddressableStorage,proto3" json:"content_addressable_storage,omitempty"`
	unknownFields                     protoimpl.UnknownFields
	sizeCache                         protoimpl.SizeCache
}

func (x *ReferenceExpandingBlobAccessConfiguration) Reset() {
	*x = ReferenceExpandingBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReferenceExpandingBlobAccessConfiguration) ProtoMessage() {}

func (x *ReferenceExpandingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[9]
	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 ReferenceExpandingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ReferenceExpandingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{9}
}

func (x *ReferenceExpandingBlobAccessConfiguration) GetIndirectContentAddressableStorage() *BlobAccessConfiguration {
	if x != nil {
		return x.IndirectContentAddressableStorage
	}
	return nil
}

func (x *ReferenceExpandingBlobAccessConfiguration) GetAwsSession() *aws.SessionConfiguration {
	if x != nil {
		return x.AwsSession
	}
	return nil
}

func (x *ReferenceExpandingBlobAccessConfiguration) GetHttpClient() *client.Configuration {
	if x != nil {
		return x.HttpClient
	}
	return nil
}

func (x *ReferenceExpandingBlobAccessConfiguration) GetGcpClientOptions() *gcp.ClientOptionsConfiguration {
	if x != nil {
		return x.GcpClientOptions
	}
	return nil
}

func (x *ReferenceExpandingBlobAccessConfiguration) GetContentAddressableStorage() *BlobAccessConfiguration {
	if x != nil {
		return x.ContentAddressableStorage
	}
	return nil
}

type BlobReplicatorConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Mode:
	//
	//	*BlobReplicatorConfiguration_Local
	//	*BlobReplicatorConfiguration_Remote
	//	*BlobReplicatorConfiguration_Queued
	//	*BlobReplicatorConfiguration_Noop
	//	*BlobReplicatorConfiguration_Deduplicating
	//	*BlobReplicatorConfiguration_ConcurrencyLimiting
	Mode          isBlobReplicatorConfiguration_Mode `protobuf_oneof:"mode"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BlobReplicatorConfiguration) Reset() {
	*x = BlobReplicatorConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BlobReplicatorConfiguration) ProtoMessage() {}

func (x *BlobReplicatorConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[10]
	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 BlobReplicatorConfiguration.ProtoReflect.Descriptor instead.
func (*BlobReplicatorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{10}
}

func (x *BlobReplicatorConfiguration) GetMode() isBlobReplicatorConfiguration_Mode {
	if x != nil {
		return x.Mode
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetLocal() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_Local); ok {
			return x.Local
		}
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetRemote() *grpc.ClientConfiguration {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_Remote); ok {
			return x.Remote
		}
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetQueued() *QueuedBlobReplicatorConfiguration {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_Queued); ok {
			return x.Queued
		}
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetNoop() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_Noop); ok {
			return x.Noop
		}
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetDeduplicating() *BlobReplicatorConfiguration {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_Deduplicating); ok {
			return x.Deduplicating
		}
	}
	return nil
}

func (x *BlobReplicatorConfiguration) GetConcurrencyLimiting() *ConcurrencyLimitingBlobReplicatorConfiguration {
	if x != nil {
		if x, ok := x.Mode.(*BlobReplicatorConfiguration_ConcurrencyLimiting); ok {
			return x.ConcurrencyLimiting
		}
	}
	return nil
}

type isBlobReplicatorConfiguration_Mode interface {
	isBlobReplicatorConfiguration_Mode()
}

type BlobReplicatorConfiguration_Local struct {
	Local *emptypb.Empty `protobuf:"bytes,1,opt,name=local,proto3,oneof"`
}

type BlobReplicatorConfiguration_Remote struct {
	Remote *grpc.ClientConfiguration `protobuf:"bytes,2,opt,name=remote,proto3,oneof"`
}

type BlobReplicatorConfiguration_Queued struct {
	Queued *QueuedBlobReplicatorConfiguration `protobuf:"bytes,3,opt,name=queued,proto3,oneof"`
}

type BlobReplicatorConfiguration_Noop struct {
	Noop *emptypb.Empty `protobuf:"bytes,4,opt,name=noop,proto3,oneof"`
}

type BlobReplicatorConfiguration_Deduplicating struct {
	Deduplicating *BlobReplicatorConfiguration `protobuf:"bytes,5,opt,name=deduplicating,proto3,oneof"`
}

type BlobReplicatorConfiguration_ConcurrencyLimiting struct {
	ConcurrencyLimiting *ConcurrencyLimitingBlobReplicatorConfiguration `protobuf:"bytes,6,opt,name=concurrency_limiting,json=concurrencyLimiting,proto3,oneof"`
}

func (*BlobReplicatorConfiguration_Local) isBlobReplicatorConfiguration_Mode() {}

func (*BlobReplicatorConfiguration_Remote) isBlobReplicatorConfiguration_Mode() {}

func (*BlobReplicatorConfiguration_Queued) isBlobReplicatorConfiguration_Mode() {}

func (*BlobReplicatorConfiguration_Noop) isBlobReplicatorConfiguration_Mode() {}

func (*BlobReplicatorConfiguration_Deduplicating) isBlobReplicatorConfiguration_Mode() {}

func (*BlobReplicatorConfiguration_ConcurrencyLimiting) isBlobReplicatorConfiguration_Mode() {}

type QueuedBlobReplicatorConfiguration struct {
	state          protoimpl.MessageState              `protogen:"open.v1"`
	Base           *BlobReplicatorConfiguration        `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
	ExistenceCache *digest.ExistenceCacheConfiguration `protobuf:"bytes,2,opt,name=existence_cache,json=existenceCache,proto3" json:"existence_cache,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *QueuedBlobReplicatorConfiguration) Reset() {
	*x = QueuedBlobReplicatorConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*QueuedBlobReplicatorConfiguration) ProtoMessage() {}

func (x *QueuedBlobReplicatorConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[11]
	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 QueuedBlobReplicatorConfiguration.ProtoReflect.Descriptor instead.
func (*QueuedBlobReplicatorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{11}
}

func (x *QueuedBlobReplicatorConfiguration) GetBase() *BlobReplicatorConfiguration {
	if x != nil {
		return x.Base
	}
	return nil
}

func (x *QueuedBlobReplicatorConfiguration) GetExistenceCache() *digest.ExistenceCacheConfiguration {
	if x != nil {
		return x.ExistenceCache
	}
	return nil
}

type ConcurrencyLimitingBlobReplicatorConfiguration struct {
	state              protoimpl.MessageState       `protogen:"open.v1"`
	Base               *BlobReplicatorConfiguration `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
	MaximumConcurrency int64                        `protobuf:"varint,2,opt,name=maximum_concurrency,json=maximumConcurrency,proto3" json:"maximum_concurrency,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *ConcurrencyLimitingBlobReplicatorConfiguration) Reset() {
	*x = ConcurrencyLimitingBlobReplicatorConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ConcurrencyLimitingBlobReplicatorConfiguration) ProtoMessage() {}

func (x *ConcurrencyLimitingBlobReplicatorConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[12]
	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 ConcurrencyLimitingBlobReplicatorConfiguration.ProtoReflect.Descriptor instead.
func (*ConcurrencyLimitingBlobReplicatorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{12}
}

func (x *ConcurrencyLimitingBlobReplicatorConfiguration) GetBase() *BlobReplicatorConfiguration {
	if x != nil {
		return x.Base
	}
	return nil
}

func (x *ConcurrencyLimitingBlobReplicatorConfiguration) GetMaximumConcurrency() int64 {
	if x != nil {
		return x.MaximumConcurrency
	}
	return 0
}

type DemultiplexingBlobAccessConfiguration struct {
	state                protoimpl.MessageState                           `protogen:"open.v1"`
	InstanceNamePrefixes map[string]*DemultiplexedBlobAccessConfiguration `protobuf:"bytes,1,rep,name=instance_name_prefixes,json=instanceNamePrefixes,proto3" json:"instance_name_prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *DemultiplexingBlobAccessConfiguration) Reset() {
	*x = DemultiplexingBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DemultiplexingBlobAccessConfiguration) ProtoMessage() {}

func (x *DemultiplexingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[13]
	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 DemultiplexingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*DemultiplexingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{13}
}

func (x *DemultiplexingBlobAccessConfiguration) GetInstanceNamePrefixes() map[string]*DemultiplexedBlobAccessConfiguration {
	if x != nil {
		return x.InstanceNamePrefixes
	}
	return nil
}

type DemultiplexedBlobAccessConfiguration struct {
	state                 protoimpl.MessageState   `protogen:"open.v1"`
	Backend               *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	AddInstanceNamePrefix string                   `protobuf:"bytes,2,opt,name=add_instance_name_prefix,json=addInstanceNamePrefix,proto3" json:"add_instance_name_prefix,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *DemultiplexedBlobAccessConfiguration) Reset() {
	*x = DemultiplexedBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DemultiplexedBlobAccessConfiguration) ProtoMessage() {}

func (x *DemultiplexedBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[14]
	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 DemultiplexedBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*DemultiplexedBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{14}
}

func (x *DemultiplexedBlobAccessConfiguration) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *DemultiplexedBlobAccessConfiguration) GetAddInstanceNamePrefix() string {
	if x != nil {
		return x.AddInstanceNamePrefix
	}
	return ""
}

type ActionResultExpiringBlobAccessConfiguration struct {
	state                 protoimpl.MessageState   `protogen:"open.v1"`
	Backend               *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	MinimumValidity       *durationpb.Duration     `protobuf:"bytes,2,opt,name=minimum_validity,json=minimumValidity,proto3" json:"minimum_validity,omitempty"`
	MaximumValidityJitter *durationpb.Duration     `protobuf:"bytes,3,opt,name=maximum_validity_jitter,json=maximumValidityJitter,proto3" json:"maximum_validity_jitter,omitempty"`
	MinimumTimestamp      *timestamppb.Timestamp   `protobuf:"bytes,4,opt,name=minimum_timestamp,json=minimumTimestamp,proto3" json:"minimum_timestamp,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *ActionResultExpiringBlobAccessConfiguration) Reset() {
	*x = ActionResultExpiringBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ActionResultExpiringBlobAccessConfiguration) ProtoMessage() {}

func (x *ActionResultExpiringBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[15]
	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 ActionResultExpiringBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ActionResultExpiringBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{15}
}

func (x *ActionResultExpiringBlobAccessConfiguration) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *ActionResultExpiringBlobAccessConfiguration) GetMinimumValidity() *durationpb.Duration {
	if x != nil {
		return x.MinimumValidity
	}
	return nil
}

func (x *ActionResultExpiringBlobAccessConfiguration) GetMaximumValidityJitter() *durationpb.Duration {
	if x != nil {
		return x.MaximumValidityJitter
	}
	return nil
}

func (x *ActionResultExpiringBlobAccessConfiguration) GetMinimumTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.MinimumTimestamp
	}
	return nil
}

type ReadCanaryingBlobAccessConfiguration struct {
	state                protoimpl.MessageState   `protogen:"open.v1"`
	Source               *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	Replica              *BlobAccessConfiguration `protobuf:"bytes,2,opt,name=replica,proto3" json:"replica,omitempty"`
	MaximumCacheSize     int32                    `protobuf:"varint,3,opt,name=maximum_cache_size,json=maximumCacheSize,proto3" json:"maximum_cache_size,omitempty"`
	MaximumCacheDuration *durationpb.Duration     `protobuf:"bytes,4,opt,name=maximum_cache_duration,json=maximumCacheDuration,proto3" json:"maximum_cache_duration,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *ReadCanaryingBlobAccessConfiguration) Reset() {
	*x = ReadCanaryingBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReadCanaryingBlobAccessConfiguration) ProtoMessage() {}

func (x *ReadCanaryingBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[16]
	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 ReadCanaryingBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ReadCanaryingBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{16}
}

func (x *ReadCanaryingBlobAccessConfiguration) GetSource() *BlobAccessConfiguration {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *ReadCanaryingBlobAccessConfiguration) GetReplica() *BlobAccessConfiguration {
	if x != nil {
		return x.Replica
	}
	return nil
}

func (x *ReadCanaryingBlobAccessConfiguration) GetMaximumCacheSize() int32 {
	if x != nil {
		return x.MaximumCacheSize
	}
	return 0
}

func (x *ReadCanaryingBlobAccessConfiguration) GetMaximumCacheDuration() *durationpb.Duration {
	if x != nil {
		return x.MaximumCacheDuration
	}
	return nil
}

type ZIPBlobAccessConfiguration struct {
	state                        protoimpl.MessageState              `protogen:"open.v1"`
	Path                         string                              `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	DataIntegrityValidationCache *digest.ExistenceCacheConfiguration `protobuf:"bytes,2,opt,name=data_integrity_validation_cache,json=dataIntegrityValidationCache,proto3" json:"data_integrity_validation_cache,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

func (x *ZIPBlobAccessConfiguration) Reset() {
	*x = ZIPBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ZIPBlobAccessConfiguration) ProtoMessage() {}

func (x *ZIPBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[17]
	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 ZIPBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*ZIPBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{17}
}

func (x *ZIPBlobAccessConfiguration) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *ZIPBlobAccessConfiguration) GetDataIntegrityValidationCache() *digest.ExistenceCacheConfiguration {
	if x != nil {
		return x.DataIntegrityValidationCache
	}
	return nil
}

type WithLabelsBlobAccessConfiguration struct {
	state         protoimpl.MessageState              `protogen:"open.v1"`
	Backend       *BlobAccessConfiguration            `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	Labels        map[string]*BlobAccessConfiguration `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WithLabelsBlobAccessConfiguration) Reset() {
	*x = WithLabelsBlobAccessConfiguration{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WithLabelsBlobAccessConfiguration) ProtoMessage() {}

func (x *WithLabelsBlobAccessConfiguration) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[18]
	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 WithLabelsBlobAccessConfiguration.ProtoReflect.Descriptor instead.
func (*WithLabelsBlobAccessConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{18}
}

func (x *WithLabelsBlobAccessConfiguration) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *WithLabelsBlobAccessConfiguration) GetLabels() map[string]*BlobAccessConfiguration {
	if x != nil {
		return x.Labels
	}
	return nil
}

type DeadlineEnforcingBlobAccess struct {
	state         protoimpl.MessageState   `protogen:"open.v1"`
	Timeout       *durationpb.Duration     `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"`
	Backend       *BlobAccessConfiguration `protobuf:"bytes,2,opt,name=backend,proto3" json:"backend,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeadlineEnforcingBlobAccess) Reset() {
	*x = DeadlineEnforcingBlobAccess{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeadlineEnforcingBlobAccess) ProtoMessage() {}

func (x *DeadlineEnforcingBlobAccess) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[19]
	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 DeadlineEnforcingBlobAccess.ProtoReflect.Descriptor instead.
func (*DeadlineEnforcingBlobAccess) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{19}
}

func (x *DeadlineEnforcingBlobAccess) GetTimeout() *durationpb.Duration {
	if x != nil {
		return x.Timeout
	}
	return nil
}

func (x *DeadlineEnforcingBlobAccess) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

type ShardingBlobAccessConfiguration_Shard struct {
	state         protoimpl.MessageState   `protogen:"open.v1"`
	Backend       *BlobAccessConfiguration `protobuf:"bytes,1,opt,name=backend,proto3" json:"backend,omitempty"`
	Weight        uint32                   `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ShardingBlobAccessConfiguration_Shard) Reset() {
	*x = ShardingBlobAccessConfiguration_Shard{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShardingBlobAccessConfiguration_Shard) ProtoMessage() {}

func (x *ShardingBlobAccessConfiguration_Shard) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[20]
	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 ShardingBlobAccessConfiguration_Shard.ProtoReflect.Descriptor instead.
func (*ShardingBlobAccessConfiguration_Shard) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{3, 0}
}

func (x *ShardingBlobAccessConfiguration_Shard) GetBackend() *BlobAccessConfiguration {
	if x != nil {
		return x.Backend
	}
	return nil
}

func (x *ShardingBlobAccessConfiguration_Shard) GetWeight() uint32 {
	if x != nil {
		return x.Weight
	}
	return 0
}

type ShardingBlobAccessConfiguration_Legacy struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	ShardOrder         []string               `protobuf:"bytes,1,rep,name=shard_order,json=shardOrder,proto3" json:"shard_order,omitempty"`
	HashInitialization uint64                 `protobuf:"varint,2,opt,name=hash_initialization,json=hashInitialization,proto3" json:"hash_initialization,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *ShardingBlobAccessConfiguration_Legacy) Reset() {
	*x = ShardingBlobAccessConfiguration_Legacy{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ShardingBlobAccessConfiguration_Legacy) ProtoMessage() {}

func (x *ShardingBlobAccessConfiguration_Legacy) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[21]
	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 ShardingBlobAccessConfiguration_Legacy.ProtoReflect.Descriptor instead.
func (*ShardingBlobAccessConfiguration_Legacy) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{3, 1}
}

func (x *ShardingBlobAccessConfiguration_Legacy) GetShardOrder() []string {
	if x != nil {
		return x.ShardOrder
	}
	return nil
}

func (x *ShardingBlobAccessConfiguration_Legacy) GetHashInitialization() uint64 {
	if x != nil {
		return x.HashInitialization
	}
	return 0
}

type LocalBlobAccessConfiguration_KeyLocationMapInMemory struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Entries       int64                  `protobuf:"varint,1,opt,name=entries,proto3" json:"entries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LocalBlobAccessConfiguration_KeyLocationMapInMemory) Reset() {
	*x = LocalBlobAccessConfiguration_KeyLocationMapInMemory{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LocalBlobAccessConfiguration_KeyLocationMapInMemory) ProtoMessage() {}

func (x *LocalBlobAccessConfiguration_KeyLocationMapInMemory) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[23]
	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 LocalBlobAccessConfiguration_KeyLocationMapInMemory.ProtoReflect.Descriptor instead.
func (*LocalBlobAccessConfiguration_KeyLocationMapInMemory) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{5, 0}
}

func (x *LocalBlobAccessConfiguration_KeyLocationMapInMemory) GetEntries() int64 {
	if x != nil {
		return x.Entries
	}
	return 0
}

type LocalBlobAccessConfiguration_BlocksInMemory struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	BlockSizeBytes int64                  `protobuf:"varint,1,opt,name=block_size_bytes,json=blockSizeBytes,proto3" json:"block_size_bytes,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *LocalBlobAccessConfiguration_BlocksInMemory) Reset() {
	*x = LocalBlobAccessConfiguration_BlocksInMemory{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LocalBlobAccessConfiguration_BlocksInMemory) ProtoMessage() {}

func (x *LocalBlobAccessConfiguration_BlocksInMemory) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[24]
	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 LocalBlobAccessConfiguration_BlocksInMemory.ProtoReflect.Descriptor instead.
func (*LocalBlobAccessConfiguration_BlocksInMemory) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{5, 1}
}

func (x *LocalBlobAccessConfiguration_BlocksInMemory) GetBlockSizeBytes() int64 {
	if x != nil {
		return x.BlockSizeBytes
	}
	return 0
}

type LocalBlobAccessConfiguration_BlocksOnBlockDevice struct {
	state                        protoimpl.MessageState              `protogen:"open.v1"`
	Source                       *blockdevice.Configuration          `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	SpareBlocks                  int32                               `protobuf:"varint,2,opt,name=spare_blocks,json=spareBlocks,proto3" json:"spare_blocks,omitempty"`
	DataIntegrityValidationCache *digest.ExistenceCacheConfiguration `protobuf:"bytes,3,opt,name=data_integrity_validation_cache,json=dataIntegrityValidationCache,proto3" json:"data_integrity_validation_cache,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

func (x *LocalBlobAccessConfiguration_BlocksOnBlockDevice) Reset() {
	*x = LocalBlobAccessConfiguration_BlocksOnBlockDevice{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LocalBlobAccessConfiguration_BlocksOnBlockDevice) ProtoMessage() {}

func (x *LocalBlobAccessConfiguration_BlocksOnBlockDevice) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[25]
	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 LocalBlobAccessConfiguration_BlocksOnBlockDevice.ProtoReflect.Descriptor instead.
func (*LocalBlobAccessConfiguration_BlocksOnBlockDevice) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{5, 2}
}

func (x *LocalBlobAccessConfiguration_BlocksOnBlockDevice) GetSource() *blockdevice.Configuration {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *LocalBlobAccessConfiguration_BlocksOnBlockDevice) GetSpareBlocks() int32 {
	if x != nil {
		return x.SpareBlocks
	}
	return 0
}

func (x *LocalBlobAccessConfiguration_BlocksOnBlockDevice) GetDataIntegrityValidationCache() *digest.ExistenceCacheConfiguration {
	if x != nil {
		return x.DataIntegrityValidationCache
	}
	return nil
}

type LocalBlobAccessConfiguration_Persistent struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	StateDirectoryPath   string                 `protobuf:"bytes,1,opt,name=state_directory_path,json=stateDirectoryPath,proto3" json:"state_directory_path,omitempty"`
	MinimumEpochInterval *durationpb.Duration   `protobuf:"bytes,2,opt,name=minimum_epoch_interval,json=minimumEpochInterval,proto3" json:"minimum_epoch_interval,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *LocalBlobAccessConfiguration_Persistent) Reset() {
	*x = LocalBlobAccessConfiguration_Persistent{}
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LocalBlobAccessConfiguration_Persistent) ProtoMessage() {}

func (x *LocalBlobAccessConfiguration_Persistent) ProtoReflect() protoreflect.Message {
	mi := &file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[26]
	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 LocalBlobAccessConfiguration_Persistent.ProtoReflect.Descriptor instead.
func (*LocalBlobAccessConfiguration_Persistent) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP(), []int{5, 3}
}

func (x *LocalBlobAccessConfiguration_Persistent) GetStateDirectoryPath() string {
	if x != nil {
		return x.StateDirectoryPath
	}
	return ""
}

func (x *LocalBlobAccessConfiguration_Persistent) GetMinimumEpochInterval() *durationpb.Duration {
	if x != nil {
		return x.MinimumEpochInterval
	}
	return nil
}

var File_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto protoreflect.FileDescriptor

const file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDesc = "" +
	"\n" +
	"Qgithub.com/buildbarn/bb-storage/pkg/proto/configuration/blobstore/blobstore.proto\x12!buildbarn.configuration.blobstore\x1aUgithub.com/buildbarn/bb-storage/pkg/proto/configuration/blockdevice/blockdevice.proto\x1aKgithub.com/buildbarn/bb-storage/pkg/proto/configuration/cloud/aws/aws.proto\x1aKgithub.com/buildbarn/bb-storage/pkg/proto/configuration/cloud/gcp/gcp.proto\x1aKgithub.com/buildbarn/bb-storage/pkg/proto/configuration/digest/digest.proto\x1aGgithub.com/buildbarn/bb-storage/pkg/proto/configuration/grpc/grpc.proto\x1aPgithub.com/buildbarn/bb-storage/pkg/proto/configuration/http/client/client.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\"\xf3\x01\n" +
	"\x16BlobstoreConfiguration\x12z\n" +
	"\x1bcontent_addressable_storage\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x19contentAddressableStorage\x12]\n" +
	"\faction_cache\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\vactionCache\"\xd6\x0f\n" +
	"\x17BlobAccessConfiguration\x12j\n" +
	"\fread_caching\x18\x04 \x01(\v2E.buildbarn.configuration.blobstore.ReadCachingBlobAccessConfigurationH\x00R\vreadCaching\x12G\n" +
	"\x04grpc\x18\a \x01(\v21.buildbarn.configuration.grpc.ClientConfigurationH\x00R\x04grpc\x12*\n" +
	"\x05error\x18\b \x01(\v2\x12.google.rpc.StatusH\x00R\x05error\x12`\n" +
	"\bsharding\x18\t \x01(\v2B.buildbarn.configuration.blobstore.ShardingBlobAccessConfigurationH\x00R\bsharding\x12`\n" +
	"\bmirrored\x18\x0e \x01(\v2B.buildbarn.configuration.blobstore.MirroredBlobAccessConfigurationH\x00R\bmirrored\x12W\n" +
	"\x05local\x18\x0f \x01(\v2?.buildbarn.configuration.blobstore.LocalBlobAccessConfigurationH\x00R\x05local\x12y\n" +
	"\x11existence_caching\x18\x10 \x01(\v2J.buildbarn.configuration.blobstore.ExistenceCachingBlobAccessConfigurationH\x00R\x10existenceCaching\x12\x85\x01\n" +
	"\x15completeness_checking\x18\x11 \x01(\v2N.buildbarn.configuration.blobstore.CompletenessCheckingBlobAccessConfigurationH\x00R\x14completenessChecking\x12m\n" +
	"\rread_fallback\x18\x12 \x01(\v2F.buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfigurationH\x00R\freadFallback\x12\x7f\n" +
	"\x13reference_expanding\x18\x13 \x01(\v2L.buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfigurationH\x00R\x12referenceExpanding\x12r\n" +
	"\x0edemultiplexing\x18\x14 \x01(\v2H.buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfigurationH\x00R\x0edemultiplexing\x12|\n" +
	"\x1bhierarchical_instance_names\x18\x15 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationH\x00R\x19hierarchicalInstanceNames\x12\x86\x01\n" +
	"\x16action_result_expiring\x18\x16 \x01(\v2N.buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfigurationH\x00R\x14actionResultExpiring\x12p\n" +
	"\x0eread_canarying\x18\x17 \x01(\v2G.buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfigurationH\x00R\rreadCanarying\x12`\n" +
	"\vzip_reading\x18\x18 \x01(\v2=.buildbarn.configuration.blobstore.ZIPBlobAccessConfigurationH\x00R\n" +
	"zipReading\x12`\n" +
	"\vzip_writing\x18\x19 \x01(\v2=.buildbarn.configuration.blobstore.ZIPBlobAccessConfigurationH\x00R\n" +
	"zipWriting\x12g\n" +
	"\vwith_labels\x18\x1a \x01(\v2D.buildbarn.configuration.blobstore.WithLabelsBlobAccessConfigurationH\x00R\n" +
	"withLabels\x12\x16\n" +
	"\x05label\x18\x1b \x01(\tH\x00R\x05label\x12o\n" +
	"\x12deadline_enforcing\x18\x1c \x01(\v2>.buildbarn.configuration.blobstore.DeadlineEnforcingBlobAccessH\x00R\x11deadlineEnforcingB\t\n" +
	"\abackendJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\x05\x10\x06J\x04\b\x06\x10\aJ\x04\b\n" +
	"\x10\v\"\xa4\x02\n" +
	"\"ReadCachingBlobAccessConfiguration\x12N\n" +
	"\x04slow\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x04slow\x12N\n" +
	"\x04fast\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x04fast\x12^\n" +
	"\n" +
	"replicator\x18\x03 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\n" +
	"replicator\"\xcb\x04\n" +
	"\x1fShardingBlobAccessConfiguration\x12f\n" +
	"\x06shards\x18\x02 \x03(\v2N.buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.ShardsEntryR\x06shards\x12a\n" +
	"\x06legacy\x18\x03 \x01(\v2I.buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.LegacyR\x06legacy\x1au\n" +
	"\x05Shard\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x12\x16\n" +
	"\x06weight\x18\x02 \x01(\rR\x06weight\x1aZ\n" +
	"\x06Legacy\x12\x1f\n" +
	"\vshard_order\x18\x01 \x03(\tR\n" +
	"shardOrder\x12/\n" +
	"\x13hash_initialization\x18\x02 \x01(\x04R\x12hashInitialization\x1a\x83\x01\n" +
	"\vShardsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12^\n" +
	"\x05value\x18\x02 \x01(\v2H.buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.ShardR\x05value:\x028\x01J\x04\b\x01\x10\x02\"\xa9\x03\n" +
	"\x1fMirroredBlobAccessConfiguration\x12W\n" +
	"\tbackend_a\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\bbackendA\x12W\n" +
	"\tbackend_b\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\bbackendB\x12i\n" +
	"\x11replicator_a_to_b\x18\x03 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\x0ereplicatorAToB\x12i\n" +
	"\x11replicator_b_to_a\x18\x04 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\x0ereplicatorBToA\"\xb6\f\n" +
	"\x1cLocalBlobAccessConfiguration\x12\x94\x01\n" +
	"\x1akey_location_map_in_memory\x18\v \x01(\v2V.buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.KeyLocationMapInMemoryH\x00R\x16keyLocationMapInMemory\x12{\n" +
	" key_location_map_on_block_device\x18\f \x01(\v22.buildbarn.configuration.blockdevice.ConfigurationH\x00R\x1bkeyLocationMapOnBlockDevice\x12O\n" +
	"%key_location_map_maximum_get_attempts\x18\x02 \x01(\rR keyLocationMapMaximumGetAttempts\x12O\n" +
	"%key_location_map_maximum_put_attempts\x18\x03 \x01(\x03R keyLocationMapMaximumPutAttempts\x12\x1d\n" +
	"\n" +
	"old_blocks\x18\x05 \x01(\x05R\toldBlocks\x12%\n" +
	"\x0ecurrent_blocks\x18\x06 \x01(\x05R\rcurrentBlocks\x12\x1d\n" +
	"\n" +
	"new_blocks\x18\a \x01(\x05R\tnewBlocks\x12z\n" +
	"\x10blocks_in_memory\x18\t \x01(\v2N.buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksInMemoryH\x01R\x0eblocksInMemory\x12\x8a\x01\n" +
	"\x16blocks_on_block_device\x18\n" +
	" \x01(\v2S.buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksOnBlockDeviceH\x01R\x13blocksOnBlockDevice\x12j\n" +
	"\n" +
	"persistent\x18\r \x01(\v2J.buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.PersistentR\n" +
	"persistent\x12>\n" +
	"\x1bhierarchical_instance_names\x18\x0e \x01(\bR\x19hierarchicalInstanceNames\x1a2\n" +
	"\x16KeyLocationMapInMemory\x12\x18\n" +
	"\aentries\x18\x01 \x01(\x03R\aentries\x1a:\n" +
	"\x0eBlocksInMemory\x12(\n" +
	"\x10block_size_bytes\x18\x01 \x01(\x03R\x0eblockSizeBytes\x1a\x89\x02\n" +
	"\x13BlocksOnBlockDevice\x12J\n" +
	"\x06source\x18\x01 \x01(\v22.buildbarn.configuration.blockdevice.ConfigurationR\x06source\x12!\n" +
	"\fspare_blocks\x18\x02 \x01(\x05R\vspareBlocks\x12\x82\x01\n" +
	"\x1fdata_integrity_validation_cache\x18\x03 \x01(\v2;.buildbarn.configuration.digest.ExistenceCacheConfigurationR\x1cdataIntegrityValidationCache\x1a\x8f\x01\n" +
	"\n" +
	"Persistent\x120\n" +
	"\x14state_directory_path\x18\x01 \x01(\tR\x12stateDirectoryPath\x12O\n" +
	"\x16minimum_epoch_interval\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x14minimumEpochIntervalB\x1a\n" +
	"\x18key_location_map_backendB\x10\n" +
	"\x0eblocks_backendJ\x04\b\x01\x10\x02J\x04\b\b\x10\t\"\xe5\x01\n" +
	"'ExistenceCachingBlobAccessConfiguration\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x12d\n" +
	"\x0fexistence_cache\x18\x02 \x01(\v2;.buildbarn.configuration.digest.ExistenceCacheConfigurationR\x0eexistenceCache\"\xc5\x01\n" +
	"+CompletenessCheckingBlobAccessConfiguration\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x12@\n" +
	"\x1dmaximum_total_tree_size_bytes\x18\x02 \x01(\x03R\x19maximumTotalTreeSizeBytes\"\xb5\x02\n" +
	"#ReadFallbackBlobAccessConfiguration\x12T\n" +
	"\aprimary\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\aprimary\x12X\n" +
	"\tsecondary\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\tsecondary\x12^\n" +
	"\n" +
	"replicator\x18\x03 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\n" +
	"replicator\"\xd1\x04\n" +
	")ReferenceExpandingBlobAccessConfiguration\x12\x8b\x01\n" +
	"$indirect_content_addressable_storage\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR!indirectContentAddressableStorage\x12X\n" +
	"\vaws_session\x18\x02 \x01(\v27.buildbarn.configuration.cloud.aws.SessionConfigurationR\n" +
	"awsSession\x12S\n" +
	"\vhttp_client\x18\x03 \x01(\v22.buildbarn.configuration.http.client.ConfigurationR\n" +
	"httpClient\x12k\n" +
	"\x12gcp_client_options\x18\x04 \x01(\v2=.buildbarn.configuration.cloud.gcp.ClientOptionsConfigurationR\x10gcpClientOptions\x12z\n" +
	"\x1bcontent_addressable_storage\x18\x05 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x19contentAddressableStorage\"\xa1\x04\n" +
	"\x1bBlobReplicatorConfiguration\x12.\n" +
	"\x05local\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x05local\x12K\n" +
	"\x06remote\x18\x02 \x01(\v21.buildbarn.configuration.grpc.ClientConfigurationH\x00R\x06remote\x12^\n" +
	"\x06queued\x18\x03 \x01(\v2D.buildbarn.configuration.blobstore.QueuedBlobReplicatorConfigurationH\x00R\x06queued\x12,\n" +
	"\x04noop\x18\x04 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x04noop\x12f\n" +
	"\rdeduplicating\x18\x05 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationH\x00R\rdeduplicating\x12\x86\x01\n" +
	"\x14concurrency_limiting\x18\x06 \x01(\v2Q.buildbarn.configuration.blobstore.ConcurrencyLimitingBlobReplicatorConfigurationH\x00R\x13concurrencyLimitingB\x06\n" +
	"\x04mode\"\xdd\x01\n" +
	"!QueuedBlobReplicatorConfiguration\x12R\n" +
	"\x04base\x18\x01 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\x04base\x12d\n" +
	"\x0fexistence_cache\x18\x02 \x01(\v2;.buildbarn.configuration.digest.ExistenceCacheConfigurationR\x0eexistenceCache\"\xb5\x01\n" +
	".ConcurrencyLimitingBlobReplicatorConfiguration\x12R\n" +
	"\x04base\x18\x01 \x01(\v2>.buildbarn.configuration.blobstore.BlobReplicatorConfigurationR\x04base\x12/\n" +
	"\x13maximum_concurrency\x18\x02 \x01(\x03R\x12maximumConcurrency\"\xd5\x02\n" +
	"%DemultiplexingBlobAccessConfiguration\x12\x98\x01\n" +
	"\x16instance_name_prefixes\x18\x01 \x03(\v2b.buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration.InstanceNamePrefixesEntryR\x14instanceNamePrefixes\x1a\x90\x01\n" +
	"\x19InstanceNamePrefixesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12]\n" +
	"\x05value\x18\x02 \x01(\v2G.buildbarn.configuration.blobstore.DemultiplexedBlobAccessConfigurationR\x05value:\x028\x01\"\xb5\x01\n" +
	"$DemultiplexedBlobAccessConfiguration\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x127\n" +
	"\x18add_instance_name_prefix\x18\x02 \x01(\tR\x15addInstanceNamePrefix\"\xe5\x02\n" +
	"+ActionResultExpiringBlobAccessConfiguration\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x12D\n" +
	"\x10minimum_validity\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x0fminimumValidity\x12Q\n" +
	"\x17maximum_validity_jitter\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\x15maximumValidityJitter\x12G\n" +
	"\x11minimum_timestamp\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\x10minimumTimestamp\"\xcf\x02\n" +
	"$ReadCanaryingBlobAccessConfiguration\x12R\n" +
	"\x06source\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x06source\x12T\n" +
	"\areplica\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\areplica\x12,\n" +
	"\x12maximum_cache_size\x18\x03 \x01(\x05R\x10maximumCacheSize\x12O\n" +
	"\x16maximum_cache_duration\x18\x04 \x01(\v2\x19.google.protobuf.DurationR\x14maximumCacheDuration\"\xb5\x01\n" +
	"\x1aZIPBlobAccessConfiguration\x12\x12\n" +
	"\x04path\x18\x01 \x01(\tR\x04path\x12\x82\x01\n" +
	"\x1fdata_integrity_validation_cache\x18\x02 \x01(\v2;.buildbarn.configuration.digest.ExistenceCacheConfigurationR\x1cdataIntegrityValidationCache\"\xda\x02\n" +
	"!WithLabelsBlobAccessConfiguration\x12T\n" +
	"\abackend\x18\x01 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackend\x12h\n" +
	"\x06labels\x18\x02 \x03(\v2P.buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.LabelsEntryR\x06labels\x1au\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12P\n" +
	"\x05value\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\x05value:\x028\x01\"\xa8\x01\n" +
	"\x1bDeadlineEnforcingBlobAccess\x123\n" +
	"\atimeout\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\atimeout\x12T\n" +
	"\abackend\x18\x02 \x01(\v2:.buildbarn.configuration.blobstore.BlobAccessConfigurationR\abackendBCZAgithub.com/buildbarn/bb-storage/pkg/proto/configuration/blobstoreb\x06proto3"

var (
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescOnce sync.Once
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescData []byte
)

func file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescGZIP() []byte {
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescOnce.Do(func() {
		file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDesc), len(file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDesc)))
	})
	return file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDescData
}

var file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
var file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_goTypes = []any{
	(*BlobstoreConfiguration)(nil),                         // 0: buildbarn.configuration.blobstore.BlobstoreConfiguration
	(*BlobAccessConfiguration)(nil),                        // 1: buildbarn.configuration.blobstore.BlobAccessConfiguration
	(*ReadCachingBlobAccessConfiguration)(nil),             // 2: buildbarn.configuration.blobstore.ReadCachingBlobAccessConfiguration
	(*ShardingBlobAccessConfiguration)(nil),                // 3: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration
	(*MirroredBlobAccessConfiguration)(nil),                // 4: buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration
	(*LocalBlobAccessConfiguration)(nil),                   // 5: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration
	(*ExistenceCachingBlobAccessConfiguration)(nil),        // 6: buildbarn.configuration.blobstore.ExistenceCachingBlobAccessConfiguration
	(*CompletenessCheckingBlobAccessConfiguration)(nil),    // 7: buildbarn.configuration.blobstore.CompletenessCheckingBlobAccessConfiguration
	(*ReadFallbackBlobAccessConfiguration)(nil),            // 8: buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfiguration
	(*ReferenceExpandingBlobAccessConfiguration)(nil),      // 9: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration
	(*BlobReplicatorConfiguration)(nil),                    // 10: buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	(*QueuedBlobReplicatorConfiguration)(nil),              // 11: buildbarn.configuration.blobstore.QueuedBlobReplicatorConfiguration
	(*ConcurrencyLimitingBlobReplicatorConfiguration)(nil), // 12: buildbarn.configuration.blobstore.ConcurrencyLimitingBlobReplicatorConfiguration
	(*DemultiplexingBlobAccessConfiguration)(nil),          // 13: buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration
	(*DemultiplexedBlobAccessConfiguration)(nil),           // 14: buildbarn.configuration.blobstore.DemultiplexedBlobAccessConfiguration
	(*ActionResultExpiringBlobAccessConfiguration)(nil),    // 15: buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration
	(*ReadCanaryingBlobAccessConfiguration)(nil),           // 16: buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfiguration
	(*ZIPBlobAccessConfiguration)(nil),                     // 17: buildbarn.configuration.blobstore.ZIPBlobAccessConfiguration
	(*WithLabelsBlobAccessConfiguration)(nil),              // 18: buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration
	(*DeadlineEnforcingBlobAccess)(nil),                    // 19: buildbarn.configuration.blobstore.DeadlineEnforcingBlobAccess
	(*ShardingBlobAccessConfiguration_Shard)(nil),          // 20: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.Shard
	(*ShardingBlobAccessConfiguration_Legacy)(nil),         // 21: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.Legacy
	nil, // 22: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.ShardsEntry
	(*LocalBlobAccessConfiguration_KeyLocationMapInMemory)(nil), // 23: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.KeyLocationMapInMemory
	(*LocalBlobAccessConfiguration_BlocksInMemory)(nil),         // 24: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksInMemory
	(*LocalBlobAccessConfiguration_BlocksOnBlockDevice)(nil),    // 25: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksOnBlockDevice
	(*LocalBlobAccessConfiguration_Persistent)(nil),             // 26: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.Persistent
	nil,                               // 27: buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration.InstanceNamePrefixesEntry
	nil,                               // 28: buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.LabelsEntry
	(*grpc.ClientConfiguration)(nil),  // 29: buildbarn.configuration.grpc.ClientConfiguration
	(*status.Status)(nil),             // 30: google.rpc.Status
	(*blockdevice.Configuration)(nil), // 31: buildbarn.configuration.blockdevice.Configuration
	(*digest.ExistenceCacheConfiguration)(nil), // 32: buildbarn.configuration.digest.ExistenceCacheConfiguration
	(*aws.SessionConfiguration)(nil),           // 33: buildbarn.configuration.cloud.aws.SessionConfiguration
	(*client.Configuration)(nil),               // 34: buildbarn.configuration.http.client.Configuration
	(*gcp.ClientOptionsConfiguration)(nil),     // 35: buildbarn.configuration.cloud.gcp.ClientOptionsConfiguration
	(*emptypb.Empty)(nil),                      // 36: google.protobuf.Empty
	(*durationpb.Duration)(nil),                // 37: google.protobuf.Duration
	(*timestamppb.Timestamp)(nil),              // 38: google.protobuf.Timestamp
}
var file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_depIdxs = []int32{
	1,  // 0: buildbarn.configuration.blobstore.BlobstoreConfiguration.content_addressable_storage:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 1: buildbarn.configuration.blobstore.BlobstoreConfiguration.action_cache:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	2,  // 2: buildbarn.configuration.blobstore.BlobAccessConfiguration.read_caching:type_name -> buildbarn.configuration.blobstore.ReadCachingBlobAccessConfiguration
	29, // 3: buildbarn.configuration.blobstore.BlobAccessConfiguration.grpc:type_name -> buildbarn.configuration.grpc.ClientConfiguration
	30, // 4: buildbarn.configuration.blobstore.BlobAccessConfiguration.error:type_name -> google.rpc.Status
	3,  // 5: buildbarn.configuration.blobstore.BlobAccessConfiguration.sharding:type_name -> buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration
	4,  // 6: buildbarn.configuration.blobstore.BlobAccessConfiguration.mirrored:type_name -> buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration
	5,  // 7: buildbarn.configuration.blobstore.BlobAccessConfiguration.local:type_name -> buildbarn.configuration.blobstore.LocalBlobAccessConfiguration
	6,  // 8: buildbarn.configuration.blobstore.BlobAccessConfiguration.existence_caching:type_name -> buildbarn.configuration.blobstore.ExistenceCachingBlobAccessConfiguration
	7,  // 9: buildbarn.configuration.blobstore.BlobAccessConfiguration.completeness_checking:type_name -> buildbarn.configuration.blobstore.CompletenessCheckingBlobAccessConfiguration
	8,  // 10: buildbarn.configuration.blobstore.BlobAccessConfiguration.read_fallback:type_name -> buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfiguration
	9,  // 11: buildbarn.configuration.blobstore.BlobAccessConfiguration.reference_expanding:type_name -> buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration
	13, // 12: buildbarn.configuration.blobstore.BlobAccessConfiguration.demultiplexing:type_name -> buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration
	1,  // 13: buildbarn.configuration.blobstore.BlobAccessConfiguration.hierarchical_instance_names:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	15, // 14: buildbarn.configuration.blobstore.BlobAccessConfiguration.action_result_expiring:type_name -> buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration
	16, // 15: buildbarn.configuration.blobstore.BlobAccessConfiguration.read_canarying:type_name -> buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfiguration
	17, // 16: buildbarn.configuration.blobstore.BlobAccessConfiguration.zip_reading:type_name -> buildbarn.configuration.blobstore.ZIPBlobAccessConfiguration
	17, // 17: buildbarn.configuration.blobstore.BlobAccessConfiguration.zip_writing:type_name -> buildbarn.configuration.blobstore.ZIPBlobAccessConfiguration
	18, // 18: buildbarn.configuration.blobstore.BlobAccessConfiguration.with_labels:type_name -> buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration
	19, // 19: buildbarn.configuration.blobstore.BlobAccessConfiguration.deadline_enforcing:type_name -> buildbarn.configuration.blobstore.DeadlineEnforcingBlobAccess
	1,  // 20: buildbarn.configuration.blobstore.ReadCachingBlobAccessConfiguration.slow:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 21: buildbarn.configuration.blobstore.ReadCachingBlobAccessConfiguration.fast:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	10, // 22: buildbarn.configuration.blobstore.ReadCachingBlobAccessConfiguration.replicator:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	22, // 23: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.shards:type_name -> buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.ShardsEntry
	21, // 24: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.legacy:type_name -> buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.Legacy
	1,  // 25: buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration.backend_a:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 26: buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration.backend_b:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	10, // 27: buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration.replicator_a_to_b:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	10, // 28: buildbarn.configuration.blobstore.MirroredBlobAccessConfiguration.replicator_b_to_a:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	23, // 29: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.key_location_map_in_memory:type_name -> buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.KeyLocationMapInMemory
	31, // 30: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.key_location_map_on_block_device:type_name -> buildbarn.configuration.blockdevice.Configuration
	24, // 31: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.blocks_in_memory:type_name -> buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksInMemory
	25, // 32: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.blocks_on_block_device:type_name -> buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksOnBlockDevice
	26, // 33: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.persistent:type_name -> buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.Persistent
	1,  // 34: buildbarn.configuration.blobstore.ExistenceCachingBlobAccessConfiguration.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	32, // 35: buildbarn.configuration.blobstore.ExistenceCachingBlobAccessConfiguration.existence_cache:type_name -> buildbarn.configuration.digest.ExistenceCacheConfiguration
	1,  // 36: buildbarn.configuration.blobstore.CompletenessCheckingBlobAccessConfiguration.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 37: buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfiguration.primary:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 38: buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfiguration.secondary:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	10, // 39: buildbarn.configuration.blobstore.ReadFallbackBlobAccessConfiguration.replicator:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	1,  // 40: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration.indirect_content_addressable_storage:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	33, // 41: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration.aws_session:type_name -> buildbarn.configuration.cloud.aws.SessionConfiguration
	34, // 42: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration.http_client:type_name -> buildbarn.configuration.http.client.Configuration
	35, // 43: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration.gcp_client_options:type_name -> buildbarn.configuration.cloud.gcp.ClientOptionsConfiguration
	1,  // 44: buildbarn.configuration.blobstore.ReferenceExpandingBlobAccessConfiguration.content_addressable_storage:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	36, // 45: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.local:type_name -> google.protobuf.Empty
	29, // 46: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.remote:type_name -> buildbarn.configuration.grpc.ClientConfiguration
	11, // 47: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.queued:type_name -> buildbarn.configuration.blobstore.QueuedBlobReplicatorConfiguration
	36, // 48: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.noop:type_name -> google.protobuf.Empty
	10, // 49: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.deduplicating:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	12, // 50: buildbarn.configuration.blobstore.BlobReplicatorConfiguration.concurrency_limiting:type_name -> buildbarn.configuration.blobstore.ConcurrencyLimitingBlobReplicatorConfiguration
	10, // 51: buildbarn.configuration.blobstore.QueuedBlobReplicatorConfiguration.base:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	32, // 52: buildbarn.configuration.blobstore.QueuedBlobReplicatorConfiguration.existence_cache:type_name -> buildbarn.configuration.digest.ExistenceCacheConfiguration
	10, // 53: buildbarn.configuration.blobstore.ConcurrencyLimitingBlobReplicatorConfiguration.base:type_name -> buildbarn.configuration.blobstore.BlobReplicatorConfiguration
	27, // 54: buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration.instance_name_prefixes:type_name -> buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration.InstanceNamePrefixesEntry
	1,  // 55: buildbarn.configuration.blobstore.DemultiplexedBlobAccessConfiguration.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 56: buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	37, // 57: buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration.minimum_validity:type_name -> google.protobuf.Duration
	37, // 58: buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration.maximum_validity_jitter:type_name -> google.protobuf.Duration
	38, // 59: buildbarn.configuration.blobstore.ActionResultExpiringBlobAccessConfiguration.minimum_timestamp:type_name -> google.protobuf.Timestamp
	1,  // 60: buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfiguration.source:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 61: buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfiguration.replica:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	37, // 62: buildbarn.configuration.blobstore.ReadCanaryingBlobAccessConfiguration.maximum_cache_duration:type_name -> google.protobuf.Duration
	32, // 63: buildbarn.configuration.blobstore.ZIPBlobAccessConfiguration.data_integrity_validation_cache:type_name -> buildbarn.configuration.digest.ExistenceCacheConfiguration
	1,  // 64: buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	28, // 65: buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.labels:type_name -> buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.LabelsEntry
	37, // 66: buildbarn.configuration.blobstore.DeadlineEnforcingBlobAccess.timeout:type_name -> google.protobuf.Duration
	1,  // 67: buildbarn.configuration.blobstore.DeadlineEnforcingBlobAccess.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	1,  // 68: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.Shard.backend:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	20, // 69: buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.ShardsEntry.value:type_name -> buildbarn.configuration.blobstore.ShardingBlobAccessConfiguration.Shard
	31, // 70: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksOnBlockDevice.source:type_name -> buildbarn.configuration.blockdevice.Configuration
	32, // 71: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.BlocksOnBlockDevice.data_integrity_validation_cache:type_name -> buildbarn.configuration.digest.ExistenceCacheConfiguration
	37, // 72: buildbarn.configuration.blobstore.LocalBlobAccessConfiguration.Persistent.minimum_epoch_interval:type_name -> google.protobuf.Duration
	14, // 73: buildbarn.configuration.blobstore.DemultiplexingBlobAccessConfiguration.InstanceNamePrefixesEntry.value:type_name -> buildbarn.configuration.blobstore.DemultiplexedBlobAccessConfiguration
	1,  // 74: buildbarn.configuration.blobstore.WithLabelsBlobAccessConfiguration.LabelsEntry.value:type_name -> buildbarn.configuration.blobstore.BlobAccessConfiguration
	75, // [75:75] is the sub-list for method output_type
	75, // [75:75] is the sub-list for method input_type
	75, // [75:75] is the sub-list for extension type_name
	75, // [75:75] is the sub-list for extension extendee
	0,  // [0:75] is the sub-list for field type_name
}

func init() {
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_init()
}
func file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_init() {
	if File_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto != nil {
		return
	}
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[1].OneofWrappers = []any{
		(*BlobAccessConfiguration_ReadCaching)(nil),
		(*BlobAccessConfiguration_Grpc)(nil),
		(*BlobAccessConfiguration_Error)(nil),
		(*BlobAccessConfiguration_Sharding)(nil),
		(*BlobAccessConfiguration_Mirrored)(nil),
		(*BlobAccessConfiguration_Local)(nil),
		(*BlobAccessConfiguration_ExistenceCaching)(nil),
		(*BlobAccessConfiguration_CompletenessChecking)(nil),
		(*BlobAccessConfiguration_ReadFallback)(nil),
		(*BlobAccessConfiguration_ReferenceExpanding)(nil),
		(*BlobAccessConfiguration_Demultiplexing)(nil),
		(*BlobAccessConfiguration_HierarchicalInstanceNames)(nil),
		(*BlobAccessConfiguration_ActionResultExpiring)(nil),
		(*BlobAccessConfiguration_ReadCanarying)(nil),
		(*BlobAccessConfiguration_ZipReading)(nil),
		(*BlobAccessConfiguration_ZipWriting)(nil),
		(*BlobAccessConfiguration_WithLabels)(nil),
		(*BlobAccessConfiguration_Label)(nil),
		(*BlobAccessConfiguration_DeadlineEnforcing)(nil),
	}
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[5].OneofWrappers = []any{
		(*LocalBlobAccessConfiguration_KeyLocationMapInMemory_)(nil),
		(*LocalBlobAccessConfiguration_KeyLocationMapOnBlockDevice)(nil),
		(*LocalBlobAccessConfiguration_BlocksInMemory_)(nil),
		(*LocalBlobAccessConfiguration_BlocksOnBlockDevice_)(nil),
	}
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes[10].OneofWrappers = []any{
		(*BlobReplicatorConfiguration_Local)(nil),
		(*BlobReplicatorConfiguration_Remote)(nil),
		(*BlobReplicatorConfiguration_Queued)(nil),
		(*BlobReplicatorConfiguration_Noop)(nil),
		(*BlobReplicatorConfiguration_Deduplicating)(nil),
		(*BlobReplicatorConfiguration_ConcurrencyLimiting)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDesc), len(file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   29,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_goTypes,
		DependencyIndexes: file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_depIdxs,
		MessageInfos:      file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_msgTypes,
	}.Build()
	File_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto = out.File
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_goTypes = nil
	file_github_com_buildbarn_bb_storage_pkg_proto_configuration_blobstore_blobstore_proto_depIdxs = nil
}
