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 = {
  DMVInternal: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DMVInternal(_raw),
  DMVMipMaps: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DMVMipMaps(_raw),
  DMVMipMapsInput: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DMVMipMapsInput(_raw),
  DMVMipMapsOutput: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DMVMipMapsOutput(_raw),
  DistributedMultiviewer: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new DistributedMultiviewer(_raw),
  HSLCOLOUR: (
    _raw: [number, number, number],
    _socket: VScript.VSocket,
  ): HSLCOLOUR => {
    return {
      hue: _raw[0],
      saturation: _raw[1],
      lightness: _raw[2],
    };
  },
  ManifoldCore: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ManifoldCore(_raw),
  ManifoldCoreOutput: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ManifoldCoreOutput(_raw),
  PortInfo: (_raw: [number, number], _socket: VScript.VSocket): PortInfo => {
    return {
      port_line_id: _raw[0],
      port_line_stream_id: _raw[1],
    };
  },
} as const;
export const lower = {
  DMVInternal: (_x: DMVInternal) => _x.raw.kwl,
  DMVMipMaps: (_x: DMVMipMaps) => _x.raw.kwl,
  DMVMipMapsInput: (_x: DMVMipMapsInput) => _x.raw.kwl,
  DMVMipMapsOutput: (_x: DMVMipMapsOutput) => _x.raw.kwl,
  DistributedMultiviewer: (_x: DistributedMultiviewer) => _x.raw.kwl,
  HSLCOLOUR: (
    _x: { hue: number; saturation: number; lightness: number },
    _socket: VScript.VSocket,
  ): [number, number, number] => [_x.hue, _x.saturation, _x.lightness],
  ManifoldCore: (_x: ManifoldCore) => _x.raw.kwl,
  ManifoldCoreOutput: (_x: ManifoldCoreOutput) => _x.raw.kwl,
  PortInfo: (
    _x: { port_line_id: number; port_line_stream_id: number },
    _socket: VScript.VSocket,
  ): [number, number] => [_x.port_line_id, _x.port_line_stream_id],
} as const;
export class DMVInternal
  implements VScript.Referenceable<"MultiviewerIO::Data::DMVInternal">
{
  readonly type_identifier = "MultiviewerIO::Data::DMVInternal" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get mipmaps() {
    return VAPI.MultiviewerIO.lift.DMVMipMaps(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "mipmaps"),
    );
  }
}
export class DMVMipMaps
  implements VScript.Referenceable<"MultiviewerIO::Data::DMVMipMaps">
{
  readonly type_identifier = "MultiviewerIO::Data::DMVMipMaps" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get mipmaps_ins_ports(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.ClusterSources.Ports,
    VAPI.ClusterSources.Ports,
    VAPI.MultiviewerIO.DMVMipMaps
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.ClusterSources.Ports,
      VAPI.ClusterSources.Ports,
      VAPI.MultiviewerIO.DMVMipMaps
    >(this, "mipmaps_ins_ports" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get inputs() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "MultiviewerIO::Data::DMVMipMapsInput",
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(this.raw, 1, "inputs"),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.MultiviewerIO.lift.DMVMipMapsInput(st),
    );
  }
  get outputs() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "MultiviewerIO::Data::DMVMipMapsOutput",
      VAPI.MultiviewerIO.DMVMipMapsOutput
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(this.raw, 2, "outputs"),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.MultiviewerIO.lift.DMVMipMapsOutput(st),
    );
  }
}
export class DMVMipMapsInput
  implements VScript.Referenceable<"MultiviewerIO::Data::DMVMipMapsInput">
{
  readonly type_identifier = "MultiviewerIO::Data::DMVMipMapsInput" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get enable(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "enable" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IP address of the mipmap RTP stream
  */
  get src_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "src_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IP address of the mipmap RTP stream
  */
  get dest_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "dest_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get interface(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | VAPI.NetworkInterfaces.VirtualInterface,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | VAPI.NetworkInterfaces.VirtualInterface,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "interface" as VScript.SysName, {
      lift: VScript.VAPIHelpers.liftOrLowerNullable(
        (raw_kwl: string, _socket: VScript.VSocket) =>
          new VAPI.NetworkInterfaces.VirtualInterface(
            VScript.VAPIHelpers.get_subtree(
              _socket,
              raw_kwl as VScript.KWLName<"full">,
            ),
          ),
      ),
      lower: VScript.VAPIHelpers.liftOrLowerNullable(
        (
          x: VScript.Referenceable<"NetworkInterfaces::Data::VirtualInterface"> &
            VScript.StronglyTypedSubtree<VScript.VSocket>,
          _: VScript.VSocket,
        ) => x.raw.kwl,
      ),
    });
  }

  /**
    IP address of the secondary mipmap RTP stream
  */
  get secondary_src_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "secondary_src_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IP address of the secondary mipmap RTP stream
  */
  get secondary_dest_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "secondary_dest_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get secondary_interface(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | VAPI.NetworkInterfaces.VirtualInterface,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | VAPI.NetworkInterfaces.VirtualInterface,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "secondary_interface" as VScript.SysName, {
      lift: VScript.VAPIHelpers.liftOrLowerNullable(
        (raw_kwl: string, _socket: VScript.VSocket) =>
          new VAPI.NetworkInterfaces.VirtualInterface(
            VScript.VAPIHelpers.get_subtree(
              _socket,
              raw_kwl as VScript.KWLName<"full">,
            ),
          ),
      ),
      lower: VScript.VAPIHelpers.liftOrLowerNullable(
        (
          x: VScript.Referenceable<"NetworkInterfaces::Data::VirtualInterface"> &
            VScript.StronglyTypedSubtree<VScript.VSocket>,
          _: VScript.VSocket,
        ) => x.raw.kwl,
      ),
    });
  }
  get metadata(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "metadata" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get global_source_id(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "global_source_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get global_source_rl_id(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.MultiviewerIO.DMVMipMapsInput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.MultiviewerIO.DMVMipMapsInput
    >(this, "global_source_rl_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class DMVMipMapsOutput
  implements VScript.Referenceable<"MultiviewerIO::Data::DMVMipMapsOutput">
{
  readonly type_identifier = "MultiviewerIO::Data::DMVMipMapsOutput" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get bytes_per_second(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.MultiviewerIO.DMVMipMapsOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.MultiviewerIO.DMVMipMapsOutput
    >(this, "bytes_per_second" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IP address of the mipmap RTP stream for port 0
  */
  get port_0_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsOutput
    >(this, "port_0_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    IP address of the mipmap RTP stream for port 1
  */
  get port_1_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.DMVMipMapsOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.DMVMipMapsOutput
    >(this, "port_1_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get port_info(): VScript.rKeyword<
    VScript.VSocket,
    [number, number],
    VAPI.MultiviewerIO.PortInfo,
    VAPI.MultiviewerIO.DMVMipMapsOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      [number, number],
      VAPI.MultiviewerIO.PortInfo,
      VAPI.MultiviewerIO.DMVMipMapsOutput
    >(this, "port_info" as VScript.SysName, {
      lift: VAPI.MultiviewerIO.lift.PortInfo,
      lower: VAPI.MultiviewerIO.lower.PortInfo,
    });
  }
}
export type DOUBLEBUFFERMODE = "ON" | "OFF" | "AUTO";
export class DistributedMultiviewer
  implements
    VScript.Referenceable<"MultiviewerIO::Data::DistributedMultiviewer">
{
  readonly type_identifier =
    "MultiviewerIO::Data::DistributedMultiviewer" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get enable(): VScript.rwKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    boolean,
    boolean,
    VAPI.MultiviewerIO.DistributedMultiviewer
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      boolean,
      boolean,
      VAPI.MultiviewerIO.DistributedMultiviewer
    >(
      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 internal() {
    return VAPI.MultiviewerIO.lift.DMVInternal(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 1, "internal"),
    );
  }
}
export interface HSLCOLOUR {
  hue: number;
  saturation: number;
  lightness: number;
}
export class ManifoldCore
  implements VScript.Referenceable<"MultiviewerIO::Data::ManifoldCore">
{
  readonly type_identifier = "MultiviewerIO::Data::ManifoldCore" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get tile_width(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.MultiviewerIO.ManifoldCore
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.MultiviewerIO.ManifoldCore
    >(
      this,
      "tile_width" 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 tile_height(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.MultiviewerIO.ManifoldCore
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.MultiviewerIO.ManifoldCore
    >(
      this,
      "tile_height" 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 rasterizers_num(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.MultiviewerIO.ManifoldCore
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.MultiviewerIO.ManifoldCore
    >(
      this,
      "rasterizers_num" 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 read_grant_size(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.MultiviewerIO.ManifoldCore
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.MultiviewerIO.ManifoldCore
    >(
      this,
      "read_grant_size" 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 write_grant_size(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    number,
    number,
    VAPI.MultiviewerIO.ManifoldCore
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      number,
      number,
      VAPI.MultiviewerIO.ManifoldCore
    >(
      this,
      "write_grant_size" 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 outputs() {
    return new VScript.StronglyTypedArray<
      VScript.VSocket,
      "MultiviewerIO::Data::ManifoldCoreOutput",
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(
      VScript.VAPIHelpers.subtree_array_child_checked(this.raw, 5, "outputs"),
      (st: VScript.DataViews.Subtree<VScript.VSocket>, _: VScript.VSocket) =>
        VAPI.MultiviewerIO.lift.ManifoldCoreOutput(st),
    );
  }
}
export class ManifoldCoreOutput
  implements VScript.Referenceable<"MultiviewerIO::Data::ManifoldCoreOutput">
{
  readonly type_identifier = "MultiviewerIO::Data::ManifoldCoreOutput" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get enable(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "enable" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get standard(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.MultiviewerIO.MultiviewerHeadVideoStandard,
    VAPI.MultiviewerIO.MultiviewerHeadVideoStandard,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.MultiviewerIO.MultiviewerHeadVideoStandard,
      VAPI.MultiviewerIO.MultiviewerHeadVideoStandard,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "standard" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get double_buffer_mode(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
    VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
      VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "double_buffer_mode" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get current_double_buffer_mode(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
    VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
      VAPI.MultiviewerIO.DOUBLEBUFFERMODE,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "current_double_buffer_mode" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get rotation(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.MultiviewerIO.OUTPUTROTATIONMODE,
    VAPI.MultiviewerIO.OUTPUTROTATIONMODE,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.MultiviewerIO.OUTPUTROTATIONMODE,
      VAPI.MultiviewerIO.OUTPUTROTATIONMODE,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "rotation" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get streaming_enable(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "streaming_enable" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get streaming_transport_format(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.Video.TransportFormat,
    VAPI.Video.TransportFormat,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.Video.TransportFormat,
      VAPI.Video.TransportFormat,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "streaming_transport_format" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Destination IP address of the Head stream
  */
  get streaming_dest_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "streaming_dest_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Secondary Destination IP address of the Head stream
  */
  get streaming_secondary_dest_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "streaming_secondary_dest_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get bgnd_colour(): VScript.rKeyword<
    VScript.VSocket,
    [number, number, number],
    VAPI.MultiviewerIO.HSLCOLOUR,
    VAPI.MultiviewerIO.ManifoldCoreOutput
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      [number, number, number],
      VAPI.MultiviewerIO.HSLCOLOUR,
      VAPI.MultiviewerIO.ManifoldCoreOutput
    >(this, "bgnd_colour" as VScript.SysName, {
      lift: VAPI.MultiviewerIO.lift.HSLCOLOUR,
      lower: VAPI.MultiviewerIO.lower.HSLCOLOUR,
    });
  }
}
export type MultiviewerHeadVideoStandard =
  | "HD1080p23_98"
  | "HD1080p24"
  | "HD1080p25"
  | "HD1080p29_97"
  | "HD1080p30"
  | "HD1080p50"
  | "HD1080p59_94"
  | "HD1080p60"
  | "HD2160p50"
  | "HD2160p59_94"
  | "HD2160p60";
export type OUTPUTORIENTATION =
  | "HORIZONTAL"
  | "HORIZONTAL_REVERSE"
  | "VERTICAL"
  | "VERTICAL_REVERSE";
export type OUTPUTROTATIONMODE = "NORMAL" | "COUNTERCLOCKWISE" | "CLOCKWISE";
export interface PortInfo {
  port_line_id: number;
  port_line_stream_id: number;
}
export type VideoInterface =
  | "SD"
  | "HD"
  | "DualLink_HD"
  | "SingleLink_3G_A"
  | "SingleLink_3G_B_DL"
  | "SingleLink_3G_B_DS"
  | "DualLink_3G_B"
  | "DualLink_3G_C"
  | "QuadLink_3G_A"
  | "QuadLink_3G_B"
  | "SingleLink_12G";
export type VideoRaster =
  | "NTSC"
  | "PAL"
  | "r720"
  | "r1920x1080"
  | "r2048x1080"
  | "r3840x2160"
  | "r4096x2160";
export const Enums = {
  VideoRaster: [
    "NTSC",
    "PAL",
    "r720",
    "r1920x1080",
    "r2048x1080",
    "r3840x2160",
    "r4096x2160",
  ] as VideoRaster[],
  VideoInterface: [
    "SD",
    "HD",
    "DualLink_HD",
    "SingleLink_3G_A",
    "SingleLink_3G_B_DL",
    "SingleLink_3G_B_DS",
    "DualLink_3G_B",
    "DualLink_3G_C",
    "QuadLink_3G_A",
    "QuadLink_3G_B",
    "SingleLink_12G",
  ] as VideoInterface[],
  OUTPUTROTATIONMODE: [
    "NORMAL",
    "COUNTERCLOCKWISE",
    "CLOCKWISE",
  ] as OUTPUTROTATIONMODE[],
  OUTPUTORIENTATION: [
    "HORIZONTAL",
    "HORIZONTAL_REVERSE",
    "VERTICAL",
    "VERTICAL_REVERSE",
  ] as OUTPUTORIENTATION[],
  MultiviewerHeadVideoStandard: [
    "HD1080p23_98",
    "HD1080p24",
    "HD1080p25",
    "HD1080p29_97",
    "HD1080p30",
    "HD1080p50",
    "HD1080p59_94",
    "HD1080p60",
    "HD2160p50",
    "HD2160p59_94",
    "HD2160p60",
  ] as MultiviewerHeadVideoStandard[],
  DOUBLEBUFFERMODE: ["ON", "OFF", "AUTO"] as DOUBLEBUFFERMODE[],
} as const;
