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 = {
  ClusterAudioSourceID: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterAudioSourceID(_raw),
  ClusterAudioSourceLocalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterAudioSourceLocalConfiguration(_raw),
  ClusterIPSourceConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterIPSourceConfiguration(_raw),
  ClusterIPSourcesGlobalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterIPSourcesGlobalConfiguration(_raw),
  ClusterMetadataSourceCC: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterMetadataSourceCC(_raw),
  ClusterMetadataSourceID: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterMetadataSourceID(_raw),
  ClusterMetadataSourceLocalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterMetadataSourceLocalConfiguration(_raw),
  ClusterSourceLabelDual: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterSourceLabelDual(_raw),
  ClusterSourcesGlobalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterSourcesGlobalConfiguration(_raw),
  ClusterSourcesLocalRuntime: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterSourcesLocalRuntime(_raw),
  ClusterVideoSourceID: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new ClusterVideoSourceID(_raw),
  ClusterVideoSourceIDInfo: (
    _raw: [number, number],
    _socket: VScript.VSocket,
  ): ClusterVideoSourceIDInfo => {
    return {
      source_id: _raw[0],
      rl_mask: _raw[1],
    };
  },
  ClusterVideoSourceLocalConfiguration: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterVideoSourceLocalConfiguration(_raw),
  ClusterVideoSourceRuntimeResolutionLevel: (
    _raw: VScript.DataViews.Subtree<VScript.VSocket>,
  ) => new ClusterVideoSourceRuntimeResolutionLevel(_raw),
  TimestampedTimecode: (
    _raw: [
      null | VScript.TimecodePayload,
      null | VScript.TimecodePayload,
      null | VScript.TimecodePayload,
    ],
    _socket: VScript.VSocket,
  ): TimestampedTimecode => {
    return {
      ltc: _raw[0] === null ? null : _raw[0],
      vtc1: _raw[1] === null ? null : _raw[1],
      vtc2: _raw[2] === null ? null : _raw[2],
    };
  },
} as const;
export const lower = {
  ClusterAudioSourceID: (_x: ClusterAudioSourceID) => _x.raw.kwl,
  ClusterAudioSourceLocalConfiguration: (
    _x: ClusterAudioSourceLocalConfiguration,
  ) => _x.raw.kwl,
  ClusterIPSourceConfiguration: (_x: ClusterIPSourceConfiguration) =>
    _x.raw.kwl,
  ClusterIPSourcesGlobalConfiguration: (
    _x: ClusterIPSourcesGlobalConfiguration,
  ) => _x.raw.kwl,
  ClusterMetadataSourceCC: (_x: ClusterMetadataSourceCC) => _x.raw.kwl,
  ClusterMetadataSourceID: (_x: ClusterMetadataSourceID) => _x.raw.kwl,
  ClusterMetadataSourceLocalConfiguration: (
    _x: ClusterMetadataSourceLocalConfiguration,
  ) => _x.raw.kwl,
  ClusterSourceLabelDual: (_x: ClusterSourceLabelDual) => _x.raw.kwl,
  ClusterSourcesGlobalConfiguration: (_x: ClusterSourcesGlobalConfiguration) =>
    _x.raw.kwl,
  ClusterSourcesLocalRuntime: (_x: ClusterSourcesLocalRuntime) => _x.raw.kwl,
  ClusterVideoSourceID: (_x: ClusterVideoSourceID) => _x.raw.kwl,
  ClusterVideoSourceIDInfo: (
    _x: { source_id: VAPI.ClusterSources.VideoSourceID; rl_mask: number },
    _socket: VScript.VSocket,
  ): [number, number] => [_x.source_id, _x.rl_mask],
  ClusterVideoSourceLocalConfiguration: (
    _x: ClusterVideoSourceLocalConfiguration,
  ) => _x.raw.kwl,
  ClusterVideoSourceRuntimeResolutionLevel: (
    _x: ClusterVideoSourceRuntimeResolutionLevel,
  ) => _x.raw.kwl,
  TimestampedTimecode: (
    _x: {
      ltc: null | VScript.TimecodePayload;
      vtc1: null | VScript.TimecodePayload;
      vtc2: null | VScript.TimecodePayload;
    },
    _socket: VScript.VSocket,
  ): [
    null | VScript.TimecodePayload,
    null | VScript.TimecodePayload,
    null | VScript.TimecodePayload,
  ] => [
    _x.ltc === null ? null : _x.ltc,
    _x.vtc1 === null ? null : _x.vtc1,
    _x.vtc2 === null ? null : _x.vtc2,
  ],
} as const;
export type AudioSourceID = number;
export class ClusterAudioSourceID
  implements VScript.Referenceable<"ClusterSources::Data::ClusterAudioSourceID">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterAudioSourceID" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get source_id(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.AudioSourceID,
    VAPI.ClusterSources.ClusterAudioSourceID
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.AudioSourceID,
      VAPI.ClusterSources.ClusterAudioSourceID
    >(this, "source_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class ClusterAudioSourceLocalConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterAudioSourceLocalConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterAudioSourceLocalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get source_id(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.AudioSourceID,
    VAPI.ClusterSources.AudioSourceID,
    VAPI.ClusterSources.ClusterAudioSourceLocalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.AudioSourceID,
      VAPI.ClusterSources.AudioSourceID,
      VAPI.ClusterSources.ClusterAudioSourceLocalConfiguration
    >(
      this,
      "source_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,
    );
  }
}
export class ClusterAudioSourceLocalConfigurationAsNamedTableRow extends ClusterAudioSourceLocalConfiguration {
  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 ClusterIPSourceConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterIPSourceConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterIPSourceConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get sdp(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.ClusterSources.ClusterIPSourceConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.ClusterSources.ClusterIPSourceConfiguration
    >(
      this,
      "sdp" 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 ClusterIPSourceConfigurationAsNamedTableRow extends ClusterIPSourceConfiguration {
  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 ClusterIPSourcesGlobalConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterIPSourcesGlobalConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterIPSourcesGlobalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get video() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterIPSourceConfiguration",
      VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        0,
        "video",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get audio() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterIPSourceConfiguration",
      VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        1,
        "audio",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get metadata() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterIPSourceConfiguration",
      VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        2,
        "metadata",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterIPSourceConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
}
export class ClusterMetadataSourceCC
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterMetadataSourceCC">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterMetadataSourceCC" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get screen(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.ClusterSources.ClusterMetadataSourceCC
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.ClusterSources.ClusterMetadataSourceCC
    >(this, "screen" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class ClusterMetadataSourceID
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterMetadataSourceID">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterMetadataSourceID" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get source_id(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.ClusterSources.MetadataSourceID,
    VAPI.ClusterSources.ClusterMetadataSourceID
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.ClusterSources.MetadataSourceID,
      VAPI.ClusterSources.ClusterMetadataSourceID
    >(this, "source_id" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class ClusterMetadataSourceLocalConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterMetadataSourceLocalConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterMetadataSourceLocalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get source_id(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.MetadataSourceID,
    VAPI.ClusterSources.MetadataSourceID,
    VAPI.ClusterSources.ClusterMetadataSourceLocalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.MetadataSourceID,
      VAPI.ClusterSources.MetadataSourceID,
      VAPI.ClusterSources.ClusterMetadataSourceLocalConfiguration
    >(
      this,
      "source_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,
    );
  }
}
export class ClusterMetadataSourceLocalConfigurationAsNamedTableRow extends ClusterMetadataSourceLocalConfiguration {
  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 ClusterSourceLabelDual
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterSourceLabelDual">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterSourceLabelDual" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get string_default(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.ClusterSources.ClusterSourceLabelDual
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.ClusterSources.ClusterSourceLabelDual
    >(
      this,
      "string_default" 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 string_user(): VScript.rwKeyword<
    VScript.VSocket,
    string,
    string,
    string,
    string,
    VAPI.ClusterSources.ClusterSourceLabelDual
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      string,
      string,
      string,
      string,
      VAPI.ClusterSources.ClusterSourceLabelDual
    >(
      this,
      "string_user" 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 ClusterSourcesGlobalConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterSourcesGlobalConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterSourcesGlobalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get ip() {
    return VAPI.ClusterSources.lift.ClusterIPSourcesGlobalConfiguration(
      VScript.VAPIHelpers.subtree_child_checked(this.raw, 0, "ip"),
    );
  }
}
export class ClusterSourcesLocalRuntime
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterSourcesLocalRuntime">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterSourcesLocalRuntime" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get video() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterVideoSourceLocalConfiguration",
      VAPI.ClusterSources.ClusterVideoSourceLocalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        0,
        "video",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterVideoSourceLocalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get audio() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterAudioSourceLocalConfiguration",
      VAPI.ClusterSources.ClusterAudioSourceLocalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        1,
        "audio",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterAudioSourceLocalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get metadata() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterMetadataSourceLocalConfiguration",
      VAPI.ClusterSources.ClusterMetadataSourceLocalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        2,
        "metadata",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterMetadataSourceLocalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
  get video_full_size() {
    return new VScript.StronglyTypedNamedTable<
      VScript.VSocket,
      "ClusterSources::Data::ClusterVideoSourceLocalConfiguration",
      VAPI.ClusterSources.ClusterVideoSourceLocalConfigurationAsNamedTableRow
    >(
      VScript.VAPIHelpers.subtree_named_table_child_checked(
        this.raw,
        3,
        "video_full_size",
      ),
      (raw: VScript.DataViews.SubtreeNamedTableRow<VScript.VSocket>) =>
        new VAPI.ClusterSources.ClusterVideoSourceLocalConfigurationAsNamedTableRow(
          raw,
        ),
    );
  }
}
export class ClusterVideoSourceID
  implements VScript.Referenceable<"ClusterSources::Data::ClusterVideoSourceID">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterVideoSourceID" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get info(): VScript.rKeyword<
    VScript.VSocket,
    [number, number],
    VAPI.ClusterSources.ClusterVideoSourceIDInfo,
    VAPI.ClusterSources.ClusterVideoSourceID
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      [number, number],
      VAPI.ClusterSources.ClusterVideoSourceIDInfo,
      VAPI.ClusterSources.ClusterVideoSourceID
    >(this, "info" as VScript.SysName, {
      lift: VAPI.ClusterSources.lift.ClusterVideoSourceIDInfo,
      lower: VAPI.ClusterSources.lower.ClusterVideoSourceIDInfo,
    });
  }
}
export interface ClusterVideoSourceIDInfo {
  source_id: VAPI.ClusterSources.VideoSourceID;
  rl_mask: number;
}
export class ClusterVideoSourceLocalConfiguration
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterVideoSourceLocalConfiguration">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterVideoSourceLocalConfiguration" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get source_id(): VScript.rwKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.VideoSourceID,
    VAPI.ClusterSources.VideoSourceID,
    VAPI.ClusterSources.ClusterVideoSourceLocalConfiguration
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.VideoSourceID,
      VAPI.ClusterSources.VideoSourceID,
      VAPI.ClusterSources.ClusterVideoSourceLocalConfiguration
    >(
      this,
      "source_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,
    );
  }
}
export class ClusterVideoSourceLocalConfigurationAsNamedTableRow extends ClusterVideoSourceLocalConfiguration {
  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 ClusterVideoSourceRuntimeResolutionLevel
  implements
    VScript.Referenceable<"ClusterSources::Data::ClusterVideoSourceRuntimeResolutionLevel">
{
  readonly type_identifier =
    "ClusterSources::Data::ClusterVideoSourceRuntimeResolutionLevel" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

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

  /**
    Destination IP address of the mipmap RTP stream
  */
  get secondary_dest_ip_address(): VScript.rKeyword<
    VScript.VSocket,
    null | string,
    null | string,
    VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      null | string,
      null | string,
      VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
    >(this, "secondary_dest_ip_address" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get width(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
    >(this, "width" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get height(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
    >(this, "height" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get bytes_per_second(): VScript.rKeyword<
    VScript.VSocket,
    number,
    number,
    VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      number,
      VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
    >(this, "bytes_per_second" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get sdp(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.ClusterSources.ClusterVideoSourceRuntimeResolutionLevel
    >(this, "sdp" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type MetadataSourceID = number;
export type Ports = "PORT_1" | "PORT_2" | "PORTS_ALL_SPS" | "PORTS_ALL";
export type SourceTransportFormat =
  | "IP_2022"
  | "IP_2110"
  | "SDI"
  | "INTERNAL"
  | "EXTERNAL_MIPMAPS";
export type TUnsignedMax = number;
export interface TimestampedTimecode {
  ltc: null | VScript.TimecodePayload;
  vtc1: null | VScript.TimecodePayload;
  vtc2: null | VScript.TimecodePayload;
}
export type VideoSourceID = number;
export const Enums = {
  SourceTransportFormat: [
    "IP_2022",
    "IP_2110",
    "SDI",
    "INTERNAL",
    "EXTERNAL_MIPMAPS",
  ] as SourceTransportFormat[],
  Ports: ["PORT_1", "PORT_2", "PORTS_ALL_SPS", "PORTS_ALL"] as Ports[],
} as const;
