// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file executionflow.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 { AttachmentSummary, ClaimSummary, DateTime, EntityID, EventHeader, MetadataElement } from "./shared_pb.js";
import { ETA, ETAbyHU, ExecutionflowStatusStruct, ExeFlowLine, OrderRequestedMilestones, TradeTier } from "./tradeShared_pb.js";
import { HandlingunitSummary } from "./warehousingShared_pb.js";
import { ItemPayload } from "./item_pb.js";
import { ActorPayload } from "./actor_pb.js";
import { PartnerPayload } from "./partner_pb.js";

/**
 * @generated from message api.ExecutionflowPayload
 */
export class ExecutionflowPayload extends Message<ExecutionflowPayload> {
  /**
   * @generated from field: api.DateTime CreationDateTime = 1;
   */
  CreationDateTime?: DateTime;

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

  /**
   * 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 = 3;
   */
  MetaData: MetadataElement[] = [];

  /**
   * Where to ship the order from
   *
   * @generated from field: api.TradeTier ShipFrom = 4;
   */
  ShipFrom?: TradeTier;

  /**
   * Where to ship the order to
   *
   * @generated from field: api.TradeTier ShipTo = 5;
   */
  ShipTo?: TradeTier;

  /**
   * Definition of the order carrier
   *
   * @generated from field: api.TradeTier Carrier = 6;
   */
  Carrier?: TradeTier;

  /**
   * Type of carrier service
   *
   * @generated from field: string CarrierService = 7;
   */
  CarrierService = "";

  /**
   * @generated from field: api.OrderRequestedMilestones RequestedMilestones = 8;
   */
  RequestedMilestones?: OrderRequestedMilestones;

  /**
   * @generated from field: repeated api.ExeFlowLine Lines = 9;
   */
  Lines: ExeFlowLine[] = [];

  /**
   * @generated from field: repeated api.HandlingunitSummary Handlingunits = 11;
   */
  Handlingunits: HandlingunitSummary[] = [];

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

  /**
   * @generated from field: bool ShipFromAcked = 14;
   */
  ShipFromAcked = false;

  /**
   * @generated from field: bool ShipToAcked = 15;
   */
  ShipToAcked = false;

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

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

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

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

  /**
   * //Estimated Time of Arrival for the HandlingUnit(s) created for theis executionflow
   *
   * @generated from field: repeated api.ETAbyHU HandlingunitETAs = 20;
   */
  HandlingunitETAs: ETAbyHU[] = [];

  /**
   * Estimated Time of Arrival for the Executionflow, computed with other ETAs received directly or from HUs
   *
   * @generated from field: api.ETA ExecutionflowETA = 21;
   */
  ExecutionflowETA?: ETA;

  /**
   * @generated from field: api.ETA ExecutionflowETAComputed = 22;
   */
  ExecutionflowETAComputed?: ETA;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ExecutionflowPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "CreationDateTime", kind: "message", T: DateTime },
    { no: 2, name: "OrderID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "MetaData", kind: "message", T: MetadataElement, repeated: true },
    { no: 4, name: "ShipFrom", kind: "message", T: TradeTier },
    { no: 5, name: "ShipTo", kind: "message", T: TradeTier },
    { no: 6, name: "Carrier", kind: "message", T: TradeTier },
    { no: 7, name: "CarrierService", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 8, name: "RequestedMilestones", kind: "message", T: OrderRequestedMilestones },
    { no: 9, name: "Lines", kind: "message", T: ExeFlowLine, repeated: true },
    { no: 11, name: "Handlingunits", kind: "message", T: HandlingunitSummary, repeated: true },
    { no: 13, name: "Status", kind: "message", T: ExecutionflowStatusStruct },
    { no: 14, name: "ShipFromAcked", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 15, name: "ShipToAcked", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 16, name: "Attachments", kind: "message", T: AttachmentSummary, repeated: true },
    { no: 17, name: "AttachmentNumber", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 18, name: "Claims", kind: "message", T: ClaimSummary, repeated: true },
    { no: 19, name: "ClaimNumber", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 20, name: "HandlingunitETAs", kind: "message", T: ETAbyHU, repeated: true },
    { no: 21, name: "ExecutionflowETA", kind: "message", T: ETA },
    { no: 22, name: "ExecutionflowETAComputed", kind: "message", T: ETA },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.ExecutionflowEnrichment
 */
export class ExecutionflowEnrichment extends Message<ExecutionflowEnrichment> {
  /**
   * @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.ExecutionflowEnrichment.Content
   */
  Content: {
    /**
     * @generated from field: api.ItemPayload Item = 10;
     */
    value: ItemPayload;
    case: "Item";
  } | {
    /**
     * @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<ExecutionflowEnrichment>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ExecutionflowEnrichment";
  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: 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>): ExecutionflowEnrichment {
    return new ExecutionflowEnrichment().fromBinary(bytes, options);
  }

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

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

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

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

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

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

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

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

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

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

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

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

