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

package store

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

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

type InstanceSettingKey int32

const (
	InstanceSettingKey_INSTANCE_SETTING_KEY_UNSPECIFIED InstanceSettingKey = 0
	// BASIC is the key for basic settings.
	InstanceSettingKey_BASIC InstanceSettingKey = 1
	// GENERAL is the key for general settings.
	InstanceSettingKey_GENERAL InstanceSettingKey = 2
	// STORAGE is the key for storage settings.
	InstanceSettingKey_STORAGE InstanceSettingKey = 3
	// MEMO_RELATED is the key for memo related settings.
	InstanceSettingKey_MEMO_RELATED InstanceSettingKey = 4
	// TAGS is the key for tag metadata.
	InstanceSettingKey_TAGS InstanceSettingKey = 5
	// NOTIFICATION is the key for notification transport settings.
	InstanceSettingKey_NOTIFICATION InstanceSettingKey = 6
	// AI is the key for AI provider settings.
	InstanceSettingKey_AI InstanceSettingKey = 7
)

// Enum value maps for InstanceSettingKey.
var (
	InstanceSettingKey_name = map[int32]string{
		0: "INSTANCE_SETTING_KEY_UNSPECIFIED",
		1: "BASIC",
		2: "GENERAL",
		3: "STORAGE",
		4: "MEMO_RELATED",
		5: "TAGS",
		6: "NOTIFICATION",
		7: "AI",
	}
	InstanceSettingKey_value = map[string]int32{
		"INSTANCE_SETTING_KEY_UNSPECIFIED": 0,
		"BASIC":                            1,
		"GENERAL":                          2,
		"STORAGE":                          3,
		"MEMO_RELATED":                     4,
		"TAGS":                             5,
		"NOTIFICATION":                     6,
		"AI":                               7,
	}
)

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

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

func (InstanceSettingKey) Descriptor() protoreflect.EnumDescriptor {
	return file_store_instance_setting_proto_enumTypes[0].Descriptor()
}

func (InstanceSettingKey) Type() protoreflect.EnumType {
	return &file_store_instance_setting_proto_enumTypes[0]
}

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

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

type AIProviderType int32

const (
	AIProviderType_AI_PROVIDER_TYPE_UNSPECIFIED AIProviderType = 0
	AIProviderType_OPENAI                       AIProviderType = 1
	AIProviderType_GEMINI                       AIProviderType = 2
)

// Enum value maps for AIProviderType.
var (
	AIProviderType_name = map[int32]string{
		0: "AI_PROVIDER_TYPE_UNSPECIFIED",
		1: "OPENAI",
		2: "GEMINI",
	}
	AIProviderType_value = map[string]int32{
		"AI_PROVIDER_TYPE_UNSPECIFIED": 0,
		"OPENAI":                       1,
		"GEMINI":                       2,
	}
)

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

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

func (AIProviderType) Descriptor() protoreflect.EnumDescriptor {
	return file_store_instance_setting_proto_enumTypes[1].Descriptor()
}

func (AIProviderType) Type() protoreflect.EnumType {
	return &file_store_instance_setting_proto_enumTypes[1]
}

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

// Deprecated: Use AIProviderType.Descriptor instead.
func (AIProviderType) EnumDescriptor() ([]byte, []int) {
	return file_store_instance_setting_proto_rawDescGZIP(), []int{1}
}

type InstanceStorageSetting_StorageType int32

const (
	InstanceStorageSetting_STORAGE_TYPE_UNSPECIFIED InstanceStorageSetting_StorageType = 0
	// STORAGE_TYPE_DATABASE is the database storage type.
	InstanceStorageSetting_DATABASE InstanceStorageSetting_StorageType = 1
	// STORAGE_TYPE_LOCAL is the local storage type.
	InstanceStorageSetting_LOCAL InstanceStorageSetting_StorageType = 2
	// STORAGE_TYPE_S3 is the S3 storage type.
	InstanceStorageSetting_S3 InstanceStorageSetting_StorageType = 3
)

// Enum value maps for InstanceStorageSetting_StorageType.
var (
	InstanceStorageSetting_StorageType_name = map[int32]string{
		0: "STORAGE_TYPE_UNSPECIFIED",
		1: "DATABASE",
		2: "LOCAL",
		3: "S3",
	}
	InstanceStorageSetting_StorageType_value = map[string]int32{
		"STORAGE_TYPE_UNSPECIFIED": 0,
		"DATABASE":                 1,
		"LOCAL":                    2,
		"S3":                       3,
	}
)

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

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

func (InstanceStorageSetting_StorageType) Descriptor() protoreflect.EnumDescriptor {
	return file_store_instance_setting_proto_enumTypes[2].Descriptor()
}

func (InstanceStorageSetting_StorageType) Type() protoreflect.EnumType {
	return &file_store_instance_setting_proto_enumTypes[2]
}

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

// Deprecated: Use InstanceStorageSetting_StorageType.Descriptor instead.
func (InstanceStorageSetting_StorageType) EnumDescriptor() ([]byte, []int) {
	return file_store_instance_setting_proto_rawDescGZIP(), []int{4, 0}
}

type InstanceSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Key   InstanceSettingKey     `protobuf:"varint,1,opt,name=key,proto3,enum=memos.store.InstanceSettingKey" json:"key,omitempty"`
	// Types that are valid to be assigned to Value:
	//
	//	*InstanceSetting_BasicSetting
	//	*InstanceSetting_GeneralSetting
	//	*InstanceSetting_StorageSetting
	//	*InstanceSetting_MemoRelatedSetting
	//	*InstanceSetting_TagsSetting
	//	*InstanceSetting_NotificationSetting
	//	*InstanceSetting_AiSetting
	Value         isInstanceSetting_Value `protobuf_oneof:"value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceSetting) ProtoMessage() {}

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

func (x *InstanceSetting) GetKey() InstanceSettingKey {
	if x != nil {
		return x.Key
	}
	return InstanceSettingKey_INSTANCE_SETTING_KEY_UNSPECIFIED
}

func (x *InstanceSetting) GetValue() isInstanceSetting_Value {
	if x != nil {
		return x.Value
	}
	return nil
}

func (x *InstanceSetting) GetBasicSetting() *InstanceBasicSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_BasicSetting); ok {
			return x.BasicSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetGeneralSetting() *InstanceGeneralSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_GeneralSetting); ok {
			return x.GeneralSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetStorageSetting() *InstanceStorageSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_StorageSetting); ok {
			return x.StorageSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetMemoRelatedSetting() *InstanceMemoRelatedSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_MemoRelatedSetting); ok {
			return x.MemoRelatedSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetTagsSetting() *InstanceTagsSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_TagsSetting); ok {
			return x.TagsSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetNotificationSetting() *InstanceNotificationSetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_NotificationSetting); ok {
			return x.NotificationSetting
		}
	}
	return nil
}

func (x *InstanceSetting) GetAiSetting() *InstanceAISetting {
	if x != nil {
		if x, ok := x.Value.(*InstanceSetting_AiSetting); ok {
			return x.AiSetting
		}
	}
	return nil
}

type isInstanceSetting_Value interface {
	isInstanceSetting_Value()
}

type InstanceSetting_BasicSetting struct {
	BasicSetting *InstanceBasicSetting `protobuf:"bytes,2,opt,name=basic_setting,json=basicSetting,proto3,oneof"`
}

type InstanceSetting_GeneralSetting struct {
	GeneralSetting *InstanceGeneralSetting `protobuf:"bytes,3,opt,name=general_setting,json=generalSetting,proto3,oneof"`
}

type InstanceSetting_StorageSetting struct {
	StorageSetting *InstanceStorageSetting `protobuf:"bytes,4,opt,name=storage_setting,json=storageSetting,proto3,oneof"`
}

type InstanceSetting_MemoRelatedSetting struct {
	MemoRelatedSetting *InstanceMemoRelatedSetting `protobuf:"bytes,5,opt,name=memo_related_setting,json=memoRelatedSetting,proto3,oneof"`
}

type InstanceSetting_TagsSetting struct {
	TagsSetting *InstanceTagsSetting `protobuf:"bytes,6,opt,name=tags_setting,json=tagsSetting,proto3,oneof"`
}

type InstanceSetting_NotificationSetting struct {
	NotificationSetting *InstanceNotificationSetting `protobuf:"bytes,7,opt,name=notification_setting,json=notificationSetting,proto3,oneof"`
}

type InstanceSetting_AiSetting struct {
	AiSetting *InstanceAISetting `protobuf:"bytes,8,opt,name=ai_setting,json=aiSetting,proto3,oneof"`
}

func (*InstanceSetting_BasicSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_GeneralSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_StorageSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_MemoRelatedSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_TagsSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_NotificationSetting) isInstanceSetting_Value() {}

func (*InstanceSetting_AiSetting) isInstanceSetting_Value() {}

type InstanceBasicSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The secret key for instance. Mainly used for session management.
	SecretKey string `protobuf:"bytes,1,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"`
	// The current schema version of database.
	SchemaVersion string `protobuf:"bytes,2,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceBasicSetting) ProtoMessage() {}

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

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

func (x *InstanceBasicSetting) GetSchemaVersion() string {
	if x != nil {
		return x.SchemaVersion
	}
	return ""
}

type InstanceGeneralSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// disallow_user_registration disallows user registration.
	DisallowUserRegistration bool `protobuf:"varint,2,opt,name=disallow_user_registration,json=disallowUserRegistration,proto3" json:"disallow_user_registration,omitempty"`
	// disallow_password_auth disallows password authentication.
	DisallowPasswordAuth bool `protobuf:"varint,3,opt,name=disallow_password_auth,json=disallowPasswordAuth,proto3" json:"disallow_password_auth,omitempty"`
	// additional_script is the additional script.
	AdditionalScript string `protobuf:"bytes,4,opt,name=additional_script,json=additionalScript,proto3" json:"additional_script,omitempty"`
	// additional_style is the additional style.
	AdditionalStyle string `protobuf:"bytes,5,opt,name=additional_style,json=additionalStyle,proto3" json:"additional_style,omitempty"`
	// custom_profile is the custom profile.
	CustomProfile *InstanceCustomProfile `protobuf:"bytes,6,opt,name=custom_profile,json=customProfile,proto3" json:"custom_profile,omitempty"`
	// week_start_day_offset is the week start day offset from Sunday.
	// 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday
	// Default is Sunday.
	WeekStartDayOffset int32 `protobuf:"varint,7,opt,name=week_start_day_offset,json=weekStartDayOffset,proto3" json:"week_start_day_offset,omitempty"`
	// disallow_change_username disallows changing username.
	DisallowChangeUsername bool `protobuf:"varint,8,opt,name=disallow_change_username,json=disallowChangeUsername,proto3" json:"disallow_change_username,omitempty"`
	// disallow_change_nickname disallows changing nickname.
	DisallowChangeNickname bool `protobuf:"varint,9,opt,name=disallow_change_nickname,json=disallowChangeNickname,proto3" json:"disallow_change_nickname,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

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

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

func (*InstanceGeneralSetting) ProtoMessage() {}

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

func (x *InstanceGeneralSetting) GetDisallowUserRegistration() bool {
	if x != nil {
		return x.DisallowUserRegistration
	}
	return false
}

func (x *InstanceGeneralSetting) GetDisallowPasswordAuth() bool {
	if x != nil {
		return x.DisallowPasswordAuth
	}
	return false
}

func (x *InstanceGeneralSetting) GetAdditionalScript() string {
	if x != nil {
		return x.AdditionalScript
	}
	return ""
}

func (x *InstanceGeneralSetting) GetAdditionalStyle() string {
	if x != nil {
		return x.AdditionalStyle
	}
	return ""
}

func (x *InstanceGeneralSetting) GetCustomProfile() *InstanceCustomProfile {
	if x != nil {
		return x.CustomProfile
	}
	return nil
}

func (x *InstanceGeneralSetting) GetWeekStartDayOffset() int32 {
	if x != nil {
		return x.WeekStartDayOffset
	}
	return 0
}

func (x *InstanceGeneralSetting) GetDisallowChangeUsername() bool {
	if x != nil {
		return x.DisallowChangeUsername
	}
	return false
}

func (x *InstanceGeneralSetting) GetDisallowChangeNickname() bool {
	if x != nil {
		return x.DisallowChangeNickname
	}
	return false
}

type InstanceCustomProfile struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Title         string                 `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Description   string                 `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	LogoUrl       string                 `protobuf:"bytes,3,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceCustomProfile) ProtoMessage() {}

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

func (x *InstanceCustomProfile) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *InstanceCustomProfile) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *InstanceCustomProfile) GetLogoUrl() string {
	if x != nil {
		return x.LogoUrl
	}
	return ""
}

type InstanceStorageSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// storage_type is the storage type.
	StorageType InstanceStorageSetting_StorageType `protobuf:"varint,1,opt,name=storage_type,json=storageType,proto3,enum=memos.store.InstanceStorageSetting_StorageType" json:"storage_type,omitempty"`
	// The template of file path.
	// e.g. assets/{timestamp}_{filename}
	FilepathTemplate string `protobuf:"bytes,2,opt,name=filepath_template,json=filepathTemplate,proto3" json:"filepath_template,omitempty"`
	// The max upload size in megabytes.
	UploadSizeLimitMb int64 `protobuf:"varint,3,opt,name=upload_size_limit_mb,json=uploadSizeLimitMb,proto3" json:"upload_size_limit_mb,omitempty"`
	// The S3 config.
	S3Config      *StorageS3Config `protobuf:"bytes,4,opt,name=s3_config,json=s3Config,proto3" json:"s3_config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceStorageSetting) ProtoMessage() {}

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

func (x *InstanceStorageSetting) GetStorageType() InstanceStorageSetting_StorageType {
	if x != nil {
		return x.StorageType
	}
	return InstanceStorageSetting_STORAGE_TYPE_UNSPECIFIED
}

func (x *InstanceStorageSetting) GetFilepathTemplate() string {
	if x != nil {
		return x.FilepathTemplate
	}
	return ""
}

func (x *InstanceStorageSetting) GetUploadSizeLimitMb() int64 {
	if x != nil {
		return x.UploadSizeLimitMb
	}
	return 0
}

func (x *InstanceStorageSetting) GetS3Config() *StorageS3Config {
	if x != nil {
		return x.S3Config
	}
	return nil
}

// Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/
type StorageS3Config struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	AccessKeyId     string                 `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId,proto3" json:"access_key_id,omitempty"`
	AccessKeySecret string                 `protobuf:"bytes,2,opt,name=access_key_secret,json=accessKeySecret,proto3" json:"access_key_secret,omitempty"`
	Endpoint        string                 `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	Region          string                 `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"`
	Bucket          string                 `protobuf:"bytes,5,opt,name=bucket,proto3" json:"bucket,omitempty"`
	UsePathStyle    bool                   `protobuf:"varint,6,opt,name=use_path_style,json=usePathStyle,proto3" json:"use_path_style,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*StorageS3Config) ProtoMessage() {}

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

func (x *StorageS3Config) GetAccessKeyId() string {
	if x != nil {
		return x.AccessKeyId
	}
	return ""
}

func (x *StorageS3Config) GetAccessKeySecret() string {
	if x != nil {
		return x.AccessKeySecret
	}
	return ""
}

func (x *StorageS3Config) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *StorageS3Config) GetRegion() string {
	if x != nil {
		return x.Region
	}
	return ""
}

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

func (x *StorageS3Config) GetUsePathStyle() bool {
	if x != nil {
		return x.UsePathStyle
	}
	return false
}

type InstanceMemoRelatedSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// display_with_update_time orders and displays memo with update time.
	DisplayWithUpdateTime bool `protobuf:"varint,2,opt,name=display_with_update_time,json=displayWithUpdateTime,proto3" json:"display_with_update_time,omitempty"`
	// content_length_limit is the limit of content length. Unit is byte.
	ContentLengthLimit int32 `protobuf:"varint,3,opt,name=content_length_limit,json=contentLengthLimit,proto3" json:"content_length_limit,omitempty"`
	// enable_double_click_edit enables editing on double click.
	EnableDoubleClickEdit bool `protobuf:"varint,4,opt,name=enable_double_click_edit,json=enableDoubleClickEdit,proto3" json:"enable_double_click_edit,omitempty"`
	// reactions is the list of reactions.
	Reactions     []string `protobuf:"bytes,7,rep,name=reactions,proto3" json:"reactions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceMemoRelatedSetting) ProtoMessage() {}

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

func (x *InstanceMemoRelatedSetting) GetDisplayWithUpdateTime() bool {
	if x != nil {
		return x.DisplayWithUpdateTime
	}
	return false
}

func (x *InstanceMemoRelatedSetting) GetContentLengthLimit() int32 {
	if x != nil {
		return x.ContentLengthLimit
	}
	return 0
}

func (x *InstanceMemoRelatedSetting) GetEnableDoubleClickEdit() bool {
	if x != nil {
		return x.EnableDoubleClickEdit
	}
	return false
}

func (x *InstanceMemoRelatedSetting) GetReactions() []string {
	if x != nil {
		return x.Reactions
	}
	return nil
}

type InstanceTagMetadata struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional background color for the tag label.
	// When unset, the default tag color is used.
	BackgroundColor *color.Color `protobuf:"bytes,1,opt,name=background_color,json=backgroundColor,proto3" json:"background_color,omitempty"`
	// Whether memos with this tag should have their content blurred.
	BlurContent   bool `protobuf:"varint,2,opt,name=blur_content,json=blurContent,proto3" json:"blur_content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceTagMetadata) ProtoMessage() {}

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

func (x *InstanceTagMetadata) GetBackgroundColor() *color.Color {
	if x != nil {
		return x.BackgroundColor
	}
	return nil
}

func (x *InstanceTagMetadata) GetBlurContent() bool {
	if x != nil {
		return x.BlurContent
	}
	return false
}

type InstanceTagsSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Map of tag name pattern to tag metadata.
	// Each key is treated as an anchored regular expression (^pattern$),
	// so a single entry like "project/.*" matches all tags under that prefix.
	// Exact tag names are also valid (they are trivially valid regex patterns).
	Tags          map[string]*InstanceTagMetadata `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceTagsSetting) ProtoMessage() {}

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

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

type InstanceNotificationSetting struct {
	state         protoimpl.MessageState                    `protogen:"open.v1"`
	Email         *InstanceNotificationSetting_EmailSetting `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceNotificationSetting) ProtoMessage() {}

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

func (x *InstanceNotificationSetting) GetEmail() *InstanceNotificationSetting_EmailSetting {
	if x != nil {
		return x.Email
	}
	return nil
}

type InstanceAISetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// providers is the list of AI provider configurations available instance-wide.
	Providers     []*AIProviderConfig `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceAISetting) ProtoMessage() {}

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

func (x *InstanceAISetting) GetProviders() []*AIProviderConfig {
	if x != nil {
		return x.Providers
	}
	return nil
}

type AIProviderConfig struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Id       string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Title    string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Type     AIProviderType         `protobuf:"varint,3,opt,name=type,proto3,enum=memos.store.AIProviderType" json:"type,omitempty"`
	Endpoint string                 `protobuf:"bytes,4,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// api_key is write-only at the API layer and is required by the server to call providers.
	ApiKey        string `protobuf:"bytes,5,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AIProviderConfig) ProtoMessage() {}

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

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

func (x *AIProviderConfig) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *AIProviderConfig) GetType() AIProviderType {
	if x != nil {
		return x.Type
	}
	return AIProviderType_AI_PROVIDER_TYPE_UNSPECIFIED
}

func (x *AIProviderConfig) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *AIProviderConfig) GetApiKey() string {
	if x != nil {
		return x.ApiKey
	}
	return ""
}

type InstanceNotificationSetting_EmailSetting struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Enabled       bool                   `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	SmtpHost      string                 `protobuf:"bytes,2,opt,name=smtp_host,json=smtpHost,proto3" json:"smtp_host,omitempty"`
	SmtpPort      int32                  `protobuf:"varint,3,opt,name=smtp_port,json=smtpPort,proto3" json:"smtp_port,omitempty"`
	SmtpUsername  string                 `protobuf:"bytes,4,opt,name=smtp_username,json=smtpUsername,proto3" json:"smtp_username,omitempty"`
	SmtpPassword  string                 `protobuf:"bytes,5,opt,name=smtp_password,json=smtpPassword,proto3" json:"smtp_password,omitempty"`
	FromEmail     string                 `protobuf:"bytes,6,opt,name=from_email,json=fromEmail,proto3" json:"from_email,omitempty"`
	FromName      string                 `protobuf:"bytes,7,opt,name=from_name,json=fromName,proto3" json:"from_name,omitempty"`
	ReplyTo       string                 `protobuf:"bytes,8,opt,name=reply_to,json=replyTo,proto3" json:"reply_to,omitempty"`
	UseTls        bool                   `protobuf:"varint,9,opt,name=use_tls,json=useTls,proto3" json:"use_tls,omitempty"`
	UseSsl        bool                   `protobuf:"varint,10,opt,name=use_ssl,json=useSsl,proto3" json:"use_ssl,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*InstanceNotificationSetting_EmailSetting) ProtoMessage() {}

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

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

func (x *InstanceNotificationSetting_EmailSetting) GetSmtpHost() string {
	if x != nil {
		return x.SmtpHost
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetSmtpPort() int32 {
	if x != nil {
		return x.SmtpPort
	}
	return 0
}

func (x *InstanceNotificationSetting_EmailSetting) GetSmtpUsername() string {
	if x != nil {
		return x.SmtpUsername
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetSmtpPassword() string {
	if x != nil {
		return x.SmtpPassword
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetFromEmail() string {
	if x != nil {
		return x.FromEmail
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetFromName() string {
	if x != nil {
		return x.FromName
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetReplyTo() string {
	if x != nil {
		return x.ReplyTo
	}
	return ""
}

func (x *InstanceNotificationSetting_EmailSetting) GetUseTls() bool {
	if x != nil {
		return x.UseTls
	}
	return false
}

func (x *InstanceNotificationSetting_EmailSetting) GetUseSsl() bool {
	if x != nil {
		return x.UseSsl
	}
	return false
}

var File_store_instance_setting_proto protoreflect.FileDescriptor

const file_store_instance_setting_proto_rawDesc = "" +
	"\n" +
	"\x1cstore/instance_setting.proto\x12\vmemos.store\x1a\x17google/type/color.proto\"\xfb\x04\n" +
	"\x0fInstanceSetting\x121\n" +
	"\x03key\x18\x01 \x01(\x0e2\x1f.memos.store.InstanceSettingKeyR\x03key\x12H\n" +
	"\rbasic_setting\x18\x02 \x01(\v2!.memos.store.InstanceBasicSettingH\x00R\fbasicSetting\x12N\n" +
	"\x0fgeneral_setting\x18\x03 \x01(\v2#.memos.store.InstanceGeneralSettingH\x00R\x0egeneralSetting\x12N\n" +
	"\x0fstorage_setting\x18\x04 \x01(\v2#.memos.store.InstanceStorageSettingH\x00R\x0estorageSetting\x12[\n" +
	"\x14memo_related_setting\x18\x05 \x01(\v2'.memos.store.InstanceMemoRelatedSettingH\x00R\x12memoRelatedSetting\x12E\n" +
	"\ftags_setting\x18\x06 \x01(\v2 .memos.store.InstanceTagsSettingH\x00R\vtagsSetting\x12]\n" +
	"\x14notification_setting\x18\a \x01(\v2(.memos.store.InstanceNotificationSettingH\x00R\x13notificationSetting\x12?\n" +
	"\n" +
	"ai_setting\x18\b \x01(\v2\x1e.memos.store.InstanceAISettingH\x00R\taiSettingB\a\n" +
	"\x05value\"\\\n" +
	"\x14InstanceBasicSetting\x12\x1d\n" +
	"\n" +
	"secret_key\x18\x01 \x01(\tR\tsecretKey\x12%\n" +
	"\x0eschema_version\x18\x02 \x01(\tR\rschemaVersion\"\xd6\x03\n" +
	"\x16InstanceGeneralSetting\x12<\n" +
	"\x1adisallow_user_registration\x18\x02 \x01(\bR\x18disallowUserRegistration\x124\n" +
	"\x16disallow_password_auth\x18\x03 \x01(\bR\x14disallowPasswordAuth\x12+\n" +
	"\x11additional_script\x18\x04 \x01(\tR\x10additionalScript\x12)\n" +
	"\x10additional_style\x18\x05 \x01(\tR\x0fadditionalStyle\x12I\n" +
	"\x0ecustom_profile\x18\x06 \x01(\v2\".memos.store.InstanceCustomProfileR\rcustomProfile\x121\n" +
	"\x15week_start_day_offset\x18\a \x01(\x05R\x12weekStartDayOffset\x128\n" +
	"\x18disallow_change_username\x18\b \x01(\bR\x16disallowChangeUsername\x128\n" +
	"\x18disallow_change_nickname\x18\t \x01(\bR\x16disallowChangeNickname\"j\n" +
	"\x15InstanceCustomProfile\x12\x14\n" +
	"\x05title\x18\x01 \x01(\tR\x05title\x12 \n" +
	"\vdescription\x18\x02 \x01(\tR\vdescription\x12\x19\n" +
	"\blogo_url\x18\x03 \x01(\tR\alogoUrl\"\xd3\x02\n" +
	"\x16InstanceStorageSetting\x12R\n" +
	"\fstorage_type\x18\x01 \x01(\x0e2/.memos.store.InstanceStorageSetting.StorageTypeR\vstorageType\x12+\n" +
	"\x11filepath_template\x18\x02 \x01(\tR\x10filepathTemplate\x12/\n" +
	"\x14upload_size_limit_mb\x18\x03 \x01(\x03R\x11uploadSizeLimitMb\x129\n" +
	"\ts3_config\x18\x04 \x01(\v2\x1c.memos.store.StorageS3ConfigR\bs3Config\"L\n" +
	"\vStorageType\x12\x1c\n" +
	"\x18STORAGE_TYPE_UNSPECIFIED\x10\x00\x12\f\n" +
	"\bDATABASE\x10\x01\x12\t\n" +
	"\x05LOCAL\x10\x02\x12\x06\n" +
	"\x02S3\x10\x03\"\xd3\x01\n" +
	"\x0fStorageS3Config\x12\"\n" +
	"\raccess_key_id\x18\x01 \x01(\tR\vaccessKeyId\x12*\n" +
	"\x11access_key_secret\x18\x02 \x01(\tR\x0faccessKeySecret\x12\x1a\n" +
	"\bendpoint\x18\x03 \x01(\tR\bendpoint\x12\x16\n" +
	"\x06region\x18\x04 \x01(\tR\x06region\x12\x16\n" +
	"\x06bucket\x18\x05 \x01(\tR\x06bucket\x12$\n" +
	"\x0euse_path_style\x18\x06 \x01(\bR\fusePathStyle\"\xde\x01\n" +
	"\x1aInstanceMemoRelatedSetting\x127\n" +
	"\x18display_with_update_time\x18\x02 \x01(\bR\x15displayWithUpdateTime\x120\n" +
	"\x14content_length_limit\x18\x03 \x01(\x05R\x12contentLengthLimit\x127\n" +
	"\x18enable_double_click_edit\x18\x04 \x01(\bR\x15enableDoubleClickEdit\x12\x1c\n" +
	"\treactions\x18\a \x03(\tR\treactions\"w\n" +
	"\x13InstanceTagMetadata\x12=\n" +
	"\x10background_color\x18\x01 \x01(\v2\x12.google.type.ColorR\x0fbackgroundColor\x12!\n" +
	"\fblur_content\x18\x02 \x01(\bR\vblurContent\"\xb0\x01\n" +
	"\x13InstanceTagsSetting\x12>\n" +
	"\x04tags\x18\x01 \x03(\v2*.memos.store.InstanceTagsSetting.TagsEntryR\x04tags\x1aY\n" +
	"\tTagsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x126\n" +
	"\x05value\x18\x02 \x01(\v2 .memos.store.InstanceTagMetadataR\x05value:\x028\x01\"\xa2\x03\n" +
	"\x1bInstanceNotificationSetting\x12K\n" +
	"\x05email\x18\x01 \x01(\v25.memos.store.InstanceNotificationSetting.EmailSettingR\x05email\x1a\xb5\x02\n" +
	"\fEmailSetting\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1b\n" +
	"\tsmtp_host\x18\x02 \x01(\tR\bsmtpHost\x12\x1b\n" +
	"\tsmtp_port\x18\x03 \x01(\x05R\bsmtpPort\x12#\n" +
	"\rsmtp_username\x18\x04 \x01(\tR\fsmtpUsername\x12#\n" +
	"\rsmtp_password\x18\x05 \x01(\tR\fsmtpPassword\x12\x1d\n" +
	"\n" +
	"from_email\x18\x06 \x01(\tR\tfromEmail\x12\x1b\n" +
	"\tfrom_name\x18\a \x01(\tR\bfromName\x12\x19\n" +
	"\breply_to\x18\b \x01(\tR\areplyTo\x12\x17\n" +
	"\ause_tls\x18\t \x01(\bR\x06useTls\x12\x17\n" +
	"\ause_ssl\x18\n" +
	" \x01(\bR\x06useSsl\"P\n" +
	"\x11InstanceAISetting\x12;\n" +
	"\tproviders\x18\x01 \x03(\v2\x1d.memos.store.AIProviderConfigR\tproviders\"\x9e\x01\n" +
	"\x10AIProviderConfig\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12/\n" +
	"\x04type\x18\x03 \x01(\x0e2\x1b.memos.store.AIProviderTypeR\x04type\x12\x1a\n" +
	"\bendpoint\x18\x04 \x01(\tR\bendpoint\x12\x17\n" +
	"\aapi_key\x18\x05 \x01(\tR\x06apiKey*\x95\x01\n" +
	"\x12InstanceSettingKey\x12$\n" +
	" INSTANCE_SETTING_KEY_UNSPECIFIED\x10\x00\x12\t\n" +
	"\x05BASIC\x10\x01\x12\v\n" +
	"\aGENERAL\x10\x02\x12\v\n" +
	"\aSTORAGE\x10\x03\x12\x10\n" +
	"\fMEMO_RELATED\x10\x04\x12\b\n" +
	"\x04TAGS\x10\x05\x12\x10\n" +
	"\fNOTIFICATION\x10\x06\x12\x06\n" +
	"\x02AI\x10\a*J\n" +
	"\x0eAIProviderType\x12 \n" +
	"\x1cAI_PROVIDER_TYPE_UNSPECIFIED\x10\x00\x12\n" +
	"\n" +
	"\x06OPENAI\x10\x01\x12\n" +
	"\n" +
	"\x06GEMINI\x10\x02B\x9f\x01\n" +
	"\x0fcom.memos.storeB\x14InstanceSettingProtoP\x01Z)github.com/usememos/memos/proto/gen/store\xa2\x02\x03MSX\xaa\x02\vMemos.Store\xca\x02\vMemos\\Store\xe2\x02\x17Memos\\Store\\GPBMetadata\xea\x02\fMemos::Storeb\x06proto3"

var (
	file_store_instance_setting_proto_rawDescOnce sync.Once
	file_store_instance_setting_proto_rawDescData []byte
)

func file_store_instance_setting_proto_rawDescGZIP() []byte {
	file_store_instance_setting_proto_rawDescOnce.Do(func() {
		file_store_instance_setting_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_store_instance_setting_proto_rawDesc), len(file_store_instance_setting_proto_rawDesc)))
	})
	return file_store_instance_setting_proto_rawDescData
}

var file_store_instance_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_store_instance_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
var file_store_instance_setting_proto_goTypes = []any{
	(InstanceSettingKey)(0),                          // 0: memos.store.InstanceSettingKey
	(AIProviderType)(0),                              // 1: memos.store.AIProviderType
	(InstanceStorageSetting_StorageType)(0),          // 2: memos.store.InstanceStorageSetting.StorageType
	(*InstanceSetting)(nil),                          // 3: memos.store.InstanceSetting
	(*InstanceBasicSetting)(nil),                     // 4: memos.store.InstanceBasicSetting
	(*InstanceGeneralSetting)(nil),                   // 5: memos.store.InstanceGeneralSetting
	(*InstanceCustomProfile)(nil),                    // 6: memos.store.InstanceCustomProfile
	(*InstanceStorageSetting)(nil),                   // 7: memos.store.InstanceStorageSetting
	(*StorageS3Config)(nil),                          // 8: memos.store.StorageS3Config
	(*InstanceMemoRelatedSetting)(nil),               // 9: memos.store.InstanceMemoRelatedSetting
	(*InstanceTagMetadata)(nil),                      // 10: memos.store.InstanceTagMetadata
	(*InstanceTagsSetting)(nil),                      // 11: memos.store.InstanceTagsSetting
	(*InstanceNotificationSetting)(nil),              // 12: memos.store.InstanceNotificationSetting
	(*InstanceAISetting)(nil),                        // 13: memos.store.InstanceAISetting
	(*AIProviderConfig)(nil),                         // 14: memos.store.AIProviderConfig
	nil,                                              // 15: memos.store.InstanceTagsSetting.TagsEntry
	(*InstanceNotificationSetting_EmailSetting)(nil), // 16: memos.store.InstanceNotificationSetting.EmailSetting
	(*color.Color)(nil),                              // 17: google.type.Color
}
var file_store_instance_setting_proto_depIdxs = []int32{
	0,  // 0: memos.store.InstanceSetting.key:type_name -> memos.store.InstanceSettingKey
	4,  // 1: memos.store.InstanceSetting.basic_setting:type_name -> memos.store.InstanceBasicSetting
	5,  // 2: memos.store.InstanceSetting.general_setting:type_name -> memos.store.InstanceGeneralSetting
	7,  // 3: memos.store.InstanceSetting.storage_setting:type_name -> memos.store.InstanceStorageSetting
	9,  // 4: memos.store.InstanceSetting.memo_related_setting:type_name -> memos.store.InstanceMemoRelatedSetting
	11, // 5: memos.store.InstanceSetting.tags_setting:type_name -> memos.store.InstanceTagsSetting
	12, // 6: memos.store.InstanceSetting.notification_setting:type_name -> memos.store.InstanceNotificationSetting
	13, // 7: memos.store.InstanceSetting.ai_setting:type_name -> memos.store.InstanceAISetting
	6,  // 8: memos.store.InstanceGeneralSetting.custom_profile:type_name -> memos.store.InstanceCustomProfile
	2,  // 9: memos.store.InstanceStorageSetting.storage_type:type_name -> memos.store.InstanceStorageSetting.StorageType
	8,  // 10: memos.store.InstanceStorageSetting.s3_config:type_name -> memos.store.StorageS3Config
	17, // 11: memos.store.InstanceTagMetadata.background_color:type_name -> google.type.Color
	15, // 12: memos.store.InstanceTagsSetting.tags:type_name -> memos.store.InstanceTagsSetting.TagsEntry
	16, // 13: memos.store.InstanceNotificationSetting.email:type_name -> memos.store.InstanceNotificationSetting.EmailSetting
	14, // 14: memos.store.InstanceAISetting.providers:type_name -> memos.store.AIProviderConfig
	1,  // 15: memos.store.AIProviderConfig.type:type_name -> memos.store.AIProviderType
	10, // 16: memos.store.InstanceTagsSetting.TagsEntry.value:type_name -> memos.store.InstanceTagMetadata
	17, // [17:17] is the sub-list for method output_type
	17, // [17:17] is the sub-list for method input_type
	17, // [17:17] is the sub-list for extension type_name
	17, // [17:17] is the sub-list for extension extendee
	0,  // [0:17] is the sub-list for field type_name
}

func init() { file_store_instance_setting_proto_init() }
func file_store_instance_setting_proto_init() {
	if File_store_instance_setting_proto != nil {
		return
	}
	file_store_instance_setting_proto_msgTypes[0].OneofWrappers = []any{
		(*InstanceSetting_BasicSetting)(nil),
		(*InstanceSetting_GeneralSetting)(nil),
		(*InstanceSetting_StorageSetting)(nil),
		(*InstanceSetting_MemoRelatedSetting)(nil),
		(*InstanceSetting_TagsSetting)(nil),
		(*InstanceSetting_NotificationSetting)(nil),
		(*InstanceSetting_AiSetting)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_store_instance_setting_proto_rawDesc), len(file_store_instance_setting_proto_rawDesc)),
			NumEnums:      3,
			NumMessages:   14,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_store_instance_setting_proto_goTypes,
		DependencyIndexes: file_store_instance_setting_proto_depIdxs,
		EnumInfos:         file_store_instance_setting_proto_enumTypes,
		MessageInfos:      file_store_instance_setting_proto_msgTypes,
	}.Build()
	File_store_instance_setting_proto = out.File
	file_store_instance_setting_proto_goTypes = nil
	file_store_instance_setting_proto_depIdxs = nil
}
