// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file tracking.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 { TrackingEvent, TrackingStatusStruct } from "./transportShared_pb.js";
import { AttachmentSummary, DateTime, EntityID, EventHeader } from "./shared_pb.js";
import { ETA, TradeTier } from "./tradeShared_pb.js";
import { ActorPayload } from "./actor_pb.js";
import { PartnerPayload } from "./partner_pb.js";

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

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

  /**
   * @generated from field: repeated api.TrackingEvent Events = 3;
   */
  Events: TrackingEvent[] = [];

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

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

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

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

  /**
   * @generated from field: api.TradeTier HUCarrier = 9;
   */
  HUCarrier?: TradeTier;

  /**
   * @generated from field: api.TradeTier HUShipFrom = 10;
   */
  HUShipFrom?: TradeTier;

  /**
   * @generated from field: api.TradeTier HUShipTo = 11;
   */
  HUShipTo?: TradeTier;

  /**
   * @generated from field: api.TradeTier NextHUCarrier = 12;
   */
  NextHUCarrier?: TradeTier;

  /**
   * @generated from field: api.TradeTier NextHUShipFrom = 13;
   */
  NextHUShipFrom?: TradeTier;

  /**
   * @generated from field: api.TradeTier NextHUShipTo = 14;
   */
  NextHUShipTo?: TradeTier;

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TrackingPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "HandlingunitID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "TrackingURL", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Events", kind: "message", T: TrackingEvent, repeated: true },
    { no: 4, name: "NextTrackingID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "NextTrackingURL", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "Status", kind: "message", T: TrackingStatusStruct },
    { no: 8, name: "DispatchedDateTime", kind: "message", T: DateTime },
    { no: 9, name: "HUCarrier", kind: "message", T: TradeTier },
    { no: 10, name: "HUShipFrom", kind: "message", T: TradeTier },
    { no: 11, name: "HUShipTo", kind: "message", T: TradeTier },
    { no: 12, name: "NextHUCarrier", kind: "message", T: TradeTier },
    { no: 13, name: "NextHUShipFrom", kind: "message", T: TradeTier },
    { no: 14, name: "NextHUShipTo", kind: "message", T: TradeTier },
    { no: 15, name: "Attachments", kind: "message", T: AttachmentSummary, repeated: true },
    { no: 16, name: "AttachmentNumber", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 19, name: "TrackingETA", kind: "message", T: ETA },
  ]);

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

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

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

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

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

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

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Tracking";
  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: TrackingPayload },
  ]);

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

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

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

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

/**
 * @generated from message api.TrackingEnrichment
 */
export class TrackingEnrichment extends Message<TrackingEnrichment> {
  /**
   * @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.TrackingEnrichment.Content
   */
  Content: {
    /**
     * @generated from field: api.ActorPayload Actor = 11;
     */
    value: ActorPayload;
    case: "Actor";
  } | {
    /**
     * @generated from field: api.PartnerPayload Partner = 12;
     */
    value: PartnerPayload;
    case: "Partner";
  } | { 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<TrackingEnrichment>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TrackingEnrichment";
  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: 11, name: "Actor", kind: "message", T: ActorPayload, oneof: "Content" },
    { no: 12, name: "Partner", kind: "message", T: PartnerPayload, 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>): TrackingEnrichment {
    return new TrackingEnrichment().fromBinary(bytes, options);
  }

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

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

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

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

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

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

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

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

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

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

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

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

