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

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { AttachmentSummary, EntityID, EventHeader, MetadataElement, RequestProjectHeader, ResponseHeader } from "./shared_pb.js";
import { ExpiryConstraint, LogisticVariant, TradeItemDescriptions } from "./repositoryShared_pb.js";

/**
 * Event Payload
 *
 * @generated from message api.ItemCreatedPayload
 */
export class ItemCreatedPayload extends Message<ItemCreatedPayload> {
  /**
   * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
   *
   * @generated from field: repeated api.MetadataElement MetaData = 1;
   */
  MetaData: MetadataElement[] = [];

  /**
   * Item components
   *
   * @generated from field: api.ExpiryConstraint ExpiryConstraint = 6;
   */
  ExpiryConstraint?: ExpiryConstraint;

  /**
   * @generated from field: string PhotoURI = 7;
   */
  PhotoURI = "";

  /**
   * @option language
   *
   * @generated from field: repeated api.TradeItemDescriptions DescriptionsByLanguage = 3;
   */
  DescriptionsByLanguage: TradeItemDescriptions[] = [];

  /**
   * @generated from field: repeated api.LogisticVariant LogisticVariants = 4;
   */
  LogisticVariants: LogisticVariant[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemCreatedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "MetaData", kind: "message", T: MetadataElement, repeated: true },
    { no: 6, name: "ExpiryConstraint", kind: "message", T: ExpiryConstraint },
    { no: 7, name: "PhotoURI", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "DescriptionsByLanguage", kind: "message", T: TradeItemDescriptions, repeated: true },
    { no: 4, name: "LogisticVariants", kind: "message", T: LogisticVariant, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemCreatedRequest
 */
export class ItemCreatedRequest extends Message<ItemCreatedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemCreatedResponse
 */
export class ItemCreatedResponse extends Message<ItemCreatedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * Event Payload
 *
 * @generated from message api.ItemMetaDataUpdatedPayload
 */
export class ItemMetaDataUpdatedPayload extends Message<ItemMetaDataUpdatedPayload> {
  /**
   * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
   *
   * @generated from field: repeated api.MetadataElement MetaData = 4;
   */
  MetaData: MetadataElement[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemMetaDataUpdatedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 4, name: "MetaData", kind: "message", T: MetadataElement, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemMetaDataUpdatedRequest
 */
export class ItemMetaDataUpdatedRequest extends Message<ItemMetaDataUpdatedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemMetaDataUpdatedResponse
 */
export class ItemMetaDataUpdatedResponse extends Message<ItemMetaDataUpdatedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * Event Payload
 *
 * @generated from message api.ItemLogisticVariantUpdatedPayload
 */
export class ItemLogisticVariantUpdatedPayload extends Message<ItemLogisticVariantUpdatedPayload> {
  /**
   * @generated from field: repeated api.LogisticVariant LogisticVariants = 1;
   */
  LogisticVariants: LogisticVariant[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemLogisticVariantUpdatedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "LogisticVariants", kind: "message", T: LogisticVariant, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemLogisticVariantUpdatedRequest
 */
export class ItemLogisticVariantUpdatedRequest extends Message<ItemLogisticVariantUpdatedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemLogisticVariantUpdatedResponse
 */
export class ItemLogisticVariantUpdatedResponse extends Message<ItemLogisticVariantUpdatedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * Event Payload
 *
 * @generated from message api.ItemLogisticVariantRemovedPayload
 */
export class ItemLogisticVariantRemovedPayload extends Message<ItemLogisticVariantRemovedPayload> {
  /**
   * @generated from field: repeated string RemovedLogisticVariantIDs = 1;
   */
  RemovedLogisticVariantIDs: string[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemLogisticVariantRemovedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "RemovedLogisticVariantIDs", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemLogisticVariantRemovedRequest
 */
export class ItemLogisticVariantRemovedRequest extends Message<ItemLogisticVariantRemovedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemLogisticVariantRemovedResponse
 */
export class ItemLogisticVariantRemovedResponse extends Message<ItemLogisticVariantRemovedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * Event Payload
 *
 * @generated from message api.ItemDeletedPayload
 */
export class ItemDeletedPayload extends Message<ItemDeletedPayload> {
  constructor(data?: PartialMessage<ItemDeletedPayload>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemDeletedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemDeletedRequest
 */
export class ItemDeletedRequest extends Message<ItemDeletedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemDeletedResponse
 */
export class ItemDeletedResponse extends Message<ItemDeletedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * Event Payload
 *
 * @generated from message api.ItemDescriptionUpdatedPayload
 */
export class ItemDescriptionUpdatedPayload extends Message<ItemDescriptionUpdatedPayload> {
  /**
   * @option language
   *
   * @generated from field: repeated api.TradeItemDescriptions DescriptionsByLanguage = 3;
   */
  DescriptionsByLanguage: TradeItemDescriptions[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemDescriptionUpdatedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 3, name: "DescriptionsByLanguage", kind: "message", T: TradeItemDescriptions, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * API Request
 *
 * @generated from message api.ItemDescriptionUpdatedRequest
 */
export class ItemDescriptionUpdatedRequest extends Message<ItemDescriptionUpdatedRequest> {
  /**
   * @generated from field: api.RequestProjectHeader Header = 1;
   */
  Header?: RequestProjectHeader;

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

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

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

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

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

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

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

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

/**
 * API Response
 *
 * @generated from message api.ItemDescriptionUpdatedResponse
 */
export class ItemDescriptionUpdatedResponse extends Message<ItemDescriptionUpdatedResponse> {
  /**
   * @generated from field: api.ResponseHeader Header = 1;
   */
  Header?: ResponseHeader;

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

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

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

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

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

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

/**
 * @generated from message api.ItemAttachmentAddedPayload
 */
export class ItemAttachmentAddedPayload extends Message<ItemAttachmentAddedPayload> {
  /**
   * @generated from field: repeated api.AttachmentSummary Attachments = 1;
   */
  Attachments: AttachmentSummary[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemAttachmentAddedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Attachments", kind: "message", T: AttachmentSummary, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @generated from message api.ItemAttachmentRemovedPayload
 */
export class ItemAttachmentRemovedPayload extends Message<ItemAttachmentRemovedPayload> {
  /**
   * @generated from field: repeated api.AttachmentSummary Attachments = 1;
   */
  Attachments: AttachmentSummary[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemAttachmentRemovedPayload";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Attachments", kind: "message", T: AttachmentSummary, repeated: true },
  ]);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

