export interface WASMDataPax {
  livePayload: LivePayloadPax;
  targetPayload: TargetPayloadPax;
  GSX: GSX;
  userData: UserData;
  limits: LimitsPax;
  options: Options;
}

export interface WASMDataF {
  livePayload: LivePayloadF;
  targetPayload: TargetPayloadF;
  GSX: GSX;
  userData: UserData;
  limits: LimitsF;
  options: Options;
}

interface TargetPayload {
  CGTarget: number;
  ZFWCG: number;
  TOCG: number;
  total: number;
}

interface TargetPayloadPax extends TargetPayload {
  empty: number;
  crew: number;
  business1: number;
  business2: number;
  economy1: number;
  economy2: number;
  forwardCargo: number;
  rearCargo: number;
}

interface LivePayloadPax extends TargetPayloadPax {
  fuel: number;
}

interface TargetPayloadF extends TargetPayload {
  empty: number;
  crew: number;
  upper1: number;
  upper2: number;
  upper3: number;
  upper4: number;
  lowerForward: number;
  lowerRear: number;
}

interface LivePayloadF extends TargetPayloadF {
  fuel: number;
}

interface GSX {
  boardingState: number;
  deboardingState: number;
}

interface Limits {
  minCG: number;
  maxCG: number;
  maxFuel: number;
  maxTOW: number;
  maxZFW: number;
  minZFW: number;
}

interface LimitsPax extends Limits {
  business1: number;
  business2: number;
  economy1: number;
  economy2: number;
  forwardCargo: number;
  rearCargo: number;
}

interface LimitsF extends Limits {
  upper1: number;
  upper2: number;
  upper3: number;
  upper4: number;
  lowerForward: number;
  lowerRear: number;
}

interface UserData {
  isCargo: boolean;
  isER: boolean;
  isImperial: boolean;
}

interface Options {
  GSXSync: boolean;
  paxWeight: number;
  bagWeight: number;
}
