// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        (unknown)
// source: chorus/chorus.proto

package pb

import (
	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 Storage_Provider int32

const (
	Storage_Other        Storage_Provider = 0
	Storage_Ceph         Storage_Provider = 1
	Storage_Minio        Storage_Provider = 2
	Storage_AWS          Storage_Provider = 3
	Storage_GCS          Storage_Provider = 4
	Storage_Alibaba      Storage_Provider = 5
	Storage_Cloudflare   Storage_Provider = 6
	Storage_DigitalOcean Storage_Provider = 7
)

// Enum value maps for Storage_Provider.
var (
	Storage_Provider_name = map[int32]string{
		0: "Other",
		1: "Ceph",
		2: "Minio",
		3: "AWS",
		4: "GCS",
		5: "Alibaba",
		6: "Cloudflare",
		7: "DigitalOcean",
	}
	Storage_Provider_value = map[string]int32{
		"Other":        0,
		"Ceph":         1,
		"Minio":        2,
		"AWS":          3,
		"GCS":          4,
		"Alibaba":      5,
		"Cloudflare":   6,
		"DigitalOcean": 7,
	}
)

func (x Storage_Provider) Enum() *Storage_Provider {
	p := new(Storage_Provider)
	*p = x
	return p
}

func (x Storage_Provider) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Storage_Provider) Descriptor() protoreflect.EnumDescriptor {
	return file_chorus_chorus_proto_enumTypes[0].Descriptor()
}

func (Storage_Provider) Type() protoreflect.EnumType {
	return &file_chorus_chorus_proto_enumTypes[0]
}

func (x Storage_Provider) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Storage_Provider.Descriptor instead.
func (Storage_Provider) EnumDescriptor() ([]byte, []int) {
	return file_chorus_chorus_proto_rawDescGZIP(), []int{13, 0}
}

type GetBucketSwitchStatusResponse_Status int32

const (
	// Switch is not started yet
	GetBucketSwitchStatusResponse_NotStarted GetBucketSwitchStatusResponse_Status = 0
	// Switch is in progress. Draining replication events queue.
	// For switch with downtime, writes to bucket are blocked at this point.
	GetBucketSwitchStatusResponse_InProgress GetBucketSwitchStatusResponse_Status = 1
	// Switch is in progress. Queue is drained. Checking if main and follower buckets are the same.
	// Writes to bucket are still blocked. Used only for switch with downtime.
	GetBucketSwitchStatusResponse_CheckInProgress GetBucketSwitchStatusResponse_Status = 2
	// Switch failed to complete in downtime window and was aborted.
	// Writes to bucket are unblocked. Used only for switch with downtime.
	// If cron downtime_window is used, switch will be retried on next cron execution.
	GetBucketSwitchStatusResponse_Error GetBucketSwitchStatusResponse_Status = 3
	// Switch was not able to start in given downtime window because conditions were not met.
	// Used only for switch with downtime. If cron downtime_window is used, switch will be retried on next cron execution.
	GetBucketSwitchStatusResponse_Skipped GetBucketSwitchStatusResponse_Status = 4
	// Switch was successfully completed.
	// All data was replicated to new main bucket and all read and write requests are now routed to it.
	GetBucketSwitchStatusResponse_Done GetBucketSwitchStatusResponse_Status = 5
)

// Enum value maps for GetBucketSwitchStatusResponse_Status.
var (
	GetBucketSwitchStatusResponse_Status_name = map[int32]string{
		0: "NotStarted",
		1: "InProgress",
		2: "CheckInProgress",
		3: "Error",
		4: "Skipped",
		5: "Done",
	}
	GetBucketSwitchStatusResponse_Status_value = map[string]int32{
		"NotStarted":      0,
		"InProgress":      1,
		"CheckInProgress": 2,
		"Error":           3,
		"Skipped":         4,
		"Done":            5,
	}
)

func (x GetBucketSwitchStatusResponse_Status) Enum() *GetBucketSwitchStatusResponse_Status {
	p := new(GetBucketSwitchStatusResponse_Status)
	*p = x
	return p
}

func (x GetBucketSwitchStatusResponse_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (GetBucketSwitchStatusResponse_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_chorus_chorus_proto_enumTypes[1].Descriptor()
}

func (GetBucketSwitchStatusResponse_Status) Type() protoreflect.EnumType {
	return &file_chorus_chorus_proto_enumTypes[1]
}

func (x GetBucketSwitchStatusResponse_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use GetBucketSwitchStatusResponse_Status.Descriptor instead.
func (GetBucketSwitchStatusResponse_Status) EnumDescriptor() ([]byte, []int) {
	return file_chorus_chorus_proto_rawDescGZIP(), []int{33, 0}
}

type MigrateLocation struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Storage       string                 `protobuf:"bytes,1,opt,name=storage,proto3" json:"storage,omitempty"`
	Bucket        string                 `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*MigrateLocation) ProtoMessage() {}

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

func (x *MigrateLocation) GetStorage() string {
	if x != nil {
		return x.Storage
	}
	return ""
}

func (x *MigrateLocation) GetBucket() string {
	if x != nil {
		return x.Bucket
	}
	return ""
}

type StartConsistencyCheckRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locations     []*MigrateLocation     `protobuf:"bytes,1,rep,name=locations,proto3" json:"locations,omitempty"`
	User          string                 `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StartConsistencyCheckRequest) ProtoMessage() {}

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

func (x *StartConsistencyCheckRequest) GetLocations() []*MigrateLocation {
	if x != nil {
		return x.Locations
	}
	return nil
}

func (x *StartConsistencyCheckRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

type ConsistencyCheckRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locations     []*MigrateLocation     `protobuf:"bytes,1,rep,name=locations,proto3" json:"locations,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConsistencyCheckRequest) ProtoMessage() {}

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

func (x *ConsistencyCheckRequest) GetLocations() []*MigrateLocation {
	if x != nil {
		return x.Locations
	}
	return nil
}

type ConsistencyCheck struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Locations     []*MigrateLocation     `protobuf:"bytes,2,rep,name=locations,proto3" json:"locations,omitempty"`
	Queued        uint64                 `protobuf:"varint,3,opt,name=queued,proto3" json:"queued,omitempty"`
	Completed     uint64                 `protobuf:"varint,4,opt,name=completed,proto3" json:"completed,omitempty"`
	Ready         bool                   `protobuf:"varint,5,opt,name=ready,proto3" json:"ready,omitempty"`
	Consistent    bool                   `protobuf:"varint,6,opt,name=consistent,proto3" json:"consistent,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConsistencyCheck) ProtoMessage() {}

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

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

func (x *ConsistencyCheck) GetLocations() []*MigrateLocation {
	if x != nil {
		return x.Locations
	}
	return nil
}

func (x *ConsistencyCheck) GetQueued() uint64 {
	if x != nil {
		return x.Queued
	}
	return 0
}

func (x *ConsistencyCheck) GetCompleted() uint64 {
	if x != nil {
		return x.Completed
	}
	return 0
}

func (x *ConsistencyCheck) GetReady() bool {
	if x != nil {
		return x.Ready
	}
	return false
}

func (x *ConsistencyCheck) GetConsistent() bool {
	if x != nil {
		return x.Consistent
	}
	return false
}

type ListConsistencyChecksResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Checks        []*ConsistencyCheck    `protobuf:"bytes,1,rep,name=checks,proto3" json:"checks,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListConsistencyChecksResponse) ProtoMessage() {}

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

func (x *ListConsistencyChecksResponse) GetChecks() []*ConsistencyCheck {
	if x != nil {
		return x.Checks
	}
	return nil
}

type GetConsistencyCheckReportRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locations     []*MigrateLocation     `protobuf:"bytes,1,rep,name=locations,proto3" json:"locations,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetConsistencyCheckReportRequest) ProtoMessage() {}

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

func (x *GetConsistencyCheckReportRequest) GetLocations() []*MigrateLocation {
	if x != nil {
		return x.Locations
	}
	return nil
}

type GetConsistencyCheckReportResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Check         *ConsistencyCheck      `protobuf:"bytes,1,opt,name=check,proto3" json:"check,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetConsistencyCheckReportResponse) ProtoMessage() {}

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

func (x *GetConsistencyCheckReportResponse) GetCheck() *ConsistencyCheck {
	if x != nil {
		return x.Check
	}
	return nil
}

type ConsistencyCheckStorageEntry struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Storage       string                 `protobuf:"bytes,1,opt,name=storage,proto3" json:"storage,omitempty"`
	VersionId     string                 `protobuf:"bytes,2,opt,name=versionId,proto3" json:"versionId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ConsistencyCheckStorageEntry) ProtoMessage() {}

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

func (x *ConsistencyCheckStorageEntry) GetStorage() string {
	if x != nil {
		return x.Storage
	}
	return ""
}

func (x *ConsistencyCheckStorageEntry) GetVersionId() string {
	if x != nil {
		return x.VersionId
	}
	return ""
}

type ConsistencyCheckReportEntry struct {
	state          protoimpl.MessageState          `protogen:"open.v1"`
	Object         string                          `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"`
	Etag           string                          `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"`
	StorageEntries []*ConsistencyCheckStorageEntry `protobuf:"bytes,3,rep,name=storageEntries,proto3" json:"storageEntries,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ConsistencyCheckReportEntry) ProtoMessage() {}

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

func (x *ConsistencyCheckReportEntry) GetObject() string {
	if x != nil {
		return x.Object
	}
	return ""
}

func (x *ConsistencyCheckReportEntry) GetEtag() string {
	if x != nil {
		return x.Etag
	}
	return ""
}

func (x *ConsistencyCheckReportEntry) GetStorageEntries() []*ConsistencyCheckStorageEntry {
	if x != nil {
		return x.StorageEntries
	}
	return nil
}

type GetConsistencyCheckReportEntriesRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Locations     []*MigrateLocation     `protobuf:"bytes,1,rep,name=locations,proto3" json:"locations,omitempty"`
	Cursor        uint64                 `protobuf:"varint,2,opt,name=Cursor,proto3" json:"Cursor,omitempty"`
	PageSize      uint64                 `protobuf:"varint,3,opt,name=PageSize,proto3" json:"PageSize,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetConsistencyCheckReportEntriesRequest) ProtoMessage() {}

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

func (x *GetConsistencyCheckReportEntriesRequest) GetLocations() []*MigrateLocation {
	if x != nil {
		return x.Locations
	}
	return nil
}

func (x *GetConsistencyCheckReportEntriesRequest) GetCursor() uint64 {
	if x != nil {
		return x.Cursor
	}
	return 0
}

func (x *GetConsistencyCheckReportEntriesRequest) GetPageSize() uint64 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

type GetConsistencyCheckReportEntriesResponse struct {
	state         protoimpl.MessageState         `protogen:"open.v1"`
	Entries       []*ConsistencyCheckReportEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
	Cursor        uint64                         `protobuf:"varint,2,opt,name=Cursor,proto3" json:"Cursor,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetConsistencyCheckReportEntriesResponse) ProtoMessage() {}

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

func (x *GetConsistencyCheckReportEntriesResponse) GetEntries() []*ConsistencyCheckReportEntry {
	if x != nil {
		return x.Entries
	}
	return nil
}

func (x *GetConsistencyCheckReportEntriesResponse) GetCursor() uint64 {
	if x != nil {
		return x.Cursor
	}
	return 0
}

type GetAppVersionResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Version       string                 `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	Commit        string                 `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"`
	Date          string                 `protobuf:"bytes,3,opt,name=date,proto3" json:"date,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetAppVersionResponse) ProtoMessage() {}

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

func (x *GetAppVersionResponse) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *GetAppVersionResponse) GetCommit() string {
	if x != nil {
		return x.Commit
	}
	return ""
}

func (x *GetAppVersionResponse) GetDate() string {
	if x != nil {
		return x.Date
	}
	return ""
}

type GetStoragesResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Storages      []*Storage             `protobuf:"bytes,1,rep,name=storages,proto3" json:"storages,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetStoragesResponse) ProtoMessage() {}

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

func (x *GetStoragesResponse) GetStorages() []*Storage {
	if x != nil {
		return x.Storages
	}
	return nil
}

type Storage struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// some human-readable alias for storage config
	Name   string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	IsMain bool   `protobuf:"varint,2,opt,name=is_main,json=isMain,proto3" json:"is_main,omitempty"`
	// ex: s3.clyso.com
	Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
	// s3 storage provider <Ceph|Minio|AWS|Other>
	Provider Storage_Provider `protobuf:"varint,4,opt,name=provider,proto3,enum=chorus.Storage_Provider" json:"provider,omitempty"`
	// credentials: access key (public, aka username)
	Credentials   []*Credential `protobuf:"bytes,5,rep,name=credentials,proto3" json:"credentials,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Storage) ProtoMessage() {}

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

func (x *Storage) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Storage) GetIsMain() bool {
	if x != nil {
		return x.IsMain
	}
	return false
}

func (x *Storage) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *Storage) GetProvider() Storage_Provider {
	if x != nil {
		return x.Provider
	}
	return Storage_Other
}

func (x *Storage) GetCredentials() []*Credential {
	if x != nil {
		return x.Credentials
	}
	return nil
}

type Credential struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Alias         string                 `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"`
	AccessKey     string                 `protobuf:"bytes,2,opt,name=access_key,json=accessKey,proto3" json:"access_key,omitempty"`
	SecretKey     string                 `protobuf:"bytes,3,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Credential) ProtoMessage() {}

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

func (x *Credential) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *Credential) GetAccessKey() string {
	if x != nil {
		return x.AccessKey
	}
	return ""
}

func (x *Credential) GetSecretKey() string {
	if x != nil {
		return x.SecretKey
	}
	return ""
}

type GetProxyCredentialsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Address       string                 `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Credentials   []*Credential          `protobuf:"bytes,2,rep,name=credentials,proto3" json:"credentials,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetProxyCredentialsResponse) ProtoMessage() {}

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

func (x *GetProxyCredentialsResponse) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *GetProxyCredentialsResponse) GetCredentials() []*Credential {
	if x != nil {
		return x.Credentials
	}
	return nil
}

type AddReplicationRequest struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	User            string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	From            string                 `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"`
	To              string                 `protobuf:"bytes,4,opt,name=to,proto3" json:"to,omitempty"`
	Buckets         []string               `protobuf:"bytes,5,rep,name=buckets,proto3" json:"buckets,omitempty"`
	IsForAllBuckets bool                   `protobuf:"varint,6,opt,name=is_for_all_buckets,json=isForAllBuckets,proto3" json:"is_for_all_buckets,omitempty"`
	AgentUrl        *string                `protobuf:"bytes,7,opt,name=agent_url,json=agentUrl,proto3,oneof" json:"agent_url,omitempty"`
	ToBucket        string                 `protobuf:"bytes,8,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*AddReplicationRequest) ProtoMessage() {}

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

func (x *AddReplicationRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *AddReplicationRequest) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *AddReplicationRequest) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

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

func (x *AddReplicationRequest) GetIsForAllBuckets() bool {
	if x != nil {
		return x.IsForAllBuckets
	}
	return false
}

func (x *AddReplicationRequest) GetAgentUrl() string {
	if x != nil && x.AgentUrl != nil {
		return *x.AgentUrl
	}
	return ""
}

func (x *AddReplicationRequest) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

type AddBucketReplicationRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// s3 user alias from chorus config
	User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	// source storage alias from chorus config
	FromStorage string `protobuf:"bytes,2,opt,name=from_storage,json=fromStorage,proto3" json:"from_storage,omitempty"`
	// source bucket name
	FromBucket string `protobuf:"bytes,3,opt,name=from_bucket,json=fromBucket,proto3" json:"from_bucket,omitempty"`
	// destination storage name from chorus config. Can be equal to destination storage if destination bucket name is different from source.
	ToStorage string `protobuf:"bytes,4,opt,name=to_storage,json=toStorage,proto3" json:"to_storage,omitempty"`
	// custom destination bucket name. if not set, destination bucket name will be equal to source bucket
	ToBucket string `protobuf:"bytes,5,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	// webhook URL of chorus agent. Required if chorus agent setup is used.
	AgentUrl      *string `protobuf:"bytes,6,opt,name=agent_url,json=agentUrl,proto3,oneof" json:"agent_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AddBucketReplicationRequest) ProtoMessage() {}

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

func (x *AddBucketReplicationRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *AddBucketReplicationRequest) GetFromStorage() string {
	if x != nil {
		return x.FromStorage
	}
	return ""
}

func (x *AddBucketReplicationRequest) GetFromBucket() string {
	if x != nil {
		return x.FromBucket
	}
	return ""
}

func (x *AddBucketReplicationRequest) GetToStorage() string {
	if x != nil {
		return x.ToStorage
	}
	return ""
}

func (x *AddBucketReplicationRequest) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

func (x *AddBucketReplicationRequest) GetAgentUrl() string {
	if x != nil && x.AgentUrl != nil {
		return *x.AgentUrl
	}
	return ""
}

type ListBucketsForReplicationRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	User           string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	From           string                 `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"`
	To             string                 `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"`
	ShowReplicated bool                   `protobuf:"varint,4,opt,name=show_replicated,json=showReplicated,proto3" json:"show_replicated,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ListBucketsForReplicationRequest) ProtoMessage() {}

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

func (x *ListBucketsForReplicationRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *ListBucketsForReplicationRequest) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *ListBucketsForReplicationRequest) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *ListBucketsForReplicationRequest) GetShowReplicated() bool {
	if x != nil {
		return x.ShowReplicated
	}
	return false
}

type ListBucketsForReplicationResponse struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Buckets           []string               `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"`
	ReplicatedBuckets []string               `protobuf:"bytes,2,rep,name=replicated_buckets,json=replicatedBuckets,proto3" json:"replicated_buckets,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ListBucketsForReplicationResponse) ProtoMessage() {}

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

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

func (x *ListBucketsForReplicationResponse) GetReplicatedBuckets() []string {
	if x != nil {
		return x.ReplicatedBuckets
	}
	return nil
}

type ListReplicationsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Replications  []*Replication         `protobuf:"bytes,1,rep,name=replications,proto3" json:"replications,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListReplicationsResponse) ProtoMessage() {}

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

func (x *ListReplicationsResponse) GetReplications() []*Replication {
	if x != nil {
		return x.Replications
	}
	return nil
}

type Replication struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	User            string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	Bucket          string                 `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
	From            string                 `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"`
	To              string                 `protobuf:"bytes,4,opt,name=to,proto3" json:"to,omitempty"`
	CreatedAt       *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	IsPaused        bool                   `protobuf:"varint,6,opt,name=is_paused,json=isPaused,proto3" json:"is_paused,omitempty"`
	IsInitDone      bool                   `protobuf:"varint,7,opt,name=is_init_done,json=isInitDone,proto3" json:"is_init_done,omitempty"`
	InitObjListed   int64                  `protobuf:"varint,8,opt,name=init_obj_listed,json=initObjListed,proto3" json:"init_obj_listed,omitempty"`
	InitObjDone     int64                  `protobuf:"varint,9,opt,name=init_obj_done,json=initObjDone,proto3" json:"init_obj_done,omitempty"`
	InitBytesListed int64                  `protobuf:"varint,10,opt,name=init_bytes_listed,json=initBytesListed,proto3" json:"init_bytes_listed,omitempty"`
	InitBytesDone   int64                  `protobuf:"varint,11,opt,name=init_bytes_done,json=initBytesDone,proto3" json:"init_bytes_done,omitempty"`
	Events          int64                  `protobuf:"varint,12,opt,name=events,proto3" json:"events,omitempty"`
	EventsDone      int64                  `protobuf:"varint,13,opt,name=events_done,json=eventsDone,proto3" json:"events_done,omitempty"`
	LastEmittedAt   *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=last_emitted_at,json=lastEmittedAt,proto3" json:"last_emitted_at,omitempty"`
	LastProcessedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=last_processed_at,json=lastProcessedAt,proto3" json:"last_processed_at,omitempty"`
	AgentUrl        *string                `protobuf:"bytes,16,opt,name=agent_url,json=agentUrl,proto3,oneof" json:"agent_url,omitempty"`
	ToBucket        string                 `protobuf:"bytes,17,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	InitDoneAt      *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=init_done_at,json=initDoneAt,proto3" json:"init_done_at,omitempty"`
	// true if given replication has associated replication switch with it.
	HasSwitch bool `protobuf:"varint,19,opt,name=has_switch,json=hasSwitch,proto3" json:"has_switch,omitempty"`
	// true if replication is archived. Archived replication will not generate or sync new events.
	// The main purpose of archived replication is to keep replication metadata for future reference.
	// Archived replication can be safely deleted.
	IsArchived    bool                   `protobuf:"varint,20,opt,name=is_archived,json=isArchived,proto3" json:"is_archived,omitempty"`
	ArchivedAt    *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Replication) ProtoMessage() {}

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

func (x *Replication) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *Replication) GetBucket() string {
	if x != nil {
		return x.Bucket
	}
	return ""
}

func (x *Replication) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *Replication) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *Replication) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Replication) GetIsPaused() bool {
	if x != nil {
		return x.IsPaused
	}
	return false
}

func (x *Replication) GetIsInitDone() bool {
	if x != nil {
		return x.IsInitDone
	}
	return false
}

func (x *Replication) GetInitObjListed() int64 {
	if x != nil {
		return x.InitObjListed
	}
	return 0
}

func (x *Replication) GetInitObjDone() int64 {
	if x != nil {
		return x.InitObjDone
	}
	return 0
}

func (x *Replication) GetInitBytesListed() int64 {
	if x != nil {
		return x.InitBytesListed
	}
	return 0
}

func (x *Replication) GetInitBytesDone() int64 {
	if x != nil {
		return x.InitBytesDone
	}
	return 0
}

func (x *Replication) GetEvents() int64 {
	if x != nil {
		return x.Events
	}
	return 0
}

func (x *Replication) GetEventsDone() int64 {
	if x != nil {
		return x.EventsDone
	}
	return 0
}

func (x *Replication) GetLastEmittedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastEmittedAt
	}
	return nil
}

func (x *Replication) GetLastProcessedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastProcessedAt
	}
	return nil
}

func (x *Replication) GetAgentUrl() string {
	if x != nil && x.AgentUrl != nil {
		return *x.AgentUrl
	}
	return ""
}

func (x *Replication) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

func (x *Replication) GetInitDoneAt() *timestamppb.Timestamp {
	if x != nil {
		return x.InitDoneAt
	}
	return nil
}

func (x *Replication) GetHasSwitch() bool {
	if x != nil {
		return x.HasSwitch
	}
	return false
}

func (x *Replication) GetIsArchived() bool {
	if x != nil {
		return x.IsArchived
	}
	return false
}

func (x *Replication) GetArchivedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ArchivedAt
	}
	return nil
}

type ReplicationRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	User          string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	Bucket        string                 `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
	From          string                 `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"`
	To            string                 `protobuf:"bytes,4,opt,name=to,proto3" json:"to,omitempty"`
	ToBucket      string                 `protobuf:"bytes,5,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReplicationRequest) Reset() {
	*x = ReplicationRequest{}
	mi := &file_chorus_chorus_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ReplicationRequest) ProtoMessage() {}

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

func (x *ReplicationRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *ReplicationRequest) GetBucket() string {
	if x != nil {
		return x.Bucket
	}
	return ""
}

func (x *ReplicationRequest) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *ReplicationRequest) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *ReplicationRequest) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

type ListUserReplicationsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Replications  []*UserReplication     `protobuf:"bytes,1,rep,name=replications,proto3" json:"replications,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListUserReplicationsResponse) ProtoMessage() {}

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

func (x *ListUserReplicationsResponse) GetReplications() []*UserReplication {
	if x != nil {
		return x.Replications
	}
	return nil
}

type UserReplication struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	User            string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	From            string                 `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"`
	To              string                 `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"`
	CreatedAt       *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	IsPaused        bool                   `protobuf:"varint,6,opt,name=is_paused,json=isPaused,proto3" json:"is_paused,omitempty"`
	IsInitDone      bool                   `protobuf:"varint,7,opt,name=is_init_done,json=isInitDone,proto3" json:"is_init_done,omitempty"`
	InitObjListed   int64                  `protobuf:"varint,8,opt,name=init_obj_listed,json=initObjListed,proto3" json:"init_obj_listed,omitempty"`
	InitObjDone     int64                  `protobuf:"varint,9,opt,name=init_obj_done,json=initObjDone,proto3" json:"init_obj_done,omitempty"`
	InitBytesListed int64                  `protobuf:"varint,10,opt,name=init_bytes_listed,json=initBytesListed,proto3" json:"init_bytes_listed,omitempty"`
	InitBytesDone   int64                  `protobuf:"varint,11,opt,name=init_bytes_done,json=initBytesDone,proto3" json:"init_bytes_done,omitempty"`
	Events          int64                  `protobuf:"varint,12,opt,name=events,proto3" json:"events,omitempty"`
	EventsDone      int64                  `protobuf:"varint,13,opt,name=events_done,json=eventsDone,proto3" json:"events_done,omitempty"`
	LastEmittedAt   *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=last_emitted_at,json=lastEmittedAt,proto3" json:"last_emitted_at,omitempty"`
	LastProcessedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=last_processed_at,json=lastProcessedAt,proto3" json:"last_processed_at,omitempty"`
	AgentUrl        *string                `protobuf:"bytes,16,opt,name=agent_url,json=agentUrl,proto3,oneof" json:"agent_url,omitempty"`
	ToBucket        string                 `protobuf:"bytes,17,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	InitDoneAt      *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=init_done_at,json=initDoneAt,proto3" json:"init_done_at,omitempty"`
	// true if given replication has associated replication switch with it.
	HasSwitch bool `protobuf:"varint,19,opt,name=has_switch,json=hasSwitch,proto3" json:"has_switch,omitempty"`
	// true if replication is archived. Archived replication will not generate or sync new events.
	// The main purpose of archived replication is to keep replication metadata for future reference.
	// Archived replication can be safely deleted.
	IsArchived    bool                   `protobuf:"varint,20,opt,name=is_archived,json=isArchived,proto3" json:"is_archived,omitempty"`
	ArchivedAt    *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UserReplication) ProtoMessage() {}

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

func (x *UserReplication) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *UserReplication) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *UserReplication) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *UserReplication) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *UserReplication) GetIsPaused() bool {
	if x != nil {
		return x.IsPaused
	}
	return false
}

func (x *UserReplication) GetIsInitDone() bool {
	if x != nil {
		return x.IsInitDone
	}
	return false
}

func (x *UserReplication) GetInitObjListed() int64 {
	if x != nil {
		return x.InitObjListed
	}
	return 0
}

func (x *UserReplication) GetInitObjDone() int64 {
	if x != nil {
		return x.InitObjDone
	}
	return 0
}

func (x *UserReplication) GetInitBytesListed() int64 {
	if x != nil {
		return x.InitBytesListed
	}
	return 0
}

func (x *UserReplication) GetInitBytesDone() int64 {
	if x != nil {
		return x.InitBytesDone
	}
	return 0
}

func (x *UserReplication) GetEvents() int64 {
	if x != nil {
		return x.Events
	}
	return 0
}

func (x *UserReplication) GetEventsDone() int64 {
	if x != nil {
		return x.EventsDone
	}
	return 0
}

func (x *UserReplication) GetLastEmittedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastEmittedAt
	}
	return nil
}

func (x *UserReplication) GetLastProcessedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastProcessedAt
	}
	return nil
}

func (x *UserReplication) GetAgentUrl() string {
	if x != nil && x.AgentUrl != nil {
		return *x.AgentUrl
	}
	return ""
}

func (x *UserReplication) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

func (x *UserReplication) GetInitDoneAt() *timestamppb.Timestamp {
	if x != nil {
		return x.InitDoneAt
	}
	return nil
}

func (x *UserReplication) GetHasSwitch() bool {
	if x != nil {
		return x.HasSwitch
	}
	return false
}

func (x *UserReplication) GetIsArchived() bool {
	if x != nil {
		return x.IsArchived
	}
	return false
}

func (x *UserReplication) GetArchivedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ArchivedAt
	}
	return nil
}

type DeleteUserReplicationRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	User          string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	From          string                 `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"`
	To            string                 `protobuf:"bytes,3,opt,name=to,proto3" json:"to,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DeleteUserReplicationRequest) ProtoMessage() {}

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

func (x *DeleteUserReplicationRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *DeleteUserReplicationRequest) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *DeleteUserReplicationRequest) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

type CompareBucketRequest struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	User   string                 `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	Bucket string                 `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
	From   string                 `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"`
	To     string                 `protobuf:"bytes,4,opt,name=to,proto3" json:"to,omitempty"`
	// set true to get list of matching files (match) in response
	ShowMatch     bool   `protobuf:"varint,5,opt,name=show_match,json=showMatch,proto3" json:"show_match,omitempty"`
	ToBucket      string `protobuf:"bytes,6,opt,name=to_bucket,json=toBucket,proto3" json:"to_bucket,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CompareBucketRequest) ProtoMessage() {}

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

func (x *CompareBucketRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *CompareBucketRequest) GetBucket() string {
	if x != nil {
		return x.Bucket
	}
	return ""
}

func (x *CompareBucketRequest) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *CompareBucketRequest) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

func (x *CompareBucketRequest) GetShowMatch() bool {
	if x != nil {
		return x.ShowMatch
	}
	return false
}

func (x *CompareBucketRequest) GetToBucket() string {
	if x != nil {
		return x.ToBucket
	}
	return ""
}

type CompareBucketResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// true if storage's buckets have the same content
	IsMatch bool `protobuf:"varint,1,opt,name=is_match,json=isMatch,proto3" json:"is_match,omitempty"`
	// list of missing files in 'from storage' bucket
	MissFrom []string `protobuf:"bytes,2,rep,name=miss_from,json=missFrom,proto3" json:"miss_from,omitempty"`
	// list of missing files in 'to storage' bucket
	MissTo []string `protobuf:"bytes,3,rep,name=miss_to,json=missTo,proto3" json:"miss_to,omitempty"`
	// list of files with different content
	Differ []string `protobuf:"bytes,4,rep,name=differ,proto3" json:"differ,omitempty"`
	// list of errors occurred during comparison
	Error []string `protobuf:"bytes,5,rep,name=error,proto3" json:"error,omitempty"`
	// list matched files in storages bucket.
	// will be empty if request parameter show_match set to false.
	Match         []string `protobuf:"bytes,6,rep,name=match,proto3" json:"match,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompareBucketResponse) Reset() {
	*x = CompareBucketResponse{}
	mi := &file_chorus_chorus_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompareBucketResponse) ProtoMessage() {}

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

func (x *CompareBucketResponse) GetIsMatch() bool {
	if x != nil {
		return x.IsMatch
	}
	return false
}

func (x *CompareBucketResponse) GetMissFrom() []string {
	if x != nil {
		return x.MissFrom
	}
	return nil
}

func (x *CompareBucketResponse) GetMissTo() []string {
	if x != nil {
		return x.MissTo
	}
	return nil
}

func (x *CompareBucketResponse) GetDiffer() []string {
	if x != nil {
		return x.Differ
	}
	return nil
}

func (x *CompareBucketResponse) GetError() []string {
	if x != nil {
		return x.Error
	}
	return nil
}

func (x *CompareBucketResponse) GetMatch() []string {
	if x != nil {
		return x.Match
	}
	return nil
}

type GetAgentsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Agents        []*Agent               `protobuf:"bytes,1,rep,name=agents,proto3" json:"agents,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetAgentsResponse) Reset() {
	*x = GetAgentsResponse{}
	mi := &file_chorus_chorus_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetAgentsResponse) ProtoMessage() {}

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

func (x *GetAgentsResponse) GetAgents() []*Agent {
	if x != nil {
		return x.Agents
	}
	return nil
}

type Agent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Storage       string                 `protobuf:"bytes,1,opt,name=storage,proto3" json:"storage,omitempty"`
	Url           string                 `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Agent) Reset() {
	*x = Agent{}
	mi := &file_chorus_chorus_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Agent) ProtoMessage() {}

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

func (x *Agent) GetStorage() string {
	if x != nil {
		return x.Storage
	}
	return ""
}

func (x *Agent) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

type SwitchBucketZeroDowntimeRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Id of bucket replication policy to switch source and destination buckets on proxy.
	// Replication policy should already exist.
	ReplicationId *ReplicationRequest `protobuf:"bytes,1,opt,name=replication_id,json=replicationId,proto3" json:"replication_id,omitempty"`
	// Max Amount of time to wait for uncompleted multipart uploads to finish before switching buckets.
	// Default is 1 hour.
	MultipartTtl  *durationpb.Duration `protobuf:"bytes,2,opt,name=multipart_ttl,json=multipartTtl,proto3,oneof" json:"multipart_ttl,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SwitchBucketZeroDowntimeRequest) Reset() {
	*x = SwitchBucketZeroDowntimeRequest{}
	mi := &file_chorus_chorus_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SwitchBucketZeroDowntimeRequest) ProtoMessage() {}

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

func (x *SwitchBucketZeroDowntimeRequest) GetReplicationId() *ReplicationRequest {
	if x != nil {
		return x.ReplicationId
	}
	return nil
}

func (x *SwitchBucketZeroDowntimeRequest) GetMultipartTtl() *durationpb.Duration {
	if x != nil {
		return x.MultipartTtl
	}
	return nil
}

type SwitchBucketRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Id of bucket replication policy to switch source and destination buckets on proxy.
	// Replication policy should already exist.
	ReplicationId *ReplicationRequest `protobuf:"bytes,1,opt,name=replication_id,json=replicationId,proto3" json:"replication_id,omitempty"`
	// Configures downtime window for switch. During downtime bucket writes will be blocked on proxy.
	// If NOT set, switch will be performed right away and writes will be blocked until it is done.
	DowntimeOpts  *SwitchDowntimeOpts `protobuf:"bytes,2,opt,name=downtime_opts,json=downtimeOpts,proto3,oneof" json:"downtime_opts,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SwitchBucketRequest) Reset() {
	*x = SwitchBucketRequest{}
	mi := &file_chorus_chorus_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SwitchBucketRequest) ProtoMessage() {}

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

func (x *SwitchBucketRequest) GetReplicationId() *ReplicationRequest {
	if x != nil {
		return x.ReplicationId
	}
	return nil
}

func (x *SwitchBucketRequest) GetDowntimeOpts() *SwitchDowntimeOpts {
	if x != nil {
		return x.DowntimeOpts
	}
	return nil
}

// Defines downtime window for replication switch with downtime.
// All dates and times depends on local times of machine running chorus worker.
// Time precision is ~1 minute.
type SwitchDowntimeOpts struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If true, chorus will perform switch automatically when initial migration will be done.
	// Initial migration copies all objects that existed in source bucket before replication started.
	// default is false
	StartOnInitDone bool `protobuf:"varint,1,opt,name=start_on_init_done,json=startOnInitDone,proto3" json:"start_on_init_done,omitempty"`
	// If set, chorus will try or retry to execute switch according to CRON schedule until it will be done.
	// Bucket check and draining work queue is time consuming operation
	// so in most cases it is not makes sense to set cron frequency less than one hour
	// or less than max_duration if used.
	// Either cron or start_at can be set, but not both. If both are set, an error will be returned.
	Cron *string `protobuf:"bytes,2,opt,name=cron,proto3,oneof" json:"cron,omitempty"`
	// If set, switch will be executed at given time.
	// If at this point initial migration will not be done, switch will be marked as failed and not executed.
	// Either cron or start_at can be set, but not both. If both are set, an error will be returned.
	StartAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_at,json=startAt,proto3,oneof" json:"start_at,omitempty"`
	// If set, chorus will abort switch if it will not be able to complete in given time.
	// In this case, chorus will unblock bucket writes and keep old main as main.
	// Switch will be marked as failed and will be retried on next cron execution if set.
	MaxDuration *durationpb.Duration `protobuf:"bytes,4,opt,name=max_duration,json=maxDuration,proto3,oneof" json:"max_duration,omitempty"`
	// If set, switch execution will be skipped if number of unprocessed events is more than max_event_lag.
	// Switch will be marked as failed and will be retried on next cron execution if set.
	MaxEventLag *uint32 `protobuf:"varint,5,opt,name=max_event_lag,json=maxEventLag,proto3,oneof" json:"max_event_lag,omitempty"`
	// if true, chorus will not perform equality check of bucket contents before completing switch with downtime.
	// Might be useful for buckets with large number of objects. In this case check will consume a lot of time and memory in Redis.
	// Default is false.
	SkipBucketCheck bool `protobuf:"varint,6,opt,name=skip_bucket_check,json=skipBucketCheck,proto3" json:"skip_bucket_check,omitempty"`
	// Set true to replicate data updates from new main to old main bucket after successful switch
	// Default is false.
	ContinueReplication bool `protobuf:"varint,7,opt,name=continue_replication,json=continueReplication,proto3" json:"continue_replication,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *SwitchDowntimeOpts) Reset() {
	*x = SwitchDowntimeOpts{}
	mi := &file_chorus_chorus_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SwitchDowntimeOpts) ProtoMessage() {}

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

func (x *SwitchDowntimeOpts) GetStartOnInitDone() bool {
	if x != nil {
		return x.StartOnInitDone
	}
	return false
}

func (x *SwitchDowntimeOpts) GetCron() string {
	if x != nil && x.Cron != nil {
		return *x.Cron
	}
	return ""
}

func (x *SwitchDowntimeOpts) GetStartAt() *timestamppb.Timestamp {
	if x != nil {
		return x.StartAt
	}
	return nil
}

func (x *SwitchDowntimeOpts) GetMaxDuration() *durationpb.Duration {
	if x != nil {
		return x.MaxDuration
	}
	return nil
}

func (x *SwitchDowntimeOpts) GetMaxEventLag() uint32 {
	if x != nil && x.MaxEventLag != nil {
		return *x.MaxEventLag
	}
	return 0
}

func (x *SwitchDowntimeOpts) GetSkipBucketCheck() bool {
	if x != nil {
		return x.SkipBucketCheck
	}
	return false
}

func (x *SwitchDowntimeOpts) GetContinueReplication() bool {
	if x != nil {
		return x.ContinueReplication
	}
	return false
}

type GetBucketSwitchStatusResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Current switch status
	LastStatus GetBucketSwitchStatusResponse_Status `protobuf:"varint,1,opt,name=last_status,json=lastStatus,proto3,enum=chorus.GetBucketSwitchStatusResponse_Status" json:"last_status,omitempty"`
	// true if switch is zero downtime
	ZeroDowntime bool `protobuf:"varint,2,opt,name=zero_downtime,json=zeroDowntime,proto3" json:"zero_downtime,omitempty"`
	// multipart uploads TTL for zero downtime switch
	MultipartTtl *durationpb.Duration `protobuf:"bytes,3,opt,name=multipart_ttl,json=multipartTtl,proto3,oneof" json:"multipart_ttl,omitempty"`
	DowntimeOpts *SwitchDowntimeOpts  `protobuf:"bytes,4,opt,name=downtime_opts,json=downtimeOpts,proto3,oneof" json:"downtime_opts,omitempty"`
	// Time of last switch attempt - last time when switch was moved to InProgress status.
	LastStartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_started_at,json=lastStartedAt,proto3,oneof" json:"last_started_at,omitempty"`
	// Time of last switch completion. Set only if switch status is Done.
	DoneAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=done_at,json=doneAt,proto3,oneof" json:"done_at,omitempty"`
	// History of switch status changes
	History       []string            `protobuf:"bytes,7,rep,name=history,proto3" json:"history,omitempty"`
	ReplicationId *ReplicationRequest `protobuf:"bytes,8,opt,name=replication_id,json=replicationId,proto3" json:"replication_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBucketSwitchStatusResponse) Reset() {
	*x = GetBucketSwitchStatusResponse{}
	mi := &file_chorus_chorus_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetBucketSwitchStatusResponse) ProtoMessage() {}

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

func (x *GetBucketSwitchStatusResponse) GetLastStatus() GetBucketSwitchStatusResponse_Status {
	if x != nil {
		return x.LastStatus
	}
	return GetBucketSwitchStatusResponse_NotStarted
}

func (x *GetBucketSwitchStatusResponse) GetZeroDowntime() bool {
	if x != nil {
		return x.ZeroDowntime
	}
	return false
}

func (x *GetBucketSwitchStatusResponse) GetMultipartTtl() *durationpb.Duration {
	if x != nil {
		return x.MultipartTtl
	}
	return nil
}

func (x *GetBucketSwitchStatusResponse) GetDowntimeOpts() *SwitchDowntimeOpts {
	if x != nil {
		return x.DowntimeOpts
	}
	return nil
}

func (x *GetBucketSwitchStatusResponse) GetLastStartedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastStartedAt
	}
	return nil
}

func (x *GetBucketSwitchStatusResponse) GetDoneAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DoneAt
	}
	return nil
}

func (x *GetBucketSwitchStatusResponse) GetHistory() []string {
	if x != nil {
		return x.History
	}
	return nil
}

func (x *GetBucketSwitchStatusResponse) GetReplicationId() *ReplicationRequest {
	if x != nil {
		return x.ReplicationId
	}
	return nil
}

type ListSwitchResponse struct {
	state         protoimpl.MessageState           `protogen:"open.v1"`
	Switches      []*GetBucketSwitchStatusResponse `protobuf:"bytes,1,rep,name=switches,proto3" json:"switches,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListSwitchResponse) Reset() {
	*x = ListSwitchResponse{}
	mi := &file_chorus_chorus_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListSwitchResponse) ProtoMessage() {}

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

func (x *ListSwitchResponse) GetSwitches() []*GetBucketSwitchStatusResponse {
	if x != nil {
		return x.Switches
	}
	return nil
}

var File_chorus_chorus_proto protoreflect.FileDescriptor

const file_chorus_chorus_proto_rawDesc = "" +
	"\n" +
	"\x13chorus/chorus.proto\x12\x06chorus\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"C\n" +
	"\x0fMigrateLocation\x12\x18\n" +
	"\astorage\x18\x01 \x01(\tR\astorage\x12\x16\n" +
	"\x06bucket\x18\x02 \x01(\tR\x06bucket\"i\n" +
	"\x1cStartConsistencyCheckRequest\x125\n" +
	"\tlocations\x18\x01 \x03(\v2\x17.chorus.MigrateLocationR\tlocations\x12\x12\n" +
	"\x04user\x18\x02 \x01(\tR\x04user\"P\n" +
	"\x17ConsistencyCheckRequest\x125\n" +
	"\tlocations\x18\x01 \x03(\v2\x17.chorus.MigrateLocationR\tlocations\"\xc5\x01\n" +
	"\x10ConsistencyCheck\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x125\n" +
	"\tlocations\x18\x02 \x03(\v2\x17.chorus.MigrateLocationR\tlocations\x12\x16\n" +
	"\x06queued\x18\x03 \x01(\x04R\x06queued\x12\x1c\n" +
	"\tcompleted\x18\x04 \x01(\x04R\tcompleted\x12\x14\n" +
	"\x05ready\x18\x05 \x01(\bR\x05ready\x12\x1e\n" +
	"\n" +
	"consistent\x18\x06 \x01(\bR\n" +
	"consistent\"Q\n" +
	"\x1dListConsistencyChecksResponse\x120\n" +
	"\x06checks\x18\x01 \x03(\v2\x18.chorus.ConsistencyCheckR\x06checks\"Y\n" +
	" GetConsistencyCheckReportRequest\x125\n" +
	"\tlocations\x18\x01 \x03(\v2\x17.chorus.MigrateLocationR\tlocations\"S\n" +
	"!GetConsistencyCheckReportResponse\x12.\n" +
	"\x05check\x18\x01 \x01(\v2\x18.chorus.ConsistencyCheckR\x05check\"V\n" +
	"\x1cConsistencyCheckStorageEntry\x12\x18\n" +
	"\astorage\x18\x01 \x01(\tR\astorage\x12\x1c\n" +
	"\tversionId\x18\x02 \x01(\tR\tversionId\"\x97\x01\n" +
	"\x1bConsistencyCheckReportEntry\x12\x16\n" +
	"\x06object\x18\x01 \x01(\tR\x06object\x12\x12\n" +
	"\x04etag\x18\x02 \x01(\tR\x04etag\x12L\n" +
	"\x0estorageEntries\x18\x03 \x03(\v2$.chorus.ConsistencyCheckStorageEntryR\x0estorageEntries\"\x94\x01\n" +
	"'GetConsistencyCheckReportEntriesRequest\x125\n" +
	"\tlocations\x18\x01 \x03(\v2\x17.chorus.MigrateLocationR\tlocations\x12\x16\n" +
	"\x06Cursor\x18\x02 \x01(\x04R\x06Cursor\x12\x1a\n" +
	"\bPageSize\x18\x03 \x01(\x04R\bPageSize\"\x81\x01\n" +
	"(GetConsistencyCheckReportEntriesResponse\x12=\n" +
	"\aentries\x18\x01 \x03(\v2#.chorus.ConsistencyCheckReportEntryR\aentries\x12\x16\n" +
	"\x06Cursor\x18\x02 \x01(\x04R\x06Cursor\"]\n" +
	"\x15GetAppVersionResponse\x12\x18\n" +
	"\aversion\x18\x01 \x01(\tR\aversion\x12\x16\n" +
	"\x06commit\x18\x02 \x01(\tR\x06commit\x12\x12\n" +
	"\x04date\x18\x03 \x01(\tR\x04date\"B\n" +
	"\x13GetStoragesResponse\x12+\n" +
	"\bstorages\x18\x01 \x03(\v2\x0f.chorus.StorageR\bstorages\"\xa9\x02\n" +
	"\aStorage\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x17\n" +
	"\ais_main\x18\x02 \x01(\bR\x06isMain\x12\x18\n" +
	"\aaddress\x18\x03 \x01(\tR\aaddress\x124\n" +
	"\bprovider\x18\x04 \x01(\x0e2\x18.chorus.Storage.ProviderR\bprovider\x124\n" +
	"\vcredentials\x18\x05 \x03(\v2\x12.chorus.CredentialR\vcredentials\"k\n" +
	"\bProvider\x12\t\n" +
	"\x05Other\x10\x00\x12\b\n" +
	"\x04Ceph\x10\x01\x12\t\n" +
	"\x05Minio\x10\x02\x12\a\n" +
	"\x03AWS\x10\x03\x12\a\n" +
	"\x03GCS\x10\x04\x12\v\n" +
	"\aAlibaba\x10\x05\x12\x0e\n" +
	"\n" +
	"Cloudflare\x10\x06\x12\x10\n" +
	"\fDigitalOcean\x10\a\"`\n" +
	"\n" +
	"Credential\x12\x14\n" +
	"\x05alias\x18\x01 \x01(\tR\x05alias\x12\x1d\n" +
	"\n" +
	"access_key\x18\x02 \x01(\tR\taccessKey\x12\x1d\n" +
	"\n" +
	"secret_key\x18\x03 \x01(\tR\tsecretKey\"m\n" +
	"\x1bGetProxyCredentialsResponse\x12\x18\n" +
	"\aaddress\x18\x01 \x01(\tR\aaddress\x124\n" +
	"\vcredentials\x18\x02 \x03(\v2\x12.chorus.CredentialR\vcredentials\"\xe3\x01\n" +
	"\x15AddReplicationRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x12\n" +
	"\x04from\x18\x03 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x04 \x01(\tR\x02to\x12\x18\n" +
	"\abuckets\x18\x05 \x03(\tR\abuckets\x12+\n" +
	"\x12is_for_all_buckets\x18\x06 \x01(\bR\x0fisForAllBuckets\x12 \n" +
	"\tagent_url\x18\a \x01(\tH\x00R\bagentUrl\x88\x01\x01\x12\x1b\n" +
	"\tto_bucket\x18\b \x01(\tR\btoBucketB\f\n" +
	"\n" +
	"_agent_url\"\xe1\x01\n" +
	"\x1bAddBucketReplicationRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12!\n" +
	"\ffrom_storage\x18\x02 \x01(\tR\vfromStorage\x12\x1f\n" +
	"\vfrom_bucket\x18\x03 \x01(\tR\n" +
	"fromBucket\x12\x1d\n" +
	"\n" +
	"to_storage\x18\x04 \x01(\tR\ttoStorage\x12\x1b\n" +
	"\tto_bucket\x18\x05 \x01(\tR\btoBucket\x12 \n" +
	"\tagent_url\x18\x06 \x01(\tH\x00R\bagentUrl\x88\x01\x01B\f\n" +
	"\n" +
	"_agent_url\"\x83\x01\n" +
	" ListBucketsForReplicationRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x12\n" +
	"\x04from\x18\x02 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x03 \x01(\tR\x02to\x12'\n" +
	"\x0fshow_replicated\x18\x04 \x01(\bR\x0eshowReplicated\"l\n" +
	"!ListBucketsForReplicationResponse\x12\x18\n" +
	"\abuckets\x18\x01 \x03(\tR\abuckets\x12-\n" +
	"\x12replicated_buckets\x18\x02 \x03(\tR\x11replicatedBuckets\"S\n" +
	"\x18ListReplicationsResponse\x127\n" +
	"\freplications\x18\x01 \x03(\v2\x13.chorus.ReplicationR\freplications\"\xc4\x06\n" +
	"\vReplication\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x16\n" +
	"\x06bucket\x18\x02 \x01(\tR\x06bucket\x12\x12\n" +
	"\x04from\x18\x03 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x04 \x01(\tR\x02to\x129\n" +
	"\n" +
	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x1b\n" +
	"\tis_paused\x18\x06 \x01(\bR\bisPaused\x12 \n" +
	"\fis_init_done\x18\a \x01(\bR\n" +
	"isInitDone\x12&\n" +
	"\x0finit_obj_listed\x18\b \x01(\x03R\rinitObjListed\x12\"\n" +
	"\rinit_obj_done\x18\t \x01(\x03R\vinitObjDone\x12*\n" +
	"\x11init_bytes_listed\x18\n" +
	" \x01(\x03R\x0finitBytesListed\x12&\n" +
	"\x0finit_bytes_done\x18\v \x01(\x03R\rinitBytesDone\x12\x16\n" +
	"\x06events\x18\f \x01(\x03R\x06events\x12\x1f\n" +
	"\vevents_done\x18\r \x01(\x03R\n" +
	"eventsDone\x12B\n" +
	"\x0flast_emitted_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\rlastEmittedAt\x12F\n" +
	"\x11last_processed_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\x0flastProcessedAt\x12 \n" +
	"\tagent_url\x18\x10 \x01(\tH\x00R\bagentUrl\x88\x01\x01\x12\x1b\n" +
	"\tto_bucket\x18\x11 \x01(\tR\btoBucket\x12<\n" +
	"\finit_done_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"initDoneAt\x12\x1d\n" +
	"\n" +
	"has_switch\x18\x13 \x01(\bR\thasSwitch\x12\x1f\n" +
	"\vis_archived\x18\x14 \x01(\bR\n" +
	"isArchived\x12;\n" +
	"\varchived_at\x18\x15 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"archivedAtB\f\n" +
	"\n" +
	"_agent_url\"\x81\x01\n" +
	"\x12ReplicationRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x16\n" +
	"\x06bucket\x18\x02 \x01(\tR\x06bucket\x12\x12\n" +
	"\x04from\x18\x03 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x04 \x01(\tR\x02to\x12\x1b\n" +
	"\tto_bucket\x18\x05 \x01(\tR\btoBucket\"[\n" +
	"\x1cListUserReplicationsResponse\x12;\n" +
	"\freplications\x18\x01 \x03(\v2\x17.chorus.UserReplicationR\freplications\"\xb0\x06\n" +
	"\x0fUserReplication\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x12\n" +
	"\x04from\x18\x02 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x03 \x01(\tR\x02to\x129\n" +
	"\n" +
	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x1b\n" +
	"\tis_paused\x18\x06 \x01(\bR\bisPaused\x12 \n" +
	"\fis_init_done\x18\a \x01(\bR\n" +
	"isInitDone\x12&\n" +
	"\x0finit_obj_listed\x18\b \x01(\x03R\rinitObjListed\x12\"\n" +
	"\rinit_obj_done\x18\t \x01(\x03R\vinitObjDone\x12*\n" +
	"\x11init_bytes_listed\x18\n" +
	" \x01(\x03R\x0finitBytesListed\x12&\n" +
	"\x0finit_bytes_done\x18\v \x01(\x03R\rinitBytesDone\x12\x16\n" +
	"\x06events\x18\f \x01(\x03R\x06events\x12\x1f\n" +
	"\vevents_done\x18\r \x01(\x03R\n" +
	"eventsDone\x12B\n" +
	"\x0flast_emitted_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\rlastEmittedAt\x12F\n" +
	"\x11last_processed_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\x0flastProcessedAt\x12 \n" +
	"\tagent_url\x18\x10 \x01(\tH\x00R\bagentUrl\x88\x01\x01\x12\x1b\n" +
	"\tto_bucket\x18\x11 \x01(\tR\btoBucket\x12<\n" +
	"\finit_done_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"initDoneAt\x12\x1d\n" +
	"\n" +
	"has_switch\x18\x13 \x01(\bR\thasSwitch\x12\x1f\n" +
	"\vis_archived\x18\x14 \x01(\bR\n" +
	"isArchived\x12;\n" +
	"\varchived_at\x18\x15 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"archivedAtB\f\n" +
	"\n" +
	"_agent_url\"V\n" +
	"\x1cDeleteUserReplicationRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x12\n" +
	"\x04from\x18\x02 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x03 \x01(\tR\x02to\"\xa2\x01\n" +
	"\x14CompareBucketRequest\x12\x12\n" +
	"\x04user\x18\x01 \x01(\tR\x04user\x12\x16\n" +
	"\x06bucket\x18\x02 \x01(\tR\x06bucket\x12\x12\n" +
	"\x04from\x18\x03 \x01(\tR\x04from\x12\x0e\n" +
	"\x02to\x18\x04 \x01(\tR\x02to\x12\x1d\n" +
	"\n" +
	"show_match\x18\x05 \x01(\bR\tshowMatch\x12\x1b\n" +
	"\tto_bucket\x18\x06 \x01(\tR\btoBucket\"\xac\x01\n" +
	"\x15CompareBucketResponse\x12\x19\n" +
	"\bis_match\x18\x01 \x01(\bR\aisMatch\x12\x1b\n" +
	"\tmiss_from\x18\x02 \x03(\tR\bmissFrom\x12\x17\n" +
	"\amiss_to\x18\x03 \x03(\tR\x06missTo\x12\x16\n" +
	"\x06differ\x18\x04 \x03(\tR\x06differ\x12\x14\n" +
	"\x05error\x18\x05 \x03(\tR\x05error\x12\x14\n" +
	"\x05match\x18\x06 \x03(\tR\x05match\":\n" +
	"\x11GetAgentsResponse\x12%\n" +
	"\x06agents\x18\x01 \x03(\v2\r.chorus.AgentR\x06agents\"3\n" +
	"\x05Agent\x12\x18\n" +
	"\astorage\x18\x01 \x01(\tR\astorage\x12\x10\n" +
	"\x03url\x18\x02 \x01(\tR\x03url\"\xbb\x01\n" +
	"\x1fSwitchBucketZeroDowntimeRequest\x12A\n" +
	"\x0ereplication_id\x18\x01 \x01(\v2\x1a.chorus.ReplicationRequestR\rreplicationId\x12C\n" +
	"\rmultipart_ttl\x18\x02 \x01(\v2\x19.google.protobuf.DurationH\x00R\fmultipartTtl\x88\x01\x01B\x10\n" +
	"\x0e_multipart_ttl\"\xb0\x01\n" +
	"\x13SwitchBucketRequest\x12A\n" +
	"\x0ereplication_id\x18\x01 \x01(\v2\x1a.chorus.ReplicationRequestR\rreplicationId\x12D\n" +
	"\rdowntime_opts\x18\x02 \x01(\v2\x1a.chorus.SwitchDowntimeOptsH\x00R\fdowntimeOpts\x88\x01\x01B\x10\n" +
	"\x0e_downtime_opts\"\x9a\x03\n" +
	"\x12SwitchDowntimeOpts\x12+\n" +
	"\x12start_on_init_done\x18\x01 \x01(\bR\x0fstartOnInitDone\x12\x17\n" +
	"\x04cron\x18\x02 \x01(\tH\x00R\x04cron\x88\x01\x01\x12:\n" +
	"\bstart_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampH\x01R\astartAt\x88\x01\x01\x12A\n" +
	"\fmax_duration\x18\x04 \x01(\v2\x19.google.protobuf.DurationH\x02R\vmaxDuration\x88\x01\x01\x12'\n" +
	"\rmax_event_lag\x18\x05 \x01(\rH\x03R\vmaxEventLag\x88\x01\x01\x12*\n" +
	"\x11skip_bucket_check\x18\x06 \x01(\bR\x0fskipBucketCheck\x121\n" +
	"\x14continue_replication\x18\a \x01(\bR\x13continueReplicationB\a\n" +
	"\x05_cronB\v\n" +
	"\t_start_atB\x0f\n" +
	"\r_max_durationB\x10\n" +
	"\x0e_max_event_lag\"\xa3\x05\n" +
	"\x1dGetBucketSwitchStatusResponse\x12M\n" +
	"\vlast_status\x18\x01 \x01(\x0e2,.chorus.GetBucketSwitchStatusResponse.StatusR\n" +
	"lastStatus\x12#\n" +
	"\rzero_downtime\x18\x02 \x01(\bR\fzeroDowntime\x12C\n" +
	"\rmultipart_ttl\x18\x03 \x01(\v2\x19.google.protobuf.DurationH\x00R\fmultipartTtl\x88\x01\x01\x12D\n" +
	"\rdowntime_opts\x18\x04 \x01(\v2\x1a.chorus.SwitchDowntimeOptsH\x01R\fdowntimeOpts\x88\x01\x01\x12G\n" +
	"\x0flast_started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampH\x02R\rlastStartedAt\x88\x01\x01\x128\n" +
	"\adone_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampH\x03R\x06doneAt\x88\x01\x01\x12\x18\n" +
	"\ahistory\x18\a \x03(\tR\ahistory\x12A\n" +
	"\x0ereplication_id\x18\b \x01(\v2\x1a.chorus.ReplicationRequestR\rreplicationId\"_\n" +
	"\x06Status\x12\x0e\n" +
	"\n" +
	"NotStarted\x10\x00\x12\x0e\n" +
	"\n" +
	"InProgress\x10\x01\x12\x13\n" +
	"\x0fCheckInProgress\x10\x02\x12\t\n" +
	"\x05Error\x10\x03\x12\v\n" +
	"\aSkipped\x10\x04\x12\b\n" +
	"\x04Done\x10\x05B\x10\n" +
	"\x0e_multipart_ttlB\x10\n" +
	"\x0e_downtime_optsB\x12\n" +
	"\x10_last_started_atB\n" +
	"\n" +
	"\b_done_at\"W\n" +
	"\x12ListSwitchResponse\x12A\n" +
	"\bswitches\x18\x01 \x03(\v2%.chorus.GetBucketSwitchStatusResponseR\bswitches2\xfc\x10\n" +
	"\x06Chorus\x12F\n" +
	"\rGetAppVersion\x12\x16.google.protobuf.Empty\x1a\x1d.chorus.GetAppVersionResponse\x12B\n" +
	"\vGetStorages\x12\x16.google.protobuf.Empty\x1a\x1b.chorus.GetStoragesResponse\x12R\n" +
	"\x13GetProxyCredentials\x12\x16.google.protobuf.Empty\x1a#.chorus.GetProxyCredentialsResponse\x12p\n" +
	"\x19ListBucketsForReplication\x12(.chorus.ListBucketsForReplicationRequest\x1a).chorus.ListBucketsForReplicationResponse\x12G\n" +
	"\x0eAddReplication\x12\x1d.chorus.AddReplicationRequest\x1a\x16.google.protobuf.Empty\x12L\n" +
	"\x10ListReplications\x12\x16.google.protobuf.Empty\x1a .chorus.ListReplicationsResponse\x12T\n" +
	"\x14ListUserReplications\x12\x16.google.protobuf.Empty\x1a$.chorus.ListUserReplicationsResponse\x12L\n" +
	"\x17StreamBucketReplication\x12\x1a.chorus.ReplicationRequest\x1a\x13.chorus.Replication0\x01\x12F\n" +
	"\x10PauseReplication\x12\x1a.chorus.ReplicationRequest\x1a\x16.google.protobuf.Empty\x12G\n" +
	"\x11ResumeReplication\x12\x1a.chorus.ReplicationRequest\x1a\x16.google.protobuf.Empty\x12G\n" +
	"\x11DeleteReplication\x12\x1a.chorus.ReplicationRequest\x1a\x16.google.protobuf.Empty\x12U\n" +
	"\x15DeleteUserReplication\x12$.chorus.DeleteUserReplicationRequest\x1a\x16.google.protobuf.Empty\x12[\n" +
	"\x18SwitchBucketZeroDowntime\x12'.chorus.SwitchBucketZeroDowntimeRequest\x1a\x16.google.protobuf.Empty\x12C\n" +
	"\fSwitchBucket\x12\x1b.chorus.SwitchBucketRequest\x1a\x16.google.protobuf.Empty\x12H\n" +
	"\x12DeleteBucketSwitch\x12\x1a.chorus.ReplicationRequest\x1a\x16.google.protobuf.Empty\x12Z\n" +
	"\x15GetBucketSwitchStatus\x12\x1a.chorus.ReplicationRequest\x1a%.chorus.GetBucketSwitchStatusResponse\x12M\n" +
	"\x17ListReplicationSwitches\x12\x16.google.protobuf.Empty\x1a\x1a.chorus.ListSwitchResponse\x12L\n" +
	"\rCompareBucket\x12\x1c.chorus.CompareBucketRequest\x1a\x1d.chorus.CompareBucketResponse\x12>\n" +
	"\tGetAgents\x12\x16.google.protobuf.Empty\x1a\x19.chorus.GetAgentsResponse\x12S\n" +
	"\x14AddBucketReplication\x12#.chorus.AddBucketReplicationRequest\x1a\x16.google.protobuf.Empty\x12A\n" +
	"\x0eGetReplication\x12\x1a.chorus.ReplicationRequest\x1a\x13.chorus.Replication\x12U\n" +
	"\x15StartConsistencyCheck\x12$.chorus.StartConsistencyCheckRequest\x1a\x16.google.protobuf.Empty\x12V\n" +
	"\x15ListConsistencyChecks\x12\x16.google.protobuf.Empty\x1a%.chorus.ListConsistencyChecksResponse\x12g\n" +
	"\x19GetConsistencyCheckReport\x12\x1f.chorus.ConsistencyCheckRequest\x1a).chorus.GetConsistencyCheckReportResponse\x12\x85\x01\n" +
	" GetConsistencyCheckReportEntries\x12/.chorus.GetConsistencyCheckReportEntriesRequest\x1a0.chorus.GetConsistencyCheckReportEntriesResponse\x12W\n" +
	"\x1cDeleteConsistencyCheckReport\x12\x1f.chorus.ConsistencyCheckRequest\x1a\x16.google.protobuf.EmptyB)Z'github.com/clyso/chorus/proto/chorus;pbb\x06proto3"

var (
	file_chorus_chorus_proto_rawDescOnce sync.Once
	file_chorus_chorus_proto_rawDescData []byte
)

func file_chorus_chorus_proto_rawDescGZIP() []byte {
	file_chorus_chorus_proto_rawDescOnce.Do(func() {
		file_chorus_chorus_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_chorus_chorus_proto_rawDesc), len(file_chorus_chorus_proto_rawDesc)))
	})
	return file_chorus_chorus_proto_rawDescData
}

var file_chorus_chorus_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_chorus_chorus_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_chorus_chorus_proto_goTypes = []any{
	(Storage_Provider)(0),                            // 0: chorus.Storage.Provider
	(GetBucketSwitchStatusResponse_Status)(0),        // 1: chorus.GetBucketSwitchStatusResponse.Status
	(*MigrateLocation)(nil),                          // 2: chorus.MigrateLocation
	(*StartConsistencyCheckRequest)(nil),             // 3: chorus.StartConsistencyCheckRequest
	(*ConsistencyCheckRequest)(nil),                  // 4: chorus.ConsistencyCheckRequest
	(*ConsistencyCheck)(nil),                         // 5: chorus.ConsistencyCheck
	(*ListConsistencyChecksResponse)(nil),            // 6: chorus.ListConsistencyChecksResponse
	(*GetConsistencyCheckReportRequest)(nil),         // 7: chorus.GetConsistencyCheckReportRequest
	(*GetConsistencyCheckReportResponse)(nil),        // 8: chorus.GetConsistencyCheckReportResponse
	(*ConsistencyCheckStorageEntry)(nil),             // 9: chorus.ConsistencyCheckStorageEntry
	(*ConsistencyCheckReportEntry)(nil),              // 10: chorus.ConsistencyCheckReportEntry
	(*GetConsistencyCheckReportEntriesRequest)(nil),  // 11: chorus.GetConsistencyCheckReportEntriesRequest
	(*GetConsistencyCheckReportEntriesResponse)(nil), // 12: chorus.GetConsistencyCheckReportEntriesResponse
	(*GetAppVersionResponse)(nil),                    // 13: chorus.GetAppVersionResponse
	(*GetStoragesResponse)(nil),                      // 14: chorus.GetStoragesResponse
	(*Storage)(nil),                                  // 15: chorus.Storage
	(*Credential)(nil),                               // 16: chorus.Credential
	(*GetProxyCredentialsResponse)(nil),              // 17: chorus.GetProxyCredentialsResponse
	(*AddReplicationRequest)(nil),                    // 18: chorus.AddReplicationRequest
	(*AddBucketReplicationRequest)(nil),              // 19: chorus.AddBucketReplicationRequest
	(*ListBucketsForReplicationRequest)(nil),         // 20: chorus.ListBucketsForReplicationRequest
	(*ListBucketsForReplicationResponse)(nil),        // 21: chorus.ListBucketsForReplicationResponse
	(*ListReplicationsResponse)(nil),                 // 22: chorus.ListReplicationsResponse
	(*Replication)(nil),                              // 23: chorus.Replication
	(*ReplicationRequest)(nil),                       // 24: chorus.ReplicationRequest
	(*ListUserReplicationsResponse)(nil),             // 25: chorus.ListUserReplicationsResponse
	(*UserReplication)(nil),                          // 26: chorus.UserReplication
	(*DeleteUserReplicationRequest)(nil),             // 27: chorus.DeleteUserReplicationRequest
	(*CompareBucketRequest)(nil),                     // 28: chorus.CompareBucketRequest
	(*CompareBucketResponse)(nil),                    // 29: chorus.CompareBucketResponse
	(*GetAgentsResponse)(nil),                        // 30: chorus.GetAgentsResponse
	(*Agent)(nil),                                    // 31: chorus.Agent
	(*SwitchBucketZeroDowntimeRequest)(nil),          // 32: chorus.SwitchBucketZeroDowntimeRequest
	(*SwitchBucketRequest)(nil),                      // 33: chorus.SwitchBucketRequest
	(*SwitchDowntimeOpts)(nil),                       // 34: chorus.SwitchDowntimeOpts
	(*GetBucketSwitchStatusResponse)(nil),            // 35: chorus.GetBucketSwitchStatusResponse
	(*ListSwitchResponse)(nil),                       // 36: chorus.ListSwitchResponse
	(*timestamppb.Timestamp)(nil),                    // 37: google.protobuf.Timestamp
	(*durationpb.Duration)(nil),                      // 38: google.protobuf.Duration
	(*emptypb.Empty)(nil),                            // 39: google.protobuf.Empty
}
var file_chorus_chorus_proto_depIdxs = []int32{
	2,  // 0: chorus.StartConsistencyCheckRequest.locations:type_name -> chorus.MigrateLocation
	2,  // 1: chorus.ConsistencyCheckRequest.locations:type_name -> chorus.MigrateLocation
	2,  // 2: chorus.ConsistencyCheck.locations:type_name -> chorus.MigrateLocation
	5,  // 3: chorus.ListConsistencyChecksResponse.checks:type_name -> chorus.ConsistencyCheck
	2,  // 4: chorus.GetConsistencyCheckReportRequest.locations:type_name -> chorus.MigrateLocation
	5,  // 5: chorus.GetConsistencyCheckReportResponse.check:type_name -> chorus.ConsistencyCheck
	9,  // 6: chorus.ConsistencyCheckReportEntry.storageEntries:type_name -> chorus.ConsistencyCheckStorageEntry
	2,  // 7: chorus.GetConsistencyCheckReportEntriesRequest.locations:type_name -> chorus.MigrateLocation
	10, // 8: chorus.GetConsistencyCheckReportEntriesResponse.entries:type_name -> chorus.ConsistencyCheckReportEntry
	15, // 9: chorus.GetStoragesResponse.storages:type_name -> chorus.Storage
	0,  // 10: chorus.Storage.provider:type_name -> chorus.Storage.Provider
	16, // 11: chorus.Storage.credentials:type_name -> chorus.Credential
	16, // 12: chorus.GetProxyCredentialsResponse.credentials:type_name -> chorus.Credential
	23, // 13: chorus.ListReplicationsResponse.replications:type_name -> chorus.Replication
	37, // 14: chorus.Replication.created_at:type_name -> google.protobuf.Timestamp
	37, // 15: chorus.Replication.last_emitted_at:type_name -> google.protobuf.Timestamp
	37, // 16: chorus.Replication.last_processed_at:type_name -> google.protobuf.Timestamp
	37, // 17: chorus.Replication.init_done_at:type_name -> google.protobuf.Timestamp
	37, // 18: chorus.Replication.archived_at:type_name -> google.protobuf.Timestamp
	26, // 19: chorus.ListUserReplicationsResponse.replications:type_name -> chorus.UserReplication
	37, // 20: chorus.UserReplication.created_at:type_name -> google.protobuf.Timestamp
	37, // 21: chorus.UserReplication.last_emitted_at:type_name -> google.protobuf.Timestamp
	37, // 22: chorus.UserReplication.last_processed_at:type_name -> google.protobuf.Timestamp
	37, // 23: chorus.UserReplication.init_done_at:type_name -> google.protobuf.Timestamp
	37, // 24: chorus.UserReplication.archived_at:type_name -> google.protobuf.Timestamp
	31, // 25: chorus.GetAgentsResponse.agents:type_name -> chorus.Agent
	24, // 26: chorus.SwitchBucketZeroDowntimeRequest.replication_id:type_name -> chorus.ReplicationRequest
	38, // 27: chorus.SwitchBucketZeroDowntimeRequest.multipart_ttl:type_name -> google.protobuf.Duration
	24, // 28: chorus.SwitchBucketRequest.replication_id:type_name -> chorus.ReplicationRequest
	34, // 29: chorus.SwitchBucketRequest.downtime_opts:type_name -> chorus.SwitchDowntimeOpts
	37, // 30: chorus.SwitchDowntimeOpts.start_at:type_name -> google.protobuf.Timestamp
	38, // 31: chorus.SwitchDowntimeOpts.max_duration:type_name -> google.protobuf.Duration
	1,  // 32: chorus.GetBucketSwitchStatusResponse.last_status:type_name -> chorus.GetBucketSwitchStatusResponse.Status
	38, // 33: chorus.GetBucketSwitchStatusResponse.multipart_ttl:type_name -> google.protobuf.Duration
	34, // 34: chorus.GetBucketSwitchStatusResponse.downtime_opts:type_name -> chorus.SwitchDowntimeOpts
	37, // 35: chorus.GetBucketSwitchStatusResponse.last_started_at:type_name -> google.protobuf.Timestamp
	37, // 36: chorus.GetBucketSwitchStatusResponse.done_at:type_name -> google.protobuf.Timestamp
	24, // 37: chorus.GetBucketSwitchStatusResponse.replication_id:type_name -> chorus.ReplicationRequest
	35, // 38: chorus.ListSwitchResponse.switches:type_name -> chorus.GetBucketSwitchStatusResponse
	39, // 39: chorus.Chorus.GetAppVersion:input_type -> google.protobuf.Empty
	39, // 40: chorus.Chorus.GetStorages:input_type -> google.protobuf.Empty
	39, // 41: chorus.Chorus.GetProxyCredentials:input_type -> google.protobuf.Empty
	20, // 42: chorus.Chorus.ListBucketsForReplication:input_type -> chorus.ListBucketsForReplicationRequest
	18, // 43: chorus.Chorus.AddReplication:input_type -> chorus.AddReplicationRequest
	39, // 44: chorus.Chorus.ListReplications:input_type -> google.protobuf.Empty
	39, // 45: chorus.Chorus.ListUserReplications:input_type -> google.protobuf.Empty
	24, // 46: chorus.Chorus.StreamBucketReplication:input_type -> chorus.ReplicationRequest
	24, // 47: chorus.Chorus.PauseReplication:input_type -> chorus.ReplicationRequest
	24, // 48: chorus.Chorus.ResumeReplication:input_type -> chorus.ReplicationRequest
	24, // 49: chorus.Chorus.DeleteReplication:input_type -> chorus.ReplicationRequest
	27, // 50: chorus.Chorus.DeleteUserReplication:input_type -> chorus.DeleteUserReplicationRequest
	32, // 51: chorus.Chorus.SwitchBucketZeroDowntime:input_type -> chorus.SwitchBucketZeroDowntimeRequest
	33, // 52: chorus.Chorus.SwitchBucket:input_type -> chorus.SwitchBucketRequest
	24, // 53: chorus.Chorus.DeleteBucketSwitch:input_type -> chorus.ReplicationRequest
	24, // 54: chorus.Chorus.GetBucketSwitchStatus:input_type -> chorus.ReplicationRequest
	39, // 55: chorus.Chorus.ListReplicationSwitches:input_type -> google.protobuf.Empty
	28, // 56: chorus.Chorus.CompareBucket:input_type -> chorus.CompareBucketRequest
	39, // 57: chorus.Chorus.GetAgents:input_type -> google.protobuf.Empty
	19, // 58: chorus.Chorus.AddBucketReplication:input_type -> chorus.AddBucketReplicationRequest
	24, // 59: chorus.Chorus.GetReplication:input_type -> chorus.ReplicationRequest
	3,  // 60: chorus.Chorus.StartConsistencyCheck:input_type -> chorus.StartConsistencyCheckRequest
	39, // 61: chorus.Chorus.ListConsistencyChecks:input_type -> google.protobuf.Empty
	4,  // 62: chorus.Chorus.GetConsistencyCheckReport:input_type -> chorus.ConsistencyCheckRequest
	11, // 63: chorus.Chorus.GetConsistencyCheckReportEntries:input_type -> chorus.GetConsistencyCheckReportEntriesRequest
	4,  // 64: chorus.Chorus.DeleteConsistencyCheckReport:input_type -> chorus.ConsistencyCheckRequest
	13, // 65: chorus.Chorus.GetAppVersion:output_type -> chorus.GetAppVersionResponse
	14, // 66: chorus.Chorus.GetStorages:output_type -> chorus.GetStoragesResponse
	17, // 67: chorus.Chorus.GetProxyCredentials:output_type -> chorus.GetProxyCredentialsResponse
	21, // 68: chorus.Chorus.ListBucketsForReplication:output_type -> chorus.ListBucketsForReplicationResponse
	39, // 69: chorus.Chorus.AddReplication:output_type -> google.protobuf.Empty
	22, // 70: chorus.Chorus.ListReplications:output_type -> chorus.ListReplicationsResponse
	25, // 71: chorus.Chorus.ListUserReplications:output_type -> chorus.ListUserReplicationsResponse
	23, // 72: chorus.Chorus.StreamBucketReplication:output_type -> chorus.Replication
	39, // 73: chorus.Chorus.PauseReplication:output_type -> google.protobuf.Empty
	39, // 74: chorus.Chorus.ResumeReplication:output_type -> google.protobuf.Empty
	39, // 75: chorus.Chorus.DeleteReplication:output_type -> google.protobuf.Empty
	39, // 76: chorus.Chorus.DeleteUserReplication:output_type -> google.protobuf.Empty
	39, // 77: chorus.Chorus.SwitchBucketZeroDowntime:output_type -> google.protobuf.Empty
	39, // 78: chorus.Chorus.SwitchBucket:output_type -> google.protobuf.Empty
	39, // 79: chorus.Chorus.DeleteBucketSwitch:output_type -> google.protobuf.Empty
	35, // 80: chorus.Chorus.GetBucketSwitchStatus:output_type -> chorus.GetBucketSwitchStatusResponse
	36, // 81: chorus.Chorus.ListReplicationSwitches:output_type -> chorus.ListSwitchResponse
	29, // 82: chorus.Chorus.CompareBucket:output_type -> chorus.CompareBucketResponse
	30, // 83: chorus.Chorus.GetAgents:output_type -> chorus.GetAgentsResponse
	39, // 84: chorus.Chorus.AddBucketReplication:output_type -> google.protobuf.Empty
	23, // 85: chorus.Chorus.GetReplication:output_type -> chorus.Replication
	39, // 86: chorus.Chorus.StartConsistencyCheck:output_type -> google.protobuf.Empty
	6,  // 87: chorus.Chorus.ListConsistencyChecks:output_type -> chorus.ListConsistencyChecksResponse
	8,  // 88: chorus.Chorus.GetConsistencyCheckReport:output_type -> chorus.GetConsistencyCheckReportResponse
	12, // 89: chorus.Chorus.GetConsistencyCheckReportEntries:output_type -> chorus.GetConsistencyCheckReportEntriesResponse
	39, // 90: chorus.Chorus.DeleteConsistencyCheckReport:output_type -> google.protobuf.Empty
	65, // [65:91] is the sub-list for method output_type
	39, // [39:65] is the sub-list for method input_type
	39, // [39:39] is the sub-list for extension type_name
	39, // [39:39] is the sub-list for extension extendee
	0,  // [0:39] is the sub-list for field type_name
}

func init() { file_chorus_chorus_proto_init() }
func file_chorus_chorus_proto_init() {
	if File_chorus_chorus_proto != nil {
		return
	}
	file_chorus_chorus_proto_msgTypes[16].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[17].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[21].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[24].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[30].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[31].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[32].OneofWrappers = []any{}
	file_chorus_chorus_proto_msgTypes[33].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_chorus_chorus_proto_rawDesc), len(file_chorus_chorus_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   35,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_chorus_chorus_proto_goTypes,
		DependencyIndexes: file_chorus_chorus_proto_depIdxs,
		EnumInfos:         file_chorus_chorus_proto_enumTypes,
		MessageInfos:      file_chorus_chorus_proto_msgTypes,
	}.Build()
	File_chorus_chorus_proto = out.File
	file_chorus_chorus_proto_goTypes = nil
	file_chorus_chorus_proto_depIdxs = nil
}
