// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file handlingunit.proto (package api, syntax proto3)
/* eslint-disable */
// @ts-nocheck

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { HandlingunitInformation, HandlingunitStatusStruct, QuantifiedDatedGoodsByExeflow, QuantifiedGoodsByExeflow } from "./warehousingShared_pb.js";
import { TrackingSummary } from "./transportShared_pb.js";
import { AttachmentSummary, ClaimSummary, DateTime, EntityID, EventHeader, MetadataElement } from "./shared_pb.js";
import { ETA } from "./tradeShared_pb.js";
import { ItemPayload } from "./item_pb.js";

/**
 * @generated from message api.HandlingunitPayload
 */
export class HandlingunitPayload extends Message<HandlingunitPayload> {
  /**
   * @generated from field: api.HandlingunitInformation Information = 1;
   */
  Information?: HandlingunitInformation;

  /**
   * @generated from field: bool ContainsGoods = 2;
   */
  ContainsGoods = false;

  /**
   * @generated from field: bool ContainsHUs = 3;
   */
  ContainsHUs = false;

  /**
   * @generated from field: repeated string IncludedHandlingunitIDs = 4;
   */
  IncludedHandlingunitIDs: string[] = [];

  /**
   * @generated from field: api.TrackingSummary CurrentTrackingSummary = 5;
   */
  CurrentTrackingSummary?: TrackingSummary;

  /**
   * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
   *
   * @generated from field: repeated api.MetadataElement MetaData = 6;
   */
  MetaData: MetadataElement[] = [];

  /**
   * Status field is not accessible from APIs
   *
   * @generated from field: api.HandlingunitStatusStruct Status = 7;
   */
  Status?: HandlingunitStatusStruct;

  /**
   * @generated from field: repeated api.QuantifiedGoodsByExeflow PreparedContents = 8;
   */
  PreparedContents: QuantifiedGoodsByExeflow[] = [];

  /**
   * @generated from field: repeated api.QuantifiedDatedGoodsByExeflow ReceivedContents = 9;
   */
  ReceivedContents: QuantifiedDatedGoodsByExeflow[] = [];

  /**
   * @generated from field: api.DateTime DispatchedDateTime = 10;
   */
  DispatchedDateTime?: DateTime;

  /**
   * @generated from field: repeated string TrackingIDs = 11;
   */
  TrackingIDs: string[] = [];

  /**
   * @generated from field: repeated api.AttachmentSummary Attachments = 12;
   */
  Attachments: AttachmentSummary[] = [];

  /**
   * @generated from field: int32 AttachmentNumber = 13;
   */
  AttachmentNumber = 0;

  /**
   * @generated from field: repeated api.ClaimSummary Claims = 14;
   */
  Claims: ClaimSummary[] = [];

  /**
   * @generated from field: int32 ClaimNumber = 15;
   */
  ClaimNumber = 0;

  /**
   * @generated from field: api.ETA HandlingunitETA = 16;
   */
  HandlingunitETA?: ETA;

  /**
   * @generated from field: api.ETA TrackingETA = 17;
   */
  TrackingETA?: ETA;

  /**
   * @generated from field: string ParentHU = 18;
   */
  ParentHU = "";

  constructor(data?: PartialMessage<HandlingunitPayload>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.HandlingunitPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Information", kind: "message", T: HandlingunitInformation },
    { no: 2, name: "ContainsGoods", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 3, name: "ContainsHUs", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 4, name: "IncludedHandlingunitIDs", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 5, name: "CurrentTrackingSummary", kind: "message", T: TrackingSummary },
    { no: 6, name: "MetaData", kind: "message", T: MetadataElement, repeated: true },
    { no: 7, name: "Status", kind: "message", T: HandlingunitStatusStruct },
    { no: 8, name: "PreparedContents", kind: "message", T: QuantifiedGoodsByExeflow, repeated: true },
    { no: 9, name: "ReceivedContents", kind: "message", T: QuantifiedDatedGoodsByExeflow, repeated: true },
    { no: 10, name: "DispatchedDateTime", kind: "message", T: DateTime },
    { no: 11, name: "TrackingIDs", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 12, name: "Attachments", kind: "message", T: AttachmentSummary, repeated: true },
    { no: 13, name: "AttachmentNumber", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 14, name: "Claims", kind: "message", T: ClaimSummary, repeated: true },
    { no: 15, name: "ClaimNumber", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 16, name: "HandlingunitETA", kind: "message", T: ETA },
    { no: 17, name: "TrackingETA", kind: "message", T: ETA },
    { no: 18, name: "ParentHU", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HandlingunitPayload {
    return new HandlingunitPayload().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HandlingunitPayload {
    return new HandlingunitPayload().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HandlingunitPayload {
    return new HandlingunitPayload().fromJsonString(jsonString, options);
  }

  static equals(a: HandlingunitPayload | PlainMessage<HandlingunitPayload> | undefined, b: HandlingunitPayload | PlainMessage<HandlingunitPayload> | undefined): boolean {
    return proto3.util.equals(HandlingunitPayload, a, b);
  }
}

/**
 * @generated from message api.Handlingunit
 */
export class Handlingunit extends Message<Handlingunit> {
  /**
   * @generated from field: api.EventHeader LastEventHeader = 1;
   */
  LastEventHeader?: EventHeader;

  /**
   * @generated from field: api.EntityID ID = 2;
   */
  ID?: EntityID;

  /**
   * @generated from field: api.HandlingunitPayload Payload = 3;
   */
  Payload?: HandlingunitPayload;

  constructor(data?: PartialMessage<Handlingunit>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Handlingunit";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "LastEventHeader", kind: "message", T: EventHeader },
    { no: 2, name: "ID", kind: "message", T: EntityID },
    { no: 3, name: "Payload", kind: "message", T: HandlingunitPayload },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Handlingunit {
    return new Handlingunit().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Handlingunit {
    return new Handlingunit().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Handlingunit {
    return new Handlingunit().fromJsonString(jsonString, options);
  }

  static equals(a: Handlingunit | PlainMessage<Handlingunit> | undefined, b: Handlingunit | PlainMessage<Handlingunit> | undefined): boolean {
    return proto3.util.equals(Handlingunit, a, b);
  }
}

/**
 * @generated from message api.HandlingunitEnrichment
 */
export class HandlingunitEnrichment extends Message<HandlingunitEnrichment> {
  /**
   * @generated from field: string ParentEventID = 1;
   */
  ParentEventID = "";

  /**
   * @generated from field: string EntityName = 2;
   */
  EntityName = "";

  /**
   * @generated from field: string EntityRefID = 3;
   */
  EntityRefID = "";

  /**
   * @generated from field: string RefFilter = 4;
   */
  RefFilter = "";

  /**
   * @generated from field: string MergePath = 5;
   */
  MergePath = "";

  /**
   * @generated from oneof api.HandlingunitEnrichment.Content
   */
  Content: {
    /**
     * @generated from field: api.ItemPayload Item = 10;
     */
    value: ItemPayload;
    case: "Item";
  } | { case: undefined; value?: undefined } = { case: undefined };

  /**
   * @generated from field: string Project = 6;
   */
  Project = "";

  /**
   * @generated from field: string ParentEntityName = 7;
   */
  ParentEntityName = "";

  /**
   * @generated from field: string ParentEntityID = 8;
   */
  ParentEntityID = "";

  constructor(data?: PartialMessage<HandlingunitEnrichment>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.HandlingunitEnrichment";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ParentEventID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "EntityName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "EntityRefID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "RefFilter", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "MergePath", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 10, name: "Item", kind: "message", T: ItemPayload, oneof: "Content" },
    { no: 6, name: "Project", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "ParentEntityName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 8, name: "ParentEntityID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HandlingunitEnrichment {
    return new HandlingunitEnrichment().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HandlingunitEnrichment {
    return new HandlingunitEnrichment().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HandlingunitEnrichment {
    return new HandlingunitEnrichment().fromJsonString(jsonString, options);
  }

  static equals(a: HandlingunitEnrichment | PlainMessage<HandlingunitEnrichment> | undefined, b: HandlingunitEnrichment | PlainMessage<HandlingunitEnrichment> | undefined): boolean {
    return proto3.util.equals(HandlingunitEnrichment, a, b);
  }
}

/**
 * @generated from message api.HandlingunitTriplet
 */
export class HandlingunitTriplet extends Message<HandlingunitTriplet> {
  /**
   * @generated from field: api.Handlingunit Current = 1;
   */
  Current?: Handlingunit;

  /**
   * @generated from field: api.Handlingunit Previous = 2;
   */
  Previous?: Handlingunit;

  /**
   * @generated from field: api.Handlingunit LastEvent = 3;
   */
  LastEvent?: Handlingunit;

  constructor(data?: PartialMessage<HandlingunitTriplet>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.HandlingunitTriplet";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: Handlingunit },
    { no: 2, name: "Previous", kind: "message", T: Handlingunit },
    { no: 3, name: "LastEvent", kind: "message", T: Handlingunit },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HandlingunitTriplet {
    return new HandlingunitTriplet().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HandlingunitTriplet {
    return new HandlingunitTriplet().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HandlingunitTriplet {
    return new HandlingunitTriplet().fromJsonString(jsonString, options);
  }

  static equals(a: HandlingunitTriplet | PlainMessage<HandlingunitTriplet> | undefined, b: HandlingunitTriplet | PlainMessage<HandlingunitTriplet> | undefined): boolean {
    return proto3.util.equals(HandlingunitTriplet, a, b);
  }
}

