export interface LocationSummary {
  id: string;
  key: string;
  name: string;
}

export interface CharacterResponse {
  id: string;
  name: string;
  level: number;
  experience: number;
  currentHp: number;
  maxHp: number;
  attack: number;
  currentLocation: LocationSummary;
}

export interface CurrentLocationConnection {
  targetLocation: LocationSummary;
  travelDurationSeconds: number;
  danger: 'LOW' | 'HIGH';
}

export interface CurrentLocationResponse {
  id: string;
  key: string;
  name: string;
  description: string;
  regionKey: string;
  minRecommendedLevel: number;
  maxRecommendedLevel: number;
  dangerLevel: number;
  isSafe: boolean;
  huntingEnabled: boolean;
  artworkPath: string;
  connections: CurrentLocationConnection[];
}

export type CurrentTravel =
  | { status: 'IDLE' }
  | {
      status: 'TRAVELLING';
      originLocation: LocationSummary;
      targetLocation: LocationSummary;
      startedAt: string;
      arrivesAt: string;
    }
  | { status: 'COMPLETED'; targetLocation: LocationSummary };
