// @generated by protobuf-ts 2.9.6
// @generated from protobuf file "warehousingShared.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 { ItemPayload } from "./item";
import { QuantityLength } from "./shared";
import { QuantityVolume } from "./shared";
import { QuantityWeight } from "./shared";
import { MetadataElement } from "./shared";
import { DateTime } from "./shared";
/**
 * @generated from protobuf message api.HandlingunitStatus
 */
export interface HandlingunitStatus {
    /**
     * @generated from protobuf field: api.HandlingunitStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: HandlingunitStatusCode;
    /**
     * This date is only a string as it is always given by system
     *
     * @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;
}
/**
 * @generated from protobuf message api.HandlingunitStatusStruct
 */
export interface HandlingunitStatusStruct {
    /**
     * @generated from protobuf field: api.HandlingunitStatus Current = 1 [json_name = "Current"];
     */
    current?: HandlingunitStatus; // Current status of the Handlingunit entity
    /**
     * @generated from protobuf field: repeated api.HandlingunitStatus History = 2 [json_name = "History"];
     */
    history: HandlingunitStatus[]; // List of all status history of the Handlingunit entity
    /**
     * @generated from protobuf field: string CreationDate = 3 [json_name = "CreationDate"];
     */
    creationDate: string;
    /**
     * @generated from protobuf field: uint32 Version = 4 [json_name = "Version"];
     */
    version: number;
}
/**
 *
 * All the information of the Handlingunit that is sent to the parent ExecutionFlow.
 * Here we have the Handlingunit status and also the content in terms of Goods structured by ExecutionFlow LineID
 *
 * @generated from protobuf message api.HandlingunitSummary
 */
export interface HandlingunitSummary {
    /**
     * @generated from protobuf field: string HandlingunitID = 1 [json_name = "HandlingunitID"];
     */
    handlingunitID: string;
    /**
     * @generated from protobuf field: api.HandlingunitStatus Status = 2 [json_name = "Status"];
     */
    status?: HandlingunitStatus;
    /**
     * @generated from protobuf field: string TrackingID = 3 [json_name = "TrackingID"];
     */
    trackingID: string;
    /**
     * 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 = 6 [json_name = "MetaData"];
     */
    metaData: MetadataElement[];
    /**
     * @generated from protobuf field: repeated api.QuantifiedGoodsByLine Contents = 7 [json_name = "Contents"];
     */
    contents: QuantifiedGoodsByLine[];
    /**
     * @generated from protobuf field: string TrackingURL = 9 [json_name = "TrackingURL"];
     */
    trackingURL: string;
    /**
     * @generated from protobuf field: bool IsReported = 10 [json_name = "IsReported"];
     */
    isReported: boolean;
}
// 
// describes most of the information of the HU (except the content) given by the WMS on the OutboundReport message.
// 
// Note : the main HU ID is not included in this message

/**
 * @generated from protobuf message api.HandlingunitInformation
 */
export interface HandlingunitInformation {
    /**
     * Describe the container Type : Container, Box, Pallet ...
     *
     * @generated from protobuf field: string ContainerType = 1 [json_name = "ContainerType"];
     */
    containerType: string;
    /**
     * @generated from protobuf field: api.QuantityWeight Weight = 2 [json_name = "Weight"];
     */
    weight?: QuantityWeight;
    /**
     * @generated from protobuf field: api.QuantityVolume Volume = 3 [json_name = "Volume"];
     */
    volume?: QuantityVolume;
    /**
     * @generated from protobuf field: api.QuantityLength Height = 4 [json_name = "Height"];
     */
    height?: QuantityLength;
    /**
     * @generated from protobuf field: api.QuantityLength Width = 5 [json_name = "Width"];
     */
    width?: QuantityLength;
    /**
     * @generated from protobuf field: api.QuantityLength Length = 6 [json_name = "Length"];
     */
    length?: QuantityLength;
}
/**
 *
 * 	Stock entity status structure
 *
 * @generated from protobuf message api.StockStatus
 */
export interface StockStatus {
    /**
     * @generated from protobuf field: api.StockStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: StockStatusCode;
    /**
     * This date is only a string as it is always given by system
     *
     * @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;
}
/**
 *
 * 	StockStatusStruct statuses structure
 *
 * @generated from protobuf message api.StockStatusStruct
 */
export interface StockStatusStruct {
    /**
     * Current status of the Stock entity
     *
     * @generated from protobuf field: api.StockStatus Current = 1 [json_name = "Current"];
     */
    current?: StockStatus;
    /**
     * List of all status history of the Stock entity
     *
     * @generated from protobuf field: repeated api.StockStatus History = 2 [json_name = "History"];
     */
    history: StockStatus[];
    /**
     * @generated from protobuf field: uint32 Version = 3 [json_name = "Version"];
     */
    version: number;
    /**
     * @generated from protobuf field: string CreationDate = 4 [json_name = "CreationDate"];
     */
    creationDate: string;
}
/**
 *
 * 	Stock entity status structure
 * TODO : kpiItem à vérifier
 *
 * @generated from protobuf message api.MovementStatus
 */
export interface MovementStatus {
    /**
     * @generated from protobuf field: api.MovementStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: MovementStatusCode;
    /**
     * This date is only a string as it is always given by system
     *
     * @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;
}
/**
 *
 * 	MovementStatusStruct statuses structure
 *
 * @generated from protobuf message api.MovementStatusStruct
 */
export interface MovementStatusStruct {
    /**
     * Current status of the Movement entity
     *
     * @generated from protobuf field: api.MovementStatus Current = 1 [json_name = "Current"];
     */
    current?: MovementStatus;
    /**
     * List of all status history of the Movement entity
     *
     * @generated from protobuf field: repeated api.MovementStatus History = 2 [json_name = "History"];
     */
    history: MovementStatus[];
    /**
     * @generated from protobuf field: uint32 Version = 3 [json_name = "Version"];
     */
    version: number;
    /**
     * for movement Version is always set to 1
     *
     * @generated from protobuf field: string CreationDate = 4 [json_name = "CreationDate"];
     */
    creationDate: string;
}
/**
 * @generated from protobuf message api.GoodsTrackingStatus
 */
export interface GoodsTrackingStatus {
    /**
     * @generated from protobuf field: api.GoodsTrackingStatusCode StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: GoodsTrackingStatusCode;
    /**
     * This date is only a string as it is always given by system
     *
     * @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;
}
// 
// Structure to describe a goods without item enrichment with all goods key attributes defined as manadatory.
// 
// The mandatory fields are the good key attributes : ItemID, LVBranchID, PriorityDate and SegmentationKeys.
// This structure will not be enriched.
// 
// It is used into many others entities : 
// - Handlingunit, Content<>.Goods : to define the goods physically present into the HU (goods here are fully describe, it means item + Prioritytdate + all requested Segmentation keys)

/**
 * @generated from protobuf message api.Goods
 */
export interface Goods {
    /**
     * The following fields are the composed key for Goods
     *
     * @generated from protobuf field: string ItemID = 1 [json_name = "ItemID"];
     */
    itemID: string;
    /**
     * Logitical Variant branch ID
     *
     * @generated from protobuf field: string LVBranchID = 2 [json_name = "LVBranchID"];
     */
    lVBranchID: string;
    /**
     * PriorityDate becomes mandatory (may be fictitious)
     *
     * @generated from protobuf field: string PriorityDate = 3 [json_name = "PriorityDate"];
     */
    priorityDate: string;
    /**
     * The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements
     *
     * @generated from protobuf field: repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];
     */
    segmentationKeys: MetadataElement[];
}
// 
// Structure to describe a goods with item enrichment with all goods key attributes defined as mandatory.
// 
// The mandatory fields are the good key attributes : ItemID, LVBranchID, PriorityDate and SegmentationKeys.
// This structure will be enriched, by retrieving the Item payload referenced by the ItemID.
// 
// It is used into many others entities : 
// - Stock, Goods : to define the goods physically present into the warehouse (goods here are fully describe, it means item + Prioritytdate + all requested Segmentation keys)
// - Executionflow, ShippedGoods : to define the goods physically associated (prepared, received) to an order / executionflow.

/**
 * @generated from protobuf message api.EnrichedGoods
 */
export interface EnrichedGoods {
    /**
     * @generated from protobuf field: string ItemID = 1 [json_name = "ItemID"];
     */
    itemID: string;
    /**
     * Logistical variant branch ID
     *
     * @generated from protobuf field: string LVBranchID = 2 [json_name = "LVBranchID"];
     */
    lVBranchID: string;
    /**
     * Date of minimum substainability in <a href='https://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format
     *
     * @generated from protobuf field: string PriorityDate = 3 [json_name = "PriorityDate"];
     */
    priorityDate: string;
    /**
     * The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements
     *
     * @generated from protobuf field: repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];
     */
    segmentationKeys: MetadataElement[];
    /**
     * @generated from protobuf field: api.ItemPayload Item = 6 [json_name = "Item"];
     */
    item?: ItemPayload; // Enriched from Item entity with ItemID + LVID, or directly provided by value
}
// 
// Structure to describe a requested goods with item enrichment where all goods key attributes are not mandatory.
// 
// The unique mandatory field is the ItemID. 
// Other key attributes are optional : LVBranchID, PriorityDate and SegmentationKeys.
// This structure will be enriched, by retrieving the Item payload referenced by the ItemID.
// 
// It is used into : 
// - Order, Lines<>.RequestedGoods.Goods : to define the item/goods requested by the order (goods potentially partial, at least the item).
// - Executionflow, Lines<>.RequestedGoods.Goods : to define the item/goods requested by the executionflow (goods potentially partial, at least the item).

/**
 * @generated from protobuf message api.RequestedEnrichedGoods
 */
export interface RequestedEnrichedGoods {
    /**
     * @generated from protobuf field: string ItemID = 1 [json_name = "ItemID"];
     */
    itemID: string;
    /**
     * Logistical variant branch ID
     *
     * @generated from protobuf field: string LVBranchID = 2 [json_name = "LVBranchID"];
     */
    lVBranchID: string;
    /**
     * Date of minimum substainability in <a href='https://fr.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format
     *
     * @generated from protobuf field: string PriorityDate = 3 [json_name = "PriorityDate"];
     */
    priorityDate: string;
    /**
     * The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements
     *
     * @generated from protobuf field: repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];
     */
    segmentationKeys: MetadataElement[];
    /**
     * Enriched from Item entity with ItemID + LVID, or directly provided by value
     *
     * @generated from protobuf field: api.ItemPayload Item = 6 [json_name = "Item"];
     */
    item?: ItemPayload;
}
/**
 *
 * 	Structure to quantify a requested enriched goods.
 * 	Used in Order and, Executionflow entities on requested content structures.
 *
 * @generated from protobuf message api.QuantifiedRequestedGoods
 */
export interface QuantifiedRequestedGoods {
    /**
     * @generated from protobuf field: api.RequestedEnrichedGoods Goods = 1 [json_name = "Goods"];
     */
    goods?: RequestedEnrichedGoods;
    /**
     * @generated from protobuf field: api.QuantityInLV Quantity = 2 [json_name = "Quantity"];
     */
    quantity?: QuantityInLV;
}
/**
 *
 * Structure to quantity a goods into a tracked HU.
 * Used into Executionflow  ShippedContents structure.
 * Only filled by internal computation (not API-exposed)
 *
 * @generated from protobuf message api.QuantifiedGoodsByHU
 */
export interface QuantifiedGoodsByHU {
    /**
     * @generated from protobuf field: api.EnrichedGoods Goods = 1 [json_name = "Goods"];
     */
    goods?: EnrichedGoods;
    /**
     * @generated from protobuf field: string HandlingunitID = 2 [json_name = "HandlingunitID"];
     */
    handlingunitID: string;
    /**
     * @generated from protobuf field: string TrackingID = 3 [json_name = "TrackingID"];
     */
    trackingID: string;
    /**
     * @generated from protobuf field: api.GoodsTrackingStatus Status = 4 [json_name = "Status"];
     */
    status?: GoodsTrackingStatus;
    /**
     * @generated from protobuf field: api.QuantityInLV RequestedQuantity = 5 [json_name = "RequestedQuantity"];
     */
    requestedQuantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV RequestedQuantityInBaseLV = 6 [json_name = "RequestedQuantityInBaseLV"];
     */
    requestedQuantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV PreparedQuantity = 7 [json_name = "PreparedQuantity"];
     */
    preparedQuantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV PreparedQuantityInBaseLV = 8 [json_name = "PreparedQuantityInBaseLV"];
     */
    preparedQuantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV ReceivedQuantity = 9 [json_name = "ReceivedQuantity"];
     */
    receivedQuantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV ReceivedQuantityInBaseLV = 10 [json_name = "ReceivedQuantityInBaseLV"];
     */
    receivedQuantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: string TrackingURL = 11 [json_name = "TrackingURL"];
     */
    trackingURL: string;
}
// 
// Structure to quantity a goods into an executionflow line.
// Used into Executionflow  HUs structure.

/**
 * @generated from protobuf message api.QuantifiedGoodsByLine
 */
export interface QuantifiedGoodsByLine {
    /**
     * @generated from protobuf field: api.EnrichedGoods Goods = 1 [json_name = "Goods"];
     */
    goods?: EnrichedGoods;
    /**
     * @generated from protobuf field: string LineID = 2 [json_name = "LineID"];
     */
    lineID: string;
    /**
     * @generated from protobuf field: api.QuantityInLV PreparedQuantity = 3 [json_name = "PreparedQuantity"];
     */
    preparedQuantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV PreparedQuantityInBaseLV = 4 [json_name = "PreparedQuantityInBaseLV"];
     */
    preparedQuantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV ReceivedQuantity = 5 [json_name = "ReceivedQuantity"];
     */
    receivedQuantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV ReceivedQuantityInBaseLV = 6 [json_name = "ReceivedQuantityInBaseLV"];
     */
    receivedQuantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: bool IsReported = 7 [json_name = "IsReported"];
     */
    isReported: boolean;
}
// 
// 	Structure to describe a quantity of goods by executionflow line ID.
// 	Here the item is described by its ID and will not be enriched.
// 	Used in Handlingunit entities, where we do not need to enrich Item payload with a hard (fully described goods) link.
//   Used for received Goods, and stock movement  where a date is requested

/**
 * @generated from protobuf message api.QuantifiedDatedGoodsByExeflow
 */
export interface QuantifiedDatedGoodsByExeflow {
    /**
     * @generated from protobuf field: api.DateTime DateTime = 8 [json_name = "DateTime"];
     */
    dateTime?: DateTime; // This date must be the one for the stock movement
    /**
     * @generated from protobuf field: api.EnrichedGoods Goods = 1 [json_name = "Goods"];
     */
    goods?: EnrichedGoods;
    /**
     * @generated from protobuf field: string ExecutionflowID = 2 [json_name = "ExecutionflowID"];
     */
    executionflowID: string;
    /**
     * @generated from protobuf field: string LineID = 3 [json_name = "LineID"];
     */
    lineID: string;
    /**
     * @generated from protobuf field: string OrderID = 10 [json_name = "OrderID"];
     */
    orderID: string;
    /**
     * @generated from protobuf field: string ActorID = 4 [json_name = "ActorID"];
     */
    actorID: string;
    /**
     * @generated from protobuf field: api.QuantityInLV Quantity = 5 [json_name = "Quantity"];
     */
    quantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV QuantityInBaseLV = 9 [json_name = "QuantityInBaseLV"];
     */
    quantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"];
     */
    stockMovementGenerated: boolean;
    /**
     * @generated from protobuf field: bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"];
     */
    contentSummaryGenerated: boolean;
}
/**
 *
 * 	Structure to describe a quantity of goods prepared by executionflow line ID.
 * 	Here the item is described by its ID and will not be enriched.
 * 	Used in Handlingunit entities, where we do not need to enrich Item payload with a hard (fully described goods) link.
 *   Used fo prepared Goods when no date is requested
 *
 * @generated from protobuf message api.QuantifiedGoodsByExeflow
 */
export interface QuantifiedGoodsByExeflow {
    /**
     * @generated from protobuf field: api.EnrichedGoods Goods = 1 [json_name = "Goods"];
     */
    goods?: EnrichedGoods;
    /**
     * @generated from protobuf field: string ExecutionflowID = 2 [json_name = "ExecutionflowID"];
     */
    executionflowID: string;
    /**
     * @generated from protobuf field: string LineID = 3 [json_name = "LineID"];
     */
    lineID: string;
    /**
     * @generated from protobuf field: string ActorID = 4 [json_name = "ActorID"];
     */
    actorID: string;
    /**
     * @generated from protobuf field: api.QuantityInLV Quantity = 5 [json_name = "Quantity"];
     */
    quantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV QuantityInBaseLV = 8 [json_name = "QuantityInBaseLV"];
     */
    quantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"];
     */
    stockMovementGenerated: boolean;
    /**
     * @generated from protobuf field: bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"];
     */
    contentSummaryGenerated: boolean;
    /**
     * @generated from protobuf field: string OrderID = 9 [json_name = "OrderID"];
     */
    orderID: string;
}
/**
 *
 * 	Structure to define a quantity in a specific LV with a priority
 *
 * @generated from protobuf message api.QuantityByLV
 */
export interface QuantityByLV {
    /**
     * Logistical variant ID
     *
     * @generated from protobuf field: string LVID = 1 [json_name = "LVID"];
     */
    lVID: string;
    /**
     * @generated from protobuf field: string LVName = 2 [json_name = "LVName"];
     */
    lVName: string;
    /**
     * @generated from protobuf field: float Quantity = 3 [json_name = "Quantity"];
     */
    quantity: number;
    /**
     * In order to sort the map from the biggest LV to the smallest
     *
     * @generated from protobuf field: string Priority = 4 [json_name = "Priority"];
     */
    priority: string;
}
/**
 *
 * 	Structure to define a quantity in a specific LV
 *
 * @generated from protobuf message api.QuantityInLV
 */
export interface QuantityInLV {
    /**
     * Logistical variant ID
     *
     * @generated from protobuf field: string LVID = 1 [json_name = "LVID"];
     */
    lVID: string;
    /**
     * @generated from protobuf field: string LVName = 2 [json_name = "LVName"];
     */
    lVName: string;
    /**
     * @generated from protobuf field: float Value = 3 [json_name = "Value"];
     */
    value: number;
}
/**
 *
 * Definition of a stock snapshot
 *
 * @generated from protobuf message api.StockSnapshot
 */
export interface StockSnapshot {
    /**
     * @generated from protobuf field: api.DateTime DateTime = 6 [json_name = "DateTime"];
     */
    dateTime?: DateTime; // Datetime for the image on this key
    /**
     * @generated from protobuf field: string ID = 2 [json_name = "ID"];
     */
    iD: string;
    /**
     * @generated from protobuf field: api.QuantityInLV Quantity = 4 [json_name = "Quantity"];
     */
    quantity?: QuantityInLV;
    /**
     * @generated from protobuf field: api.QuantityInLV QuantityInBaseLV = 5 [json_name = "QuantityInBaseLV"];
     */
    quantityInBaseLV?: QuantityInLV;
    /**
     * @generated from protobuf field: bool IsTotalQuantity = 7 [json_name = "IsTotalQuantity"];
     */
    isTotalQuantity: boolean; // If true means there is only one snapshotted value for a key. Otherwise, sum will be done afterward
    /**
     * @generated from protobuf field: repeated float PartialQuantities = 8 [json_name = "PartialQuantities"];
     */
    partialQuantities: number[];
    /**
     * @generated from protobuf field: api.QuantityInLV PreviousQuantityInBaseLV = 9 [json_name = "PreviousQuantityInBaseLV"];
     */
    previousQuantityInBaseLV?: QuantityInLV; // this qty is used to build the snapshot_delta qty
}
/**
 *
 * Definition of a stock movement claim
 *
 * @generated from protobuf message api.StockMovementClaim
 */
export interface StockMovementClaim {
    /**
     * @generated from protobuf field: repeated api.ClaimSummary Claims = 1 [json_name = "Claims"];
     */
    claims: ClaimSummary[];
    /**
     * @generated from protobuf field: string ID = 2 [json_name = "ID"];
     */
    iD: string;
}
/**
 *
 * Definition of a stock movement
 *
 * @generated from protobuf message api.StockMovement
 */
export interface StockMovement {
    /**
     * @generated from protobuf field: api.DateTime DateTime = 1 [json_name = "DateTime"];
     */
    dateTime?: DateTime;
    /**
     * @generated from protobuf field: string ID = 2 [json_name = "ID"];
     */
    iD: string;
    /**
     * Codes used in StockMovementReason to explain stock movement
     *
     * @generated from protobuf field: api.StockMovementTypeCode Type = 3 [json_name = "Type"];
     */
    type: StockMovementTypeCode;
    /**
     * @generated from protobuf field: string HandlingunitID = 4 [json_name = "HandlingunitID"];
     */
    handlingunitID: string;
    /**
     * @generated from protobuf field: string OrderID = 17 [json_name = "OrderID"];
     */
    orderID: string;
    /**
     * @generated from protobuf field: string ExecutionflowID = 5 [json_name = "ExecutionflowID"];
     */
    executionflowID: string;
    /**
     * @generated from protobuf field: string ExecutionflowLineID = 6 [json_name = "ExecutionflowLineID"];
     */
    executionflowLineID: string;
    /**
     * @generated from protobuf field: string Reason = 7 [json_name = "Reason"];
     */
    reason: string;
    /**
     * @generated from protobuf field: string OperationReference = 8 [json_name = "OperationReference"];
     */
    operationReference: string;
    /**
     * @generated from protobuf field: api.MovementQuantityInLV Quantity = 9 [json_name = "Quantity"];
     */
    quantity?: MovementQuantityInLV;
    /**
     * @generated from protobuf field: api.MovementQuantityInLV QuantityInBaseLV = 10 [json_name = "QuantityInBaseLV"];
     */
    quantityInBaseLV?: MovementQuantityInLV;
    /**
     * @generated from protobuf field: bool MvtAlreadyUsedInStock = 11 [json_name = "MvtAlreadyUsedInStock"];
     */
    mvtAlreadyUsedInStock: boolean;
    /**
     * @generated from protobuf field: repeated api.QuantityByLV QuantityByLVs = 12 [json_name = "QuantityByLVs"];
     */
    quantityByLVs: QuantityByLV[];
    /**
     * @generated from protobuf field: string LVDetailledQuantity = 13 [json_name = "LVDetailledQuantity"];
     */
    lVDetailledQuantity: string;
    /**
     * @generated from protobuf field: string Author = 14 [json_name = "Author"];
     */
    author: string;
    /**
     * @generated from protobuf field: string ExternalMoveRef = 15 [json_name = "ExternalMoveRef"];
     */
    externalMoveRef: string;
    /**
     * @generated from protobuf field: string ExternalInfo = 16 [json_name = "ExternalInfo"];
     */
    externalInfo: string;
}
/**
 *
 * 	Structure to define a quantity in a specific LV
 *
 * @generated from protobuf message api.MovementQuantityInLV
 */
export interface MovementQuantityInLV {
    /**
     * Logistical variant ID
     *
     * @generated from protobuf field: string LVID = 1 [json_name = "LVID"];
     */
    lVID: string;
    /**
     * @generated from protobuf field: string LVName = 2 [json_name = "LVName"];
     */
    lVName: string;
    /**
     * @generated from protobuf field: float Value = 3 [json_name = "Value"];
     */
    value: number;
}
// _repository_

// 
// 	All statuses for Handlingunit entity
// 
// Handlingunit status are mainly linked to Tracking status, received through trackingUpdated event.
// Some status are computed after goodsAdded and husAdded events.
// 
// 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.HandlingunitStatusCode
 */
export enum HandlingunitStatusCode {
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_0000_UNKNOWN = 0;
     */
    HANDLINGUNIT_0000_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_0500_PACKING = 500;
     */
    HANDLINGUNIT_0500_PACKING = 500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_1000_READY_TO_COLLECT = 1000;
     */
    HANDLINGUNIT_1000_READY_TO_COLLECT = 1000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_1500_LOADED = 1500;
     */
    HANDLINGUNIT_1500_LOADED = 1500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_2000_COLLECTING = 2000;
     */
    HANDLINGUNIT_2000_COLLECTING = 2000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_2500_COLLECTION_ERROR = 2500;
     */
    HANDLINGUNIT_2500_COLLECTION_ERROR = 2500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_2800_DISPATCHED = 2800;
     */
    HANDLINGUNIT_2800_DISPATCHED = 2800,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_3000_COLLECTED = 3000;
     */
    HANDLINGUNIT_3000_COLLECTED = 3000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_3500_HANDLED_BY_CARRIER = 3500;
     */
    HANDLINGUNIT_3500_HANDLED_BY_CARRIER = 3500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_4000_DELIVERY_ERROR = 4000;
     */
    HANDLINGUNIT_4000_DELIVERY_ERROR = 4000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_4500_INTERRUPTED = 4500;
     */
    HANDLINGUNIT_4500_INTERRUPTED = 4500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_5000_DELIVERING = 5000;
     */
    HANDLINGUNIT_5000_DELIVERING = 5000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_5500_DELIVERY_COMPLETED = 5500;
     */
    HANDLINGUNIT_5500_DELIVERY_COMPLETED = 5500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_6000_UNPACKING = 6000;
     */
    HANDLINGUNIT_6000_UNPACKING = 6000,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_6500_FREED = 6500;
     */
    HANDLINGUNIT_6500_FREED = 6500,
    /**
     * @generated from protobuf enum value: HANDLINGUNIT_7000_CANCELED = 7000;
     */
    HANDLINGUNIT_7000_CANCELED = 7000
}
/**
 * type of code for Handlingunit ID
 *
 * @generated from protobuf enum api.IDType
 */
export enum IDType {
    /**
     * @generated from protobuf enum value: HUID_UNKNOWN = 0;
     */
    HUID_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: HUID_SSCC = 1;
     */
    HUID_SSCC = 1
}
/**
 *
 *  All statuses for Stock entity
 *
 * @generated from protobuf enum api.StockStatusCode
 */
export enum StockStatusCode {
    /**
     * @generated from protobuf enum value: STOCK_UNKNOWN = 0;
     */
    STOCK_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: STOCK_1000_ACTIVE = 1000;
     */
    STOCK_1000_ACTIVE = 1000
}
/**
 *
 *  All statuses for Stock entity
 *
 * @generated from protobuf enum api.MovementStatusCode
 */
export enum MovementStatusCode {
    /**
     * @generated from protobuf enum value: MOVEMENT_UNKNOWN = 0;
     */
    MOVEMENT_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: MOVEMENT_1000_ACTIVE = 1000;
     */
    MOVEMENT_1000_ACTIVE = 1000
}
/**
 * @generated from protobuf enum api.GoodsTrackingStatusCode
 */
export enum GoodsTrackingStatusCode {
    /**
     * @generated from protobuf enum value: GOODS_0000_UNKNOWN = 0;
     */
    GOODS_0000_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: GOODS_1500_READY_TO_PREPARE = 1500;
     */
    GOODS_1500_READY_TO_PREPARE = 1500,
    /**
     * @generated from protobuf enum value: GOODS_2000_PREPARATION_ERROR = 2000;
     */
    GOODS_2000_PREPARATION_ERROR = 2000,
    /**
     * @generated from protobuf enum value: GOODS_2500_PREPARING = 2500;
     */
    GOODS_2500_PREPARING = 2500,
    /**
     * @generated from protobuf enum value: GOODS_3000_PREPARATION_COMPLETED = 3000;
     */
    GOODS_3000_PREPARATION_COMPLETED = 3000,
    /**
     * @generated from protobuf enum value: GOODS_3500_READY_TO_TRANSPORT = 3500;
     */
    GOODS_3500_READY_TO_TRANSPORT = 3500,
    /**
     * @generated from protobuf enum value: GOODS_4000_TRANSPORT_ERROR = 4000;
     */
    GOODS_4000_TRANSPORT_ERROR = 4000,
    /**
     * @generated from protobuf enum value: GOODS_4500_TRANSPORTING = 4500;
     */
    GOODS_4500_TRANSPORTING = 4500,
    /**
     * @generated from protobuf enum value: GOODS_5000_TRANSPORT_COMPLETED = 5000;
     */
    GOODS_5000_TRANSPORT_COMPLETED = 5000,
    /**
     * @generated from protobuf enum value: GOODS_5500_READY_TO_RECEIVE = 5500;
     */
    GOODS_5500_READY_TO_RECEIVE = 5500,
    /**
     * @generated from protobuf enum value: GOODS_6000_RECEPTION_ERROR = 6000;
     */
    GOODS_6000_RECEPTION_ERROR = 6000,
    /**
     * @generated from protobuf enum value: GOODS_6500_RECEIVING = 6500;
     */
    GOODS_6500_RECEIVING = 6500,
    /**
     * @generated from protobuf enum value: GOODS_7000_RECEPTION_COMPLETED = 7000;
     */
    GOODS_7000_RECEPTION_COMPLETED = 7000,
    /**
     * @generated from protobuf enum value: GOODS_7500_COMPLETED = 7500;
     */
    GOODS_7500_COMPLETED = 7500
}
/**
 *
 * Codes used in StockMovementReason to explain stock movement.
 *
 * @generated from protobuf enum api.StockMovementTypeCode
 */
export enum StockMovementTypeCode {
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_UNKNOWN = 0;
     */
    STOCK_MOVEMENT_TYPE_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_OUTBOUND = 1;
     */
    STOCK_MOVEMENT_TYPE_OUTBOUND = 1,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_INBOUND = 2;
     */
    STOCK_MOVEMENT_TYPE_INBOUND = 2,
    /**
     * STOCK_MOVEMENT_TYPE_INTERNAL = 3;
     *
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_PRODUCTION = 4;
     */
    STOCK_MOVEMENT_TYPE_PRODUCTION = 4,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_DESTRUCTION = 5;
     */
    STOCK_MOVEMENT_TYPE_DESTRUCTION = 5,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_FIX = 6;
     */
    STOCK_MOVEMENT_TYPE_FIX = 6,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_REQUALIFICATION = 7;
     */
    STOCK_MOVEMENT_TYPE_REQUALIFICATION = 7,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_SNAPSHOT_DELTA = 8;
     */
    STOCK_MOVEMENT_TYPE_SNAPSHOT_DELTA = 8,
    /**
     * @generated from protobuf enum value: STOCK_MOVEMENT_TYPE_USE_OF_GOODS = 9;
     */
    STOCK_MOVEMENT_TYPE_USE_OF_GOODS = 9
}
// @generated message type with reflection information, may provide speed optimized methods
class HandlingunitStatus$Type extends MessageType<HandlingunitStatus> {
    constructor() {
        super("api.HandlingunitStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.HandlingunitStatusCode", HandlingunitStatusCode], options: { "api.dataRestrictionKey": "Stock,Executionflow,Handlingunit,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { 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: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { 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<HandlingunitStatus>): HandlingunitStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<HandlingunitStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HandlingunitStatus): HandlingunitStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.HandlingunitStatusCode 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: HandlingunitStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.HandlingunitStatusCode 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.HandlingunitStatus
 */
export const HandlingunitStatus = new HandlingunitStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class HandlingunitStatusStruct$Type extends MessageType<HandlingunitStatusStruct> {
    constructor() {
        super("api.HandlingunitStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => HandlingunitStatus },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => HandlingunitStatus, options: { "api.aggKey": "Date" } },
            { no: 3, name: "CreationDate", kind: "scalar", jsonName: "CreationDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } } } },
            { no: 4, name: "Version", kind: "scalar", jsonName: "Version", T: 13 /*ScalarType.UINT32*/ }
        ]);
    }
    create(value?: PartialMessage<HandlingunitStatusStruct>): HandlingunitStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.creationDate = "";
        message.version = 0;
        if (value !== undefined)
            reflectionMergePartial<HandlingunitStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HandlingunitStatusStruct): HandlingunitStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.HandlingunitStatus Current = 1 [json_name = "Current"];*/ 1:
                    message.current = HandlingunitStatus.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.HandlingunitStatus History = 2 [json_name = "History"];*/ 2:
                    message.history.push(HandlingunitStatus.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string CreationDate = 3 [json_name = "CreationDate"];*/ 3:
                    message.creationDate = reader.string();
                    break;
                case /* uint32 Version = 4 [json_name = "Version"];*/ 4:
                    message.version = reader.uint32();
                    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: HandlingunitStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.HandlingunitStatus Current = 1 [json_name = "Current"]; */
        if (message.current)
            HandlingunitStatus.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.HandlingunitStatus History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            HandlingunitStatus.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);
        /* uint32 Version = 4 [json_name = "Version"]; */
        if (message.version !== 0)
            writer.tag(4, WireType.Varint).uint32(message.version);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.HandlingunitStatusStruct
 */
export const HandlingunitStatusStruct = new HandlingunitStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class HandlingunitSummary$Type extends MessageType<HandlingunitSummary> {
    constructor() {
        super("api.HandlingunitSummary", [
            { no: 1, name: "HandlingunitID", kind: "scalar", jsonName: "HandlingunitID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.dataRestrictionKey": "Stock,Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "Status", kind: "message", jsonName: "Status", T: () => HandlingunitStatus, options: { "api.aggSkip": "HUTrackingUpdated,HUContentUpdated" } },
            { no: 3, name: "TrackingID", kind: "scalar", jsonName: "TrackingID", T: 9 /*ScalarType.STRING*/, options: { "api.dataRestrictionKey": "Stock,Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 6, 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.transientRef": "Handlingunit,Payload.MetaData,hard", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Order", Group: "order" }] }, "api.parentEntity": "Handlingunit" } },
            { no: 7, name: "Contents", kind: "message", jsonName: "Contents", repeat: 1 /*RepeatType.PACKED*/, T: () => QuantifiedGoodsByLine, options: { "api.aggSkip": "HUTrackingUpdated", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Order", Group: "order" }] } } },
            { no: 9, name: "TrackingURL", kind: "scalar", jsonName: "TrackingURL", T: 9 /*ScalarType.STRING*/ },
            { no: 10, name: "IsReported", kind: "scalar", jsonName: "IsReported", T: 8 /*ScalarType.BOOL*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "All the information of the Handlingunit that is sent to the parent ExecutionFlow", required: ["HandlingunitID"] } } });
    }
    create(value?: PartialMessage<HandlingunitSummary>): HandlingunitSummary {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.handlingunitID = "";
        message.trackingID = "";
        message.metaData = [];
        message.contents = [];
        message.trackingURL = "";
        message.isReported = false;
        if (value !== undefined)
            reflectionMergePartial<HandlingunitSummary>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HandlingunitSummary): HandlingunitSummary {
        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.HandlingunitStatus Status = 2 [json_name = "Status"];*/ 2:
                    message.status = HandlingunitStatus.internalBinaryRead(reader, reader.uint32(), options, message.status);
                    break;
                case /* string TrackingID = 3 [json_name = "TrackingID"];*/ 3:
                    message.trackingID = reader.string();
                    break;
                case /* repeated api.MetadataElement MetaData = 6 [json_name = "MetaData"];*/ 6:
                    message.metaData.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* repeated api.QuantifiedGoodsByLine Contents = 7 [json_name = "Contents"];*/ 7:
                    message.contents.push(QuantifiedGoodsByLine.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string TrackingURL = 9 [json_name = "TrackingURL"];*/ 9:
                    message.trackingURL = reader.string();
                    break;
                case /* bool IsReported = 10 [json_name = "IsReported"];*/ 10:
                    message.isReported = 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: HandlingunitSummary, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string HandlingunitID = 1 [json_name = "HandlingunitID"]; */
        if (message.handlingunitID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.handlingunitID);
        /* api.HandlingunitStatus Status = 2 [json_name = "Status"]; */
        if (message.status)
            HandlingunitStatus.internalBinaryWrite(message.status, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* string TrackingID = 3 [json_name = "TrackingID"]; */
        if (message.trackingID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.trackingID);
        /* repeated api.MetadataElement MetaData = 6 [json_name = "MetaData"]; */
        for (let i = 0; i < message.metaData.length; i++)
            MetadataElement.internalBinaryWrite(message.metaData[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.QuantifiedGoodsByLine Contents = 7 [json_name = "Contents"]; */
        for (let i = 0; i < message.contents.length; i++)
            QuantifiedGoodsByLine.internalBinaryWrite(message.contents[i], writer.tag(7, WireType.LengthDelimited).fork(), options).join();
        /* string TrackingURL = 9 [json_name = "TrackingURL"]; */
        if (message.trackingURL !== "")
            writer.tag(9, WireType.LengthDelimited).string(message.trackingURL);
        /* bool IsReported = 10 [json_name = "IsReported"]; */
        if (message.isReported !== false)
            writer.tag(10, WireType.Varint).bool(message.isReported);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.HandlingunitSummary
 */
export const HandlingunitSummary = new HandlingunitSummary$Type();
// @generated message type with reflection information, may provide speed optimized methods
class HandlingunitInformation$Type extends MessageType<HandlingunitInformation> {
    constructor() {
        super("api.HandlingunitInformation", [
            { no: 1, name: "ContainerType", kind: "scalar", jsonName: "ContainerType", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Describe the container Type : Container, Box, Pallet ..." }, "api.dataRestrictionKey": "Handlingunit", "api.kpiItems": { Items: [{ Context: "Handlingunit", Group: "handlingunit", Queryable: true }] } } },
            { no: 2, name: "Weight", kind: "message", jsonName: "Weight", T: () => QuantityWeight },
            { no: 3, name: "Volume", kind: "message", jsonName: "Volume", T: () => QuantityVolume },
            { no: 4, name: "Height", kind: "message", jsonName: "Height", T: () => QuantityLength, options: { "api.kpiExclude": { Items: [{ Context: "Handlingunit", Group: "handlingunit" }, { Context: "Stock", Group: "stock_extended" }] } } },
            { no: 5, name: "Width", kind: "message", jsonName: "Width", T: () => QuantityLength, options: { "api.kpiExclude": { Items: [{ Context: "Handlingunit", Group: "handlingunit" }, { Context: "Stock", Group: "stock_extended" }] } } },
            { no: 6, name: "Length", kind: "message", jsonName: "Length", T: () => QuantityLength, options: { "api.kpiExclude": { Items: [{ Context: "Handlingunit", Group: "handlingunit" }, { Context: "Stock", Group: "stock_extended" }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "General information of the handling unit" } } });
    }
    create(value?: PartialMessage<HandlingunitInformation>): HandlingunitInformation {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.containerType = "";
        if (value !== undefined)
            reflectionMergePartial<HandlingunitInformation>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HandlingunitInformation): HandlingunitInformation {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ContainerType = 1 [json_name = "ContainerType"];*/ 1:
                    message.containerType = reader.string();
                    break;
                case /* api.QuantityWeight Weight = 2 [json_name = "Weight"];*/ 2:
                    message.weight = QuantityWeight.internalBinaryRead(reader, reader.uint32(), options, message.weight);
                    break;
                case /* api.QuantityVolume Volume = 3 [json_name = "Volume"];*/ 3:
                    message.volume = QuantityVolume.internalBinaryRead(reader, reader.uint32(), options, message.volume);
                    break;
                case /* api.QuantityLength Height = 4 [json_name = "Height"];*/ 4:
                    message.height = QuantityLength.internalBinaryRead(reader, reader.uint32(), options, message.height);
                    break;
                case /* api.QuantityLength Width = 5 [json_name = "Width"];*/ 5:
                    message.width = QuantityLength.internalBinaryRead(reader, reader.uint32(), options, message.width);
                    break;
                case /* api.QuantityLength Length = 6 [json_name = "Length"];*/ 6:
                    message.length = QuantityLength.internalBinaryRead(reader, reader.uint32(), options, message.length);
                    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: HandlingunitInformation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ContainerType = 1 [json_name = "ContainerType"]; */
        if (message.containerType !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.containerType);
        /* api.QuantityWeight Weight = 2 [json_name = "Weight"]; */
        if (message.weight)
            QuantityWeight.internalBinaryWrite(message.weight, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityVolume Volume = 3 [json_name = "Volume"]; */
        if (message.volume)
            QuantityVolume.internalBinaryWrite(message.volume, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityLength Height = 4 [json_name = "Height"]; */
        if (message.height)
            QuantityLength.internalBinaryWrite(message.height, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityLength Width = 5 [json_name = "Width"]; */
        if (message.width)
            QuantityLength.internalBinaryWrite(message.width, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityLength Length = 6 [json_name = "Length"]; */
        if (message.length)
            QuantityLength.internalBinaryWrite(message.length, writer.tag(6, 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.HandlingunitInformation
 */
export const HandlingunitInformation = new HandlingunitInformation$Type();
// @generated message type with reflection information, may provide speed optimized methods
class StockStatus$Type extends MessageType<StockStatus> {
    constructor() {
        super("api.StockStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.StockStatusCode", StockStatusCode], options: { "api.dataRestrictionKey": "Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Stock", Group: "stock", Queryable: true }, { Context: "Executionflow", Group: "executionflow", Queryable: true }, { 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: "Stock", Group: "stock", Queryable: true }, { Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }, { 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." }, "api.kpiExclude": { Items: [{ Context: "Movement", Group: "movement" }] } } }
        ]);
    }
    create(value?: PartialMessage<StockStatus>): StockStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<StockStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: StockStatus): StockStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.StockStatusCode 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: StockStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.StockStatusCode 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.StockStatus
 */
export const StockStatus = new StockStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class StockStatusStruct$Type extends MessageType<StockStatusStruct> {
    constructor() {
        super("api.StockStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => StockStatus },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => StockStatus, options: { "api.aggKey": "Date", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Movement", Group: "movement" }, { Context: "Order", Group: "order" }] } } },
            { 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<StockStatusStruct>): StockStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.version = 0;
        message.creationDate = "";
        if (value !== undefined)
            reflectionMergePartial<StockStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: StockStatusStruct): StockStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.StockStatus Current = 1 [json_name = "Current"];*/ 1:
                    message.current = StockStatus.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.StockStatus History = 2 [json_name = "History"];*/ 2:
                    message.history.push(StockStatus.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: StockStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.StockStatus Current = 1 [json_name = "Current"]; */
        if (message.current)
            StockStatus.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.StockStatus History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            StockStatus.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.StockStatusStruct
 */
export const StockStatusStruct = new StockStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class MovementStatus$Type extends MessageType<MovementStatus> {
    constructor() {
        super("api.MovementStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.MovementStatusCode", MovementStatusCode], options: { "api.dataRestrictionKey": "Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { 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: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }, { 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." }, "api.kpiExclude": { Items: [{ Context: "Movement", Group: "movement" }] } } }
        ]);
    }
    create(value?: PartialMessage<MovementStatus>): MovementStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<MovementStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MovementStatus): MovementStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.MovementStatusCode 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: MovementStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.MovementStatusCode 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.MovementStatus
 */
export const MovementStatus = new MovementStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class MovementStatusStruct$Type extends MessageType<MovementStatusStruct> {
    constructor() {
        super("api.MovementStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => MovementStatus },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => MovementStatus, options: { "api.aggKey": "Date", "api.kpiExclude": { Items: [{ Context: "Movement", Group: "movement" }] } } },
            { 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<MovementStatusStruct>): MovementStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.version = 0;
        message.creationDate = "";
        if (value !== undefined)
            reflectionMergePartial<MovementStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MovementStatusStruct): MovementStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.MovementStatus Current = 1 [json_name = "Current"];*/ 1:
                    message.current = MovementStatus.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.MovementStatus History = 2 [json_name = "History"];*/ 2:
                    message.history.push(MovementStatus.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: MovementStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.MovementStatus Current = 1 [json_name = "Current"]; */
        if (message.current)
            MovementStatus.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.MovementStatus History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            MovementStatus.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.MovementStatusStruct
 */
export const MovementStatusStruct = new MovementStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class GoodsTrackingStatus$Type extends MessageType<GoodsTrackingStatus> {
    constructor() {
        super("api.GoodsTrackingStatus", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.GoodsTrackingStatusCode", GoodsTrackingStatusCode], options: { "api.dataRestrictionKey": "Stock,Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { 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: "Executionflow", Group: "executionflow", Queryable: true }, { 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<GoodsTrackingStatus>): GoodsTrackingStatus {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<GoodsTrackingStatus>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GoodsTrackingStatus): GoodsTrackingStatus {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.GoodsTrackingStatusCode 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: GoodsTrackingStatus, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.GoodsTrackingStatusCode 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.GoodsTrackingStatus
 */
export const GoodsTrackingStatus = new GoodsTrackingStatus$Type();
// @generated message type with reflection information, may provide speed optimized methods
class Goods$Type extends MessageType<Goods> {
    constructor() {
        super("api.Goods", [
            { no: 1, name: "ItemID", kind: "scalar", jsonName: "ItemID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortText" }] } } },
            { no: 2, name: "LVBranchID", kind: "scalar", jsonName: "LVBranchID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logitical Variant branch ID" }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "PriorityDate", kind: "scalar", jsonName: "PriorityDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } }, "api.indexationType": { Types: [{ Context: "Stock", Type: "date" }, { Context: "Movement", Type: "date" }, { Context: "Handlingunit", Type: "date" }, { Context: "Order", Type: "text" }, { Context: "Executionflow", Type: "text" }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 4, name: "SegmentationKeys", kind: "message", jsonName: "SegmentationKeys", repeat: 1 /*RepeatType.PACKED*/, T: () => MetadataElement, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements" }, "api.aggKey": "Key", "api.segmentationKeys": true, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Order", Group: "order" }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["ItemID", "LVBranchID"] } } });
    }
    create(value?: PartialMessage<Goods>): Goods {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.itemID = "";
        message.lVBranchID = "";
        message.priorityDate = "";
        message.segmentationKeys = [];
        if (value !== undefined)
            reflectionMergePartial<Goods>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Goods): Goods {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ItemID = 1 [json_name = "ItemID"];*/ 1:
                    message.itemID = reader.string();
                    break;
                case /* string LVBranchID = 2 [json_name = "LVBranchID"];*/ 2:
                    message.lVBranchID = reader.string();
                    break;
                case /* string PriorityDate = 3 [json_name = "PriorityDate"];*/ 3:
                    message.priorityDate = reader.string();
                    break;
                case /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];*/ 4:
                    message.segmentationKeys.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    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: Goods, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ItemID = 1 [json_name = "ItemID"]; */
        if (message.itemID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.itemID);
        /* string LVBranchID = 2 [json_name = "LVBranchID"]; */
        if (message.lVBranchID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVBranchID);
        /* string PriorityDate = 3 [json_name = "PriorityDate"]; */
        if (message.priorityDate !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.priorityDate);
        /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"]; */
        for (let i = 0; i < message.segmentationKeys.length; i++)
            MetadataElement.internalBinaryWrite(message.segmentationKeys[i], 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.Goods
 */
export const Goods = new Goods$Type();
// @generated message type with reflection information, may provide speed optimized methods
class EnrichedGoods$Type extends MessageType<EnrichedGoods> {
    constructor() {
        super("api.EnrichedGoods", [
            { no: 1, name: "ItemID", kind: "scalar", jsonName: "ItemID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.entityRef": "Item", "api.dataRestrictionKey": "Movement,Stock,Executionflow,Handlingunit,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "LVBranchID", kind: "scalar", jsonName: "LVBranchID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logistical variant branch ID" }, "api.dataRestrictionKey": "Movement,Stock,Executionflow,Handlingunit,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "PriorityDate", kind: "scalar", jsonName: "PriorityDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Date of minimum substainability in <a href='https://en.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format" }, "api.dataRestrictionKey": "Executionflow,Handlingunit,Order", "api.indexationType": { Types: [{ Context: "Stock", Type: "date" }, { Context: "Movement", Type: "date" }, { Context: "Handlingunit", Type: "date" }, { Context: "Order", Type: "text" }, { Context: "Executionflow", Type: "text" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 4, name: "SegmentationKeys", kind: "message", jsonName: "SegmentationKeys", repeat: 1 /*RepeatType.PACKED*/, T: () => MetadataElement, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements" }, "api.aggKey": "Key", "api.segmentationKeys": true, "api.kpiExclude": { Items: [{ Context: "Handlingunit", Group: "handlingunit" }, { Context: "Order", Group: "order" }] }, "api.parentEntity": "Stock" } },
            { no: 6, name: "Item", kind: "message", jsonName: "Item", T: () => ItemPayload, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "Type of goods", required: ["ItemID", "LVBranchID", "PriorityDate"] } } });
    }
    create(value?: PartialMessage<EnrichedGoods>): EnrichedGoods {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.itemID = "";
        message.lVBranchID = "";
        message.priorityDate = "";
        message.segmentationKeys = [];
        if (value !== undefined)
            reflectionMergePartial<EnrichedGoods>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: EnrichedGoods): EnrichedGoods {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ItemID = 1 [json_name = "ItemID"];*/ 1:
                    message.itemID = reader.string();
                    break;
                case /* string LVBranchID = 2 [json_name = "LVBranchID"];*/ 2:
                    message.lVBranchID = reader.string();
                    break;
                case /* string PriorityDate = 3 [json_name = "PriorityDate"];*/ 3:
                    message.priorityDate = reader.string();
                    break;
                case /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];*/ 4:
                    message.segmentationKeys.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.ItemPayload Item = 6 [json_name = "Item"];*/ 6:
                    message.item = ItemPayload.internalBinaryRead(reader, reader.uint32(), options, message.item);
                    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: EnrichedGoods, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ItemID = 1 [json_name = "ItemID"]; */
        if (message.itemID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.itemID);
        /* string LVBranchID = 2 [json_name = "LVBranchID"]; */
        if (message.lVBranchID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVBranchID);
        /* string PriorityDate = 3 [json_name = "PriorityDate"]; */
        if (message.priorityDate !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.priorityDate);
        /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"]; */
        for (let i = 0; i < message.segmentationKeys.length; i++)
            MetadataElement.internalBinaryWrite(message.segmentationKeys[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.ItemPayload Item = 6 [json_name = "Item"]; */
        if (message.item)
            ItemPayload.internalBinaryWrite(message.item, writer.tag(6, 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.EnrichedGoods
 */
export const EnrichedGoods = new EnrichedGoods$Type();
// @generated message type with reflection information, may provide speed optimized methods
class RequestedEnrichedGoods$Type extends MessageType<RequestedEnrichedGoods> {
    constructor() {
        super("api.RequestedEnrichedGoods", [
            { no: 1, name: "ItemID", kind: "scalar", jsonName: "ItemID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.entityRef": "Item", "api.dataRestrictionKey": "Movement,Stock,Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "LVBranchID", kind: "scalar", jsonName: "LVBranchID", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logistical variant branch ID" }, "api.dataRestrictionKey": "Movement,Stock,Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "PriorityDate", kind: "scalar", jsonName: "PriorityDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true, ignoreEmpty: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Date of minimum substainability in <a href='https://fr.wikipedia.org/wiki/ISO_8601'>ISO 8601</a> format" }, "api.dataRestrictionKey": "Executionflow,Order", "api.indexationType": { Types: [{ Context: "Stock", Type: "date" }, { Context: "Movement", Type: "date" }, { Context: "Handlingunit", Type: "date" }, { Context: "Order", Type: "text" }, { Context: "Executionflow", Type: "text" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 4, name: "SegmentationKeys", kind: "message", jsonName: "SegmentationKeys", repeat: 1 /*RepeatType.PACKED*/, T: () => MetadataElement, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "The segmentation keys are used to complete the segmentation criteria of the project stock. They also apply to order lines and stock movements" }, "api.aggKey": "Key", "api.segmentationKeys": true, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Order", Group: "order" }] }, "api.parentEntity": "Stock" } },
            { no: 6, name: "Item", kind: "message", jsonName: "Item", T: () => ItemPayload, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "Type of goods", required: ["ItemID"] } } });
    }
    create(value?: PartialMessage<RequestedEnrichedGoods>): RequestedEnrichedGoods {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.itemID = "";
        message.lVBranchID = "";
        message.priorityDate = "";
        message.segmentationKeys = [];
        if (value !== undefined)
            reflectionMergePartial<RequestedEnrichedGoods>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RequestedEnrichedGoods): RequestedEnrichedGoods {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ItemID = 1 [json_name = "ItemID"];*/ 1:
                    message.itemID = reader.string();
                    break;
                case /* string LVBranchID = 2 [json_name = "LVBranchID"];*/ 2:
                    message.lVBranchID = reader.string();
                    break;
                case /* string PriorityDate = 3 [json_name = "PriorityDate"];*/ 3:
                    message.priorityDate = reader.string();
                    break;
                case /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"];*/ 4:
                    message.segmentationKeys.push(MetadataElement.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* api.ItemPayload Item = 6 [json_name = "Item"];*/ 6:
                    message.item = ItemPayload.internalBinaryRead(reader, reader.uint32(), options, message.item);
                    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: RequestedEnrichedGoods, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ItemID = 1 [json_name = "ItemID"]; */
        if (message.itemID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.itemID);
        /* string LVBranchID = 2 [json_name = "LVBranchID"]; */
        if (message.lVBranchID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVBranchID);
        /* string PriorityDate = 3 [json_name = "PriorityDate"]; */
        if (message.priorityDate !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.priorityDate);
        /* repeated api.MetadataElement SegmentationKeys = 4 [json_name = "SegmentationKeys"]; */
        for (let i = 0; i < message.segmentationKeys.length; i++)
            MetadataElement.internalBinaryWrite(message.segmentationKeys[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.ItemPayload Item = 6 [json_name = "Item"]; */
        if (message.item)
            ItemPayload.internalBinaryWrite(message.item, writer.tag(6, 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.RequestedEnrichedGoods
 */
export const RequestedEnrichedGoods = new RequestedEnrichedGoods$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantifiedRequestedGoods$Type extends MessageType<QuantifiedRequestedGoods> {
    constructor() {
        super("api.QuantifiedRequestedGoods", [
            { no: 1, name: "Goods", kind: "message", jsonName: "Goods", T: () => RequestedEnrichedGoods, options: { "validate.rules": { message: { required: true } }, "api.transientRef": "Stock,Payload.Goods,soft" } },
            { no: 2, name: "Quantity", kind: "message", jsonName: "Quantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } }, "api.dataRestrictionKey": "Movement,Stock,Executionflow,Order" } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "List of goods ordered with their type and quantity", required: ["Goods", "Quantity"] } } });
    }
    create(value?: PartialMessage<QuantifiedRequestedGoods>): QuantifiedRequestedGoods {
        const message = globalThis.Object.create((this.messagePrototype!));
        if (value !== undefined)
            reflectionMergePartial<QuantifiedRequestedGoods>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantifiedRequestedGoods): QuantifiedRequestedGoods {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.RequestedEnrichedGoods Goods = 1 [json_name = "Goods"];*/ 1:
                    message.goods = RequestedEnrichedGoods.internalBinaryRead(reader, reader.uint32(), options, message.goods);
                    break;
                case /* api.QuantityInLV Quantity = 2 [json_name = "Quantity"];*/ 2:
                    message.quantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantity);
                    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: QuantifiedRequestedGoods, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.RequestedEnrichedGoods Goods = 1 [json_name = "Goods"]; */
        if (message.goods)
            RequestedEnrichedGoods.internalBinaryWrite(message.goods, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV Quantity = 2 [json_name = "Quantity"]; */
        if (message.quantity)
            QuantityInLV.internalBinaryWrite(message.quantity, 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.QuantifiedRequestedGoods
 */
export const QuantifiedRequestedGoods = new QuantifiedRequestedGoods$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantifiedGoodsByHU$Type extends MessageType<QuantifiedGoodsByHU> {
    constructor() {
        super("api.QuantifiedGoodsByHU", [
            { no: 1, name: "Goods", kind: "message", jsonName: "Goods", T: () => EnrichedGoods, options: { "validate.rules": { message: { required: true } }, "api.transientRef": "Stock,Payload.Goods,hard" } },
            { no: 2, name: "HandlingunitID", kind: "scalar", jsonName: "HandlingunitID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "TrackingID", kind: "scalar", jsonName: "TrackingID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 4, name: "Status", kind: "message", jsonName: "Status", T: () => GoodsTrackingStatus },
            { no: 5, name: "RequestedQuantity", kind: "message", jsonName: "RequestedQuantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } }, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Order", Group: "order" }] } } },
            { no: 6, name: "RequestedQuantityInBaseLV", kind: "message", jsonName: "RequestedQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Executionflow", Group: "executionflow" }, { Context: "Order", Group: "order" }] } } },
            { no: 7, name: "PreparedQuantity", kind: "message", jsonName: "PreparedQuantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } } } },
            { no: 8, name: "PreparedQuantityInBaseLV", kind: "message", jsonName: "PreparedQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 9, name: "ReceivedQuantity", kind: "message", jsonName: "ReceivedQuantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } } } },
            { no: 10, name: "ReceivedQuantityInBaseLV", kind: "message", jsonName: "ReceivedQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 11, name: "TrackingURL", kind: "scalar", jsonName: "TrackingURL", T: 9 /*ScalarType.STRING*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Goods", "HandlingunitID"] } } });
    }
    create(value?: PartialMessage<QuantifiedGoodsByHU>): QuantifiedGoodsByHU {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.handlingunitID = "";
        message.trackingID = "";
        message.trackingURL = "";
        if (value !== undefined)
            reflectionMergePartial<QuantifiedGoodsByHU>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantifiedGoodsByHU): QuantifiedGoodsByHU {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.EnrichedGoods Goods = 1 [json_name = "Goods"];*/ 1:
                    message.goods = EnrichedGoods.internalBinaryRead(reader, reader.uint32(), options, message.goods);
                    break;
                case /* string HandlingunitID = 2 [json_name = "HandlingunitID"];*/ 2:
                    message.handlingunitID = reader.string();
                    break;
                case /* string TrackingID = 3 [json_name = "TrackingID"];*/ 3:
                    message.trackingID = reader.string();
                    break;
                case /* api.GoodsTrackingStatus Status = 4 [json_name = "Status"];*/ 4:
                    message.status = GoodsTrackingStatus.internalBinaryRead(reader, reader.uint32(), options, message.status);
                    break;
                case /* api.QuantityInLV RequestedQuantity = 5 [json_name = "RequestedQuantity"];*/ 5:
                    message.requestedQuantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.requestedQuantity);
                    break;
                case /* api.QuantityInLV RequestedQuantityInBaseLV = 6 [json_name = "RequestedQuantityInBaseLV"];*/ 6:
                    message.requestedQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.requestedQuantityInBaseLV);
                    break;
                case /* api.QuantityInLV PreparedQuantity = 7 [json_name = "PreparedQuantity"];*/ 7:
                    message.preparedQuantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.preparedQuantity);
                    break;
                case /* api.QuantityInLV PreparedQuantityInBaseLV = 8 [json_name = "PreparedQuantityInBaseLV"];*/ 8:
                    message.preparedQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.preparedQuantityInBaseLV);
                    break;
                case /* api.QuantityInLV ReceivedQuantity = 9 [json_name = "ReceivedQuantity"];*/ 9:
                    message.receivedQuantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.receivedQuantity);
                    break;
                case /* api.QuantityInLV ReceivedQuantityInBaseLV = 10 [json_name = "ReceivedQuantityInBaseLV"];*/ 10:
                    message.receivedQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.receivedQuantityInBaseLV);
                    break;
                case /* string TrackingURL = 11 [json_name = "TrackingURL"];*/ 11:
                    message.trackingURL = 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: QuantifiedGoodsByHU, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.EnrichedGoods Goods = 1 [json_name = "Goods"]; */
        if (message.goods)
            EnrichedGoods.internalBinaryWrite(message.goods, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string HandlingunitID = 2 [json_name = "HandlingunitID"]; */
        if (message.handlingunitID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.handlingunitID);
        /* string TrackingID = 3 [json_name = "TrackingID"]; */
        if (message.trackingID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.trackingID);
        /* api.GoodsTrackingStatus Status = 4 [json_name = "Status"]; */
        if (message.status)
            GoodsTrackingStatus.internalBinaryWrite(message.status, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV RequestedQuantity = 5 [json_name = "RequestedQuantity"]; */
        if (message.requestedQuantity)
            QuantityInLV.internalBinaryWrite(message.requestedQuantity, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV RequestedQuantityInBaseLV = 6 [json_name = "RequestedQuantityInBaseLV"]; */
        if (message.requestedQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.requestedQuantityInBaseLV, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV PreparedQuantity = 7 [json_name = "PreparedQuantity"]; */
        if (message.preparedQuantity)
            QuantityInLV.internalBinaryWrite(message.preparedQuantity, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV PreparedQuantityInBaseLV = 8 [json_name = "PreparedQuantityInBaseLV"]; */
        if (message.preparedQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.preparedQuantityInBaseLV, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV ReceivedQuantity = 9 [json_name = "ReceivedQuantity"]; */
        if (message.receivedQuantity)
            QuantityInLV.internalBinaryWrite(message.receivedQuantity, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV ReceivedQuantityInBaseLV = 10 [json_name = "ReceivedQuantityInBaseLV"]; */
        if (message.receivedQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.receivedQuantityInBaseLV, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
        /* string TrackingURL = 11 [json_name = "TrackingURL"]; */
        if (message.trackingURL !== "")
            writer.tag(11, WireType.LengthDelimited).string(message.trackingURL);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantifiedGoodsByHU
 */
export const QuantifiedGoodsByHU = new QuantifiedGoodsByHU$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantifiedGoodsByLine$Type extends MessageType<QuantifiedGoodsByLine> {
    constructor() {
        super("api.QuantifiedGoodsByLine", [
            { no: 1, name: "Goods", kind: "message", jsonName: "Goods", T: () => EnrichedGoods, options: { "validate.rules": { message: { required: true } }, "api.transientRef": "Stock,Payload.Goods,hard" } },
            { no: 2, name: "LineID", kind: "scalar", jsonName: "LineID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "PreparedQuantity", kind: "message", jsonName: "PreparedQuantity", T: () => QuantityInLV, options: { "api.dataRestrictionKey": "Stock,Executionflow,Order" } },
            { no: 4, name: "PreparedQuantityInBaseLV", kind: "message", jsonName: "PreparedQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Stock,Executionflow,Order" } },
            { no: 5, name: "ReceivedQuantity", kind: "message", jsonName: "ReceivedQuantity", T: () => QuantityInLV, options: { "api.dataRestrictionKey": "Stock,Executionflow,Order" } },
            { no: 6, name: "ReceivedQuantityInBaseLV", kind: "message", jsonName: "ReceivedQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Stock,Executionflow,Order" } },
            { no: 7, name: "IsReported", kind: "scalar", jsonName: "IsReported", T: 8 /*ScalarType.BOOL*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Goods", "LineID"] } } });
    }
    create(value?: PartialMessage<QuantifiedGoodsByLine>): QuantifiedGoodsByLine {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lineID = "";
        message.isReported = false;
        if (value !== undefined)
            reflectionMergePartial<QuantifiedGoodsByLine>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantifiedGoodsByLine): QuantifiedGoodsByLine {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.EnrichedGoods Goods = 1 [json_name = "Goods"];*/ 1:
                    message.goods = EnrichedGoods.internalBinaryRead(reader, reader.uint32(), options, message.goods);
                    break;
                case /* string LineID = 2 [json_name = "LineID"];*/ 2:
                    message.lineID = reader.string();
                    break;
                case /* api.QuantityInLV PreparedQuantity = 3 [json_name = "PreparedQuantity"];*/ 3:
                    message.preparedQuantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.preparedQuantity);
                    break;
                case /* api.QuantityInLV PreparedQuantityInBaseLV = 4 [json_name = "PreparedQuantityInBaseLV"];*/ 4:
                    message.preparedQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.preparedQuantityInBaseLV);
                    break;
                case /* api.QuantityInLV ReceivedQuantity = 5 [json_name = "ReceivedQuantity"];*/ 5:
                    message.receivedQuantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.receivedQuantity);
                    break;
                case /* api.QuantityInLV ReceivedQuantityInBaseLV = 6 [json_name = "ReceivedQuantityInBaseLV"];*/ 6:
                    message.receivedQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.receivedQuantityInBaseLV);
                    break;
                case /* bool IsReported = 7 [json_name = "IsReported"];*/ 7:
                    message.isReported = 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: QuantifiedGoodsByLine, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.EnrichedGoods Goods = 1 [json_name = "Goods"]; */
        if (message.goods)
            EnrichedGoods.internalBinaryWrite(message.goods, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string LineID = 2 [json_name = "LineID"]; */
        if (message.lineID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lineID);
        /* api.QuantityInLV PreparedQuantity = 3 [json_name = "PreparedQuantity"]; */
        if (message.preparedQuantity)
            QuantityInLV.internalBinaryWrite(message.preparedQuantity, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV PreparedQuantityInBaseLV = 4 [json_name = "PreparedQuantityInBaseLV"]; */
        if (message.preparedQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.preparedQuantityInBaseLV, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV ReceivedQuantity = 5 [json_name = "ReceivedQuantity"]; */
        if (message.receivedQuantity)
            QuantityInLV.internalBinaryWrite(message.receivedQuantity, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV ReceivedQuantityInBaseLV = 6 [json_name = "ReceivedQuantityInBaseLV"]; */
        if (message.receivedQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.receivedQuantityInBaseLV, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        /* bool IsReported = 7 [json_name = "IsReported"]; */
        if (message.isReported !== false)
            writer.tag(7, WireType.Varint).bool(message.isReported);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantifiedGoodsByLine
 */
export const QuantifiedGoodsByLine = new QuantifiedGoodsByLine$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantifiedDatedGoodsByExeflow$Type extends MessageType<QuantifiedDatedGoodsByExeflow> {
    constructor() {
        super("api.QuantifiedDatedGoodsByExeflow", [
            { no: 8, name: "DateTime", kind: "message", jsonName: "DateTime", T: () => DateTime, options: { "validate.rules": { message: { required: true } } } },
            { no: 1, name: "Goods", kind: "message", jsonName: "Goods", T: () => EnrichedGoods, options: { "validate.rules": { message: { required: true } }, "api.transientRef": "Stock,Payload.Goods,hard" } },
            { no: 2, 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: 3, name: "LineID", kind: "scalar", jsonName: "LineID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 10, name: "OrderID", kind: "scalar", jsonName: "OrderID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 4, name: "ActorID", kind: "scalar", jsonName: "ActorID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 5, name: "Quantity", kind: "message", jsonName: "Quantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } } } },
            { no: 9, name: "QuantityInBaseLV", kind: "message", jsonName: "QuantityInBaseLV", T: () => QuantityInLV, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 6, name: "StockMovementGenerated", kind: "scalar", jsonName: "StockMovementGenerated", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 7, name: "ContentSummaryGenerated", kind: "scalar", jsonName: "ContentSummaryGenerated", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["DateTime", "Goods", "ExecutionflowID", "LineID", "ActorID", "Quantity"] } } });
    }
    create(value?: PartialMessage<QuantifiedDatedGoodsByExeflow>): QuantifiedDatedGoodsByExeflow {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.executionflowID = "";
        message.lineID = "";
        message.orderID = "";
        message.actorID = "";
        message.stockMovementGenerated = false;
        message.contentSummaryGenerated = false;
        if (value !== undefined)
            reflectionMergePartial<QuantifiedDatedGoodsByExeflow>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantifiedDatedGoodsByExeflow): QuantifiedDatedGoodsByExeflow {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime DateTime = 8 [json_name = "DateTime"];*/ 8:
                    message.dateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.dateTime);
                    break;
                case /* api.EnrichedGoods Goods = 1 [json_name = "Goods"];*/ 1:
                    message.goods = EnrichedGoods.internalBinaryRead(reader, reader.uint32(), options, message.goods);
                    break;
                case /* string ExecutionflowID = 2 [json_name = "ExecutionflowID"];*/ 2:
                    message.executionflowID = reader.string();
                    break;
                case /* string LineID = 3 [json_name = "LineID"];*/ 3:
                    message.lineID = reader.string();
                    break;
                case /* string OrderID = 10 [json_name = "OrderID"];*/ 10:
                    message.orderID = reader.string();
                    break;
                case /* string ActorID = 4 [json_name = "ActorID"];*/ 4:
                    message.actorID = reader.string();
                    break;
                case /* api.QuantityInLV Quantity = 5 [json_name = "Quantity"];*/ 5:
                    message.quantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantity);
                    break;
                case /* api.QuantityInLV QuantityInBaseLV = 9 [json_name = "QuantityInBaseLV"];*/ 9:
                    message.quantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantityInBaseLV);
                    break;
                case /* bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"];*/ 6:
                    message.stockMovementGenerated = reader.bool();
                    break;
                case /* bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"];*/ 7:
                    message.contentSummaryGenerated = 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: QuantifiedDatedGoodsByExeflow, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime DateTime = 8 [json_name = "DateTime"]; */
        if (message.dateTime)
            DateTime.internalBinaryWrite(message.dateTime, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
        /* api.EnrichedGoods Goods = 1 [json_name = "Goods"]; */
        if (message.goods)
            EnrichedGoods.internalBinaryWrite(message.goods, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string ExecutionflowID = 2 [json_name = "ExecutionflowID"]; */
        if (message.executionflowID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.executionflowID);
        /* string LineID = 3 [json_name = "LineID"]; */
        if (message.lineID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.lineID);
        /* string OrderID = 10 [json_name = "OrderID"]; */
        if (message.orderID !== "")
            writer.tag(10, WireType.LengthDelimited).string(message.orderID);
        /* string ActorID = 4 [json_name = "ActorID"]; */
        if (message.actorID !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.actorID);
        /* api.QuantityInLV Quantity = 5 [json_name = "Quantity"]; */
        if (message.quantity)
            QuantityInLV.internalBinaryWrite(message.quantity, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV QuantityInBaseLV = 9 [json_name = "QuantityInBaseLV"]; */
        if (message.quantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.quantityInBaseLV, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
        /* bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"]; */
        if (message.stockMovementGenerated !== false)
            writer.tag(6, WireType.Varint).bool(message.stockMovementGenerated);
        /* bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"]; */
        if (message.contentSummaryGenerated !== false)
            writer.tag(7, WireType.Varint).bool(message.contentSummaryGenerated);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantifiedDatedGoodsByExeflow
 */
export const QuantifiedDatedGoodsByExeflow = new QuantifiedDatedGoodsByExeflow$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantifiedGoodsByExeflow$Type extends MessageType<QuantifiedGoodsByExeflow> {
    constructor() {
        super("api.QuantifiedGoodsByExeflow", [
            { no: 1, name: "Goods", kind: "message", jsonName: "Goods", T: () => EnrichedGoods, options: { "validate.rules": { message: { required: true } }, "api.transientRef": "Stock,Payload.Goods,hard" } },
            { no: 2, name: "ExecutionflowID", kind: "scalar", jsonName: "ExecutionflowID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.dataRestrictionKey": "Handlingunit", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Handlingunit", Group: "handlingunit", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "LineID", kind: "scalar", jsonName: "LineID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.dataRestrictionKey": "Handlingunit", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Handlingunit", Group: "handlingunit", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 4, name: "ActorID", kind: "scalar", jsonName: "ActorID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "api.dataRestrictionKey": "Handlingunit", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Handlingunit", Group: "handlingunit", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 5, name: "Quantity", kind: "message", jsonName: "Quantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } } } },
            { no: 8, name: "QuantityInBaseLV", kind: "message", jsonName: "QuantityInBaseLV", T: () => QuantityInLV, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 6, name: "StockMovementGenerated", kind: "scalar", jsonName: "StockMovementGenerated", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 7, name: "ContentSummaryGenerated", kind: "scalar", jsonName: "ContentSummaryGenerated", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 9, name: "OrderID", kind: "scalar", jsonName: "OrderID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { description: "Content of the handling unit", required: ["Goods", "ExecutionflowID", "LineID", "ActorID", "Quantity"] } } });
    }
    create(value?: PartialMessage<QuantifiedGoodsByExeflow>): QuantifiedGoodsByExeflow {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.executionflowID = "";
        message.lineID = "";
        message.actorID = "";
        message.stockMovementGenerated = false;
        message.contentSummaryGenerated = false;
        message.orderID = "";
        if (value !== undefined)
            reflectionMergePartial<QuantifiedGoodsByExeflow>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantifiedGoodsByExeflow): QuantifiedGoodsByExeflow {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.EnrichedGoods Goods = 1 [json_name = "Goods"];*/ 1:
                    message.goods = EnrichedGoods.internalBinaryRead(reader, reader.uint32(), options, message.goods);
                    break;
                case /* string ExecutionflowID = 2 [json_name = "ExecutionflowID"];*/ 2:
                    message.executionflowID = reader.string();
                    break;
                case /* string LineID = 3 [json_name = "LineID"];*/ 3:
                    message.lineID = reader.string();
                    break;
                case /* string ActorID = 4 [json_name = "ActorID"];*/ 4:
                    message.actorID = reader.string();
                    break;
                case /* api.QuantityInLV Quantity = 5 [json_name = "Quantity"];*/ 5:
                    message.quantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantity);
                    break;
                case /* api.QuantityInLV QuantityInBaseLV = 8 [json_name = "QuantityInBaseLV"];*/ 8:
                    message.quantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantityInBaseLV);
                    break;
                case /* bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"];*/ 6:
                    message.stockMovementGenerated = reader.bool();
                    break;
                case /* bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"];*/ 7:
                    message.contentSummaryGenerated = reader.bool();
                    break;
                case /* string OrderID = 9 [json_name = "OrderID"];*/ 9:
                    message.orderID = 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: QuantifiedGoodsByExeflow, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.EnrichedGoods Goods = 1 [json_name = "Goods"]; */
        if (message.goods)
            EnrichedGoods.internalBinaryWrite(message.goods, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string ExecutionflowID = 2 [json_name = "ExecutionflowID"]; */
        if (message.executionflowID !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.executionflowID);
        /* string LineID = 3 [json_name = "LineID"]; */
        if (message.lineID !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.lineID);
        /* string ActorID = 4 [json_name = "ActorID"]; */
        if (message.actorID !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.actorID);
        /* api.QuantityInLV Quantity = 5 [json_name = "Quantity"]; */
        if (message.quantity)
            QuantityInLV.internalBinaryWrite(message.quantity, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV QuantityInBaseLV = 8 [json_name = "QuantityInBaseLV"]; */
        if (message.quantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.quantityInBaseLV, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
        /* bool StockMovementGenerated = 6 [json_name = "StockMovementGenerated"]; */
        if (message.stockMovementGenerated !== false)
            writer.tag(6, WireType.Varint).bool(message.stockMovementGenerated);
        /* bool ContentSummaryGenerated = 7 [json_name = "ContentSummaryGenerated"]; */
        if (message.contentSummaryGenerated !== false)
            writer.tag(7, WireType.Varint).bool(message.contentSummaryGenerated);
        /* string OrderID = 9 [json_name = "OrderID"]; */
        if (message.orderID !== "")
            writer.tag(9, WireType.LengthDelimited).string(message.orderID);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantifiedGoodsByExeflow
 */
export const QuantifiedGoodsByExeflow = new QuantifiedGoodsByExeflow$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantityByLV$Type extends MessageType<QuantityByLV> {
    constructor() {
        super("api.QuantityByLV", [
            { no: 1, name: "LVID", kind: "scalar", jsonName: "LVID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logistical variant ID", example: "\"30\"" }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "LVName", kind: "scalar", jsonName: "LVName", T: 9 /*ScalarType.STRING*/, options: { "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 3, name: "Quantity", kind: "scalar", jsonName: "Quantity", T: 2 /*ScalarType.FLOAT*/ },
            { no: 4, name: "Priority", kind: "scalar", jsonName: "Priority", T: 9 /*ScalarType.STRING*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["LVID"] } } });
    }
    create(value?: PartialMessage<QuantityByLV>): QuantityByLV {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lVID = "";
        message.lVName = "";
        message.quantity = 0;
        message.priority = "";
        if (value !== undefined)
            reflectionMergePartial<QuantityByLV>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantityByLV): QuantityByLV {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string LVID = 1 [json_name = "LVID"];*/ 1:
                    message.lVID = reader.string();
                    break;
                case /* string LVName = 2 [json_name = "LVName"];*/ 2:
                    message.lVName = reader.string();
                    break;
                case /* float Quantity = 3 [json_name = "Quantity"];*/ 3:
                    message.quantity = reader.float();
                    break;
                case /* string Priority = 4 [json_name = "Priority"];*/ 4:
                    message.priority = 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: QuantityByLV, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string LVID = 1 [json_name = "LVID"]; */
        if (message.lVID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.lVID);
        /* string LVName = 2 [json_name = "LVName"]; */
        if (message.lVName !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVName);
        /* float Quantity = 3 [json_name = "Quantity"]; */
        if (message.quantity !== 0)
            writer.tag(3, WireType.Bit32).float(message.quantity);
        /* string Priority = 4 [json_name = "Priority"]; */
        if (message.priority !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.priority);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantityByLV
 */
export const QuantityByLV = new QuantityByLV$Type();
// @generated message type with reflection information, may provide speed optimized methods
class QuantityInLV$Type extends MessageType<QuantityInLV> {
    constructor() {
        super("api.QuantityInLV", [
            { no: 1, name: "LVID", kind: "scalar", jsonName: "LVID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logistical variant ID", example: "\"30\"" }, "api.dataRestrictionKey": "Executionflow,Handlingunit,Order", "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: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true, CustomType: "SimpleAggregateFunction(anyLast,String)" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "LVName", kind: "scalar", jsonName: "LVName", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.dataRestrictionKey": "Executionflow,Handlingunit,Order", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true, CustomType: "SimpleAggregateFunction(anyLast,String)" }] } } },
            { no: 3, name: "Value", kind: "scalar", jsonName: "Value", T: 2 /*ScalarType.FLOAT*/, options: { "validate.rules": { float: { gte: 0 } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { example: "10.5" }, "api.dataRestrictionKey": "Executionflow,Handlingunit,Order", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Handlingunit", Group: "handlingunit", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }, { Context: "Stock", Group: "stock_extended", Queryable: true, CustomType: "SimpleAggregateFunction(anyLast,Nullable(Decimal64(6)))" }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["LVID"] } } });
    }
    create(value?: PartialMessage<QuantityInLV>): QuantityInLV {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lVID = "";
        message.lVName = "";
        message.value = 0;
        if (value !== undefined)
            reflectionMergePartial<QuantityInLV>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: QuantityInLV): QuantityInLV {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string LVID = 1 [json_name = "LVID"];*/ 1:
                    message.lVID = reader.string();
                    break;
                case /* string LVName = 2 [json_name = "LVName"];*/ 2:
                    message.lVName = reader.string();
                    break;
                case /* float Value = 3 [json_name = "Value"];*/ 3:
                    message.value = reader.float();
                    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: QuantityInLV, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string LVID = 1 [json_name = "LVID"]; */
        if (message.lVID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.lVID);
        /* string LVName = 2 [json_name = "LVName"]; */
        if (message.lVName !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVName);
        /* float Value = 3 [json_name = "Value"]; */
        if (message.value !== 0)
            writer.tag(3, WireType.Bit32).float(message.value);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.QuantityInLV
 */
export const QuantityInLV = new QuantityInLV$Type();
// @generated message type with reflection information, may provide speed optimized methods
class StockSnapshot$Type extends MessageType<StockSnapshot> {
    constructor() {
        super("api.StockSnapshot", [
            { no: 6, name: "DateTime", kind: "message", jsonName: "DateTime", T: () => DateTime },
            { no: 2, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/, options: { "api.dataRestrictionKey": "Executionflow,Order", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Order", Group: "order", Queryable: true }, { Context: "Stock", Group: "stock", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 4, name: "Quantity", kind: "message", jsonName: "Quantity", T: () => QuantityInLV, options: { "validate.rules": { message: { required: true } } } },
            { no: 5, name: "QuantityInBaseLV", kind: "message", jsonName: "QuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 7, name: "IsTotalQuantity", kind: "scalar", jsonName: "IsTotalQuantity", T: 8 /*ScalarType.BOOL*/, options: { "validate.rules": { bool: { unauthorized: false } } } },
            { no: 8, name: "PartialQuantities", kind: "scalar", jsonName: "PartialQuantities", repeat: 1 /*RepeatType.PACKED*/, T: 2 /*ScalarType.FLOAT*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 9, name: "PreviousQuantityInBaseLV", kind: "message", jsonName: "PreviousQuantityInBaseLV", T: () => QuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["Quantity"] } } });
    }
    create(value?: PartialMessage<StockSnapshot>): StockSnapshot {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.iD = "";
        message.isTotalQuantity = false;
        message.partialQuantities = [];
        if (value !== undefined)
            reflectionMergePartial<StockSnapshot>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: StockSnapshot): StockSnapshot {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime DateTime = 6 [json_name = "DateTime"];*/ 6:
                    message.dateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.dateTime);
                    break;
                case /* string ID = 2 [json_name = "ID"];*/ 2:
                    message.iD = reader.string();
                    break;
                case /* api.QuantityInLV Quantity = 4 [json_name = "Quantity"];*/ 4:
                    message.quantity = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantity);
                    break;
                case /* api.QuantityInLV QuantityInBaseLV = 5 [json_name = "QuantityInBaseLV"];*/ 5:
                    message.quantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantityInBaseLV);
                    break;
                case /* bool IsTotalQuantity = 7 [json_name = "IsTotalQuantity"];*/ 7:
                    message.isTotalQuantity = reader.bool();
                    break;
                case /* repeated float PartialQuantities = 8 [json_name = "PartialQuantities"];*/ 8:
                    if (wireType === WireType.LengthDelimited)
                        for (let e = reader.int32() + reader.pos; reader.pos < e;)
                            message.partialQuantities.push(reader.float());
                    else
                        message.partialQuantities.push(reader.float());
                    break;
                case /* api.QuantityInLV PreviousQuantityInBaseLV = 9 [json_name = "PreviousQuantityInBaseLV"];*/ 9:
                    message.previousQuantityInBaseLV = QuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.previousQuantityInBaseLV);
                    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: StockSnapshot, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime DateTime = 6 [json_name = "DateTime"]; */
        if (message.dateTime)
            DateTime.internalBinaryWrite(message.dateTime, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        /* string ID = 2 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.iD);
        /* api.QuantityInLV Quantity = 4 [json_name = "Quantity"]; */
        if (message.quantity)
            QuantityInLV.internalBinaryWrite(message.quantity, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        /* api.QuantityInLV QuantityInBaseLV = 5 [json_name = "QuantityInBaseLV"]; */
        if (message.quantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.quantityInBaseLV, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* bool IsTotalQuantity = 7 [json_name = "IsTotalQuantity"]; */
        if (message.isTotalQuantity !== false)
            writer.tag(7, WireType.Varint).bool(message.isTotalQuantity);
        /* repeated float PartialQuantities = 8 [json_name = "PartialQuantities"]; */
        if (message.partialQuantities.length) {
            writer.tag(8, WireType.LengthDelimited).fork();
            for (let i = 0; i < message.partialQuantities.length; i++)
                writer.float(message.partialQuantities[i]);
            writer.join();
        }
        /* api.QuantityInLV PreviousQuantityInBaseLV = 9 [json_name = "PreviousQuantityInBaseLV"]; */
        if (message.previousQuantityInBaseLV)
            QuantityInLV.internalBinaryWrite(message.previousQuantityInBaseLV, writer.tag(9, 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.StockSnapshot
 */
export const StockSnapshot = new StockSnapshot$Type();
// @generated message type with reflection information, may provide speed optimized methods
class StockMovementClaim$Type extends MessageType<StockMovementClaim> {
    constructor() {
        super("api.StockMovementClaim", [
            { no: 1, name: "Claims", kind: "message", jsonName: "Claims", repeat: 1 /*RepeatType.PACKED*/, T: () => ClaimSummary, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Number of claims added per type" }, "api.aggKey": "ClaimTypeID" } },
            { no: 2, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Identifier of the stock move" }, "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } }
        ]);
    }
    create(value?: PartialMessage<StockMovementClaim>): StockMovementClaim {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.claims = [];
        message.iD = "";
        if (value !== undefined)
            reflectionMergePartial<StockMovementClaim>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: StockMovementClaim): StockMovementClaim {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* repeated api.ClaimSummary Claims = 1 [json_name = "Claims"];*/ 1:
                    message.claims.push(ClaimSummary.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string ID = 2 [json_name = "ID"];*/ 2:
                    message.iD = 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: StockMovementClaim, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* repeated api.ClaimSummary Claims = 1 [json_name = "Claims"]; */
        for (let i = 0; i < message.claims.length; i++)
            ClaimSummary.internalBinaryWrite(message.claims[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string ID = 2 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.iD);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.StockMovementClaim
 */
export const StockMovementClaim = new StockMovementClaim$Type();
// @generated message type with reflection information, may provide speed optimized methods
class StockMovement$Type extends MessageType<StockMovement> {
    constructor() {
        super("api.StockMovement", [
            { no: 1, name: "DateTime", kind: "message", jsonName: "DateTime", T: () => DateTime, options: { "validate.rules": { message: { required: true } } } },
            { no: 2, name: "ID", kind: "scalar", jsonName: "ID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.aggSkip": "ClaimAdded", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 3, name: "Type", kind: "enum", jsonName: "Type", T: () => ["api.StockMovementTypeCode", StockMovementTypeCode], options: { "validate.rules": { enum: { definedOnly: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Codes used in StockMovementReason to explain stock movement" }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 4, name: "HandlingunitID", kind: "scalar", jsonName: "HandlingunitID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 17, name: "OrderID", kind: "scalar", jsonName: "OrderID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 5, name: "ExecutionflowID", kind: "scalar", jsonName: "ExecutionflowID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 6, name: "ExecutionflowLineID", kind: "scalar", jsonName: "ExecutionflowLineID", T: 9 /*ScalarType.STRING*/, options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 7, name: "Reason", kind: "scalar", jsonName: "Reason", T: 9 /*ScalarType.STRING*/, options: { "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 8, name: "OperationReference", kind: "scalar", jsonName: "OperationReference", T: 9 /*ScalarType.STRING*/, options: { "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 9, name: "Quantity", kind: "message", jsonName: "Quantity", T: () => MovementQuantityInLV, options: { "validate.rules": { message: { required: true } }, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }] } } },
            { no: 10, name: "QuantityInBaseLV", kind: "message", jsonName: "QuantityInBaseLV", T: () => MovementQuantityInLV, options: { "validate.rules": { message: { unauthorized: true } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true }, "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }] } } },
            { no: 11, name: "MvtAlreadyUsedInStock", kind: "scalar", jsonName: "MvtAlreadyUsedInStock", T: 8 /*ScalarType.BOOL*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 12, 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", "api.kpiExclude": { Items: [{ Context: "Stock", Group: "stock" }, { Context: "Stock", Group: "stock_extended" }, { Context: "Movement", Group: "movement" }] } } },
            { no: 13, name: "LVDetailledQuantity", kind: "scalar", jsonName: "LVDetailledQuantity", T: 9 /*ScalarType.STRING*/, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { readOnly: true } } },
            { no: 14, name: "Author", kind: "scalar", jsonName: "Author", T: 9 /*ScalarType.STRING*/, options: { "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 15, name: "ExternalMoveRef", kind: "scalar", jsonName: "ExternalMoveRef", T: 9 /*ScalarType.STRING*/, options: { "api.kpiItems": { Items: [{ Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 16, name: "ExternalInfo", kind: "scalar", jsonName: "ExternalInfo", T: 9 /*ScalarType.STRING*/ }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["DateTime", "Quantity"] } } });
    }
    create(value?: PartialMessage<StockMovement>): StockMovement {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.iD = "";
        message.type = 0;
        message.handlingunitID = "";
        message.orderID = "";
        message.executionflowID = "";
        message.executionflowLineID = "";
        message.reason = "";
        message.operationReference = "";
        message.mvtAlreadyUsedInStock = false;
        message.quantityByLVs = [];
        message.lVDetailledQuantity = "";
        message.author = "";
        message.externalMoveRef = "";
        message.externalInfo = "";
        if (value !== undefined)
            reflectionMergePartial<StockMovement>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: StockMovement): StockMovement {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime DateTime = 1 [json_name = "DateTime"];*/ 1:
                    message.dateTime = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.dateTime);
                    break;
                case /* string ID = 2 [json_name = "ID"];*/ 2:
                    message.iD = reader.string();
                    break;
                case /* api.StockMovementTypeCode Type = 3 [json_name = "Type"];*/ 3:
                    message.type = reader.int32();
                    break;
                case /* string HandlingunitID = 4 [json_name = "HandlingunitID"];*/ 4:
                    message.handlingunitID = reader.string();
                    break;
                case /* string OrderID = 17 [json_name = "OrderID"];*/ 17:
                    message.orderID = reader.string();
                    break;
                case /* string ExecutionflowID = 5 [json_name = "ExecutionflowID"];*/ 5:
                    message.executionflowID = reader.string();
                    break;
                case /* string ExecutionflowLineID = 6 [json_name = "ExecutionflowLineID"];*/ 6:
                    message.executionflowLineID = reader.string();
                    break;
                case /* string Reason = 7 [json_name = "Reason"];*/ 7:
                    message.reason = reader.string();
                    break;
                case /* string OperationReference = 8 [json_name = "OperationReference"];*/ 8:
                    message.operationReference = reader.string();
                    break;
                case /* api.MovementQuantityInLV Quantity = 9 [json_name = "Quantity"];*/ 9:
                    message.quantity = MovementQuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantity);
                    break;
                case /* api.MovementQuantityInLV QuantityInBaseLV = 10 [json_name = "QuantityInBaseLV"];*/ 10:
                    message.quantityInBaseLV = MovementQuantityInLV.internalBinaryRead(reader, reader.uint32(), options, message.quantityInBaseLV);
                    break;
                case /* bool MvtAlreadyUsedInStock = 11 [json_name = "MvtAlreadyUsedInStock"];*/ 11:
                    message.mvtAlreadyUsedInStock = reader.bool();
                    break;
                case /* repeated api.QuantityByLV QuantityByLVs = 12 [json_name = "QuantityByLVs"];*/ 12:
                    message.quantityByLVs.push(QuantityByLV.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string LVDetailledQuantity = 13 [json_name = "LVDetailledQuantity"];*/ 13:
                    message.lVDetailledQuantity = reader.string();
                    break;
                case /* string Author = 14 [json_name = "Author"];*/ 14:
                    message.author = reader.string();
                    break;
                case /* string ExternalMoveRef = 15 [json_name = "ExternalMoveRef"];*/ 15:
                    message.externalMoveRef = reader.string();
                    break;
                case /* string ExternalInfo = 16 [json_name = "ExternalInfo"];*/ 16:
                    message.externalInfo = 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: StockMovement, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime DateTime = 1 [json_name = "DateTime"]; */
        if (message.dateTime)
            DateTime.internalBinaryWrite(message.dateTime, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string ID = 2 [json_name = "ID"]; */
        if (message.iD !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.iD);
        /* api.StockMovementTypeCode Type = 3 [json_name = "Type"]; */
        if (message.type !== 0)
            writer.tag(3, WireType.Varint).int32(message.type);
        /* string HandlingunitID = 4 [json_name = "HandlingunitID"]; */
        if (message.handlingunitID !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.handlingunitID);
        /* string OrderID = 17 [json_name = "OrderID"]; */
        if (message.orderID !== "")
            writer.tag(17, WireType.LengthDelimited).string(message.orderID);
        /* string ExecutionflowID = 5 [json_name = "ExecutionflowID"]; */
        if (message.executionflowID !== "")
            writer.tag(5, WireType.LengthDelimited).string(message.executionflowID);
        /* string ExecutionflowLineID = 6 [json_name = "ExecutionflowLineID"]; */
        if (message.executionflowLineID !== "")
            writer.tag(6, WireType.LengthDelimited).string(message.executionflowLineID);
        /* string Reason = 7 [json_name = "Reason"]; */
        if (message.reason !== "")
            writer.tag(7, WireType.LengthDelimited).string(message.reason);
        /* string OperationReference = 8 [json_name = "OperationReference"]; */
        if (message.operationReference !== "")
            writer.tag(8, WireType.LengthDelimited).string(message.operationReference);
        /* api.MovementQuantityInLV Quantity = 9 [json_name = "Quantity"]; */
        if (message.quantity)
            MovementQuantityInLV.internalBinaryWrite(message.quantity, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
        /* api.MovementQuantityInLV QuantityInBaseLV = 10 [json_name = "QuantityInBaseLV"]; */
        if (message.quantityInBaseLV)
            MovementQuantityInLV.internalBinaryWrite(message.quantityInBaseLV, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
        /* bool MvtAlreadyUsedInStock = 11 [json_name = "MvtAlreadyUsedInStock"]; */
        if (message.mvtAlreadyUsedInStock !== false)
            writer.tag(11, WireType.Varint).bool(message.mvtAlreadyUsedInStock);
        /* repeated api.QuantityByLV QuantityByLVs = 12 [json_name = "QuantityByLVs"]; */
        for (let i = 0; i < message.quantityByLVs.length; i++)
            QuantityByLV.internalBinaryWrite(message.quantityByLVs[i], writer.tag(12, WireType.LengthDelimited).fork(), options).join();
        /* string LVDetailledQuantity = 13 [json_name = "LVDetailledQuantity"]; */
        if (message.lVDetailledQuantity !== "")
            writer.tag(13, WireType.LengthDelimited).string(message.lVDetailledQuantity);
        /* string Author = 14 [json_name = "Author"]; */
        if (message.author !== "")
            writer.tag(14, WireType.LengthDelimited).string(message.author);
        /* string ExternalMoveRef = 15 [json_name = "ExternalMoveRef"]; */
        if (message.externalMoveRef !== "")
            writer.tag(15, WireType.LengthDelimited).string(message.externalMoveRef);
        /* string ExternalInfo = 16 [json_name = "ExternalInfo"]; */
        if (message.externalInfo !== "")
            writer.tag(16, WireType.LengthDelimited).string(message.externalInfo);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.StockMovement
 */
export const StockMovement = new StockMovement$Type();
// @generated message type with reflection information, may provide speed optimized methods
class MovementQuantityInLV$Type extends MessageType<MovementQuantityInLV> {
    constructor() {
        super("api.MovementQuantityInLV", [
            { no: 1, name: "LVID", kind: "scalar", jsonName: "LVID", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { minLen: "1" } }, "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Logistical variant ID", example: "\"30\"" }, "api.dataRestrictionKey": "Stock,Executionflow", "api.indexationType": { Types: [{ Context: "*", Type: "generatedText,keyword" }] }, "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "shortKeyword" }] } } },
            { no: 2, name: "LVName", kind: "scalar", jsonName: "LVName", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { 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 }, { Context: "Movement", Group: "movement", Queryable: true }] } } },
            { no: 3, name: "Value", kind: "scalar", jsonName: "Value", T: 2 /*ScalarType.FLOAT*/, options: { "validate.rules": { float: { notIn: [0] } }, "api.dataRestrictionKey": "Stock,Executionflow", "api.kpiItems": { Items: [{ Context: "Executionflow", Group: "executionflow", Queryable: true }, { Context: "Movement", Group: "movement", Queryable: true }] } } }
        ], { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema": { jsonSchema: { required: ["LVID"] } } });
    }
    create(value?: PartialMessage<MovementQuantityInLV>): MovementQuantityInLV {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.lVID = "";
        message.lVName = "";
        message.value = 0;
        if (value !== undefined)
            reflectionMergePartial<MovementQuantityInLV>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MovementQuantityInLV): MovementQuantityInLV {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string LVID = 1 [json_name = "LVID"];*/ 1:
                    message.lVID = reader.string();
                    break;
                case /* string LVName = 2 [json_name = "LVName"];*/ 2:
                    message.lVName = reader.string();
                    break;
                case /* float Value = 3 [json_name = "Value"];*/ 3:
                    message.value = reader.float();
                    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: MovementQuantityInLV, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string LVID = 1 [json_name = "LVID"]; */
        if (message.lVID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.lVID);
        /* string LVName = 2 [json_name = "LVName"]; */
        if (message.lVName !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.lVName);
        /* float Value = 3 [json_name = "Value"]; */
        if (message.value !== 0)
            writer.tag(3, WireType.Bit32).float(message.value);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.MovementQuantityInLV
 */
export const MovementQuantityInLV = new MovementQuantityInLV$Type();
