package model

import "time"

// TownPausePersisted mirrors HeroMovement fields needed to resume resting, an in-town NPC tour,
// or a mid-adventure excursion after reconnect or during offline catch-up.
// Stored in heroes.town_pause (JSONB).
type TownPausePersisted struct {
	RestUntil             *time.Time `json:"restUntil,omitempty"`
	RestKind              RestKind   `json:"restKind,omitempty"`
	TownRestHealRemainder float64    `json:"townRestHealRemainder,omitempty"`
	RestHealRemainder     float64    `json:"restHealRemainder,omitempty"`

	NPCQueue             []int64    `json:"npcQueue,omitempty"`
	NextTownNPCRollAt    *time.Time `json:"nextTownNPCRollAt,omitempty"`
	TownLeaveAt          *time.Time `json:"townLeaveAt,omitempty"`
	TownVisitNPCName     string     `json:"townVisitNPCName,omitempty"`
	TownVisitNPCType     string     `json:"townVisitNPCType,omitempty"`
	TownVisitStartedAt   *time.Time `json:"townVisitStartedAt,omitempty"`
	TownVisitLogsEmitted int        `json:"townVisitLogsEmitted,omitempty"`

	// Excursion (mini-adventure) session persisted for reconnect / offline resume.
	Excursion *ExcursionPersisted `json:"excursion,omitempty"`
}
