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 = {
  PAIRCOM: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new PAIRCOM(_raw),
  READSTATUS: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) =>
    new READSTATUS(_raw),
} as const;
export const lower = {
  PAIRCOM: (_x: PAIRCOM) => _x.raw.kwl,
  READSTATUS: (_x: READSTATUS) => _x.raw.kwl,
} as const;
export class PAIRCOM
  implements VScript.Referenceable<"SampleRateConverter::Data::PAIRCOM">
{
  readonly type_identifier = "SampleRateConverter::Data::PAIRCOM" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get hw_value(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Primitives.Signed16,
    VAPI.SampleRateConverter.PAIRCOM
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Primitives.Signed16,
      VAPI.SampleRateConverter.PAIRCOM
    >(this, "hw_value" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get enable(): VScript.rKeyword<
    VScript.VSocket,
    boolean,
    boolean,
    VAPI.SampleRateConverter.PAIRCOM
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      boolean,
      boolean,
      VAPI.SampleRateConverter.PAIRCOM
    >(this, "enable" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get channels(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Primitives.Unsigned32,
    VAPI.SampleRateConverter.PAIRCOM
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Primitives.Unsigned32,
      VAPI.SampleRateConverter.PAIRCOM
    >(this, "channels" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export class READSTATUS
  implements VScript.Referenceable<"SampleRateConverter::Data::READSTATUS">
{
  readonly type_identifier = "SampleRateConverter::Data::READSTATUS" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}

  /**
    µ sync error
  */
  get mu_sync_error(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Primitives.Unsigned32,
    VAPI.SampleRateConverter.READSTATUS
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Primitives.Unsigned32,
      VAPI.SampleRateConverter.READSTATUS
    >(this, "mu_sync_error" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get input_error(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Primitives.Unsigned32,
    VAPI.SampleRateConverter.READSTATUS
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Primitives.Unsigned32,
      VAPI.SampleRateConverter.READSTATUS
    >(this, "input_error" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    SRC reference clock
  */
  get ref_ready(): VScript.rKeyword<
    VScript.VSocket,
    number,
    VAPI.Primitives.Unsigned32,
    VAPI.SampleRateConverter.READSTATUS
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      number,
      VAPI.Primitives.Unsigned32,
      VAPI.SampleRateConverter.READSTATUS
    >(this, "ref_ready" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Clear
  */
  get clear_statistic(): VScript.wKeyword<
    VScript.VSocket,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.SampleRateConverter.READSTATUS
  > {
    return new VScript.wKeyword<
      VScript.VSocket,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.SampleRateConverter.READSTATUS
    >(
      this,
      "clear_statistic" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
}
