export interface KarmaExperienceBookingType {
  BookingNo: number;
  BookingTypeID: number;
  event_code: string;
  event_name: string;
  event_location: string;
  City: string;
  Country: string;
  Arrival: string;
  Departure: string;
  Adults: number;
  Children: number;
  Infants: number;
  Cots: number;
  HighChair: number;
  Status: string;
}

interface KarmaEntitlementBase {
  Balance: number;
  ExpiryDate: string;
  ExpiryDateText: string;
  Status: string;
  Year: number;
}

interface PointDetails {
  PointsEntitlementID: number;
  PointsType: string;
  CustomTypeID: number;
  CustomType: string | null;
  EntitlementYear: number;
  EffectiveDate: string;
  ExpiryDate: string;
  IssuedDate: string;
  Status: string;
  Issued: number;
  Balance: number;
  Expired: number;
  ResortID: number;
}

export interface KarmaEntitlements {
  ContactID: string;
  AccountID: string;
  Contracts: [
    {
      ContractID: number;
      ExternalContractID: string;
      ExpiryDate: string; // ISO
      InventoryType: string;
      ResortID: number;
      ResortName: string;
      Status: string;
      FullAlternate: string;
      WeekTypeDesc: string;
      UnitTypeDesc: string | null;
      UnitTypeID: number;
    },
  ];
  Points: KarmaEntitlementBase[];
  Levied: KarmaEntitlementBase[];
  BonusPoints: KarmaEntitlementBase[];
  Weeks: [];
  Nights: [];
  MetricMap: {
    WEEKS: "Weeks";
    NIGHTS: "Nights";
    POINTS: "Points";
    POINTS_ELITE: "Elite Points";
  };
  EntitlementsTotalPoints: number;
  EntitlementsTotalLeviedPoints: number;
  EntitlementsTotalBonusPoints: number;
  EntitlementsTotalWeeks: number;
  EntitlementsTotalNights: number;
  EntitlementsDetailsPoints: PointDetails[];
  ManagmentChargeReleased: boolean;
}
