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

package generated

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

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

// Comprehensive enums with unique prefixes to avoid conflicts
type UserStatus int32

const (
	UserStatus_USER_UNKNOWN   UserStatus = 0
	UserStatus_USER_ACTIVE    UserStatus = 1
	UserStatus_USER_INACTIVE  UserStatus = 2
	UserStatus_USER_SUSPENDED UserStatus = 3
	UserStatus_USER_DELETED   UserStatus = 4
)

// Enum value maps for UserStatus.
var (
	UserStatus_name = map[int32]string{
		0: "USER_UNKNOWN",
		1: "USER_ACTIVE",
		2: "USER_INACTIVE",
		3: "USER_SUSPENDED",
		4: "USER_DELETED",
	}
	UserStatus_value = map[string]int32{
		"USER_UNKNOWN":   0,
		"USER_ACTIVE":    1,
		"USER_INACTIVE":  2,
		"USER_SUSPENDED": 3,
		"USER_DELETED":   4,
	}
)

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

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

func (UserStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[0].Descriptor()
}

func (UserStatus) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[0]
}

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

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

type UserType int32

const (
	UserType_USER_TYPE_UNKNOWN   UserType = 0
	UserType_USER_TYPE_PREMIUM   UserType = 1
	UserType_USER_TYPE_BASIC     UserType = 2
	UserType_USER_TYPE_ADMIN     UserType = 3
	UserType_USER_TYPE_MODERATOR UserType = 4
)

// Enum value maps for UserType.
var (
	UserType_name = map[int32]string{
		0: "USER_TYPE_UNKNOWN",
		1: "USER_TYPE_PREMIUM",
		2: "USER_TYPE_BASIC",
		3: "USER_TYPE_ADMIN",
		4: "USER_TYPE_MODERATOR",
	}
	UserType_value = map[string]int32{
		"USER_TYPE_UNKNOWN":   0,
		"USER_TYPE_PREMIUM":   1,
		"USER_TYPE_BASIC":     2,
		"USER_TYPE_ADMIN":     3,
		"USER_TYPE_MODERATOR": 4,
	}
)

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

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

func (UserType) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[1].Descriptor()
}

func (UserType) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[1]
}

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

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

type AddressType int32

const (
	AddressType_ADDRESS_UNKNOWN  AddressType = 0
	AddressType_ADDRESS_HOME     AddressType = 1
	AddressType_ADDRESS_WORK     AddressType = 2
	AddressType_ADDRESS_BILLING  AddressType = 3
	AddressType_ADDRESS_SHIPPING AddressType = 4
)

// Enum value maps for AddressType.
var (
	AddressType_name = map[int32]string{
		0: "ADDRESS_UNKNOWN",
		1: "ADDRESS_HOME",
		2: "ADDRESS_WORK",
		3: "ADDRESS_BILLING",
		4: "ADDRESS_SHIPPING",
	}
	AddressType_value = map[string]int32{
		"ADDRESS_UNKNOWN":  0,
		"ADDRESS_HOME":     1,
		"ADDRESS_WORK":     2,
		"ADDRESS_BILLING":  3,
		"ADDRESS_SHIPPING": 4,
	}
)

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

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

func (AddressType) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[2].Descriptor()
}

func (AddressType) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[2]
}

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

// Deprecated: Use AddressType.Descriptor instead.
func (AddressType) EnumDescriptor() ([]byte, []int) {
	return file_user_proto_rawDescGZIP(), []int{2}
}

type CoordinateSystem int32

const (
	CoordinateSystem_COORD_UNKNOWN  CoordinateSystem = 0
	CoordinateSystem_COORD_WGS84    CoordinateSystem = 1
	CoordinateSystem_COORD_UTM      CoordinateSystem = 2
	CoordinateSystem_COORD_MERCATOR CoordinateSystem = 3
)

// Enum value maps for CoordinateSystem.
var (
	CoordinateSystem_name = map[int32]string{
		0: "COORD_UNKNOWN",
		1: "COORD_WGS84",
		2: "COORD_UTM",
		3: "COORD_MERCATOR",
	}
	CoordinateSystem_value = map[string]int32{
		"COORD_UNKNOWN":  0,
		"COORD_WGS84":    1,
		"COORD_UTM":      2,
		"COORD_MERCATOR": 3,
	}
)

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

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

func (CoordinateSystem) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[3].Descriptor()
}

func (CoordinateSystem) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[3]
}

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

// Deprecated: Use CoordinateSystem.Descriptor instead.
func (CoordinateSystem) EnumDescriptor() ([]byte, []int) {
	return file_user_proto_rawDescGZIP(), []int{3}
}

type ProfileVisibility int32

const (
	ProfileVisibility_PROFILE_UNKNOWN      ProfileVisibility = 0
	ProfileVisibility_PROFILE_PUBLIC       ProfileVisibility = 1
	ProfileVisibility_PROFILE_PRIVATE      ProfileVisibility = 2
	ProfileVisibility_PROFILE_FRIENDS_ONLY ProfileVisibility = 3
)

// Enum value maps for ProfileVisibility.
var (
	ProfileVisibility_name = map[int32]string{
		0: "PROFILE_UNKNOWN",
		1: "PROFILE_PUBLIC",
		2: "PROFILE_PRIVATE",
		3: "PROFILE_FRIENDS_ONLY",
	}
	ProfileVisibility_value = map[string]int32{
		"PROFILE_UNKNOWN":      0,
		"PROFILE_PUBLIC":       1,
		"PROFILE_PRIVATE":      2,
		"PROFILE_FRIENDS_ONLY": 3,
	}
)

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

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

func (ProfileVisibility) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[4].Descriptor()
}

func (ProfileVisibility) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[4]
}

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

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

type NotificationType int32

const (
	NotificationType_NOTIF_UNKNOWN NotificationType = 0
	NotificationType_NOTIF_MESSAGE NotificationType = 1
	NotificationType_NOTIF_COMMENT NotificationType = 2
	NotificationType_NOTIF_LIKE    NotificationType = 3
	NotificationType_NOTIF_FOLLOW  NotificationType = 4
	NotificationType_NOTIF_SOCIAL  NotificationType = 5
	NotificationType_NOTIF_SYSTEM  NotificationType = 6
)

// Enum value maps for NotificationType.
var (
	NotificationType_name = map[int32]string{
		0: "NOTIF_UNKNOWN",
		1: "NOTIF_MESSAGE",
		2: "NOTIF_COMMENT",
		3: "NOTIF_LIKE",
		4: "NOTIF_FOLLOW",
		5: "NOTIF_SOCIAL",
		6: "NOTIF_SYSTEM",
	}
	NotificationType_value = map[string]int32{
		"NOTIF_UNKNOWN": 0,
		"NOTIF_MESSAGE": 1,
		"NOTIF_COMMENT": 2,
		"NOTIF_LIKE":    3,
		"NOTIF_FOLLOW":  4,
		"NOTIF_SOCIAL":  5,
		"NOTIF_SYSTEM":  6,
	}
)

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

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

func (NotificationType) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[5].Descriptor()
}

func (NotificationType) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[5]
}

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

// Deprecated: Use NotificationType.Descriptor instead.
func (NotificationType) EnumDescriptor() ([]byte, []int) {
	return file_user_proto_rawDescGZIP(), []int{5}
}

type SystemPriority int32

const (
	SystemPriority_PRIORITY_UNKNOWN  SystemPriority = 0
	SystemPriority_PRIORITY_LOW      SystemPriority = 1
	SystemPriority_PRIORITY_MEDIUM   SystemPriority = 2
	SystemPriority_PRIORITY_HIGH     SystemPriority = 3
	SystemPriority_PRIORITY_CRITICAL SystemPriority = 4
)

// Enum value maps for SystemPriority.
var (
	SystemPriority_name = map[int32]string{
		0: "PRIORITY_UNKNOWN",
		1: "PRIORITY_LOW",
		2: "PRIORITY_MEDIUM",
		3: "PRIORITY_HIGH",
		4: "PRIORITY_CRITICAL",
	}
	SystemPriority_value = map[string]int32{
		"PRIORITY_UNKNOWN":  0,
		"PRIORITY_LOW":      1,
		"PRIORITY_MEDIUM":   2,
		"PRIORITY_HIGH":     3,
		"PRIORITY_CRITICAL": 4,
	}
)

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

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

func (SystemPriority) Descriptor() protoreflect.EnumDescriptor {
	return file_user_proto_enumTypes[6].Descriptor()
}

func (SystemPriority) Type() protoreflect.EnumType {
	return &file_user_proto_enumTypes[6]
}

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

// Deprecated: Use SystemPriority.Descriptor instead.
func (SystemPriority) EnumDescriptor() ([]byte, []int) {
	return file_user_proto_rawDescGZIP(), []int{6}
}

// Comprehensive User message demonstrating all protobuf features
type User struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Id       int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name     string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Active   bool                   `protobuf:"varint,4,opt,name=active,proto3" json:"active,omitempty"`
	Status   UserStatus             `protobuf:"varint,5,opt,name=status,proto3,enum=benchmark.UserStatus" json:"status,omitempty"`
	UserType UserType               `protobuf:"varint,6,opt,name=user_type,json=userType,proto3,enum=benchmark.UserType" json:"user_type,omitempty"`
	// oneof contact_method - demonstrates union types
	//
	// Types that are valid to be assigned to ContactMethod:
	//
	//	*User_Email
	//	*User_Phone
	//	*User_SocialMedia
	ContactMethod isUser_ContactMethod `protobuf_oneof:"contact_method"`
	// Nested Address message with deeply nested Coordinates
	Address *Address `protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
	// Multiple map types demonstrating different key/value combinations
	Metadata    map[string]string       `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`         // map<string, string>
	Statistics  map[string]int64        `protobuf:"bytes,9,rep,name=statistics,proto3" json:"statistics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`    // map<string, int64>
	Preferences map[int32]string        `protobuf:"bytes,13,rep,name=preferences,proto3" json:"preferences,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // map<int32, string>
	Profiles    map[string]*UserProfile `protobuf:"bytes,14,rep,name=profiles,proto3" json:"profiles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`        // map<string, UserProfile>
	// Repeated nested notifications with oneof data
	Notifications []*Notification `protobuf:"bytes,15,rep,name=notifications,proto3" json:"notifications,omitempty"`
	// Complex Posts with comprehensive features
	Posts         []*Post `protobuf:"bytes,16,rep,name=posts,proto3" json:"posts,omitempty"`
	CreatedAt     int64   `protobuf:"varint,17,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*User) ProtoMessage() {}

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

func (x *User) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

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

func (x *User) GetActive() bool {
	if x != nil {
		return x.Active
	}
	return false
}

func (x *User) GetStatus() UserStatus {
	if x != nil {
		return x.Status
	}
	return UserStatus_USER_UNKNOWN
}

func (x *User) GetUserType() UserType {
	if x != nil {
		return x.UserType
	}
	return UserType_USER_TYPE_UNKNOWN
}

func (x *User) GetContactMethod() isUser_ContactMethod {
	if x != nil {
		return x.ContactMethod
	}
	return nil
}

func (x *User) GetEmail() string {
	if x != nil {
		if x, ok := x.ContactMethod.(*User_Email); ok {
			return x.Email
		}
	}
	return ""
}

func (x *User) GetPhone() string {
	if x != nil {
		if x, ok := x.ContactMethod.(*User_Phone); ok {
			return x.Phone
		}
	}
	return ""
}

func (x *User) GetSocialMedia() *SocialMedia {
	if x != nil {
		if x, ok := x.ContactMethod.(*User_SocialMedia); ok {
			return x.SocialMedia
		}
	}
	return nil
}

func (x *User) GetAddress() *Address {
	if x != nil {
		return x.Address
	}
	return nil
}

func (x *User) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *User) GetStatistics() map[string]int64 {
	if x != nil {
		return x.Statistics
	}
	return nil
}

func (x *User) GetPreferences() map[int32]string {
	if x != nil {
		return x.Preferences
	}
	return nil
}

func (x *User) GetProfiles() map[string]*UserProfile {
	if x != nil {
		return x.Profiles
	}
	return nil
}

func (x *User) GetNotifications() []*Notification {
	if x != nil {
		return x.Notifications
	}
	return nil
}

func (x *User) GetPosts() []*Post {
	if x != nil {
		return x.Posts
	}
	return nil
}

func (x *User) GetCreatedAt() int64 {
	if x != nil {
		return x.CreatedAt
	}
	return 0
}

type isUser_ContactMethod interface {
	isUser_ContactMethod()
}

type User_Email struct {
	Email string `protobuf:"bytes,10,opt,name=email,proto3,oneof"`
}

type User_Phone struct {
	Phone string `protobuf:"bytes,11,opt,name=phone,proto3,oneof"`
}

type User_SocialMedia struct {
	SocialMedia *SocialMedia `protobuf:"bytes,12,opt,name=social_media,json=socialMedia,proto3,oneof"`
}

func (*User_Email) isUser_ContactMethod() {}

func (*User_Phone) isUser_ContactMethod() {}

func (*User_SocialMedia) isUser_ContactMethod() {}

// Nested Address message with deep nesting
type Address struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	Street     string                 `protobuf:"bytes,1,opt,name=street,proto3" json:"street,omitempty"`
	City       string                 `protobuf:"bytes,2,opt,name=city,proto3" json:"city,omitempty"`
	State      string                 `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
	Country    string                 `protobuf:"bytes,4,opt,name=country,proto3" json:"country,omitempty"`
	PostalCode string                 `protobuf:"bytes,5,opt,name=postal_code,json=postalCode,proto3" json:"postal_code,omitempty"`
	Type       AddressType            `protobuf:"varint,6,opt,name=type,proto3,enum=benchmark.AddressType" json:"type,omitempty"`
	// Deeply nested Coordinates
	Coordinates   *Coordinates `protobuf:"bytes,7,opt,name=coordinates,proto3" json:"coordinates,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Address) ProtoMessage() {}

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

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

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

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

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

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

func (x *Address) GetType() AddressType {
	if x != nil {
		return x.Type
	}
	return AddressType_ADDRESS_UNKNOWN
}

func (x *Address) GetCoordinates() *Coordinates {
	if x != nil {
		return x.Coordinates
	}
	return nil
}

// Coordinates message (moved outside for better parsing)
type Coordinates struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Latitude      float64                `protobuf:"fixed64,1,opt,name=latitude,proto3" json:"latitude,omitempty"`
	Longitude     float64                `protobuf:"fixed64,2,opt,name=longitude,proto3" json:"longitude,omitempty"`
	System        CoordinateSystem       `protobuf:"varint,3,opt,name=system,proto3,enum=benchmark.CoordinateSystem" json:"system,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Coordinates) ProtoMessage() {}

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

func (x *Coordinates) GetLatitude() float64 {
	if x != nil {
		return x.Latitude
	}
	return 0
}

func (x *Coordinates) GetLongitude() float64 {
	if x != nil {
		return x.Longitude
	}
	return 0
}

func (x *Coordinates) GetSystem() CoordinateSystem {
	if x != nil {
		return x.System
	}
	return CoordinateSystem_COORD_UNKNOWN
}

// Social Media contact info
type SocialMedia struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Platform      string                 `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"`
	Username      string                 `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	ProfileUrl    string                 `protobuf:"bytes,3,opt,name=profile_url,json=profileUrl,proto3" json:"profile_url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SocialMedia) ProtoMessage() {}

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

func (x *SocialMedia) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *SocialMedia) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *SocialMedia) GetProfileUrl() string {
	if x != nil {
		return x.ProfileUrl
	}
	return ""
}

// User Profile for maps
type UserProfile struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DisplayName   string                 `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	Bio           string                 `protobuf:"bytes,2,opt,name=bio,proto3" json:"bio,omitempty"`
	AvatarUrl     string                 `protobuf:"bytes,3,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"`
	Visibility    ProfileVisibility      `protobuf:"varint,4,opt,name=visibility,proto3,enum=benchmark.ProfileVisibility" json:"visibility,omitempty"`
	Interests     []string               `protobuf:"bytes,5,rep,name=interests,proto3" json:"interests,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UserProfile) ProtoMessage() {}

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

func (x *UserProfile) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *UserProfile) GetBio() string {
	if x != nil {
		return x.Bio
	}
	return ""
}

func (x *UserProfile) GetAvatarUrl() string {
	if x != nil {
		return x.AvatarUrl
	}
	return ""
}

func (x *UserProfile) GetVisibility() ProfileVisibility {
	if x != nil {
		return x.Visibility
	}
	return ProfileVisibility_PROFILE_UNKNOWN
}

func (x *UserProfile) GetInterests() []string {
	if x != nil {
		return x.Interests
	}
	return nil
}

// Notification with oneof data
type Notification struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	Id        int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Title     string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
	Message   string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	Type      NotificationType       `protobuf:"varint,4,opt,name=type,proto3,enum=benchmark.NotificationType" json:"type,omitempty"`
	Timestamp int64                  `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	Read      bool                   `protobuf:"varint,6,opt,name=read,proto3" json:"read,omitempty"`
	// oneof notification_data
	//
	// Types that are valid to be assigned to NotificationData:
	//
	//	*Notification_UserData
	//	*Notification_SystemData
	//	*Notification_PostData
	NotificationData isNotification_NotificationData `protobuf_oneof:"notification_data"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*Notification) ProtoMessage() {}

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

func (x *Notification) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

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

func (x *Notification) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *Notification) GetType() NotificationType {
	if x != nil {
		return x.Type
	}
	return NotificationType_NOTIF_UNKNOWN
}

func (x *Notification) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *Notification) GetRead() bool {
	if x != nil {
		return x.Read
	}
	return false
}

func (x *Notification) GetNotificationData() isNotification_NotificationData {
	if x != nil {
		return x.NotificationData
	}
	return nil
}

func (x *Notification) GetUserData() *UserNotificationData {
	if x != nil {
		if x, ok := x.NotificationData.(*Notification_UserData); ok {
			return x.UserData
		}
	}
	return nil
}

func (x *Notification) GetSystemData() *SystemNotificationData {
	if x != nil {
		if x, ok := x.NotificationData.(*Notification_SystemData); ok {
			return x.SystemData
		}
	}
	return nil
}

func (x *Notification) GetPostData() *PostNotificationData {
	if x != nil {
		if x, ok := x.NotificationData.(*Notification_PostData); ok {
			return x.PostData
		}
	}
	return nil
}

type isNotification_NotificationData interface {
	isNotification_NotificationData()
}

type Notification_UserData struct {
	UserData *UserNotificationData `protobuf:"bytes,7,opt,name=user_data,json=userData,proto3,oneof"`
}

type Notification_SystemData struct {
	SystemData *SystemNotificationData `protobuf:"bytes,8,opt,name=system_data,json=systemData,proto3,oneof"`
}

type Notification_PostData struct {
	PostData *PostNotificationData `protobuf:"bytes,9,opt,name=post_data,json=postData,proto3,oneof"`
}

func (*Notification_UserData) isNotification_NotificationData() {}

func (*Notification_SystemData) isNotification_NotificationData() {}

func (*Notification_PostData) isNotification_NotificationData() {}

// Notification data types
type UserNotificationData struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	UserId        int32                  `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Username      string                 `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
	Action        string                 `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UserNotificationData) ProtoMessage() {}

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

func (x *UserNotificationData) GetUserId() int32 {
	if x != nil {
		return x.UserId
	}
	return 0
}

func (x *UserNotificationData) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *UserNotificationData) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

type SystemNotificationData struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	SystemMessage string                 `protobuf:"bytes,1,opt,name=system_message,json=systemMessage,proto3" json:"system_message,omitempty"`
	ActionUrl     string                 `protobuf:"bytes,2,opt,name=action_url,json=actionUrl,proto3" json:"action_url,omitempty"`
	Priority      SystemPriority         `protobuf:"varint,3,opt,name=priority,proto3,enum=benchmark.SystemPriority" json:"priority,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SystemNotificationData) ProtoMessage() {}

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

func (x *SystemNotificationData) GetSystemMessage() string {
	if x != nil {
		return x.SystemMessage
	}
	return ""
}

func (x *SystemNotificationData) GetActionUrl() string {
	if x != nil {
		return x.ActionUrl
	}
	return ""
}

func (x *SystemNotificationData) GetPriority() SystemPriority {
	if x != nil {
		return x.Priority
	}
	return SystemPriority_PRIORITY_UNKNOWN
}

type PostNotificationData struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PostId        int32                  `protobuf:"varint,1,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"`
	PostTitle     string                 `protobuf:"bytes,2,opt,name=post_title,json=postTitle,proto3" json:"post_title,omitempty"`
	Action        string                 `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*PostNotificationData) ProtoMessage() {}

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

func (x *PostNotificationData) GetPostId() int32 {
	if x != nil {
		return x.PostId
	}
	return 0
}

func (x *PostNotificationData) GetPostTitle() string {
	if x != nil {
		return x.PostTitle
	}
	return ""
}

func (x *PostNotificationData) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

var File_user_proto protoreflect.FileDescriptor

const file_user_proto_rawDesc = "" +
	"\n" +
	"\n" +
	"user.proto\x12\tbenchmark\x1a\n" +
	"post.proto\"\xe1\a\n" +
	"\x04User\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
	"\x06active\x18\x04 \x01(\bR\x06active\x12-\n" +
	"\x06status\x18\x05 \x01(\x0e2\x15.benchmark.UserStatusR\x06status\x120\n" +
	"\tuser_type\x18\x06 \x01(\x0e2\x13.benchmark.UserTypeR\buserType\x12\x16\n" +
	"\x05email\x18\n" +
	" \x01(\tH\x00R\x05email\x12\x16\n" +
	"\x05phone\x18\v \x01(\tH\x00R\x05phone\x12;\n" +
	"\fsocial_media\x18\f \x01(\v2\x16.benchmark.SocialMediaH\x00R\vsocialMedia\x12,\n" +
	"\aaddress\x18\a \x01(\v2\x12.benchmark.AddressR\aaddress\x129\n" +
	"\bmetadata\x18\b \x03(\v2\x1d.benchmark.User.MetadataEntryR\bmetadata\x12?\n" +
	"\n" +
	"statistics\x18\t \x03(\v2\x1f.benchmark.User.StatisticsEntryR\n" +
	"statistics\x12B\n" +
	"\vpreferences\x18\r \x03(\v2 .benchmark.User.PreferencesEntryR\vpreferences\x129\n" +
	"\bprofiles\x18\x0e \x03(\v2\x1d.benchmark.User.ProfilesEntryR\bprofiles\x12=\n" +
	"\rnotifications\x18\x0f \x03(\v2\x17.benchmark.NotificationR\rnotifications\x12%\n" +
	"\x05posts\x18\x10 \x03(\v2\x0f.benchmark.PostR\x05posts\x12\x1d\n" +
	"\n" +
	"created_at\x18\x11 \x01(\x03R\tcreatedAt\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a=\n" +
	"\x0fStatisticsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01\x1a>\n" +
	"\x10PreferencesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\x05R\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aS\n" +
	"\rProfilesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.benchmark.UserProfileR\x05value:\x028\x01B\x10\n" +
	"\x0econtact_method\"\xec\x01\n" +
	"\aAddress\x12\x16\n" +
	"\x06street\x18\x01 \x01(\tR\x06street\x12\x12\n" +
	"\x04city\x18\x02 \x01(\tR\x04city\x12\x14\n" +
	"\x05state\x18\x03 \x01(\tR\x05state\x12\x18\n" +
	"\acountry\x18\x04 \x01(\tR\acountry\x12\x1f\n" +
	"\vpostal_code\x18\x05 \x01(\tR\n" +
	"postalCode\x12*\n" +
	"\x04type\x18\x06 \x01(\x0e2\x16.benchmark.AddressTypeR\x04type\x128\n" +
	"\vcoordinates\x18\a \x01(\v2\x16.benchmark.CoordinatesR\vcoordinates\"|\n" +
	"\vCoordinates\x12\x1a\n" +
	"\blatitude\x18\x01 \x01(\x01R\blatitude\x12\x1c\n" +
	"\tlongitude\x18\x02 \x01(\x01R\tlongitude\x123\n" +
	"\x06system\x18\x03 \x01(\x0e2\x1b.benchmark.CoordinateSystemR\x06system\"f\n" +
	"\vSocialMedia\x12\x1a\n" +
	"\bplatform\x18\x01 \x01(\tR\bplatform\x12\x1a\n" +
	"\busername\x18\x02 \x01(\tR\busername\x12\x1f\n" +
	"\vprofile_url\x18\x03 \x01(\tR\n" +
	"profileUrl\"\xbd\x01\n" +
	"\vUserProfile\x12!\n" +
	"\fdisplay_name\x18\x01 \x01(\tR\vdisplayName\x12\x10\n" +
	"\x03bio\x18\x02 \x01(\tR\x03bio\x12\x1d\n" +
	"\n" +
	"avatar_url\x18\x03 \x01(\tR\tavatarUrl\x12<\n" +
	"\n" +
	"visibility\x18\x04 \x01(\x0e2\x1c.benchmark.ProfileVisibilityR\n" +
	"visibility\x12\x1c\n" +
	"\tinterests\x18\x05 \x03(\tR\tinterests\"\x8c\x03\n" +
	"\fNotification\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\x05R\x02id\x12\x14\n" +
	"\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x12/\n" +
	"\x04type\x18\x04 \x01(\x0e2\x1b.benchmark.NotificationTypeR\x04type\x12\x1c\n" +
	"\ttimestamp\x18\x05 \x01(\x03R\ttimestamp\x12\x12\n" +
	"\x04read\x18\x06 \x01(\bR\x04read\x12>\n" +
	"\tuser_data\x18\a \x01(\v2\x1f.benchmark.UserNotificationDataH\x00R\buserData\x12D\n" +
	"\vsystem_data\x18\b \x01(\v2!.benchmark.SystemNotificationDataH\x00R\n" +
	"systemData\x12>\n" +
	"\tpost_data\x18\t \x01(\v2\x1f.benchmark.PostNotificationDataH\x00R\bpostDataB\x13\n" +
	"\x11notification_data\"c\n" +
	"\x14UserNotificationData\x12\x17\n" +
	"\auser_id\x18\x01 \x01(\x05R\x06userId\x12\x1a\n" +
	"\busername\x18\x02 \x01(\tR\busername\x12\x16\n" +
	"\x06action\x18\x03 \x01(\tR\x06action\"\x95\x01\n" +
	"\x16SystemNotificationData\x12%\n" +
	"\x0esystem_message\x18\x01 \x01(\tR\rsystemMessage\x12\x1d\n" +
	"\n" +
	"action_url\x18\x02 \x01(\tR\tactionUrl\x125\n" +
	"\bpriority\x18\x03 \x01(\x0e2\x19.benchmark.SystemPriorityR\bpriority\"f\n" +
	"\x14PostNotificationData\x12\x17\n" +
	"\apost_id\x18\x01 \x01(\x05R\x06postId\x12\x1d\n" +
	"\n" +
	"post_title\x18\x02 \x01(\tR\tpostTitle\x12\x16\n" +
	"\x06action\x18\x03 \x01(\tR\x06action*h\n" +
	"\n" +
	"UserStatus\x12\x10\n" +
	"\fUSER_UNKNOWN\x10\x00\x12\x0f\n" +
	"\vUSER_ACTIVE\x10\x01\x12\x11\n" +
	"\rUSER_INACTIVE\x10\x02\x12\x12\n" +
	"\x0eUSER_SUSPENDED\x10\x03\x12\x10\n" +
	"\fUSER_DELETED\x10\x04*{\n" +
	"\bUserType\x12\x15\n" +
	"\x11USER_TYPE_UNKNOWN\x10\x00\x12\x15\n" +
	"\x11USER_TYPE_PREMIUM\x10\x01\x12\x13\n" +
	"\x0fUSER_TYPE_BASIC\x10\x02\x12\x13\n" +
	"\x0fUSER_TYPE_ADMIN\x10\x03\x12\x17\n" +
	"\x13USER_TYPE_MODERATOR\x10\x04*q\n" +
	"\vAddressType\x12\x13\n" +
	"\x0fADDRESS_UNKNOWN\x10\x00\x12\x10\n" +
	"\fADDRESS_HOME\x10\x01\x12\x10\n" +
	"\fADDRESS_WORK\x10\x02\x12\x13\n" +
	"\x0fADDRESS_BILLING\x10\x03\x12\x14\n" +
	"\x10ADDRESS_SHIPPING\x10\x04*Y\n" +
	"\x10CoordinateSystem\x12\x11\n" +
	"\rCOORD_UNKNOWN\x10\x00\x12\x0f\n" +
	"\vCOORD_WGS84\x10\x01\x12\r\n" +
	"\tCOORD_UTM\x10\x02\x12\x12\n" +
	"\x0eCOORD_MERCATOR\x10\x03*k\n" +
	"\x11ProfileVisibility\x12\x13\n" +
	"\x0fPROFILE_UNKNOWN\x10\x00\x12\x12\n" +
	"\x0ePROFILE_PUBLIC\x10\x01\x12\x13\n" +
	"\x0fPROFILE_PRIVATE\x10\x02\x12\x18\n" +
	"\x14PROFILE_FRIENDS_ONLY\x10\x03*\x91\x01\n" +
	"\x10NotificationType\x12\x11\n" +
	"\rNOTIF_UNKNOWN\x10\x00\x12\x11\n" +
	"\rNOTIF_MESSAGE\x10\x01\x12\x11\n" +
	"\rNOTIF_COMMENT\x10\x02\x12\x0e\n" +
	"\n" +
	"NOTIF_LIKE\x10\x03\x12\x10\n" +
	"\fNOTIF_FOLLOW\x10\x04\x12\x10\n" +
	"\fNOTIF_SOCIAL\x10\x05\x12\x10\n" +
	"\fNOTIF_SYSTEM\x10\x06*w\n" +
	"\x0eSystemPriority\x12\x14\n" +
	"\x10PRIORITY_UNKNOWN\x10\x00\x12\x10\n" +
	"\fPRIORITY_LOW\x10\x01\x12\x13\n" +
	"\x0fPRIORITY_MEDIUM\x10\x02\x12\x11\n" +
	"\rPRIORITY_HIGH\x10\x03\x12\x15\n" +
	"\x11PRIORITY_CRITICAL\x10\x04B6Z4github.com/anirudhraja/protolite/benchmark/generatedb\x06proto3"

var (
	file_user_proto_rawDescOnce sync.Once
	file_user_proto_rawDescData []byte
)

func file_user_proto_rawDescGZIP() []byte {
	file_user_proto_rawDescOnce.Do(func() {
		file_user_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_user_proto_rawDesc), len(file_user_proto_rawDesc)))
	})
	return file_user_proto_rawDescData
}

var file_user_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_user_proto_goTypes = []any{
	(UserStatus)(0),                // 0: benchmark.UserStatus
	(UserType)(0),                  // 1: benchmark.UserType
	(AddressType)(0),               // 2: benchmark.AddressType
	(CoordinateSystem)(0),          // 3: benchmark.CoordinateSystem
	(ProfileVisibility)(0),         // 4: benchmark.ProfileVisibility
	(NotificationType)(0),          // 5: benchmark.NotificationType
	(SystemPriority)(0),            // 6: benchmark.SystemPriority
	(*User)(nil),                   // 7: benchmark.User
	(*Address)(nil),                // 8: benchmark.Address
	(*Coordinates)(nil),            // 9: benchmark.Coordinates
	(*SocialMedia)(nil),            // 10: benchmark.SocialMedia
	(*UserProfile)(nil),            // 11: benchmark.UserProfile
	(*Notification)(nil),           // 12: benchmark.Notification
	(*UserNotificationData)(nil),   // 13: benchmark.UserNotificationData
	(*SystemNotificationData)(nil), // 14: benchmark.SystemNotificationData
	(*PostNotificationData)(nil),   // 15: benchmark.PostNotificationData
	nil,                            // 16: benchmark.User.MetadataEntry
	nil,                            // 17: benchmark.User.StatisticsEntry
	nil,                            // 18: benchmark.User.PreferencesEntry
	nil,                            // 19: benchmark.User.ProfilesEntry
	(*Post)(nil),                   // 20: benchmark.Post
}
var file_user_proto_depIdxs = []int32{
	0,  // 0: benchmark.User.status:type_name -> benchmark.UserStatus
	1,  // 1: benchmark.User.user_type:type_name -> benchmark.UserType
	10, // 2: benchmark.User.social_media:type_name -> benchmark.SocialMedia
	8,  // 3: benchmark.User.address:type_name -> benchmark.Address
	16, // 4: benchmark.User.metadata:type_name -> benchmark.User.MetadataEntry
	17, // 5: benchmark.User.statistics:type_name -> benchmark.User.StatisticsEntry
	18, // 6: benchmark.User.preferences:type_name -> benchmark.User.PreferencesEntry
	19, // 7: benchmark.User.profiles:type_name -> benchmark.User.ProfilesEntry
	12, // 8: benchmark.User.notifications:type_name -> benchmark.Notification
	20, // 9: benchmark.User.posts:type_name -> benchmark.Post
	2,  // 10: benchmark.Address.type:type_name -> benchmark.AddressType
	9,  // 11: benchmark.Address.coordinates:type_name -> benchmark.Coordinates
	3,  // 12: benchmark.Coordinates.system:type_name -> benchmark.CoordinateSystem
	4,  // 13: benchmark.UserProfile.visibility:type_name -> benchmark.ProfileVisibility
	5,  // 14: benchmark.Notification.type:type_name -> benchmark.NotificationType
	13, // 15: benchmark.Notification.user_data:type_name -> benchmark.UserNotificationData
	14, // 16: benchmark.Notification.system_data:type_name -> benchmark.SystemNotificationData
	15, // 17: benchmark.Notification.post_data:type_name -> benchmark.PostNotificationData
	6,  // 18: benchmark.SystemNotificationData.priority:type_name -> benchmark.SystemPriority
	11, // 19: benchmark.User.ProfilesEntry.value:type_name -> benchmark.UserProfile
	20, // [20:20] is the sub-list for method output_type
	20, // [20:20] is the sub-list for method input_type
	20, // [20:20] is the sub-list for extension type_name
	20, // [20:20] is the sub-list for extension extendee
	0,  // [0:20] is the sub-list for field type_name
}

func init() { file_user_proto_init() }
func file_user_proto_init() {
	if File_user_proto != nil {
		return
	}
	file_post_proto_init()
	file_user_proto_msgTypes[0].OneofWrappers = []any{
		(*User_Email)(nil),
		(*User_Phone)(nil),
		(*User_SocialMedia)(nil),
	}
	file_user_proto_msgTypes[5].OneofWrappers = []any{
		(*Notification_UserData)(nil),
		(*Notification_SystemData)(nil),
		(*Notification_PostData)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_user_proto_rawDesc), len(file_user_proto_rawDesc)),
			NumEnums:      7,
			NumMessages:   13,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_user_proto_goTypes,
		DependencyIndexes: file_user_proto_depIdxs,
		EnumInfos:         file_user_proto_enumTypes,
		MessageInfos:      file_user_proto_msgTypes,
	}.Build()
	File_user_proto = out.File
	file_user_proto_goTypes = nil
	file_user_proto_depIdxs = nil
}
