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 = {
  All: (_raw: VScript.DataViews.Subtree<VScript.VSocket>) => new All(_raw),
} as const;
export const lower = { All: (_x: All) => _x.raw.kwl } as const;
export class All implements VScript.Referenceable<"SoftwareUpdate::Data::All"> {
  readonly type_identifier = "SoftwareUpdate::Data::All" as const;
  constructor(readonly raw: VScript.DataViews.Subtree<VScript.VSocket>) {}
  get swu_status(): VScript.rKeyword<
    VScript.VSocket,
    VAPI.SoftwareUpdate.SoftwareUpdateStatus,
    VAPI.SoftwareUpdate.SoftwareUpdateStatus,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      VAPI.SoftwareUpdate.SoftwareUpdateStatus,
      VAPI.SoftwareUpdate.SoftwareUpdateStatus,
      VAPI.SoftwareUpdate.All
    >(this, "swu_status" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }

  /**
    Install
  */
  get install(): VScript.rwKeyword<
    VScript.VSocket,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.rwKeyword<
      VScript.VSocket,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.SoftwareUpdate.All
    >(
      this,
      "install" 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,
    );
  }

  /**
    Reset
  */
  get reset(): VScript.wKeyword<
    VScript.VSocket,
    VAPI.Primitives.Button,
    VAPI.Primitives.Button,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.wKeyword<
      VScript.VSocket,
      VAPI.Primitives.Button,
      VAPI.Primitives.Button,
      VAPI.SoftwareUpdate.All
    >(
      this,
      "reset" as VScript.SysName,
      {
        lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
        lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
      },
      null,
    );
  }
  get version(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.SoftwareUpdate.All
    >(this, "version" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get messages(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.SoftwareUpdate.All
    >(this, "messages" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
  get service_status(): VScript.rKeyword<
    VScript.VSocket,
    string,
    string,
    VAPI.SoftwareUpdate.All
  > {
    return new VScript.rKeyword<
      VScript.VSocket,
      string,
      string,
      VAPI.SoftwareUpdate.All
    >(this, "service_status" as VScript.SysName, {
      lift: (x: any /* FIXME */, _: VScript.VSocket) => x,
      lower: (x: any /* FIXME */, _: VScript.VSocket) => x,
    });
  }
}
export type SoftwareUpdateStatus =
  | "None"
  | "Uploading"
  | "ReadyToInstall"
  | "Installing"
  | "Completed"
  | "Error";
export const Enums = {
  SoftwareUpdateStatus: [
    "None",
    "Uploading",
    "ReadyToInstall",
    "Installing",
    "Completed",
    "Error",
  ] as SoftwareUpdateStatus[],
} as const;
