import type { UiMessage } from "@/data/dto/chat";

export type ChatUpgradeReason = "weekly_limit" | "insufficient_credits";

export interface ChatState {
  messages: UiMessage[];
  isReplyingAI: boolean;
  pendingReplyCount: number;
  upgradePromptVisible: boolean;
  upgradeReason: ChatUpgradeReason | null;
  canSendMessage: boolean;
  cannotSendReason: string | null;
  creditBalance: number;
  creditsCharged: number;
  requiredCredits: number;
  shortfallCredits: number;
  isLoadingMore: boolean;
  hasMore: boolean;
  historyOffset: number;
  /** history 加载完成标志（initial load —— local → network → save 跑完）
   * - guestSession.initializing / user sessions initializing 走 always barrier
   * - 不被 `loadMoreHistoryActor` 设置（翻页是另一码事）
   */
  historyLoaded: boolean;
  paymentUnlockPending: boolean;
  unlockHistoryPromptVisible: boolean;
  lockedHistoryCount: number;
  isUnlockingHistory: boolean;
  unlockHistoryError: string | null;
}

export const initialState: ChatState = {
  messages: [],
  isReplyingAI: false,
  pendingReplyCount: 0,
  upgradePromptVisible: false,
  upgradeReason: null,
  canSendMessage: true,
  cannotSendReason: null,
  creditBalance: 0,
  creditsCharged: 0,
  requiredCredits: 0,
  shortfallCredits: 0,
  isLoadingMore: false,
  hasMore: true,
  historyOffset: 0,
  historyLoaded: false,
  paymentUnlockPending: false,
  unlockHistoryPromptVisible: false,
  lockedHistoryCount: 0,
  isUnlockingHistory: false,
  unlockHistoryError: null,
};
