// Code generated by goctl. DO NOT EDIT.
// goctl 1.10.1

package types

type AcceptInvitationReq struct {
	Id int64 `path:"id"`
}

type AnnouncementReq struct {
	Id      int64  `path:"id"`
	Content string `json:"content"`
}

type CreateShopReq struct {
	Name            string `json:"name"`
	Description     string `json:"description"`
	CommissionType  string `json:"commissionType"`
	CommissionValue string `json:"commissionValue"`
}

type DeleteAnnouncementReq struct {
	Id    int64 `path:"id"`
	Index int64 `path:"index"`
}

type EmptyResp struct {
}

type IncomeStatsResp struct {
	MonthlyIncome     string `json:"monthlyIncome"`
	PendingSettlement string `json:"pendingSettlement"`
	TotalWithdrawn    string `json:"totalWithdrawn"`
	TotalOrders       int64  `json:"totalOrders"`
	CompletedOrders   int64  `json:"completedOrders"`
}

type InvitationReq struct {
	Id       int64 `path:"id"`
	PlayerId int64 `json:"playerId,string"`
}

type PageMeta struct {
	Total  int64 `json:"total"`
	Offset int64 `json:"offset"`
	Limit  int64 `json:"limit"`
}

type PageReq struct {
	Offset int64 `form:"offset,default=0"`
	Limit  int64 `form:"limit,default=20"`
}

type RemovePlayerReq struct {
	Id       int64 `path:"id"`
	PlayerId int64 `path:"playerId"`
}

type ShopIdReq struct {
	Id int64 `path:"id"`
}

type ShopInvitation struct {
	Id          int64  `json:"id,string"`
	ShopId      int64  `json:"shopId,string"`
	PlayerId    int64  `json:"playerId,string"`
	Status      string `json:"status"`
	InvitedBy   int64  `json:"invitedBy,string"`
	CreatedAt   int64  `json:"createdAt"`
	RespondedAt int64  `json:"respondedAt,optional"`
}

type ShopInvitationListResp struct {
	Items []ShopInvitation `json:"items"`
}

type ShopListResp struct {
	Items []ShopProfile `json:"items"`
	Meta  PageMeta      `json:"meta"`
}

type ShopProfile struct {
	Id                     string      `json:"id"`
	Owner                  UserProfile `json:"owner"`
	Name                   string      `json:"name"`
	Banner                 string      `json:"banner,optional"`
	Description            string      `json:"description"`
	Rating                 string      `json:"rating"`
	TotalOrders            int64       `json:"totalOrders"`
	PlayerCount            int64       `json:"playerCount"`
	CommissionType         string      `json:"commissionType"`
	CommissionValue        string      `json:"commissionValue"`
	AllowMultiShop         bool        `json:"allowMultiShop"`
	AllowIndependentOrders bool        `json:"allowIndependentOrders"`
	DispatchMode           string      `json:"dispatchMode"`
	Announcements          []string    `json:"announcements"`
	TemplateConfig         interface{} `json:"templateConfig"`
}

type SimpleUser struct {
	Id       string `json:"id"`
	Nickname string `json:"nickname"`
	Avatar   string `json:"avatar"`
}

type UpdateShopReq struct {
	Id                     int64  `path:"id"`
	Name                   string `json:"name,optional"`
	Description            string `json:"description,optional"`
	CommissionType         string `json:"commissionType,optional"`
	CommissionValue        string `json:"commissionValue,optional"`
	AllowMultiShop         bool   `json:"allowMultiShop,optional"`
	AllowIndependentOrders bool   `json:"allowIndependentOrders,optional"`
	DispatchMode           string `json:"dispatchMode,optional"`
}

type UpdateTemplateReq struct {
	Id       int64  `path:"id"`
	Sections string `json:"sections"`
}

type UserIdReq struct {
	Id int64 `path:"id"`
}

type UserProfile struct {
	Id                 string            `json:"id"`
	Username           string            `json:"username"`
	Nickname           string            `json:"nickname"`
	Avatar             string            `json:"avatar"`
	Role               string            `json:"role"` // consumer, player, owner, admin
	VerifiedRoles      []string          `json:"verifiedRoles"`
	VerificationStatus map[string]string `json:"verificationStatus"`
	Phone              string            `json:"phone,optional"`
	Bio                string            `json:"bio,optional"`
	CreatedAt          string            `json:"createdAt"`
}
