interface CatalogItemShortDto {
  id?: number;
  name: string;
  length: number;
  speed: number;
  minCost: number;
  mainImageUrl: string;
  galleryUrls: string[];
  hasQuickRent: boolean;
  isFeatured: boolean;
  topText?: string;
  isBestOffer?: boolean;
}

interface MainPageCatalogResponseDto {
  featuredYacht: CatalogItemShortDto;
  restYachts: CatalogItemShortDto[];
}

interface CatalogFilteredResponseDto {
  items: CatalogItemShortDto[];
  total: number;
}

interface Reservation {
  id: number;
  yachtId: number;
  reservatorId: number;
  startUtc: number;
  endUtc: number;
}

interface Review {
  id: number;
  reviewerId: number;
  yachtId: number;
  starsCount: number;
  description: string;
}

interface User {
  userId?: number;
  firstName?: string;
  lastName?: string;
  phone?: string;
  email?: string;
  password?: string;
  yachts?: Yacht[];
  companyName?: string;
  inn?: number;
  ogrn?: number;
}

interface CatalogItemLongDto extends CatalogItemShortDto {
  year: number;
  comfortCapacity: number;
  maxCapacity: number;
  width: number;
  cabinsCount: number;
  matherial: string;
  power: number;
  description: string;
  owner: User;
  reviews: Review[];
  reservations: Reservation[];
}

interface Yacht {
  yachtId: number;
  name: string;
  model: string;
  year: number;
  length: number;
  userId: number;
  createdAt: Date;
  updatedAt: Date;
}
