// @generated by protobuf-ts 2.9.6
// @generated from protobuf file "tradeShared.proto" (package "api", syntax proto3)
// tslint:disable
import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import { WireType } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import { UnknownFieldHandler } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { reflectionMergePartial } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { ClaimSummary } from "./shared";
import { AttachmentSummary } from "./shared";
import { PartnerPayload } from "./partner";
import { Interlocutor } from "./repositoryShared";
import { ActorPayload } from "./actor";
import { QuantityByLV } from "./warehousingShared";
import { QuantityInLV } from "./warehousingShared";
import { QuantityVolume } from "./shared";
import { QuantityWeight } from "./shared";
import { QuantifiedGoodsByHU } from "./warehousingShared";
import { MetadataElement } from "./shared";
import { QuantifiedRequestedGoods } from "./warehousingShared";
import { DateTime } from "./shared";
// _warehousing_

/**
 *
 * 	Structure to reference another entity with a reason
 *
 * @generated from protobuf message api.ReferencedID
 */
export interface ReferencedID {
    /**
     * @generated from protobuf field: string RefID = 1 [json_name = "RefID"];
     */
    refID: string;
    /**
     * @generated from protobuf field: string Reason = 2 [json_name = "Reason"];
     */
    reason: string;
}
/**
 * @generated from protobuf message api.OrderRequestedMilestones
 */
export interface OrderRequestedMilestones {
    /**
     * @generated from protobuf field: api.DateTime RequestedDeliveryDateTime = 1 [json_name = "RequestedDeliveryDateTime"];
     */
    requestedDeliveryDateTime?: DateTime;
    /**
     * @generated from protobuf field: api.DateTime RequestedPickUpDateTime = 2 [json_name = "RequestedPickUpDateTime"];
     */
    requestedPickUpDateTime?: DateTime;
    /**
     * @generated from protobuf field: api.DateTime RequestedShipDateTime = 3 [json_name = "RequestedShipDateTime"];
     */
    requestedShipDateTime?: DateTime;
}
/**
 *
 * 	Definition of trade.Order.
 * 	It defines the requested goods
 *
 * @generated from protobuf message api.OrderLine
 */
export interface OrderLine {
    /**
     * @generated from protobuf field: string LineID = 1 [json_name = "LineID"];
     */
    lineID: string;
    /**
     * @generated from protobuf field: api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"];
     */
    requestedContent?: QuantifiedRequestedGoods; // Option to prevent metadata definition in UI
    /**
     * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
     *
     * @generated from protobuf field: repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"];
     */
    metaData: MetadataElement[];
    /**
     * @generated from protobuf field: api.GoodsMetrics RequestedMetrics = 4 [json_name = "RequestedMetrics"];
     */
    requestedMetrics?: GoodsMetrics;
}
/**
 *
 * 	Definition of trade. Executionflow lines.
 * 	It defines the requested goods and the prepared goods
 *
 * @generated from protobuf message api.ExeFlowLine
 */
export interface ExeFlowLine {
    /**
     * @generated from protobuf field: string LineID = 1 [json_name = "LineID"];
     */
    lineID: string;
    /**
     * @generated from protobuf field: api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"];
     */
    requestedContent?: QuantifiedRequestedGoods;
    // TODO option to prevent metadata definition in UI

    /**
     * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
     *
     * @generated from protobuf field: repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"];
     */
    metaData: MetadataElement[];
    /**
     * @generated from protobuf field: repeated api.QuantifiedGoodsByHU ShippedContents = 4 [json_name = "ShippedContents"];
     */
    shippedContents: QuantifiedGoodsByHU[];
    /**
     * @generated from protobuf field: bool PreparedItemDiffersFromRequestedItem = 5 [json_name = "PreparedItemDiffersFromRequestedItem"];
     */
    preparedItemDiffersFromRequestedItem: boolean; // This field will be computed at aggregation, not exposed through APIs
    /**
     * @generated from protobuf field: bool ReceivedItemDiffersFromRequestedItem = 6 [json_name = "ReceivedItemDiffersFromRequestedItem"];
     */
    receivedItemDiffersFromRequestedItem: boolean; // This field will be computed at aggregation, not exposed through APIs
    /**
     * @generated from protobuf field: api.GoodsMetrics RequestedMetrics = 7 [json_name = "RequestedMetrics"];
     */
    requestedMetrics?: GoodsMetrics;
    /**
     * @generated from protobuf field: api.GoodsMetrics TotalPreparedMetrics = 8 [json_name = "TotalPreparedMetrics"];
     */
    totalPreparedMetrics?: GoodsMetrics;
    /**
     * @generated from protobuf field: api.GoodsMetrics TotalReceivedMetrics = 9 [json_name = "TotalReceivedMetrics"];
     */
    totalReceivedMetrics?: GoodsMetrics;
    // GoodsMetrics TotalNonPreparedMetrics = 10 
    //    [
    //         (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {read_only: true}, (validate.rules).message.unauthorized = true 
    //    ];
    // GoodsMetrics TotalNonReceivedMetrics = 11 
    //    [
    //         (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {read_only: true}, (validate.rules).message.unauthorized = true 
    //    ];

    /**
     * @generated from protobuf field: bool CreatedFromHU = 12 [json_name = "CreatedFromHU"];
     */
    createdFromHU: boolean;
}
/**
 * @generated from protobuf message api.GoodsMetrics
 */
export interface GoodsMetrics {
    /**
     * @generated from protobuf field: api.QuantityWeight GrossWeight = 1 [json_name = "GrossWeight"];
     */
    grossWeight?: QuantityWeight;
    /**
     * @generated from protobuf field: api.QuantityVolume Volume = 2 [json_name = "Volume"];
     */
    volume?: QuantityVolume;
    /**
     * @generated from protobuf field: api.QuantityInLV QuantityInBaseLV = 3 [json_name = "QuantityInBaseLV"];
     */
    quantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: repeated api.QuantityByLV QuantityByLVs = 4 [json_name = "QuantityByLVs"];
     */
    quantityByLVs: QuantityByLV[];
    /**
     * @generated from protobuf field: string LVDetailledQuantity = 5 [json_name = "LVDetailledQuantity"];
     */
    lVDetailledQuantity: string;
}
// 
// 	Reference to Actor entity from trade entities.
// 	It allows enrichment or definition by value.
// 
//   - Partner by ref, with a actor by value : PartnerID, Actor
//   - Partner by ref, with its actor by ref : PartnerID, ActorID
// 
//   If PartnerID is empty, ActorID is forbidden
//   If PartnerID is filled, Actor or ActorID is mandatory

/**
 * @generated from protobuf message api.TradeTier
 */
export interface TradeTier {
    /**
     * @generated from protobuf field: string ActorID = 2 [json_name = "ActorID"];
     */
    actorID: string;
    /**
     * @generated from protobuf field: api.ActorPayload Actor = 4 [json_name = "Actor"];
     */
    actor?: ActorPayload;
    /**
     * @generated from protobuf field: api.Interlocutor Contact = 5 [json_name = "Contact"];
     */
    contact?: Interlocutor;
    /**
     * Must be an ID of an existing partner
     *
     * @generated from protobuf field: string PartnerID = 6 [json_name = "PartnerID"];
     */
    partnerID: string;
    /**
     * @generated from protobuf field: api.PartnerPayload Partner = 7 [json_name = "Partner"];
     */
    partner?: PartnerPayload;
}
/**
 * @generated from protobuf message api.ETA
 */
export interface ETA {
    /**
     *    DateTime ETA = 1;                  // removed for 1.7
     *    DateTime WhenETAWasCalculated = 2; // removed for 1.7
     *
     * @generated from protobuf field: api.DateTime StartETA = 3 [json_name = "StartETA"];
     */
    startETA?: DateTime;
    /**
     * @generated from protobuf field: api.DateTime EndETA = 4 [json_name = "EndETA"];
     */
    endETA?: DateTime;
    /**
     * @generated from protobuf field: api.DateTime ActualDate = 5 [json_name = "ActualDate"];
     */
    actualDate?: DateTime;
    /**
     * @generated from protobuf field: string Comment = 6 [json_name = "Comment"];
     */
    comment: string;
}
/**
 * @generated from protobuf message api.ETAbyHU
 */
export interface ETAbyHU {
    /**
     * @generated from protobuf field: string HandlingunitID = 1 [json_name = "HandlingunitID"];
     */
    handlingunitID: string;
    /**
     * @generated from protobuf field: api.ETA ETA = 2 [json_name = "ETA"];
     */
    eTA?: ETA;
}
/**
 * @generated from protobuf message api.ETAbyExecutionflow
 */
export interface ETAbyExecutionflow {
    /**
     * @generated from protobuf field: string ExecutionflowID = 1 [json_name = "ExecutionflowID"];
     */
    executionflowID: string;
    /**
     * @generated from protobuf field: api.ETA ETA = 2 [json_name = "ETA"];
     */
    eTA?: ETA;
}
/**
 *
 * 	Order entity status structure
 *
 * @generated from protobuf message api.OrderStatus
 */
export interface OrderStatus {
    /**
     * @generated from protobuf field: api.OrderStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: OrderStatusCode;
    /**
     * @generated from protobuf field: string Date = 2 [json_name = "Date"];
     */
    date: string;
    /**
     * Status effective date. Set by the event's RefDate that triggered the status change.
     *
     * @generated from protobuf field: api.DateTime ActualDate = 3 [json_name = "ActualDate"];
     */
    actualDate?: DateTime;
}
/**
 *
 * 	OrderStatusStruct statuses structure
 *
 * @generated from protobuf message api.OrderStatusStruct
 */
export interface OrderStatusStruct {
    /**
     * @generated from protobuf field: api.OrderStatus Current = 1 [json_name = "Current"];
     */
    current?: OrderStatus; // Current status of the Order entity
    /**
     * @generated from protobuf field: repeated api.OrderStatus History = 2 [json_name = "History"];
     */
    history: OrderStatus[]; // List of all status history of the Order entity
    /**
     * @generated from protobuf field: string CreationDate = 3 [json_name = "CreationDate"];
     */
    creationDate: string;
}
/**
 *
 * 	Executionflow entity status structure
 *
 * @generated from protobuf message api.ExecutionflowStatus
 */
export interface ExecutionflowStatus {
    /**
     * @generated from protobuf field: api.ExecutionflowStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: ExecutionflowStatusCode;
    /**
     * @generated from protobuf field: string Date = 2 [json_name = "Date"];
     */
    date: string;
    /**
     * Status effective date. Set by the event's RefDate that triggered the status change.
     *
     * @generated from protobuf field: api.DateTime ActualDate = 3 [json_name = "ActualDate"];
     */
    actualDate?: DateTime;
}
/**
 *
 * 	ExecutionflowStatusStruct statuses structure
 *
 * @generated from protobuf message api.ExecutionflowStatusStruct
 */
export interface ExecutionflowStatusStruct {
    /**
     * @generated from protobuf field: api.ExecutionflowStatus Current = 1 [json_name = "Current"];
     */
    current?: ExecutionflowStatus; // Current status of the Executionflow entity
    /**
     * @generated from protobuf field: repeated api.ExecutionflowStatus History = 2 [json_name = "History"];
     */
    history: ExecutionflowStatus[]; // List of all status history of the Executionflow entity
    /**
     * @generated from protobuf field: uint32 Version = 3 [json_name = "Version"];
     */
    version: number;
    /**
     * @generated from protobuf field: string CreationDate = 4 [json_name = "CreationDate"];
     */
    creationDate: string;
}
/**
 * @generated from protobuf message api.ExecutionflowSummary
 */
export interface ExecutionflowSummary {
    /**
     * @generated from protobuf field: string ExecutionflowID = 1 [json_name = "ExecutionflowID"];
     */
    executionflowID: string;
    /**
     * @generated from protobuf field: api.ExecutionflowStatus Status = 2 [json_name = "Status"];
     */
    status?: ExecutionflowStatus;
    /**
     * Where to ship the executionflow from
     *
     * @generated from protobuf field: api.TradeTier ShipFrom = 7 [json_name = "ShipFrom"];
     */
    shipFrom?: TradeTier;
    /**
     * Where to ship the executionflow to
     *
     * @generated from protobuf field: api.TradeTier ShipTo = 8 [json_name = "ShipTo"];
     */
    shipTo?: TradeTier;
    /**
     * @generated from protobuf field: api.TradeTier Carrier = 6 [json_name = "Carrier"];
     */
    carrier?: TradeTier;
    /**
     * @generated from protobuf field: repeated api.AttachmentSummary Attachments = 18 [json_name = "Attachments"];
     */
    attachments: AttachmentSummary[];
    /**
     * @generated from protobuf field: int32 AttachmentNumber = 19 [json_name = "AttachmentNumber"];
     */
    attachmentNumber: number;
    /**
     * @generated from protobuf field: repeated api.ClaimSummary Claims = 20 [json_name = "Claims"];
     */
    claims: ClaimSummary[];
    /**
     * @generated from protobuf field: int32 ClaimNumber = 21 [json_name = "ClaimNumber"];
     */
    claimNumber: number;
}
/**
 * Not a GS1 Object.
 * Temporary version
 *
 * @generated from protobuf message api.ExecutionGraph
 */
export interface ExecutionGraph {
    /**
     * @generated from protobuf field: repeated string ParcelIDs = 1 [json_name = "ParcelIDs"];
     */
    parcelIDs: string[];
}
/**
 *
 * 	All statuses for Order entity
 *
 * Order statuses are mainly computed from the executionflowupdated event, by getting the less-advanced executionflow status.
 *
 * https://hardisgroupe.sharepoint.com/:p:/r/sites/N1/_layouts/15/Doc.aspx?sourcedoc=%7B5ECE4F90-6775-4EDA-BC25-7AD4982F8415%7D&file=Statuts%20N1_v2.pptx&action=edit&mobileredirect=true
 *
 * @generated from protobuf enum api.OrderStatusCode
 */
export enum OrderStatusCode {
    /**
     * @generated from protobuf enum value: ORDER_0000_UNKNOWN = 0;
     */
    ORDER_0000_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: ORDER_0300_UNDETERMINED = 300;
     */
    ORDER_0300_UNDETERMINED = 300,
    /**
     * @generated from protobuf enum value: ORDER_0500_READY_TO_ALLOCATE = 500;
     */
    ORDER_0500_READY_TO_ALLOCATE = 500,
    /**
     * @generated from protobuf enum value: ORDER_1000_ALLOCATING = 1000;
     */
    ORDER_1000_ALLOCATING = 1000,
    /**
     * @generated from protobuf enum value: ORDER_1500_ALLOCATION_ERROR = 1500;
     */
    ORDER_1500_ALLOCATION_ERROR = 1500,
    /**
     * @generated from protobuf enum value: ORDER_1800_ALLOCATION_COMPLETED = 1800;
     */
    ORDER_1800_ALLOCATION_COMPLETED = 1800,
    /**
     * @generated from protobuf enum value: ORDER_2000_READY_TO_PREPARE = 2000;
     */
    ORDER_2000_READY_TO_PREPARE = 2000,
    /**
     * @generated from protobuf enum value: ORDER_2500_PREPARATION_ERROR = 2500;
     */
    ORDER_2500_PREPARATION_ERROR = 2500,
    /**
     * @generated from protobuf enum value: ORDER_3000_PREPARING = 3000;
     */
    ORDER_3000_PREPARING = 3000,
    /**
     * @generated from protobuf enum value: ORDER_3500_PREPARATION_COMPLETED = 3500;
     */
    ORDER_3500_PREPARATION_COMPLETED = 3500,
    /**
     * @generated from protobuf enum value: ORDER_4000_READY_TO_TRANSPORT = 4000;
     */
    ORDER_4000_READY_TO_TRANSPORT = 4000,
    /**
     * @generated from protobuf enum value: ORDER_4500_TRANSPORT_ERROR = 4500;
     */
    ORDER_4500_TRANSPORT_ERROR = 4500,
    /**
     * @generated from protobuf enum value: ORDER_5000_TRANSPORTING = 5000;
     */
    ORDER_5000_TRANSPORTING = 5000,
    /**
     * @generated from protobuf enum value: ORDER_5500_TRANSPORT_COMPLETED = 5500;
     */
    ORDER_5500_TRANSPORT_COMPLETED = 5500,
    /**
     * @generated from protobuf enum value: ORDER_6000_READY_TO_RECEIVE = 6000;
     */
    ORDER_6000_READY_TO_RECEIVE = 6000,
    /**
     * @generated from protobuf enum value: ORDER_6500_RECEPTION_ERROR = 6500;
     */
    ORDER_6500_RECEPTION_ERROR = 6500,
    /**
     * @generated from protobuf enum value: ORDER_7000_RECEIVING = 7000;
     */
    ORDER_7000_RECEIVING = 7000,
    /**
     * @generated from protobuf enum value: ORDER_7500_RECEPTION_COMPLETED = 7500;
     */
    ORDER_7500_RECEPTION_COMPLETED = 7500,
    /**
     * @generated from protobuf enum value: ORDER_8000_COMPLETED = 8000;
     */
    ORDER_8000_COMPLETED = 8000,
    /**
     * @generated from protobuf enum value: ORDER_8500_CANCELLED = 8500;
     */
    ORDER_8500_CANCELLED = 8500
}
/**
 *
 * 	All statuses for Executionflow entity
 *
 * The executionflow statuses are the most complexe statuses to get. They are computed from handlingunitupdated.
 *
 * In addition, because we do not know in advance how the execution flow will be prepare, we need to compare the prepared quantity the requested quantity.
 *
 * https://hardisgroupe.sharepoint.com/:p:/r/sites/N1/_layouts/15/Doc.aspx?sourcedoc=%7B5ECE4F90-6775-4EDA-BC25-7AD4982F8415%7D&file=Statuts%20N1_v2.pptx&action=edit&mobileredirect=true
 *
 * @generated from protobuf enum api.ExecutionflowStatusCode
 */
export enum ExecutionflowStatusCode {
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_0000_UNKNOWN = 0;
     */
    EXECUTIONFLOW_0000_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_0050_UNDETERMINED = 50;
     */
    EXECUTIONFLOW_0050_UNDETERMINED = 50,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_0300_READY_TO_ALLOCATE = 300;
     */
    EXECUTIONFLOW_0300_READY_TO_ALLOCATE = 300,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_0500_ALLOCATING = 500;
     */
    EXECUTIONFLOW_0500_ALLOCATING = 500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_1000_ALLOCATION_ERROR = 1000;
     */
    EXECUTIONFLOW_1000_ALLOCATION_ERROR = 1000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_1300_ALLOCATION_COMPLETED = 1300;
     */
    EXECUTIONFLOW_1300_ALLOCATION_COMPLETED = 1300,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_1500_READY_TO_PREPARE = 1500;
     */
    EXECUTIONFLOW_1500_READY_TO_PREPARE = 1500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_2000_PREPARATION_ERROR = 2000;
     */
    EXECUTIONFLOW_2000_PREPARATION_ERROR = 2000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_2500_PREPARING = 2500;
     */
    EXECUTIONFLOW_2500_PREPARING = 2500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_3000_PREPARATION_COMPLETED = 3000;
     */
    EXECUTIONFLOW_3000_PREPARATION_COMPLETED = 3000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_3500_READY_TO_TRANSPORT = 3500;
     */
    EXECUTIONFLOW_3500_READY_TO_TRANSPORT = 3500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_4000_TRANSPORT_ERROR = 4000;
     */
    EXECUTIONFLOW_4000_TRANSPORT_ERROR = 4000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_4500_TRANSPORTING = 4500;
     */
    EXECUTIONFLOW_4500_TRANSPORTING = 4500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_5000_TRANSPORT_COMPLETED = 5000;
     */
    EXECUTIONFLOW_5000_TRANSPORT_COMPLETED = 5000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_5500_READY_TO_RECEIVE = 5500;
     */
    EXECUTIONFLOW_5500_READY_TO_RECEIVE = 5500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_6000_RECEPTION_ERROR = 6000;
     */
    EXECUTIONFLOW_6000_RECEPTION_ERROR = 6000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_6500_RECEIVING = 6500;
     */
    EXECUTIONFLOW_6500_RECEIVING = 6500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_7000_RECEPTION_COMPLETED = 7000;
     */
    EXECUTIONFLOW_7000_RECEPTION_COMPLETED = 7000,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_7500_COMPLETED = 7500;
     */
    EXECUTIONFLOW_7500_COMPLETED = 7500,
    /**
     * @generated from protobuf enum value: EXECUTIONFLOW_8000_CANCELLED = 8000;
     */
    EXECUTIONFLOW_8000_CANCELLED = 8000
}
// @generated message type with reflection information, may provide speed optimized methods
class ReferencedID$Type extends MessageType<ReferencedID> {
    constructor() {
        super("api.ReferencedID", [
            { no: 1, name: "RefID", kind: "scalar", jsonName: "RefID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "Reason", kind: "scalar", jsonName: "Reason", T: 9 /*ScalarType.STRING*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "Structure to reference another entity with a reason" } } });
    }
    create(value?: PartialMessage<ReferencedID>): ReferencedID {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.refID = "";
        message.reason = "";
        if (value !== undefined)
            reflectionMergePartial<ReferencedID>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReferencedID): ReferencedID {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string RefID = 1 [json_name = "RefID"];*/ 1:
                    message.refID = reader.string();
                    break;
                case /* string Reason = 2 [json_name = "Reason"];*/ 2:
                    message.reason = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ReferencedID, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string RefID = 1 [json_name = "RefID"]; */
        if (message.refID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.refID);
        /* string Reason = 2 [json_name = "Reason"]; */
        if (message.reason !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.reason);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ReferencedID
 */
export const ReferencedID = new ReferencedID$Type();
// @generated message type with reflection information, may provide speed optimized methods
class OrderRequestedMilestones$Type extends MessageType<OrderRequestedMilestones> {
    constructor() {
        super("api.OrderRequestedMilestones", [
            { no: 1, name: "RequestedDeliveryDateTime", kind: "message", jsonName: "RequestedDeliveryDateTime", T: () => DateTime },
            { no: 2, name: "RequestedPickUpDateTime", kind: "message", jsonName: "RequestedPickUpDateTime", T: () => DateTime },
            { no: 3, name: "RequestedShipDateTime", kind: "message", jsonName: "RequestedShipDateTime", T: () => DateTime }
        ]);
    }
    create(value?: PartialMessage<OrderRequestedMilestones>): OrderRequestedMilestones {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<OrderRequestedMilestones>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OrderRequestedMilestones): OrderRequestedMilestones {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime RequestedDeliveryDateTime = 1 [json_name = "RequestedDeliveryDateTime"];*/ 1:
                    message.requestedDeliveryDateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.requestedDeliveryDateTime);
                    break;
                case /* api.DateTime RequestedPickUpDateTime = 2 [json_name = "RequestedPickUpDateTime"];*/ 2:
                    message.requestedPickUpDateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.requestedPickUpDateTime);
                    break;
                case /* api.DateTime RequestedShipDateTime = 3 [json_name = "RequestedShipDateTime"];*/ 3:
                    message.requestedShipDateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.requestedShipDateTime);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: OrderRequestedMilestones, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime RequestedDeliveryDateTime = 1 [json_name = "RequestedDeliveryDateTime"]; */
        if (message.requestedDeliveryDateTime)
            DateTime.internalBinaryWrite(message.requestedDeliveryDateTime, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* api.DateTime RequestedPickUpDateTime = 2 [json_name = "RequestedPickUpDateTime"]; */
        if (message.requestedPickUpDateTime)
            DateTime.internalBinaryWrite(message.requestedPickUpDateTime, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* api.DateTime RequestedShipDateTime = 3 [json_name = "RequestedShipDateTime"]; */
        if (message.requestedShipDateTime)
            DateTime.internalBinaryWrite(message.requestedShipDateTime, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.OrderRequestedMilestones
 */
export const OrderRequestedMilestones = new OrderRequestedMilestones$Type();
// @generated message type with reflection information, may provide speed optimized methods
class OrderLine$Type extends MessageType<OrderLine> {
    constructor() {
        super("api.OrderLine", [
            { no: 1, name: "LineID", kind: "scalar", jsonName: "LineID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "RequestedContent", kind: "message", jsonName: "RequestedContent", T: () => QuantifiedRequestedGoods },
            { no: 3, name: "MetaData", kind: "message", jsonName: "MetaData", repeat: 1 /*RepeatType.PACKED*/, T: () => MetadataElement, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)" }, "api.metadata": true, "api.aggKey": "Key", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Order", Group: "order" }] } } },
            { no: 4, name: "RequestedMetrics", kind: "message", jsonName: "RequestedMetrics", T: () => GoodsMetrics, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ]);
    }
    create(value?: PartialMessage<OrderLine>): OrderLine {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lineID = "";
        message.metaData = [];
        if (value !== undefined)
            reflectionMergePartial<OrderLine>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OrderLine): OrderLine {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string LineID = 1 [json_name = "LineID"];*/ 1:
                    message.lineID = reader.string();
                    break;
                case /* api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"];*/ 2:
                    message.requestedContent = QuantifiedRequestedGoods.internalBinaryRead(reader, reader.uint32(), options, message.requestedContent);
                    break;
                case /* repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"];*/ 3:
                    message.metaData.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.GoodsMetrics RequestedMetrics = 4 [json_name = "RequestedMetrics"];*/ 4:
                    message.requestedMetrics = GoodsMetrics.internalBinaryRead(reader, reader.uint32(), options, message.requestedMetrics);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: OrderLine, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string LineID = 1 [json_name = "LineID"]; */
        if (message.lineID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.lineID);
        /* api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"]; */
        if (message.requestedContent)
            QuantifiedRequestedGoods.internalBinaryWrite(message.requestedContent, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"]; */
        for (let i = 0; i < message.metaData.length; i++)
            MetadataElement.internalBinaryWrite(message.metaData[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.GoodsMetrics RequestedMetrics = 4 [json_name = "RequestedMetrics"]; */
        if (message.requestedMetrics)
            GoodsMetrics.internalBinaryWrite(message.requestedMetrics, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.OrderLine
 */
export const OrderLine = new OrderLine$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExeFlowLine$Type extends MessageType<ExeFlowLine> {
    constructor() {
        super("api.ExeFlowLine", [
            { no: 1, name: "LineID", kind: "scalar", jsonName: "LineID", T: 9 /*ScalarType.STRING*/, options: { "api.dataRestrictionKey": "Stock,Executionflow", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "RequestedContent", kind: "message", jsonName: "RequestedContent", T: () => QuantifiedRequestedGoods, options: { "api.aggSkip": "HUContentUpdated,HUTrackingUpdated" } },
            { no: 3, name: "MetaData", kind: "message", jsonName: "MetaData", repeat: 1 /*RepeatType.PACKED*/, T: () => MetadataElement, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)" }, "api.metadata": true, "api.aggKey": "Key", "api.aggSkip": "HUContentUpdated, HUTrackingUpdated", "api.transientRef": "Order,Payload.Lines<>.MetaData,hard", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }] }, "api.parentEntity": "Order" } },
            { no: 4, name: "ShippedContents", kind: "message", jsonName: "ShippedContents", repeat: 1 /*RepeatType.PACKED*/, T: () => QuantifiedGoodsByHU, options: { "api.aggSkip": "HUContentUpdated, HUTrackingUpdated", "api.extractRefExclude": "Executionflow" } },
            { no: 5, name: "PreparedItemDiffersFromRequestedItem", kind: "scalar", jsonName: "PreparedItemDiffersFromRequestedItem", T: 8 /*ScalarType.BOOL*/, options: { "validate.rules": { bool: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Stock,Executionflow", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] } } },
            { no: 6, name: "ReceivedItemDiffersFromRequestedItem", kind: "scalar", jsonName: "ReceivedItemDiffersFromRequestedItem", T: 8 /*ScalarType.BOOL*/, options: { "validate.rules": { bool: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Stock,Executionflow", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] } } },
            { no: 7, name: "RequestedMetrics", kind: "message", jsonName: "RequestedMetrics", T: () => GoodsMetrics, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 8, name: "TotalPreparedMetrics", kind: "message", jsonName: "TotalPreparedMetrics", T: () => GoodsMetrics, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 9, name: "TotalReceivedMetrics", kind: "message", jsonName: "TotalReceivedMetrics", T: () => GoodsMetrics, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 12, name: "CreatedFromHU", kind: "scalar", jsonName: "CreatedFromHU", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Stock,Executionflow", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "Definition of trade. Executionflow lines. Defines the requested goods and the prepared goods" } } });
    }
    create(value?: PartialMessage<ExeFlowLine>): ExeFlowLine {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lineID = "";
        message.metaData = [];
        message.shippedContents = [];
        message.preparedItemDiffersFromRequestedItem = false;
        message.receivedItemDiffersFromRequestedItem = false;
        message.createdFromHU = false;
        if (value !== undefined)
            reflectionMergePartial<ExeFlowLine>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExeFlowLine): ExeFlowLine {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string LineID = 1 [json_name = "LineID"];*/ 1:
                    message.lineID = reader.string();
                    break;
                case /* api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"];*/ 2:
                    message.requestedContent = QuantifiedRequestedGoods.internalBinaryRead(reader, reader.uint32(), options, message.requestedContent);
                    break;
                case /* repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"];*/ 3:
                    message.metaData.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* repeated api.QuantifiedGoodsByHU ShippedContents = 4 [json_name = "ShippedContents"];*/ 4:
                    message.shippedContents.push(QuantifiedGoodsByHU.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* bool PreparedItemDiffersFromRequestedItem = 5 [json_name = "PreparedItemDiffersFromRequestedItem"];*/ 5:
                    message.preparedItemDiffersFromRequestedItem = reader.bool();
                    break;
                case /* bool ReceivedItemDiffersFromRequestedItem = 6 [json_name = "ReceivedItemDiffersFromRequestedItem"];*/ 6:
                    message.receivedItemDiffersFromRequestedItem = reader.bool();
                    break;
                case /* api.GoodsMetrics RequestedMetrics = 7 [json_name = "RequestedMetrics"];*/ 7:
                    message.requestedMetrics = GoodsMetrics.internalBinaryRead(reader, reader.uint32(), options, message.requestedMetrics);
                    break;
                case /* api.GoodsMetrics TotalPreparedMetrics = 8 [json_name = "TotalPreparedMetrics"];*/ 8:
                    message.totalPreparedMetrics = GoodsMetrics.internalBinaryRead(reader, reader.uint32(), options, message.totalPreparedMetrics);
                    break;
                case /* api.GoodsMetrics TotalReceivedMetrics = 9 [json_name = "TotalReceivedMetrics"];*/ 9:
                    message.totalReceivedMetrics = GoodsMetrics.internalBinaryRead(reader, reader.uint32(), options, message.totalReceivedMetrics);
                    break;
                case /* bool CreatedFromHU = 12 [json_name = "CreatedFromHU"];*/ 12:
                    message.createdFromHU = reader.bool();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExeFlowLine, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string LineID = 1 [json_name = "LineID"]; */
        if (message.lineID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.lineID);
        /* api.QuantifiedRequestedGoods RequestedContent = 2 [json_name = "RequestedContent"]; */
        if (message.requestedContent)
            QuantifiedRequestedGoods.internalBinaryWrite(message.requestedContent, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.MetadataElement MetaData = 3 [json_name = "MetaData"]; */
        for (let i = 0; i < message.metaData.length; i++)
            MetadataElement.internalBinaryWrite(message.metaData[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.QuantifiedGoodsByHU ShippedContents = 4 [json_name = "ShippedContents"]; */
        for (let i = 0; i < message.shippedContents.length; i++)
            QuantifiedGoodsByHU.internalBinaryWrite(message.shippedContents[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* bool PreparedItemDiffersFromRequestedItem = 5 [json_name = "PreparedItemDiffersFromRequestedItem"]; */
        if (message.preparedItemDiffersFromRequestedItem !== false)
            writer.tag(5, WireType.Varint).bool(message.preparedItemDiffersFromRequestedItem);
        /* bool ReceivedItemDiffersFromRequestedItem = 6 [json_name = "ReceivedItemDiffersFromRequestedItem"]; */
        if (message.receivedItemDiffersFromRequestedItem !== false)
            writer.tag(6, WireType.Varint).bool(message.receivedItemDiffersFromRequestedItem);
        /* api.GoodsMetrics RequestedMetrics = 7 [json_name = "RequestedMetrics"]; */
        if (message.requestedMetrics)
            GoodsMetrics.internalBinaryWrite(message.requestedMetrics, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
        /* api.GoodsMetrics TotalPreparedMetrics = 8 [json_name = "TotalPreparedMetrics"]; */
        if (message.totalPreparedMetrics)
            GoodsMetrics.internalBinaryWrite(message.totalPreparedMetrics, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
        /* api.GoodsMetrics TotalReceivedMetrics = 9 [json_name = "TotalReceivedMetrics"]; */
        if (message.totalReceivedMetrics)
            GoodsMetrics.internalBinaryWrite(message.totalReceivedMetrics, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
        /* bool CreatedFromHU = 12 [json_name = "CreatedFromHU"]; */
        if (message.createdFromHU !== false)
            writer.tag(12, WireType.Varint).bool(message.createdFromHU);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExeFlowLine
 */
export const ExeFlowLine = new ExeFlowLine$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GoodsMetrics$Type extends MessageType<GoodsMetrics> {
    constructor() {
        super("api.GoodsMetrics", [
            { no: 1, name: "GrossWeight", kind: "message", jsonName: "GrossWeight", T: () => QuantityWeight },
            { no: 2, name: "Volume", kind: "message", jsonName: "Volume", T: () => QuantityVolume },
            { no: 3, name: "QuantityInBaseLV", kind: "message", jsonName: "QuantityInBaseLV", T: () => QuantityInLV },
            { no: 4, name: "QuantityByLVs", kind: "message", jsonName: "QuantityByLVs", repeat: 1 /*RepeatType.PACKED*/, T: () => QuantityByLV, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.aggKey": "LVID" } },
            { no: 5, name: "LVDetailledQuantity", kind: "scalar", jsonName: "LVDetailledQuantity", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ]);
    }
    create(value?: PartialMessage<GoodsMetrics>): GoodsMetrics {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.quantityByLVs = [];
        message.lVDetailledQuantity = "";
        if (value !== undefined)
            reflectionMergePartial<GoodsMetrics>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GoodsMetrics): GoodsMetrics {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.QuantityWeight GrossWeight = 1 [json_name = "GrossWeight"];*/ 1:
                    message.grossWeight = QuantityWeight.internalBinaryRead(reader, reader.uint32(), options, message.grossWeight);
                    break;
                case /* api.QuantityVolume Volume = 2 [json_name = "Volume"];*/ 2:
                    message.volume = QuantityVolume.internalBinaryRead(reader, reader.uint32(), options, message.volume);
                    break;
                case /* api.QuantityInLV QuantityInBaseLV = 3 [json_name = "QuantityInBaseLV"];*/ 3:
                    message.quantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantityInBaseLV);
                    break;
                case /* repeated api.QuantityByLV QuantityByLVs = 4 [json_name = "QuantityByLVs"];*/ 4:
                    message.quantityByLVs.push(QuantityByLV.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string LVDetailledQuantity = 5 [json_name = "LVDetailledQuantity"];*/ 5:
                    message.lVDetailledQuantity = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: GoodsMetrics, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.QuantityWeight GrossWeight = 1 [json_name = "GrossWeight"]; */
        if (message.grossWeight)
            QuantityWeight.internalBinaryWrite(message.grossWeight, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityVolume Volume = 2 [json_name = "Volume"]; */
        if (message.volume)
            QuantityVolume.internalBinaryWrite(message.volume, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV QuantityInBaseLV = 3 [json_name = "QuantityInBaseLV"]; */
        if (message.quantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.quantityInBaseLV, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.QuantityByLV QuantityByLVs = 4 [json_name = "QuantityByLVs"]; */
        for (let i = 0; i < message.quantityByLVs.length; i++)
            QuantityByLV.internalBinaryWrite(message.quantityByLVs[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* string LVDetailledQuantity = 5 [json_name = "LVDetailledQuantity"]; */
        if (message.lVDetailledQuantity !== "")
            writer.tag(5, WireType.LengthDelimited).string(message.lVDetailledQuantity);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.GoodsMetrics
 */
export const GoodsMetrics = new GoodsMetrics$Type();
// @generated message type with reflection information, may provide speed optimized methods
class TradeTier$Type extends MessageType<TradeTier> {
    constructor() {
        super("api.TradeTier", [
            { no: 2, name: "ActorID", kind: "scalar", jsonName: "ActorID", T: 9 /*ScalarType.STRING*/, options: { "api.entityRef": "Actor", "api.dataRestrictionKey": "Movement,Stock,Executionflow,Handlingunit,Order,Tracking", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Tracking", Group: "tracking", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 4, name: "Actor", kind: "message", jsonName: "Actor", T: () => ActorPayload, options: { "api.extractRefExclude": "Executionflow,Stock,Order,Tracking" } },
            { no: 5, name: "Contact", kind: "message", jsonName: "Contact", T: () => Interlocutor },
            { no: 6, name: "PartnerID", kind: "scalar", jsonName: "PartnerID", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Must be an ID of an existing partner" }, "api.entityRef": "Partner", "api.dataRestrictionKey": "Movement,Stock,Executionflow,Handlingunit,Order,Tracking", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Tracking", Group: "tracking", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 7, name: "Partner", kind: "message", jsonName: "Partner", T: () => PartnerPayload, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ]);
    }
    create(value?: PartialMessage<TradeTier>): TradeTier {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.actorID = "";
        message.partnerID = "";
        if (value !== undefined)
            reflectionMergePartial<TradeTier>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TradeTier): TradeTier {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ActorID = 2 [json_name = "ActorID"];*/ 2:
                    message.actorID = reader.string();
                    break;
                case /* api.ActorPayload Actor = 4 [json_name = "Actor"];*/ 4:
                    message.actor = ActorPayload.internalBinaryRead(reader, reader.uint32(), options, message.actor);
                    break;
                case /* api.Interlocutor Contact = 5 [json_name = "Contact"];*/ 5:
                    message.contact = Interlocutor.internalBinaryRead(reader, reader.uint32(), options, message.contact);
                    break;
                case /* string PartnerID = 6 [json_name = "PartnerID"];*/ 6:
                    message.partnerID = reader.string();
                    break;
                case /* api.PartnerPayload Partner = 7 [json_name = "Partner"];*/ 7:
                    message.partner = PartnerPayload.internalBinaryRead(reader, reader.uint32(), options, message.partner);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: TradeTier, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ActorID = 2 [json_name = "ActorID"]; */
        if (message.actorID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.actorID);
        /* api.ActorPayload Actor = 4 [json_name = "Actor"]; */
        if (message.actor)
            ActorPayload.internalBinaryWrite(message.actor, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.Interlocutor Contact = 5 [json_name = "Contact"]; */
        if (message.contact)
            Interlocutor.internalBinaryWrite(message.contact, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* string PartnerID = 6 [json_name = "PartnerID"]; */
        if (message.partnerID !== "")
            writer.tag(6, WireType.LengthDelimited).string(message.partnerID);
        /* api.PartnerPayload Partner = 7 [json_name = "Partner"]; */
        if (message.partner)
            PartnerPayload.internalBinaryWrite(message.partner, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.TradeTier
 */
export const TradeTier = new TradeTier$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ETA$Type extends MessageType<ETA> {
    constructor() {
        super("api.ETA", [
            { no: 3, name: "StartETA", kind: "message", jsonName: "StartETA", T: () => DateTime },
            { no: 4, name: "EndETA", kind: "message", jsonName: "EndETA", T: () => DateTime, options: { "validate.rules": { message: { required: true } } } },
            { no: 5, name: "ActualDate", kind: "message", jsonName: "ActualDate", T: () => DateTime, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Internal structure, do not fill", readOnly: true } } },
            { no: 6, name: "Comment", kind: "scalar", jsonName: "Comment", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { maxLen: "250" } }, "api.kpiExclude": { Items: [{ Context: "Executionflow", Group: "executionflow" }, { Context: "Handlingunit", Group: "handlingunit" }] } } }
        ]);
    }
    create(value?: PartialMessage<ETA>): ETA {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.comment = "";
        if (value !== undefined)
            reflectionMergePartial<ETA>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ETA): ETA {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime StartETA = 3 [json_name = "StartETA"];*/ 3:
                    message.startETA = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.startETA);
                    break;
                case /* api.DateTime EndETA = 4 [json_name = "EndETA"];*/ 4:
                    message.endETA = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.endETA);
                    break;
                case /* api.DateTime ActualDate = 5 [json_name = "ActualDate"];*/ 5:
                    message.actualDate = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.actualDate);
                    break;
                case /* string Comment = 6 [json_name = "Comment"];*/ 6:
                    message.comment = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ETA, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime StartETA = 3 [json_name = "StartETA"]; */
        if (message.startETA)
            DateTime.internalBinaryWrite(message.startETA, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.DateTime EndETA = 4 [json_name = "EndETA"]; */
        if (message.endETA)
            DateTime.internalBinaryWrite(message.endETA, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.DateTime ActualDate = 5 [json_name = "ActualDate"]; */
        if (message.actualDate)
            DateTime.internalBinaryWrite(message.actualDate, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* string Comment = 6 [json_name = "Comment"]; */
        if (message.comment !== "")
            writer.tag(6, WireType.LengthDelimited).string(message.comment);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ETA
 */
export const ETA = new ETA$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ETAbyHU$Type extends MessageType<ETAbyHU> {
    constructor() {
        super("api.ETAbyHU", [
            { no: 1, name: "HandlingunitID", kind: "scalar", jsonName: "HandlingunitID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "ETA", kind: "message", jsonName: "ETA", T: () => ETA }
        ]);
    }
    create(value?: PartialMessage<ETAbyHU>): ETAbyHU {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.handlingunitID = "";
        if (value !== undefined)
            reflectionMergePartial<ETAbyHU>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ETAbyHU): ETAbyHU {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string HandlingunitID = 1 [json_name = "HandlingunitID"];*/ 1:
                    message.handlingunitID = reader.string();
                    break;
                case /* api.ETA ETA = 2 [json_name = "ETA"];*/ 2:
                    message.eTA = ETA.internalBinaryRead(reader, reader.uint32(), options, message.eTA);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ETAbyHU, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string HandlingunitID = 1 [json_name = "HandlingunitID"]; */
        if (message.handlingunitID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.handlingunitID);
        /* api.ETA ETA = 2 [json_name = "ETA"]; */
        if (message.eTA)
            ETA.internalBinaryWrite(message.eTA, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ETAbyHU
 */
export const ETAbyHU = new ETAbyHU$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ETAbyExecutionflow$Type extends MessageType<ETAbyExecutionflow> {
    constructor() {
        super("api.ETAbyExecutionflow", [
            { no: 1, name: "ExecutionflowID", kind: "scalar", jsonName: "ExecutionflowID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "ETA", kind: "message", jsonName: "ETA", T: () => ETA }
        ]);
    }
    create(value?: PartialMessage<ETAbyExecutionflow>): ETAbyExecutionflow {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.executionflowID = "";
        if (value !== undefined)
            reflectionMergePartial<ETAbyExecutionflow>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ETAbyExecutionflow): ETAbyExecutionflow {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ExecutionflowID = 1 [json_name = "ExecutionflowID"];*/ 1:
                    message.executionflowID = reader.string();
                    break;
                case /* api.ETA ETA = 2 [json_name = "ETA"];*/ 2:
                    message.eTA = ETA.internalBinaryRead(reader, reader.uint32(), options, message.eTA);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ETAbyExecutionflow, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ExecutionflowID = 1 [json_name = "ExecutionflowID"]; */
        if (message.executionflowID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.executionflowID);
        /* api.ETA ETA = 2 [json_name = "ETA"]; */
        if (message.eTA)
            ETA.internalBinaryWrite(message.eTA, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ETAbyExecutionflow
 */
export const ETAbyExecutionflow = new ETAbyExecutionflow$Type();
// @generated message type with reflection information, may provide speed optimized methods
class OrderStatus$Type extends MessageType<OrderStatus> {
    constructor() {
        super("api.OrderStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.OrderStatusCode", OrderStatusCode], options: { "api.dataRestrictionKey": "Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Order", Group: "order", Queryable: true }] } } },
            { no: 2, name: "Date", kind: "scalar", jsonName: "Date", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } }, "api.indexationType": { Types: [{ Context: "*", Type: "date" }] }, "api.kpiItems": { Items: [{ Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 3, name: "ActualDate", kind: "message", jsonName: "ActualDate", T: () => DateTime, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Status effective date. Set by the event's RefDate that triggered the status change." } } }
        ]);
    }
    create(value?: PartialMessage<OrderStatus>): OrderStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<OrderStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OrderStatus): OrderStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.OrderStatusCode StatusCode = 1 [json_name = "StatusCode"];*/ 1:
                    message.statusCode = reader.int32();
                    break;
                case /* string Date = 2 [json_name = "Date"];*/ 2:
                    message.date = reader.string();
                    break;
                case /* api.DateTime ActualDate = 3 [json_name = "ActualDate"];*/ 3:
                    message.actualDate = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.actualDate);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: OrderStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.OrderStatusCode StatusCode = 1 [json_name = "StatusCode"]; */
        if (message.statusCode !== 0)
            writer.tag(1, WireType.Varint).int32(message.statusCode);
        /* string Date = 2 [json_name = "Date"]; */
        if (message.date !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.date);
        /* api.DateTime ActualDate = 3 [json_name = "ActualDate"]; */
        if (message.actualDate)
            DateTime.internalBinaryWrite(message.actualDate, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.OrderStatus
 */
export const OrderStatus = new OrderStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class OrderStatusStruct$Type extends MessageType<OrderStatusStruct> {
    constructor() {
        super("api.OrderStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => OrderStatus },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => OrderStatus, options: { "api.aggKey": "Date" } },
            { no: 3, name: "CreationDate", kind: "scalar", jsonName: "CreationDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } } } }
        ]);
    }
    create(value?: PartialMessage<OrderStatusStruct>): OrderStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.creationDate = "";
        if (value !== undefined)
            reflectionMergePartial<OrderStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: OrderStatusStruct): OrderStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.OrderStatus Current = 1 [json_name = "Current"];*/ 1:
                    message.current = OrderStatus.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.OrderStatus History = 2 [json_name = "History"];*/ 2:
                    message.history.push(OrderStatus.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string CreationDate = 3 [json_name = "CreationDate"];*/ 3:
                    message.creationDate = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: OrderStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.OrderStatus Current = 1 [json_name = "Current"]; */
        if (message.current)
            OrderStatus.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.OrderStatus History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            OrderStatus.internalBinaryWrite(message.history[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* string CreationDate = 3 [json_name = "CreationDate"]; */
        if (message.creationDate !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.creationDate);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.OrderStatusStruct
 */
export const OrderStatusStruct = new OrderStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExecutionflowStatus$Type extends MessageType<ExecutionflowStatus> {
    constructor() {
        super("api.ExecutionflowStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.ExecutionflowStatusCode", ExecutionflowStatusCode], options: { "api.dataRestrictionKey": "Stock,Executionflow", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] } } },
            { no: 2, name: "Date", kind: "scalar", jsonName: "Date", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } }, "api.indexationType": { Types: [{ Context: "*", Type: "date" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 3, name: "ActualDate", kind: "message", jsonName: "ActualDate", T: () => DateTime, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Status effective date. Set by the event's RefDate that triggered the status change." } } }
        ]);
    }
    create(value?: PartialMessage<ExecutionflowStatus>): ExecutionflowStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<ExecutionflowStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutionflowStatus): ExecutionflowStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ExecutionflowStatusCode StatusCode = 1 [json_name = "StatusCode"];*/ 1:
                    message.statusCode = reader.int32();
                    break;
                case /* string Date = 2 [json_name = "Date"];*/ 2:
                    message.date = reader.string();
                    break;
                case /* api.DateTime ActualDate = 3 [json_name = "ActualDate"];*/ 3:
                    message.actualDate = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.actualDate);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExecutionflowStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ExecutionflowStatusCode StatusCode = 1 [json_name = "StatusCode"]; */
        if (message.statusCode !== 0)
            writer.tag(1, WireType.Varint).int32(message.statusCode);
        /* string Date = 2 [json_name = "Date"]; */
        if (message.date !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.date);
        /* api.DateTime ActualDate = 3 [json_name = "ActualDate"]; */
        if (message.actualDate)
            DateTime.internalBinaryWrite(message.actualDate, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExecutionflowStatus
 */
export const ExecutionflowStatus = new ExecutionflowStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExecutionflowStatusStruct$Type extends MessageType<ExecutionflowStatusStruct> {
    constructor() {
        super("api.ExecutionflowStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => ExecutionflowStatus },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => ExecutionflowStatus, options: { "api.aggKey": "Date" } },
            { no: 3, name: "Version", kind: "scalar", jsonName: "Version", T: 13 /*ScalarType.UINT32*/ },
            { no: 4, name: "CreationDate", kind: "scalar", jsonName: "CreationDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } } } }
        ]);
    }
    create(value?: PartialMessage<ExecutionflowStatusStruct>): ExecutionflowStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.version = 0;
        message.creationDate = "";
        if (value !== undefined)
            reflectionMergePartial<ExecutionflowStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutionflowStatusStruct): ExecutionflowStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ExecutionflowStatus Current = 1 [json_name = "Current"];*/ 1:
                    message.current = ExecutionflowStatus.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.ExecutionflowStatus History = 2 [json_name = "History"];*/ 2:
                    message.history.push(ExecutionflowStatus.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* uint32 Version = 3 [json_name = "Version"];*/ 3:
                    message.version = reader.uint32();
                    break;
                case /* string CreationDate = 4 [json_name = "CreationDate"];*/ 4:
                    message.creationDate = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExecutionflowStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ExecutionflowStatus Current = 1 [json_name = "Current"]; */
        if (message.current)
            ExecutionflowStatus.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.ExecutionflowStatus History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            ExecutionflowStatus.internalBinaryWrite(message.history[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* uint32 Version = 3 [json_name = "Version"]; */
        if (message.version !== 0)
            writer.tag(3, WireType.Varint).uint32(message.version);
        /* string CreationDate = 4 [json_name = "CreationDate"]; */
        if (message.creationDate !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.creationDate);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExecutionflowStatusStruct
 */
export const ExecutionflowStatusStruct = new ExecutionflowStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExecutionflowSummary$Type extends MessageType<ExecutionflowSummary> {
    constructor() {
        super("api.ExecutionflowSummary", [
            { no: 1, name: "ExecutionflowID", kind: "scalar", jsonName: "ExecutionflowID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "Status", kind: "message", jsonName: "Status", T: () => ExecutionflowStatus },
            { no: 7, name: "ShipFrom", kind: "message", jsonName: "ShipFrom", T: () => TradeTier, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Where to ship the executionflow from" } } },
            { no: 8, name: "ShipTo", kind: "message", jsonName: "ShipTo", T: () => TradeTier, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Where to ship the executionflow to" } } },
            { no: 6, name: "Carrier", kind: "message", jsonName: "Carrier", T: () => TradeTier, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Definition of the executionflow carrier" } } },
            { no: 18, name: "Attachments", kind: "message", jsonName: "Attachments", repeat: 1 /*RepeatType.PACKED*/, T: () => AttachmentSummary, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Number of executionflow attachments per type" } } },
            { no: 19, name: "AttachmentNumber", kind: "scalar", jsonName: "AttachmentNumber", T: 5 /*ScalarType.INT32*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Total number of executionflow attachments" } } },
            { no: 20, name: "Claims", kind: "message", jsonName: "Claims", repeat: 1 /*RepeatType.PACKED*/, T: () => ClaimSummary, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Number of executionflow claims per type" } } },
            { no: 21, name: "ClaimNumber", kind: "scalar", jsonName: "ClaimNumber", T: 5 /*ScalarType.INT32*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Total number of executionflow claims" } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["ExecutionflowID"] } } });
    }
    create(value?: PartialMessage<ExecutionflowSummary>): ExecutionflowSummary {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.executionflowID = "";
        message.attachments = [];
        message.attachmentNumber = 0;
        message.claims = [];
        message.claimNumber = 0;
        if (value !== undefined)
            reflectionMergePartial<ExecutionflowSummary>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutionflowSummary): ExecutionflowSummary {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ExecutionflowID = 1 [json_name = "ExecutionflowID"];*/ 1:
                    message.executionflowID = reader.string();
                    break;
                case /* api.ExecutionflowStatus Status = 2 [json_name = "Status"];*/ 2:
                    message.status = ExecutionflowStatus.internalBinaryRead(reader, reader.uint32(), options, message.status);
                    break;
                case /* api.TradeTier ShipFrom = 7 [json_name = "ShipFrom"];*/ 7:
                    message.shipFrom = TradeTier.internalBinaryRead(reader, reader.uint32(), options, message.shipFrom);
                    break;
                case /* api.TradeTier ShipTo = 8 [json_name = "ShipTo"];*/ 8:
                    message.shipTo = TradeTier.internalBinaryRead(reader, reader.uint32(), options, message.shipTo);
                    break;
                case /* api.TradeTier Carrier = 6 [json_name = "Carrier"];*/ 6:
                    message.carrier = TradeTier.internalBinaryRead(reader, reader.uint32(), options, message.carrier);
                    break;
                case /* repeated api.AttachmentSummary Attachments = 18 [json_name = "Attachments"];*/ 18:
                    message.attachments.push(AttachmentSummary.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* int32 AttachmentNumber = 19 [json_name = "AttachmentNumber"];*/ 19:
                    message.attachmentNumber = reader.int32();
                    break;
                case /* repeated api.ClaimSummary Claims = 20 [json_name = "Claims"];*/ 20:
                    message.claims.push(ClaimSummary.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* int32 ClaimNumber = 21 [json_name = "ClaimNumber"];*/ 21:
                    message.claimNumber = reader.int32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExecutionflowSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ExecutionflowID = 1 [json_name = "ExecutionflowID"]; */
        if (message.executionflowID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.executionflowID);
        /* api.ExecutionflowStatus Status = 2 [json_name = "Status"]; */
        if (message.status)
            ExecutionflowStatus.internalBinaryWrite(message.status, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* api.TradeTier ShipFrom = 7 [json_name = "ShipFrom"]; */
        if (message.shipFrom)
            TradeTier.internalBinaryWrite(message.shipFrom, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
        /* api.TradeTier ShipTo = 8 [json_name = "ShipTo"]; */
        if (message.shipTo)
            TradeTier.internalBinaryWrite(message.shipTo, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
        /* api.TradeTier Carrier = 6 [json_name = "Carrier"]; */
        if (message.carrier)
            TradeTier.internalBinaryWrite(message.carrier, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.AttachmentSummary Attachments = 18 [json_name = "Attachments"]; */
        for (let i = 0; i < message.attachments.length; i++)
            AttachmentSummary.internalBinaryWrite(message.attachments[i], writer.tag(18, WireType.LengthDelimited).fork(), options).join();
        /* int32 AttachmentNumber = 19 [json_name = "AttachmentNumber"]; */
        if (message.attachmentNumber !== 0)
            writer.tag(19, WireType.Varint).int32(message.attachmentNumber);
        /* repeated api.ClaimSummary Claims = 20 [json_name = "Claims"]; */
        for (let i = 0; i < message.claims.length; i++)
            ClaimSummary.internalBinaryWrite(message.claims[i], writer.tag(20, WireType.LengthDelimited).fork(), options).join();
        /* int32 ClaimNumber = 21 [json_name = "ClaimNumber"]; */
        if (message.claimNumber !== 0)
            writer.tag(21, WireType.Varint).int32(message.claimNumber);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExecutionflowSummary
 */
export const ExecutionflowSummary = new ExecutionflowSummary$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ExecutionGraph$Type extends MessageType<ExecutionGraph> {
    constructor() {
        super("api.ExecutionGraph", [
            { no: 1, name: "ParcelIDs", kind: "scalar", jsonName: "ParcelIDs", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } }
        ]);
    }
    create(value?: PartialMessage<ExecutionGraph>): ExecutionGraph {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.parcelIDs = [];
        if (value !== undefined)
            reflectionMergePartial<ExecutionGraph>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExecutionGraph): ExecutionGraph {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated string ParcelIDs = 1 [json_name = "ParcelIDs"];*/ 1:
                    message.parcelIDs.push(reader.string());
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ExecutionGraph, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated string ParcelIDs = 1 [json_name = "ParcelIDs"]; */
        for (let i = 0; i < message.parcelIDs.length; i++)
            writer.tag(1, WireType.LengthDelimited).string(message.parcelIDs[i]);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ExecutionGraph
 */
export const ExecutionGraph = new ExecutionGraph$Type();
