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 = {
  ClusterGlobalAddressesParameters: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalAddressesParameters(_raw),
  ClusterGlobalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalConfiguration(_raw),
  ClusterGlobalMasterRedundancyParameters: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalMasterRedundancyParameters(_raw),
  ClusterGlobalMiscParameters: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalMiscParameters(_raw),
  ClusterGlobalOffsetstParameters: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalOffsetstParameters(_raw),
  ClusterGlobalParameters: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterGlobalParameters(_raw),
  ClusterGlobalRoutingParameters: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterGlobalRoutingParameters(_raw),
  ClusterStatistics: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterStatistics(_raw),
} as const;
export const lower = {
  ClusterGlobalAddressesParameters: (_x: ClusterGlobalAddressesParameters) =>
    _x.raw.kwl,
  ClusterGlobalConfiguration: (_x: ClusterGlobalConfiguration) => _x.raw.kwl,
  ClusterGlobalMasterRedundancyParameters: (
    _x: ClusterGlobalMasterRedundancyParameters,
  ) => _x.raw.kwl,
  ClusterGlobalMiscParameters: (_x: ClusterGlobalMiscParameters) => _x.raw.kwl,
  ClusterGlobalOffsetstParameters: (_x: ClusterGlobalOffsetstParameters) =>
    _x.raw.kwl,
  ClusterGlobalParameters: (_x: ClusterGlobalParameters) => _x.raw.kwl,
  ClusterGlobalRoutingParameters: (_x: ClusterGlobalRoutingParameters) =>
    _x.raw.kwl,
  ClusterStatistics: (_x: ClusterStatistics) => _x.raw.kwl,
} as const;
export class ClusterGlobalAddressesParameters
  implements
    VScript.Referenceable<"Cluster::Data::ClusterGlobalAddressesParameters">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalAddressesParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    Cluster control multicast address
  */
  get ctrl_mcast_addr(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "ctrl_mcast_addr" 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,
    );
  }

  /**
    Cluster mipmaps streams first multicast address
  */
  get mipmaps_mcast_addr_first(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "mipmaps_mcast_addr_first" 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,
    );
  }

  /**
    Pattern how to generate multicast addresses.
  */
  get mipmaps_mcast_addr_inc(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "mipmaps_mcast_addr_inc" 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,
    );
  }

  /**
    Cluster heads streams first multicast address
  */
  get multiviewers_heads_addr_first(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "multiviewers_heads_addr_first" 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,
    );
  }

  /**
    Pattern how to generate multicast addresses.
  */
  get multiviewers_heads_addr_inc(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "multiviewers_heads_addr_inc" 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,
    );
  }

  /**
    Secondary Cluster mipmaps streams first multicast address
  */
  get secondary_mipmaps_mcast_addr_first(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "secondary_mipmaps_mcast_addr_first" 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,
    );
  }

  /**
    Pattern how to generate multicast addresses.
  */
  get secondary_mipmaps_mcast_addr_inc(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "secondary_mipmaps_mcast_addr_inc" 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,
    );
  }

  /**
    Secondary Cluster heads streams first multicast address
  */
  get secondary_multiviewers_heads_addr_first(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "secondary_multiviewers_heads_addr_first" 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,
    );
  }

  /**
    Pattern how to generate multicast addresses.
  */
  get secondary_multiviewers_heads_addr_inc(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.IPADDRESSINCREMENT,
    VAPI.Cluster.ClusterGlobalAddressesParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.IPADDRESSINCREMENT,
      VAPI.Cluster.ClusterGlobalAddressesParameters
    >(
      this,
      "secondary_multiviewers_heads_addr_inc" 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 ClusterGlobalConfiguration
  implements VScript.Referenceable<"Cluster::Data::ClusterGlobalConfiguration">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get lock(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.Cluster.ClusterGlobalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.Cluster.ClusterGlobalConfiguration
    >(
      this,
      "lock" 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 parameters() {
    return VAPI.Cluster.lift.ClusterGlobalParameters(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 1, "parameters"),
    );
  }
  get nodes() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterNodes::Data::ClusterNodeGlobalConfiguration",
      VAPI.ClusterNodes.ClusterNodeGlobalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        2,
        "nodes",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterNodes.ClusterNodeGlobalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get sources() {
    return VAPI.ClusterSources.lift.ClusterSourcesGlobalConfiguration(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 3, "sources"),
    );
  }
  get outputs() {
    return VAPI.ClusterOutputs.lift.ClusterOutputsGlobalConfiguration(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 4, "outputs"),
    );
  }
  get monitoring_objects() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterMonitoringObjects::Data::ClusterMonitoringObjectGlobalConfiguration",
      VAPI.ClusterMonitoringObjects.ClusterMonitoringObjectGlobalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        5,
        "monitoring_objects",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterMonitoringObjects.ClusterMonitoringObjectGlobalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
}
export class ClusterGlobalMasterRedundancyParameters
  implements
    VScript.Referenceable<"Cluster::Data::ClusterGlobalMasterRedundancyParameters">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalMasterRedundancyParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get active_after_boot(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.Cluster.ClusterGlobalMasterRedundancyParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.Cluster.ClusterGlobalMasterRedundancyParameters
    >(
      this,
      "active_after_boot" 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 ClusterGlobalMiscParameters
  implements VScript.Referenceable<"Cluster::Data::ClusterGlobalMiscParameters">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalMiscParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get graphics_update_throttle(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalMiscParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalMiscParameters
    >(
      this,
      "graphics_update_throttle" 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 ClusterGlobalOffsetstParameters
  implements
    VScript.Referenceable<"Cluster::Data::ClusterGlobalOffsetstParameters">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalOffsetstParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get srcs_i_p_2110(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_i_p_2110" 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 srcs_i_p_2022(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_i_p_2022" 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 srcs_external_mipmaps(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_external_mipmaps" 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 srcs_multiviewers_heads(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_multiviewers_heads" 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 srcs_s_d_i(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_s_d_i" 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 srcs_per_node_s_d_i(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "srcs_per_node_s_d_i" 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 outs_per_node_s_d_i(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalOffsetstParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalOffsetstParameters
    >(
      this,
      "outs_per_node_s_d_i" 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 ClusterGlobalParameters
  implements VScript.Referenceable<"Cluster::Data::ClusterGlobalParameters">
{
  readonly type_identifier = "Cluster::Data::ClusterGlobalParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get addresses() {
    return VAPI.Cluster.lift.ClusterGlobalAddressesParameters(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "addresses"),
    );
  }
  get routing() {
    return VAPI.Cluster.lift.ClusterGlobalRoutingParameters(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 1, "routing"),
    );
  }
  get offsets() {
    return VAPI.Cluster.lift.ClusterGlobalOffsetstParameters(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 2, "offsets"),
    );
  }
  get monitoring_objects() {
    return VAPI.ClusterMonitoringObjects.lift.ClusterGlobalMonitoringObjectsParameters(
      VScript.VAPIHelpers.subtree_child_checked(
        this.raw,
        3,
        "monitoring_objects",
      ),
    );
  }
  get misc() {
    return VAPI.Cluster.lift.ClusterGlobalMiscParameters(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 4, "misc"),
    );
  }
  get master_redundancy() {
    return VAPI.Cluster.lift.ClusterGlobalMasterRedundancyParameters(
      VScript.VAPIHelpers.subtree_child_checked(
        this.raw,
        5,
        "master_redundancy",
      ),
    );
  }
}
export class ClusterGlobalRoutingParameters
  implements
    VScript.Referenceable<"Cluster::Data::ClusterGlobalRoutingParameters">
{
  readonly type_identifier =
    "Cluster::Data::ClusterGlobalRoutingParameters" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get mipmaps_ins_ports(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.Cluster.ClusterGlobalRoutingParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.Cluster.ClusterGlobalRoutingParameters
    >(
      this,
      "mipmaps_ins_ports" 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 mipmaps_outs_ports(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.Cluster.ClusterGlobalRoutingParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.Cluster.ClusterGlobalRoutingParameters
    >(
      this,
      "mipmaps_outs_ports" 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 ip_srcs_ports(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.Cluster.ClusterGlobalRoutingParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.Cluster.ClusterGlobalRoutingParameters
    >(
      this,
      "ip_srcs_ports" 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 ip_outs_ports(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.Cluster.ClusterGlobalRoutingParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.Cluster.ClusterGlobalRoutingParameters
    >(
      this,
      "ip_outs_ports" 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 mipmaps_outs_throttle_pause(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.Cluster.ClusterGlobalRoutingParameters
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.Cluster.ClusterGlobalRoutingParameters
    >(
      this,
      "mipmaps_outs_throttle_pause" 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 ClusterStatistics
  implements VScript.Referenceable<"Cluster::Data::ClusterStatistics">
{
  readonly type_identifier = "Cluster::Data::ClusterStatistics" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get prev_sync_length(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Cluster.TUnsignedMax,
    VAPI.Cluster.ClusterStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Cluster.TUnsignedMax,
      VAPI.Cluster.ClusterStatistics
    >(this, "prev_sync_length" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get prev_sync_kwls(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Cluster.TUnsignedMax,
    VAPI.Cluster.ClusterStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Cluster.TUnsignedMax,
      VAPI.Cluster.ClusterStatistics
    >(this, "prev_sync_kwls" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get prev_sync_tables(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Cluster.TUnsignedMax,
    VAPI.Cluster.ClusterStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Cluster.TUnsignedMax,
      VAPI.Cluster.ClusterStatistics
    >(this, "prev_sync_tables" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type IPADDRESSINCREMENT = "X_X_1_1" | "X_1_1_X" | "X_1_X_1" | "X_RL_1_1";
export type TUnsignedMax = number;
export const Enums = {
  IPADDRESSINCREMENT: [
    "X_X_1_1",
    "X_1_1_X",
    "X_1_X_1",
    "X_RL_1_1",
  ] as IPADDRESSINCREMENT[],
} as const;
