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

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { EnrichedGoods, StockMovement, StockSnapshot } from "./warehousingShared_pb.js";
import { ActorPayload } from "./actor_pb.js";
import { EntityID, EventHeader, NoID, RequestProjectHeader, ResponseHeader } from "./shared_pb.js";

/**
 *
 * Update the goods stock counter with the provided goods quantity.
 * Also updates the prepared quantity (outbound).
 * May also update the pre-received qty (inbound).
 *
 * This event is received from Stock entity.
 *
 * This event is used when the Stock is physically moved from/into the warehouse to De/Increment the physical Stock counter of this goods.
 *
 * The ID part of the request is removed, because the Stock ID.RefID is built internally from the Payload.Goods. 
 * A specific algorithm will be implemented on api-server and all actions which result this event.
 *
 * @generated from message api.StockMovedPayload
 */
export class StockMovedPayload extends Message<StockMovedPayload> {
  /**
   * @generated from field: api.EnrichedGoods Goods = 1;
   */
  Goods?: EnrichedGoods;

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

  /**
   * @generated from field: api.ActorPayload Actor = 7;
   */
  Actor?: ActorPayload;

  /**
   * @generated from field: api.StockMovement Movement = 8;
   */
  Movement?: StockMovement;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockMovedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Goods", kind: "message", T: EnrichedGoods },
    { no: 2, name: "ActorID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "Actor", kind: "message", T: ActorPayload },
    { no: 8, name: "Movement", kind: "message", T: StockMovement },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.StockMovedRequest
 */
export class StockMovedRequest extends Message<StockMovedRequest> {
  /**
   * Header of the event request
   *
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: api.NoID ID = 4;
   */
  ID?: NoID;

  /**
   * Content of the event request
   *
   * @generated from field: api.StockMovedPayload Payload = 3;
   */
  Payload?: StockMovedPayload;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockMovedRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 4, name: "ID", kind: "message", T: NoID },
    { no: 3, name: "Payload", kind: "message", T: StockMovedPayload },
  ]);

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

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

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

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

/**
 * @generated from message api.StockMovedResponse
 */
export class StockMovedResponse extends Message<StockMovedResponse> {
  /**
   * Header of the response
   *
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

  /**
   * Identifier of the stock the request event was applied on
   *
   * @generated from field: api.EntityID ID = 2;
   */
  ID?: EntityID;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockMovedResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: ResponseHeader },
    { no: 2, name: "ID", kind: "message", T: EntityID },
  ]);

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

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

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

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

/**
 *
 * The measured stock quantity at the given date time.
 * Event received from a wms inventory.
 *
 * The ID part of the request is removed, because the Stock ID.RefID is built internally from the Payload.Goods. 
 * A specific algorithm will be implemented on api-server and all actions which result this event.
 *
 * @generated from message api.StockSnapshottedPayload
 */
export class StockSnapshottedPayload extends Message<StockSnapshottedPayload> {
  /**
   * Description of the goods
   *
   * @generated from field: api.EnrichedGoods Goods = 1;
   */
  Goods?: EnrichedGoods;

  /**
   * Identifier of the actor where the stock is located
   *
   * @generated from field: string ActorID = 2;
   */
  ActorID = "";

  /**
   * @generated from field: api.ActorPayload Actor = 7;
   */
  Actor?: ActorPayload;

  /**
   * Description of the snapshot
   *
   * @generated from field: api.StockSnapshot Snapshot = 8;
   */
  Snapshot?: StockSnapshot;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockSnapshottedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Goods", kind: "message", T: EnrichedGoods },
    { no: 2, name: "ActorID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "Actor", kind: "message", T: ActorPayload },
    { no: 8, name: "Snapshot", kind: "message", T: StockSnapshot },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.StockSnapshottedRequest
 */
export class StockSnapshottedRequest extends Message<StockSnapshottedRequest> {
  /**
   * Header of the event request
   *
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: api.NoID ID = 4;
   */
  ID?: NoID;

  /**
   * Content of the event request
   *
   * @generated from field: api.StockSnapshottedPayload Payload = 3;
   */
  Payload?: StockSnapshottedPayload;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockSnapshottedRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 4, name: "ID", kind: "message", T: NoID },
    { no: 3, name: "Payload", kind: "message", T: StockSnapshottedPayload },
  ]);

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

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

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

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

/**
 * @generated from message api.StockSnapshottedResponse
 */
export class StockSnapshottedResponse extends Message<StockSnapshottedResponse> {
  /**
   * Header of the response
   *
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

  /**
   * Identifier of the stock the request event was applied on
   *
   * @generated from field: api.EntityID ID = 2;
   */
  ID?: EntityID;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockSnapshottedResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: ResponseHeader },
    { no: 2, name: "ID", kind: "message", T: EntityID },
  ]);

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

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

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

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

/**
 *
 * DEPRECATED
 * The stock entry has been deleted.
 * Event received from a wms.
 *
 * The ID part of the request is removed, because the Stock ID.RefID is built internally from the Payload.Goods. 
 * A specific algorithm will be implemented on api-server and all actions which result this event.
 *
 * @generated from message api.StockDeletedPayload
 */
export class StockDeletedPayload extends Message<StockDeletedPayload> {
  /**
   * Description of the goods
   *
   * @generated from field: api.EnrichedGoods Goods = 1;
   */
  Goods?: EnrichedGoods;

  /**
   * Identifier of the actor where the stock is located
   *
   * @generated from field: string ActorID = 2;
   */
  ActorID = "";

  /**
   * @generated from field: api.ActorPayload Actor = 7;
   */
  Actor?: ActorPayload;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockDeletedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Goods", kind: "message", T: EnrichedGoods },
    { no: 2, name: "ActorID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "Actor", kind: "message", T: ActorPayload },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.StockDeletedRequest
 */
export class StockDeletedRequest extends Message<StockDeletedRequest> {
  /**
   * Header of the event request
   *
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

  /**
   * @generated from field: api.NoID ID = 4;
   */
  ID?: NoID;

  /**
   * Content of the event request
   *
   * @generated from field: api.StockDeletedPayload Payload = 3;
   */
  Payload?: StockDeletedPayload;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockDeletedRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: RequestProjectHeader },
    { no: 4, name: "ID", kind: "message", T: NoID },
    { no: 3, name: "Payload", kind: "message", T: StockDeletedPayload },
  ]);

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

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

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

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

/**
 * @generated from message api.StockDeletedResponse
 */
export class StockDeletedResponse extends Message<StockDeletedResponse> {
  /**
   * Header of the response
   *
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

  /**
   * Identifier of the stock the request event was applied on
   *
   * @generated from field: api.EntityID ID = 2;
   */
  ID?: EntityID;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.StockDeletedResponse";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Header", kind: "message", T: ResponseHeader },
    { no: 2, name: "ID", kind: "message", T: EntityID },
  ]);

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

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

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

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

