package ledger

// CPBreakupFeeCommand 是解除 CP/兄弟/姐妹关系时的专用金币扣费命令。
type CPBreakupFeeCommand struct {
	AppCode        string
	CommandID      string
	UserID         int64
	RelationshipID string
	RelationType   string
	Amount         int64
}

// CPBreakupFeeReceipt 返回解除关系扣费流水和 COIN 账后余额。
type CPBreakupFeeReceipt struct {
	TransactionID    string
	CoinSpent        int64
	CoinBalanceAfter int64
	Balance          AssetBalance
}

// WheelDrawDebitCommand 是转盘抽奖扣费命令；中奖和 RTP 不在钱包内决策，钱包只保留独立 reason 的 COIN 支出事实。
type WheelDrawDebitCommand struct {
	AppCode   string
	CommandID string
	UserID    int64
	WheelID   string
	DrawCount int32
	Amount    int64
}

// WheelDrawDebitReceipt 返回转盘抽奖扣费流水，activity-service 会用该流水作为抽奖已付费事实。
type WheelDrawDebitReceipt struct {
	TransactionID    string
	CoinSpent        int64
	CoinBalanceAfter int64
	Balance          AssetBalance
}

// TaskRewardCommand 是 activity-service 任务领奖的入账命令；Huwaa 新政策允许发 POINT，其他 App 默认 COIN。
type TaskRewardCommand struct {
	AppCode      string
	CommandID    string
	TargetUserID int64
	AssetType    string
	Amount       int64
	TaskType     string
	TaskID       string
	CycleKey     string
	Reason       string
}

// TaskRewardReceipt 是任务奖励入账后的稳定回执。
type TaskRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}

// LuckyGiftRewardCommand 是 activity-service 用抽奖 draw_id 发起的 COIN 入账命令。
type LuckyGiftRewardCommand struct {
	AppCode         string
	CommandID       string
	TargetUserID    int64
	Amount          int64
	DrawID          string
	RoomID          string
	VisibleRegionID int64
	CountryID       int64
	GiftID          string
	PoolID          string
	Reason          string
}

// LuckyGiftRewardReceipt 是幸运礼物返奖入账后的稳定回执。
type LuckyGiftRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}

// WheelRewardCommand 是 activity-service 用转盘 draw_id 发起的 COIN 入账命令。
type WheelRewardCommand struct {
	AppCode         string
	CommandID       string
	TargetUserID    int64
	Amount          int64
	DrawID          string
	WheelID         string
	SelectedTierID  string
	VisibleRegionID int64
	Reason          string
}

// WheelRewardReceipt 是转盘金币奖励入账后的稳定回执。
type WheelRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}

// RoomTurnoverRewardCommand 是 activity-service 每周房间流水奖励的 COIN 入账命令。
type RoomTurnoverRewardCommand struct {
	AppCode       string
	CommandID     string
	TargetUserID  int64
	Amount        int64
	SettlementID  string
	RoomID        string
	PeriodStartMS int64
	PeriodEndMS   int64
	CoinSpent     int64
	TierID        int64
	TierCode      string
	Reason        string
}

// RoomTurnoverRewardReceipt 是房间流水奖励入账后的稳定回执。
type RoomTurnoverRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}

// InviteActivityRewardCommand 是 activity-service 邀请活动领奖的 COIN 入账命令。
type InviteActivityRewardCommand struct {
	AppCode      string
	CommandID    string
	TargetUserID int64
	Amount       int64
	ClaimID      string
	RewardType   string
	TierID       int64
	TierCode     string
	CycleKey     string
	ReachedValue int64
	Reason       string
}

// InviteActivityRewardReceipt 是邀请活动奖励入账后的稳定回执。
type InviteActivityRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}

// AgencyOpeningRewardCommand 是 activity-service 代理开业流水档位奖励的 COIN 入账命令。
type AgencyOpeningRewardCommand struct {
	AppCode       string
	CommandID     string
	TargetUserID  int64
	Amount        int64
	ApplicationID string
	CycleID       string
	AgencyID      int64
	RankNo        int32
	ScoreCoins    int64
	Reason        string
}

// AgencyOpeningRewardReceipt 是代理开业流水档位奖励入账后的稳定回执。
type AgencyOpeningRewardReceipt struct {
	TransactionID string
	Balance       AssetBalance
	Amount        int64
	GrantedAtMS   int64
}
