import * as VScript from "http://172.16.0.12/bladerunner_sdk/vscript@2.5.2/deno/release/mod.ts";
import * as VAPI from "./mod.ts";
export const lift = {
  CompileInfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new CompileInfo(_raw),
  Device: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new Device(_raw),
  DeviceInfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DeviceInfo(_raw),
  ECC: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new ECC(_raw),
  FanSpeed: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new FanSpeed(_raw),
  IS04: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new IS04(_raw),
  NeighborhoodWatch: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new NeighborhoodWatch(_raw),
  PCBInfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new PCBInfo(_raw),
  PSU: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new PSU(_raw),
  QSFP: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new QSFP(_raw),
  Revision: (_raw: [number, number], _socket: VScript.VSocket): Revision => {
    return {
      major: _raw[0],
      minor: _raw[1],
    };
  },
  SPD: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new SPD(_raw),
  SWVersion: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new SWVersion(_raw),
  SlotInformation: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new SlotInformation(_raw),
  AllCommandLogging: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllCommandLogging(_raw),
  AllEcc: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllEcc(_raw),
  QSFPEqSupport: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new QSFPEqSupport(_raw),
  AllIoBoardInfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllIoBoardInfo(_raw),
  AllIoBoard: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllIoBoard(_raw),
  SlotInformationIpAddresses: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new SlotInformationIpAddresses(_raw),
  AllNmos: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllNmos(_raw),
  QSFPRxPower: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new QSFPRxPower(_raw),
  AllServices: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllServices(_raw),
  AllUsrinfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new AllUsrinfo(_raw),
} as const;
export const lower = {
  CompileInfo: (_x: CompileInfo) => _x.raw.kwl,
  Device: (_x: Device) => _x.raw.kwl,
  DeviceInfo: (_x: DeviceInfo) => _x.raw.kwl,
  ECC: (_x: ECC) => _x.raw.kwl,
  FanSpeed: (_x: FanSpeed) => _x.raw.kwl,
  IS04: (_x: IS04) => _x.raw.kwl,
  NeighborhoodWatch: (_x: NeighborhoodWatch) => _x.raw.kwl,
  PCBInfo: (_x: PCBInfo) => _x.raw.kwl,
  PSU: (_x: PSU) => _x.raw.kwl,
  QSFP: (_x: QSFP) => _x.raw.kwl,
  Revision: (
    _x: { major: number; minor: number },
    _socket: VScript.VSocket,
  ): [number, number] => [_x.major, _x.minor],
  SPD: (_x: SPD) => _x.raw.kwl,
  SWVersion: (_x: SWVersion) => _x.raw.kwl,
  SlotInformation: (_x: SlotInformation) => _x.raw.kwl,
  AllCommandLogging: (_x: AllCommandLogging) => _x.raw.kwl,
  AllEcc: (_x: AllEcc) => _x.raw.kwl,
  QSFPEqSupport: (_x: QSFPEqSupport) => _x.raw.kwl,
  AllIoBoardInfo: (_x: AllIoBoardInfo) => _x.raw.kwl,
  AllIoBoard: (_x: AllIoBoard) => _x.raw.kwl,
  SlotInformationIpAddresses: (_x: SlotInformationIpAddresses) => _x.raw.kwl,
  AllNmos: (_x: AllNmos) => _x.raw.kwl,
  QSFPRxPower: (_x: QSFPRxPower) => _x.raw.kwl,
  AllServices: (_x: AllServices) => _x.raw.kwl,
  AllUsrinfo: (_x: AllUsrinfo) => _x.raw.kwl,
} as const;
export type BOARDPOS =
  | "BOTTOM_LEFT"
  | "BOTTOM_RIGHT"
  | "MID_LEFT"
  | "MID_CENTER"
  | "MID_RIGHT"
  | "TOP_LEFT"
  | "TOP_CENTER"
  | "TOP_RIGHT"
  | "UNKNOWN";
export class CompileInfo
  implements VScript.Referenceable<"System::Data::CompileInfo">
{
  readonly type_identifier = "System::Data::CompileInfo" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get hg(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.CompileInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.CompileInfo
    >(this, "hg" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get user(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.CompileInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.CompileInfo
    >(this, "user" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get time(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.CompileInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.CompileInfo
    >(this, "time" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get proj(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.CompileInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.CompileInfo
    >(this, "proj" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class Device implements VScript.Referenceable<"System::Data::Device"> {
  readonly type_identifier = "System::Data::Device" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get info() {
    return VAPI.System.lift.DeviceInfo(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "info"),
    );
  }
  get pcb() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "System::Data::PCBInfo",
      VAPI.System.PCBInfo
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 1, "pcb"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.System.lift.PCBInfo(raw),
    );
  }
}
export class DeviceInfo
  implements VScript.Referenceable<"System::Data::DeviceInfo">
{
  readonly type_identifier = "System::Data::DeviceInfo" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get type(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.DeviceInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.DeviceInfo
    >(this, "type" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get revision(): VScript.rKeyword<
    VScript.VSocket,
    null | [number, number],
    null | VAPI.System.Revision,
    VAPI.System.DeviceInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | [number, number],
      null | VAPI.System.Revision,
      VAPI.System.DeviceInfo
    >(this, "revision" as VScript.SysName, {
      lift: VScript.VAPIHelpers.liftOrLowerNullable(VAPI.System.lift.Revision),
      lower: VScript.VAPIHelpers.liftOrLowerNullable(
        VAPI.System.lower.Revision,
      ),
    });
  }
  get serial(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.DeviceInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.DeviceInfo
    >(this, "serial" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class ECC implements VScript.Referenceable<"System::Data::ECC"> {
  readonly type_identifier = "System::Data::ECC" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    Corrected errors
  */
  get ce_count(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned32,
    VAPI.System.ECC
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned32,
      VAPI.System.ECC
    >(this, "ce_count" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Uncorrected errors
  */
  get ue_count(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned32,
    VAPI.System.ECC
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned32,
      VAPI.System.ECC
    >(this, "ue_count" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class FanSpeed
  implements VScript.Referenceable<"System::Data::FanSpeed">
{
  readonly type_identifier = "System::Data::FanSpeed" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get id(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.FanSpeed
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.FanSpeed
    >(this, "id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get speed(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.FanSpeed
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.FanSpeed
    >(this, "speed" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get issues(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.System.FanSpeedIssues,
    VAPI.System.FanSpeed
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.System.FanSpeedIssues,
      VAPI.System.FanSpeed
    >(this, "issues" as VScript.SysName, {
      lift: (x: number, _: VScript.VSocket): VAPI.System.FanSpeedIssues => ({
        critically_low_fan_speed: (x & 1) !== 0,
        low_fan_speed: (x & 2) !== 0,
      }),
      lower: (x: VAPI.System.FanSpeedIssues, _: VScript.VSocket): number =>
        (x.critically_low_fan_speed ? 1 : 0) | (x.low_fan_speed ? 2 : 0),
    });
  }
}
/**
  The following IO modules can currently be used with the
  C100/AT300:
  
  `IO_BNC_10_10`: 10× BNC in, 10× BNC out (up to 3G); 12G supported on
  bottom row.
  
  `IO_BNC_18_2`: 9× BNC in (up to 12G), 9× BNC in (up to 3G), 1× BNC out
  (up to 12G), 1× BNC out (up to 3G), analog video ref in +
  loop-through.
  
  `IO_BNC_11_11`: 11× BNC in (up to 12G), 11× BNC out (up to
  12G).
  
  `IO_BNC_11_11_GD32`: with GD32 microcontroller instead
  STM32.
  
  `IO_BNC_16_16`: 11× BNC in (up to 12G), 11× BNC out (up to 12G), 5× BNC
  in (up to 3G), 5× BNC out (up to 3G).
  
  `IO_BNC_16_16_GD32`: with GD32 microcontroller instead STM32.
  
  `IO_BNC_2_18`: 1× BNC in (up to 12G), 1× BNC in (up to 3G), 9× BNC out
  (up to 12G), 9× BNC out (up to 3G), analog video ref in +
  loop-through.
  
  `IO_BNC_2_2_16bidi`: 2× BNC in (up to 3G), 2× BNC out (up to 3G), 16×
  bidirectional BNC (up to 3G), analog video ref in +
  loop-through.
  
  `IO_BNC_16bidi`: 16× bidirectional BNC (up to 12G), analog ref in +
  loop-through.
  
  `IO_BNC_16bidi_GD32`: with GD32 microcontroller instead STM32.
  
  `IO_MSC_v2`: 10× bidirectional BNC (up to 12G), 2×3 analog video ref out,
  GPS antenna input, wordclock out, analog video ref in +
  loop-through.
  
  `IO_MSC_v2_GD32`: with GD32 microcontroller instead STM32.
*/
export type IOBoard =
  | "IO_BNC_10_10"
  | "IO_BNC_18_2"
  | "IO_BNC_11_11"
  | "IO_BNC_11_11_GD32"
  | "IO_BNC_16_16"
  | "IO_BNC_16_16_GD32"
  | "IO_BNC_2_18"
  | "IO_BNC_2_2_16bidi"
  | "IO_BNC_16bidi"
  | "IO_BNC_16bidi_GD32"
  | "IO_MSC_v1"
  | "IO_MSC_v2"
  | "IO_MSC_v2_GD32";
export class IS04 implements VScript.Referenceable<"System::Data::IS04"> {
  readonly type_identifier = "System::Data::IS04" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    To execute shell commands on this interface, you will first need to enter
    its hosting network namespace. E.g., if `network_namespace` reads
    `ns_eth0.2`, the following command lists its IP addresses: `ip netns exec
    ns_eth0.2 ip addr show`
  */
  get network_namespace(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.IS04
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.IS04
    >(this, "network_namespace" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get registry_connected(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.System.IS04
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.System.IS04
    >(this, "registry_connected" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get protocol(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.System.Protocol,
    VAPI.System.Protocol,
    VAPI.System.Protocol,
    VAPI.System.Protocol,
    VAPI.System.IS04
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.System.Protocol,
      VAPI.System.Protocol,
      VAPI.System.Protocol,
      VAPI.System.Protocol,
      VAPI.System.IS04
    >(
      this,
      "protocol" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    IP and Port of desired NMOS Registry
  */
  get registry_address(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.System.IS04
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.System.IS04
    >(
      this,
      "registry_address" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
export type LEDBRIGHTNESS = "FULL" | "MINIMUM";
export class NeighborhoodWatch
  implements VScript.Referenceable<"System::Data::NeighborhoodWatch">
{
  readonly type_identifier = "System::Data::NeighborhoodWatch" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get issues(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.System.NeighborhoodWatchIssues,
    VAPI.System.NeighborhoodWatch
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.System.NeighborhoodWatchIssues,
      VAPI.System.NeighborhoodWatch
    >(this, "issues" as VScript.SysName, {
      lift: (
        x: number,
        _: VScript.VSocket,
      ): VAPI.System.NeighborhoodWatchIssues => ({
        unknown_neighbor_address: (x & 1) !== 0,
      }),
      lower: (
        x: VAPI.System.NeighborhoodWatchIssues,
        _: VScript.VSocket,
      ): number => (x.unknown_neighbor_address ? 1 : 0),
    });
  }
  get connected(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.System.NeighborhoodWatch
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.System.NeighborhoodWatch
    >(this, "connected" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get neighbor_info(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.NeighborhoodWatch
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.NeighborhoodWatch
    >(this, "neighbor_info" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    if this is set to true, successfully parsed neighbor info lines will be
    filtered from the output
  */
  get filter_neighbor_info(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.NeighborhoodWatch
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.NeighborhoodWatch
    >(
      this,
      "filter_neighbor_info" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get output(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.NeighborhoodWatch
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.NeighborhoodWatch
    >(this, "output" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
/**
  IEEE company ID
*/
export type OUI = Array<VAPI.Primitives.Unsigned8>;
export class PCBInfo implements VScript.Referenceable<"System::Data::PCBInfo"> {
  readonly type_identifier = "System::Data::PCBInfo" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get type(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.PCBInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.PCBInfo
    >(this, "type" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get revision(): VScript.rKeyword<
    VScript.VSocket,
    null | [number, number],
    null | VAPI.System.Revision,
    VAPI.System.PCBInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | [number, number],
      null | VAPI.System.Revision,
      VAPI.System.PCBInfo
    >(this, "revision" as VScript.SysName, {
      lift: VScript.VAPIHelpers.liftOrLowerNullable(VAPI.System.lift.Revision),
      lower: VScript.VAPIHelpers.liftOrLowerNullable(
        VAPI.System.lower.Revision,
      ),
    });
  }
  get serial(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.PCBInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.PCBInfo
    >(this, "serial" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vendor(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.PCBInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.PCBInfo
    >(this, "vendor" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get date(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.PCBInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.PCBInfo
    >(this, "date" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type PCIESPEED = "UNKNOWN" | "GT_2_5" | "GT_5_0" | "GT_8_0";
export class PSU implements VScript.Referenceable<"System::Data::PSU"> {
  readonly type_identifier = "System::Data::PSU" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get vin(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "vin" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vin_min(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "vin_min" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get iin(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "iin" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vout(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "vout" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get iout(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "iout" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get temp1(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "temp1" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get temp2(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "temp2" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get temp_hotspot(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "temp_hotspot" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get on(): VScript.rKeyword<
    VScript.VSocket,
    null | boolean,
    null | boolean,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | boolean,
      null | boolean,
      VAPI.System.PSU
    >(this, "on" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get fanspeed(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "fanspeed" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get current_fanspeed_profile(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.PSU
    >(this, "current_fanspeed_profile" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get issues(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.System.PSUIssues,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.System.PSUIssues,
      VAPI.System.PSU
    >(this, "issues" as VScript.SysName, {
      lift: (x: number, _: VScript.VSocket): VAPI.System.PSUIssues => ({
        input_f_w: (x & 1) !== 0,
        input_uv_f: (x & 2) !== 0,
        iout_pout_f_w: (x & 4) !== 0,
        output_oc_f: (x & 8) !== 0,
        output_ov_f: (x & 16) !== 0,
        temperature_f_w: (x & 32) !== 0,
        vout_f_w: (x & 64) !== 0,
      }),
      lower: (x: VAPI.System.PSUIssues, _: VScript.VSocket): number =>
        (x.input_f_w ? 1 : 0) |
        (x.input_uv_f ? 2 : 0) |
        (x.iout_pout_f_w ? 4 : 0) |
        (x.output_oc_f ? 8 : 0) |
        (x.output_ov_f ? 16 : 0) |
        (x.temperature_f_w ? 32 : 0) |
        (x.vout_f_w ? 64 : 0),
    });
  }
  get fan_issues(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.System.PSUFanIssues,
    VAPI.System.PSU
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.System.PSUFanIssues,
      VAPI.System.PSU
    >(this, "fan_issues" as VScript.SysName, {
      lift: (x: number, _: VScript.VSocket): VAPI.System.PSUFanIssues => ({
        airflow_fault: (x & 1) !== 0,
        airflow_warning: (x & 2) !== 0,
        fan_fault: (x & 4) !== 0,
        fan_warning: (x & 8) !== 0,
      }),
      lower: (x: VAPI.System.PSUFanIssues, _: VScript.VSocket): number =>
        (x.airflow_fault ? 1 : 0) |
        (x.airflow_warning ? 2 : 0) |
        (x.fan_fault ? 4 : 0) |
        (x.fan_warning ? 8 : 0),
    });
  }
}
export class QSFP implements VScript.Referenceable<"System::Data::QSFP"> {
  readonly type_identifier = "System::Data::QSFP" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get vendor_name(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.QSFP
    >(this, "vendor_name" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IEEE company ID
  */
  get vendor_oui(): VScript.rKeyword<
    VScript.VSocket,
    Array<number>,
    VAPI.System.OUI,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      Array<number>,
      VAPI.System.OUI,
      VAPI.System.QSFP
    >(this, "vendor_oui" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vendor_pn(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.QSFP
    >(this, "vendor_pn" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vendor_rev(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.QSFP
    >(this, "vendor_rev" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get vendor_sn(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.QSFP
    >(this, "vendor_sn" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get date_code(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.QSFP
    >(this, "date_code" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get eq_support() {
    return VAPI.System.lift.QSFPEqSupport(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 6, "eq_support"),
    );
  }
  get temperature(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.QSFP
    >(this, "temperature" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get temp_error(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.System.QSFPError,
    null | VAPI.System.QSFPError,
    VAPI.System.QSFP
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.System.QSFPError,
      null | VAPI.System.QSFPError,
      VAPI.System.QSFP
    >(this, "temp_error" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get rx_power() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "System::Data::QSFP::RxPower",
      VAPI.System.QSFPRxPower
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(this.raw, 9, "rx_power"),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.System.lift.QSFPRxPower(st),
    );
  }
}
export type QSFPError =
  | "OK"
  | "LOW_WARNING"
  | "HIGH_WARNING"
  | "LOW_ALARM"
  | "HIGH_ALARM";
/**
  if RAM calibration failed and rebooting does not fix the issue, please
  contact customer support
*/
export type RAMCALIBRATION = "Successful" | "Unknown" | "Failed";
export interface Revision {
  major: number;
  minor: number;
}
export class SPD implements VScript.Referenceable<"System::Data::SPD"> {
  readonly type_identifier = "System::Data::SPD" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    ID code of the module manufacturer.
    
    0x2C80 = Micron
    
    0x5207 = Memphis
  */
  get module_manufacturer(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned16,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned16,
      VAPI.System.SPD
    >(this, "module_manufacturer" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    ID code of the DRAM chips manufacturer.
    
    0xAD80 = SK Hynix
    
    0xCE80 = Samsung
    
    0x2C80 = Micron
  */
  get dram_manufacturer(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned16,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned16,
      VAPI.System.SPD
    >(this, "dram_manufacturer" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get year(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.SPD
    >(this, "year" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get week(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.SPD
    >(this, "week" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get sn(): VScript.rKeyword<
    VScript.VSocket,
    Array<number>,
    Array<VAPI.Primitives.Unsigned8>,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      Array<number>,
      Array<VAPI.Primitives.Unsigned8>,
      VAPI.System.SPD
    >(this, "sn" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get pn(): VScript.rKeyword<VScript.VSocket, string, string, VAPI.System.SPD> {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.SPD
    >(this, "pn" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get revision(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned16,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned16,
      VAPI.System.SPD
    >(this, "revision" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get data_capacity(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | VAPI.Primitives.Unsigned64,
    VAPI.System.SPD
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | VAPI.Primitives.Unsigned64,
      VAPI.System.SPD
    >(this, "data_capacity" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class SWVersion
  implements VScript.Referenceable<"System::Data::SWVersion">
{
  readonly type_identifier = "System::Data::SWVersion" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get version(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.SWVersion
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.SWVersion
    >(this, "version" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get timestamp(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.SWVersion
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.SWVersion
    >(this, "timestamp" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class SlotInformation
  implements VScript.Referenceable<"System::Data::SlotInformation">
{
  readonly type_identifier = "System::Data::SlotInformation" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get location(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.System.BOARDPOS,
    VAPI.System.BOARDPOS,
    VAPI.System.SlotInformation
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.System.BOARDPOS,
      VAPI.System.BOARDPOS,
      VAPI.System.SlotInformation
    >(this, "location" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get version(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.SlotInformation
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.SlotInformation
    >(this, "version" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get temperature(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.System.SlotInformation
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.System.SlotInformation
    >(this, "temperature" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get model(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.Primitives.Model,
    null | VAPI.Primitives.Model,
    VAPI.System.SlotInformation
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.Primitives.Model,
      null | VAPI.Primitives.Model,
      VAPI.System.SlotInformation
    >(this, "model" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get ip_addresses() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "System::Data::SlotInformation::IpAddresses",
      VAPI.System.SlotInformationIpAddresses
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(
        this.raw,
        4,
        "ip_addresses",
      ),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.System.lift.SlotInformationIpAddresses(raw),
    );
  }
}
export class AllCommandLogging
  implements VScript.Referenceable<"System::Data::All::CommandLogging">
{
  readonly type_identifier = "System::Data::All::CommandLogging" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get log_commands_to_syslog(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllCommandLogging
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllCommandLogging
    >(
      this,
      "log_commands_to_syslog" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get include_sender_id(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllCommandLogging
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllCommandLogging
    >(
      this,
      "include_sender_id" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get include_data(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllCommandLogging
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllCommandLogging
    >(
      this,
      "include_data" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
export class AllEcc implements VScript.Referenceable<"System::Data::All::Ecc"> {
  readonly type_identifier = "System::Data::All::Ecc" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get cpu_internal() {
    return VAPI.System.lift.ECC(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "cpu_internal"),
    );
  }
  get cpu_memory() {
    return VAPI.System.lift.ECC(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 1, "cpu_memory"),
    );
  }
}
export class QSFPEqSupport
  implements VScript.Referenceable<"System::Data::QSFP::EqSupport">
{
  readonly type_identifier = "System::Data::QSFP::EqSupport" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get max_tx_equalization(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.QSFPEqSupport
    >(this, "max_tx_equalization" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get max_rx_output_emphasis(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.QSFPEqSupport
    >(this, "max_rx_output_emphasis" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get rx_output_emphasis_type(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.System.QSFPEqSupportRxOutputEmphasisType,
    null | VAPI.System.QSFPEqSupportRxOutputEmphasisType,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.System.QSFPEqSupportRxOutputEmphasisType,
      null | VAPI.System.QSFPEqSupportRxOutputEmphasisType,
      VAPI.System.QSFPEqSupport
    >(this, "rx_output_emphasis_type" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get rx_output_amplitude_support(): VScript.rKeyword<
    VScript.VSocket,
    null | Array<boolean>,
    null | Array<boolean>,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | Array<boolean>,
      null | Array<boolean>,
      VAPI.System.QSFPEqSupport
    >(this, "rx_output_amplitude_support" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get tx_input_equalizer_control(): VScript.rKeyword<
    VScript.VSocket,
    null | Array<number>,
    null | Array<number>,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | Array<number>,
      null | Array<number>,
      VAPI.System.QSFPEqSupport
    >(this, "tx_input_equalizer_control" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get tx_adaptive_equalization_control(): VScript.rKeyword<
    VScript.VSocket,
    null | Array<boolean>,
    null | Array<boolean>,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | Array<boolean>,
      null | Array<boolean>,
      VAPI.System.QSFPEqSupport
    >(this, "tx_adaptive_equalization_control" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get rx_output_emphasis_control(): VScript.rKeyword<
    VScript.VSocket,
    null | Array<number>,
    null | Array<number>,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | Array<number>,
      null | Array<number>,
      VAPI.System.QSFPEqSupport
    >(this, "rx_output_emphasis_control" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    0: 100mV - 400mV 1: 300mV - 600mV 2: 400mV - 800mV 3: 600mV - 1200mV
  */
  get rx_output_amplitude_control(): VScript.rKeyword<
    VScript.VSocket,
    null | Array<number>,
    null | Array<number>,
    VAPI.System.QSFPEqSupport
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | Array<number>,
      null | Array<number>,
      VAPI.System.QSFPEqSupport
    >(this, "rx_output_amplitude_control" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type PSUFanIssues = {
  airflow_fault: boolean;
  airflow_warning: boolean;
  fan_fault: boolean;
  fan_warning: boolean;
};
export class AllIoBoardInfo
  implements VScript.Referenceable<"System::Data::All::IoBoard::Info">
{
  readonly type_identifier = "System::Data::All::IoBoard::Info" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    The following IO modules can currently be used with the
    C100/AT300:
    
    `IO_BNC_10_10`: 10× BNC in, 10× BNC out (up to 3G); 12G supported on
    bottom row.
    
    `IO_BNC_18_2`: 9× BNC in (up to 12G), 9× BNC in (up to 3G), 1× BNC out
    (up to 12G), 1× BNC out (up to 3G), analog video ref in +
    loop-through.
    
    `IO_BNC_11_11`: 11× BNC in (up to 12G), 11× BNC out (up to
    12G).
    
    `IO_BNC_11_11_GD32`: with GD32 microcontroller instead
    STM32.
    
    `IO_BNC_16_16`: 11× BNC in (up to 12G), 11× BNC out (up to 12G), 5×
    BNC in (up to 3G), 5× BNC out (up to 3G).
    
    `IO_BNC_16_16_GD32`: with GD32 microcontroller instead
    STM32.
    
    `IO_BNC_2_18`: 1× BNC in (up to 12G), 1× BNC in (up to 3G), 9× BNC out
    (up to 12G), 9× BNC out (up to 3G), analog video ref in +
    loop-through.
    
    `IO_BNC_2_2_16bidi`: 2× BNC in (up to 3G), 2× BNC out (up to 3G), 16×
    bidirectional BNC (up to 3G), analog video ref in +
    loop-through.
    
    `IO_BNC_16bidi`: 16× bidirectional BNC (up to 12G), analog ref in +
    loop-through.
    
    `IO_BNC_16bidi_GD32`: with GD32 microcontroller instead
    STM32.
    
    `IO_MSC_v2`: 10× bidirectional BNC (up to 12G), 2×3 analog video ref
    out, GPS antenna input, wordclock out, analog video ref in +
    loop-through.
    
    `IO_MSC_v2_GD32`: with GD32 microcontroller instead STM32.
  */
  get type(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.System.IOBoard,
    null | VAPI.System.IOBoard,
    VAPI.System.AllIoBoardInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.System.IOBoard,
      null | VAPI.System.IOBoard,
      VAPI.System.AllIoBoardInfo
    >(this, "type" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get revision(): VScript.rKeyword<
    VScript.VSocket,
    null | [number, number],
    null | VAPI.System.Revision,
    VAPI.System.AllIoBoardInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | [number, number],
      null | VAPI.System.Revision,
      VAPI.System.AllIoBoardInfo
    >(this, "revision" as VScript.SysName, {
      lift: VScript.VAPIHelpers.liftOrLowerNullable(VAPI.System.lift.Revision),
      lower: VScript.VAPIHelpers.liftOrLowerNullable(
        VAPI.System.lower.Revision,
      ),
    });
  }
  get serial(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.System.AllIoBoardInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.System.AllIoBoardInfo
    >(this, "serial" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class AllIoBoard
  implements VScript.Referenceable<"System::Data::All::IoBoard">
{
  readonly type_identifier = "System::Data::All::IoBoard" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get info() {
    return VAPI.System.lift.AllIoBoardInfo(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "info"),
    );
  }
  get pcb() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "System::Data::PCBInfo",
      VAPI.System.PCBInfo
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 1, "pcb"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.System.lift.PCBInfo(raw),
    );
  }
}
export class SlotInformationIpAddresses
  implements VScript.Referenceable<"System::Data::SlotInformation::IpAddresses">
{
  readonly type_identifier =
    "System::Data::SlotInformation::IpAddresses" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get port(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.System.SlotInformationIpAddressesPort,
    null | VAPI.System.SlotInformationIpAddressesPort,
    VAPI.System.SlotInformationIpAddresses
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.System.SlotInformationIpAddressesPort,
      null | VAPI.System.SlotInformationIpAddressesPort,
      VAPI.System.SlotInformationIpAddresses
    >(this, "port" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.System.SlotInformationIpAddresses
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.System.SlotInformationIpAddresses
    >(this, "ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type FanSpeedIssues = {
  critically_low_fan_speed: boolean;
  low_fan_speed: boolean;
};
export type NeighborhoodWatchIssues = { unknown_neighbor_address: boolean };
export type PSUIssues = {
  input_f_w: boolean;
  input_uv_f: boolean;
  iout_pout_f_w: boolean;
  output_oc_f: boolean;
  output_ov_f: boolean;
  temperature_f_w: boolean;
  vout_f_w: boolean;
};
export class AllNmos
  implements VScript.Referenceable<"System::Data::All::Nmos">
{
  readonly type_identifier = "System::Data::All::Nmos" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    Write to config file
  */
  get write_config(): VScript.wKeyword<
    VScript.VSocket,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.System.AllNmos
  > {
    return new VScript.wKeyword<
      VScript.VSocket,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.System.AllNmos
    >(
      this,
      "write_config" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get enable(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllNmos
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllNmos
    >(
      this,
      "enable" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get log_requests(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllNmos
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllNmos
    >(
      this,
      "log_requests" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get is_04() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "System::Data::IS04",
      VAPI.System.IS04
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(this.raw, 3, "is_04"),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.System.lift.IS04(st),
    );
  }
}
export type SlotInformationIpAddressesPort =
  | "FRONT_MANAGEMENT"
  | "REAR_MANAGEMENT"
  | "PORT0"
  | "PORT1"
  | "PORT1_0"
  | "PORT1_1"
  | "PORT1_2"
  | "PORT1_3"
  | "PORT2"
  | "PORT2_0"
  | "PORT2_1"
  | "PORT2_2"
  | "PORT2_3";
export type Protocol = "http" | "https";
export type QSFPEqSupportRxOutputEmphasisType =
  | "PEAK_TO_PEAK"
  | "STEADY_STATE"
  | "AVERAGE"
  | "RESERVED";
export class QSFPRxPower
  implements VScript.Referenceable<"System::Data::QSFP::RxPower">
{
  readonly type_identifier = "System::Data::QSFP::RxPower" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get wattage(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.QSFPRxPower
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.QSFPRxPower
    >(this, "wattage" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get d_bm(): VScript.rKeyword<
    VScript.VSocket,
    null | number,
    null | number,
    VAPI.System.QSFPRxPower
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | number,
      null | number,
      VAPI.System.QSFPRxPower
    >(this, "d_bm" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get error(): VScript.rKeyword<
    VScript.VSocket,
    null | VAPI.System.QSFPError,
    null | VAPI.System.QSFPError,
    VAPI.System.QSFPRxPower
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | VAPI.System.QSFPError,
      null | VAPI.System.QSFPError,
      VAPI.System.QSFPRxPower
    >(this, "error" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class AllServices
  implements VScript.Referenceable<"System::Data::All::Services">
{
  readonly type_identifier = "System::Data::All::Services" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    Enables Avahi daemon (mDNS/DNS-SD)
  */
  get avahi(): VScript.dKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllServices
  > {
    return new VScript.dKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllServices
    >(
      this,
      "avahi" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    Enables SNMP daemon
  */
  get snmp(): VScript.dKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllServices
  > {
    return new VScript.dKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllServices
    >(
      this,
      "snmp" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    Enables vscriptd daemon
  */
  get vscriptd(): VScript.dKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.System.AllServices
  > {
    return new VScript.dKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.System.AllServices
    >(
      this,
      "vscriptd" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
export class AllUsrinfo
  implements VScript.Referenceable<"System::Data::All::Usrinfo">
{
  readonly type_identifier = "System::Data::All::Usrinfo" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    this should be a brief, human-readable description that will be displayed
    within the web UI
  */
  get short_desc(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.System.AllUsrinfo
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.System.AllUsrinfo
    >(
      this,
      "short_desc" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    this should be a detailed, human-readable description that will be
    displayed within the web UI
  */
  get long_desc(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.System.AllUsrinfo
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.System.AllUsrinfo
    >(
      this,
      "long_desc" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    enter a towel owner to mark this machine as reserved. Like a physical
    towel, this serves as a declaration of interest only and does not provide
    any protection against unauthorized access
  */
  get towel(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.System.AllUsrinfo
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.System.AllUsrinfo
    >(
      this,
      "towel" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }

  /**
    this is a transient status field that does not persist across machine
    restarts. It can be used to, e.g., signal a machine's current task within
    an automated testing environment
  */
  get cur_status(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.System.AllUsrinfo
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.System.AllUsrinfo
    >(
      this,
      "cur_status" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
export const Enums = {
  Protocol: ["http", "https"] as Protocol[],
  RAMCALIBRATION: ["Successful", "Unknown", "Failed"] as RAMCALIBRATION[],
  QSFPError: [
    "OK",
    "LOW_WARNING",
    "HIGH_WARNING",
    "LOW_ALARM",
    "HIGH_ALARM",
  ] as QSFPError[],
  PCIESPEED: ["UNKNOWN", "GT_2_5", "GT_5_0", "GT_8_0"] as PCIESPEED[],
  LEDBRIGHTNESS: ["FULL", "MINIMUM"] as LEDBRIGHTNESS[],
  IOBoard: [
    "IO_BNC_10_10",
    "IO_BNC_18_2",
    "IO_BNC_11_11",
    "IO_BNC_11_11_GD32",
    "IO_BNC_16_16",
    "IO_BNC_16_16_GD32",
    "IO_BNC_2_18",
    "IO_BNC_2_2_16bidi",
    "IO_BNC_16bidi",
    "IO_BNC_16bidi_GD32",
    "IO_MSC_v1",
    "IO_MSC_v2",
    "IO_MSC_v2_GD32",
  ] as IOBoard[],
  BOARDPOS: [
    "BOTTOM_LEFT",
    "BOTTOM_RIGHT",
    "MID_LEFT",
    "MID_CENTER",
    "MID_RIGHT",
    "TOP_LEFT",
    "TOP_CENTER",
    "TOP_RIGHT",
    "UNKNOWN",
  ] as BOARDPOS[],
} as const;
