package ledger

// HostSalarySettlementBatchCommand 是 cron 或测试触发结算批处理的最小输入。
type HostSalarySettlementBatchCommand struct {
	AppCode        string
	RunID          string
	WorkerID       string
	BatchSize      int
	SettlementType string
	// TriggerMode 只决定本次入账动作读取 automatic 还是 manual 政策；待结算账单展示可以同时读取两类政策。
	TriggerMode string
	// SettlementRole 为空或 all 时完整结算主播和代理权益；后台人工入口传 host/agency 时只推进对应身份钱包。
	SettlementRole string
	CycleKey       string
	// UserIDs 为空时扫描全量候选；后台人工批量结算会传入勾选主播，防止跨区域或跨周期误结算。
	UserIDs []int64
	NowMs   int64
}

// HostSalarySettlementBatchResult 汇总一个结算批次的扫描和入账结果。
type HostSalarySettlementBatchResult struct {
	ClaimedCount   int
	ProcessedCount int
	SuccessCount   int
	FailureCount   int
	HasMore        bool
}

// HostSalaryPolicy 是 wallet-service 结算读取的后台政策运行快照。
type HostSalaryPolicy struct {
	PolicyID                 uint64
	Name                     string
	RegionID                 int64
	Status                   string
	SettlementMode           string
	SettlementTriggerMode    string
	GiftCoinToDiamondRatio   string
	ResidualDiamondToUSDRate string
	EffectiveFromMs          int64
	EffectiveToMs            int64
	Levels                   []HostSalaryPolicyLevel
}

// HostSalaryPolicyLevel 使用累计值表达工资和奖励，结算时只发放“当前累计 - 已发累计”的差额。
type HostSalaryPolicyLevel struct {
	LevelNo              int
	RequiredDiamonds     int64
	HostSalaryUSDMinor   int64
	HostCoinReward       int64
	AgencySalaryUSDMinor int64
	Status               string
	SortOrder            int
}

// HostSalaryProgress 是主播当前工资周期的钻石累计投影，用于 H5 按工资政策计算距离下一等级的差值。
type HostSalaryProgress struct {
	HostUserID        int64
	CycleKey          string
	RegionID          int64
	AgencyOwnerUserID int64
	TotalDiamonds     int64
	GiftDiamondTotal  int64
	UpdatedAtMS       int64
}
