export type SceneType = "eat" | "drinks" | "dessert";

export interface Restaurant {
  id: string;
  name: string;
  rating: number;
  price: string;
  distance: string;
  images: string[];
  category: string;
  address: string;
  openTime: string;
  tel: string;
  tag: string;
  location: string;
}

export type SwipeDirection = "left" | "right";

export type MatchType = "unanimous" | "best" | "no_match" | null;

export interface RunnerUp {
  id: string;
  likes: number;
}

export interface RoomStatus {
  roomId: string;
  userCount: number;
  match: string | null;
  matchType: MatchType;
  matchLikes: number;
  runnerUps: RunnerUp[];
  likeCounts: Record<string, number>;
  swipeCounts: Record<string, number>;
  restaurants: Restaurant[];
  creatorId: string;
  locked: boolean;
  users: string[];
  userProfiles: Record<string, UserProfile>;
  scene: SceneType;
}

export interface UserProfile {
  id: string;
  username: string;
  avatar: string;
}

export interface UserPreferences {
  cuisine?: string;
  cuisines?: string[];
  priceRange?: string;
  radius?: number;
}

export interface DecisionRecord {
  id: string;
  roomId: string;
  restaurantName: string;
  restaurantData: Restaurant;
  matchType: string;
  participants: number;
  createdAt: string;
}

export interface FavoriteRecord {
  id: string;
  restaurantData: Restaurant;
  createdAt: string;
}

export type IdeaCategory =
  | "dining"
  | "outdoor"
  | "entertainment"
  | "shopping"
  | "sports"
  | "culture"
  | "relaxation";

export type IdeaTimeSlot =
  | "morning"
  | "afternoon"
  | "evening"
  | "flexible"
  | "all_day";

export type IdeaSearchType = "brand" | "place" | "category";

export interface IdeaTags {
  category: IdeaCategory;
  timeSlot: IdeaTimeSlot;
  estimatedMinutes: number;
  outdoor: boolean;
  searchQuery: string;
  searchType: IdeaSearchType;
}

export interface PlanItem {
  time: string;
  activity: string;
  poi: string;
  address: string;
  lat: number;
  lng: number;
  duration: number;
  reason: string;
}

export interface WeekendPlanData {
  date: string;
  items: PlanItem[];
  summary: string;
}

export interface ContractRecord {
  id: string;
  status: "completed" | "expired";
  roomName: string;
  roomCode: string;
  date: string;
  dayCount: number;
  activities: string[];
  createdAt: string;
}
