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 = {
  ClusterNodeGlobalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterNodeGlobalConfiguration(_raw),
  ClusterNodeGlobalRuntime: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterNodeGlobalRuntime(_raw),
  ClusterNodeGlobalRuntimeConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterNodeGlobalRuntimeConfiguration(_raw),
  ClusterNodeGlobalRuntimeMcastCtrlStatistics: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterNodeGlobalRuntimeMcastCtrlStatistics(_raw),
  ClusterNodeGlobalRuntimeStreamingPortConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterNodeGlobalRuntimeStreamingPortConfiguration(_raw),
  ClusterNodePortEgress: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterNodePortEgress(_raw),
  ClusterNodePortIngress: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterNodePortIngress(_raw),
  ClusterNodePortLLDPInfo: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterNodePortLLDPInfo(_raw),
} as const;
export const lower = {
  ClusterNodeGlobalConfiguration: (_x: ClusterNodeGlobalConfiguration) =>
    _x.raw.kwl,
  ClusterNodeGlobalRuntime: (_x: ClusterNodeGlobalRuntime) => _x.raw.kwl,
  ClusterNodeGlobalRuntimeConfiguration: (
    _x: ClusterNodeGlobalRuntimeConfiguration,
  ) => _x.raw.kwl,
  ClusterNodeGlobalRuntimeMcastCtrlStatistics: (
    _x: ClusterNodeGlobalRuntimeMcastCtrlStatistics,
  ) => _x.raw.kwl,
  ClusterNodeGlobalRuntimeStreamingPortConfiguration: (
    _x: ClusterNodeGlobalRuntimeStreamingPortConfiguration,
  ) => _x.raw.kwl,
  ClusterNodePortEgress: (_x: ClusterNodePortEgress) => _x.raw.kwl,
  ClusterNodePortIngress: (_x: ClusterNodePortIngress) => _x.raw.kwl,
  ClusterNodePortLLDPInfo: (_x: ClusterNodePortLLDPInfo) => _x.raw.kwl,
} as const;
export class ClusterNodeGlobalConfiguration
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodeGlobalConfiguration">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodeGlobalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get mode(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.ClusterNodes.NODEMODE,
    VAPI.ClusterNodes.NODEMODE,
    VAPI.ClusterNodes.NODEMODE,
    VAPI.ClusterNodes.NODEMODE,
    VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.ClusterNodes.NODEMODE,
      VAPI.ClusterNodes.NODEMODE,
      VAPI.ClusterNodes.NODEMODE,
      VAPI.ClusterNodes.NODEMODE,
      VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
    >(
      this,
      "mode" 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 address of the cluster node control
  */
  get ctrl_ip_address(): VScript.rwKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    null | string,
    null | string,
    VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      null | string,
      null | string,
      VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
    >(
      this,
      "ctrl_ip_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,
    );
  }
  get route_outputs_enable(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.ClusterNodes.ClusterNodeGlobalConfiguration
    >(
      this,
      "route_outputs_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,
    );
  }
}
export class ClusterNodeGlobalConfigurationAsNamedTableRow extends ClusterNodeGlobalConfiguration {
  readonly index: number;
  constructor(
    readonly raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>,
  ) {
    super(raw);
    this.index = raw.index;
  }
  async rename(name: string, opts?: VScript.CommonWriteOptions) {
    await this.raw.rename(name, opts);
  }
  async row_name(opts?: VScript.CommonCommandOptions) {
    return await this.raw.row_name(opts);
  }
  async delete(opts?: VScript.CommonWriteOptions) {
    await this.raw.delete(opts);
  }
}
export class ClusterNodeGlobalRuntime
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodeGlobalRuntime">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodeGlobalRuntime" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get connection_status(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.ClusterNodes.NODECONNECTIONSTATUS,
    VAPI.ClusterNodes.NODECONNECTIONSTATUS,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntime
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.ClusterNodes.NODECONNECTIONSTATUS,
      VAPI.ClusterNodes.NODECONNECTIONSTATUS,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntime
    >(this, "connection_status" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get multicast_connection_status(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.ClusterNodes.NODECONNECTIONSTATUS,
    VAPI.ClusterNodes.NODECONNECTIONSTATUS,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntime
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.ClusterNodes.NODECONNECTIONSTATUS,
      VAPI.ClusterNodes.NODECONNECTIONSTATUS,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntime
    >(this, "multicast_connection_status" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get configuration() {
    return VAPI.ClusterNodes.lift.ClusterNodeGlobalRuntimeConfiguration(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 2, "configuration"),
    );
  }
  get routed_sources() {
    return VAPI.ClusterSources.lift.ClusterSourcesLocalRuntime(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 3, "routed_sources"),
    );
  }
  get routed_processors() {
    return VAPI.ClusterProcessors.lift.ClusterProcessorsLocalConfiguration(
      VScript.VAPIHelpers.subtree_child_checked(
        this.raw,
        4,
        "routed_processors",
      ),
    );
  }
  get streaming_ports() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "ClusterNodes::Data::ClusterNodeGlobalRuntimeStreamingPortConfiguration",
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeStreamingPortConfiguration
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(
        this.raw,
        5,
        "streaming_ports",
      ),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.ClusterNodes.lift.ClusterNodeGlobalRuntimeStreamingPortConfiguration(
          st,
        ),
    );
  }
  get mcast_ctrl_sequence_number_error() {
    return VAPI.ClusterNodes.lift.ClusterNodeGlobalRuntimeMcastCtrlStatistics(
      VScript.VAPIHelpers.subtree_child_checked(
        this.raw,
        6,
        "mcast_ctrl_sequence_number_error",
      ),
    );
  }
}
export class ClusterNodeGlobalRuntimeConfiguration
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodeGlobalRuntimeConfiguration">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodeGlobalRuntimeConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get sdi_inputs_num(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
    >(this, "sdi_inputs_num" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get sdi_outputs_num(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
    >(this, "sdi_outputs_num" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get mipmaps_dual_input_stages_num(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeConfiguration
    >(this, "mipmaps_dual_input_stages_num" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class ClusterNodeGlobalRuntimeMcastCtrlStatistics
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodeGlobalRuntimeMcastCtrlStatistics">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodeGlobalRuntimeMcastCtrlStatistics" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get video_alarms(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_alarms" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get video_standard(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_standard" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get video_mip_maps_src_i_p_addresses(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_mip_maps_src_i_p_addresses" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get video_tally(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_tally" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get video_lifeness(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_lifeness" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get video_routing(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "video_routing" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get audio_alarms(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "audio_alarms" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get audio_p_p_ms(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "audio_p_p_ms" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get audio_tally(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "audio_tally" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get audio_lifeness(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "audio_lifeness" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get metadata_alarms(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "metadata_alarms" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get metadata_lifeness(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "metadata_lifeness" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get metadata_time_code(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "metadata_time_code" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get metadata_closed_caption(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.TUnsignedMax,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.TUnsignedMax,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(this, "metadata_closed_caption" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Clear
  */
  get clear(): VScript.wKeyword<
    VScript.VSocket,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
  > {
    return new VScript.wKeyword<
      VScript.VSocket,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeMcastCtrlStatistics
    >(
      this,
      "clear" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
export class ClusterNodeGlobalRuntimeStreamingPortConfiguration
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodeGlobalRuntimeStreamingPortConfiguration">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodeGlobalRuntimeStreamingPortConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get max_bandwidth(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeStreamingPortConfiguration
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeStreamingPortConfiguration
    >(this, "max_bandwidth" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Streaming Port IP address
  */
  get ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.ClusterNodes.ClusterNodeGlobalRuntimeStreamingPortConfiguration
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.ClusterNodes.ClusterNodeGlobalRuntimeStreamingPortConfiguration
    >(this, "ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get lldp_info() {
    return VAPI.ClusterNodes.lift.ClusterNodePortLLDPInfo(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 2, "lldp_info"),
    );
  }
  get ingress() {
    return VAPI.ClusterNodes.lift.ClusterNodePortIngress(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 3, "ingress"),
    );
  }
  get egress() {
    return VAPI.ClusterNodes.lift.ClusterNodePortEgress(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 4, "egress"),
    );
  }
}
export class ClusterNodePortEgress
  implements VScript.Referenceable<"ClusterNodes::Data::ClusterNodePortEgress">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodePortEgress" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get video() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterVideoSourceID",
      VAPI.ClusterSources.ClusterVideoSourceID
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 0, "video"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.ClusterSources.lift.ClusterVideoSourceID(raw),
    );
  }
}
export class ClusterNodePortIngress
  implements VScript.Referenceable<"ClusterNodes::Data::ClusterNodePortIngress">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodePortIngress" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get video() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterVideoSourceID",
      VAPI.ClusterSources.ClusterVideoSourceID
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 0, "video"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.ClusterSources.lift.ClusterVideoSourceID(raw),
    );
  }
  get audio() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterAudioSourceID",
      VAPI.ClusterSources.ClusterAudioSourceID
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 1, "audio"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.ClusterSources.lift.ClusterAudioSourceID(raw),
    );
  }
  get metadata() {
    return new VScript.StronglyTypedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterMetadataSourceID",
      VAPI.ClusterSources.ClusterMetadataSourceID
    >(
      VScript.VAPIHelpers.subtree_table_child_checked(this.raw, 2, "metadata"),
      (raw: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.ClusterSources.lift.ClusterMetadataSourceID(raw),
    );
  }
}
export class ClusterNodePortLLDPInfo
  implements
    VScript.Referenceable<"ClusterNodes::Data::ClusterNodePortLLDPInfo">
{
  readonly type_identifier =
    "ClusterNodes::Data::ClusterNodePortLLDPInfo" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    MAC address, stored in big-endian order.
  */
  get chassis_id(): VScript.rKeyword<
    VScript.VSocket,
    Array<number>,
    VAPI.NetworkInterfaces.MacAddress,
    VAPI.ClusterNodes.ClusterNodePortLLDPInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      Array<number>,
      VAPI.NetworkInterfaces.MacAddress,
      VAPI.ClusterNodes.ClusterNodePortLLDPInfo
    >(this, "chassis_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    MAC address, stored in big-endian order.
  */
  get port_id(): VScript.rKeyword<
    VScript.VSocket,
    Array<number>,
    VAPI.NetworkInterfaces.MacAddress,
    VAPI.ClusterNodes.ClusterNodePortLLDPInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      Array<number>,
      VAPI.NetworkInterfaces.MacAddress,
      VAPI.ClusterNodes.ClusterNodePortLLDPInfo
    >(this, "port_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get interface_name(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.ClusterNodes.ClusterNodePortLLDPInfo
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.ClusterNodes.ClusterNodePortLLDPInfo
    >(this, "interface_name" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type NODECONNECTIONSTATUS = "CONNECTED" | "DISCONNECTED";
export type NODEMODE = "MASTER" | "SLAVE";
export const Enums = {
  NODEMODE: ["MASTER", "SLAVE"] as NODEMODE[],
  NODECONNECTIONSTATUS: ["CONNECTED", "DISCONNECTED"] as NODECONNECTIONSTATUS[],
} as const;
