// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file repositoryShared.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 { DateTime, MetadataElement, QuantityArea, QuantityLength, QuantityVolume, QuantityWeight } from "./shared_pb.js";

/**
 *
 * 	All statuses for Actor entity
 *
 * @generated from enum api.ActorStatusCode
 */
export enum ActorStatusCode {
  /**
   * @generated from enum value: SITE_0000_UNKNOWN = 0;
   */
  SITE_0000_UNKNOWN = 0,

  /**
   * @generated from enum value: SITE_1000_ACTIVE = 1000;
   */
  SITE_1000_ACTIVE = 1000,

  /**
   * @generated from enum value: SITE_9000_CANCELLED = 9000;
   */
  SITE_9000_CANCELLED = 9000,
}
// Retrieve enum metadata with: proto3.getEnumType(ActorStatusCode)
proto3.util.setEnumType(ActorStatusCode, "api.ActorStatusCode", [
  { no: 0, name: "SITE_0000_UNKNOWN" },
  { no: 1000, name: "SITE_1000_ACTIVE" },
  { no: 9000, name: "SITE_9000_CANCELLED" },
]);

/**
 *
 * 	All statuses for Partner entity
 *
 * @generated from enum api.PartnerStatusCode
 */
export enum PartnerStatusCode {
  /**
   * @generated from enum value: PARTNER_0000_UNKNOWN = 0;
   */
  PARTNER_0000_UNKNOWN = 0,

  /**
   * @generated from enum value: PARTNER_1000_ACTIVE = 1000;
   */
  PARTNER_1000_ACTIVE = 1000,

  /**
   * @generated from enum value: PARTNER_9000_CANCELLED = 9000;
   */
  PARTNER_9000_CANCELLED = 9000,
}
// Retrieve enum metadata with: proto3.getEnumType(PartnerStatusCode)
proto3.util.setEnumType(PartnerStatusCode, "api.PartnerStatusCode", [
  { no: 0, name: "PARTNER_0000_UNKNOWN" },
  { no: 1000, name: "PARTNER_1000_ACTIVE" },
  { no: 9000, name: "PARTNER_9000_CANCELLED" },
]);

/**
 *
 * 	All statuses for Error entity
 *
 * @generated from enum api.PartnerErrorCode
 */
export enum PartnerErrorCode {
  /**
   * @generated from enum value: ERROR_0000_UNKNOWN = 0;
   */
  ERROR_0000_UNKNOWN = 0,

  /**
   * @generated from enum value: ERROR_1000_ACTIVE = 1000;
   */
  ERROR_1000_ACTIVE = 1000,

  /**
   * @generated from enum value: ERROR_9000_CANCELLED = 9000;
   */
  ERROR_9000_CANCELLED = 9000,
}
// Retrieve enum metadata with: proto3.getEnumType(PartnerErrorCode)
proto3.util.setEnumType(PartnerErrorCode, "api.PartnerErrorCode", [
  { no: 0, name: "ERROR_0000_UNKNOWN" },
  { no: 1000, name: "ERROR_1000_ACTIVE" },
  { no: 9000, name: "ERROR_9000_CANCELLED" },
]);

/**
 *
 * 	All statuses for Item entity
 *
 * @generated from enum api.ItemStatusCode
 */
export enum ItemStatusCode {
  /**
   * @generated from enum value: ITEM_0000_UNKNOWN = 0;
   */
  ITEM_0000_UNKNOWN = 0,

  /**
   * @generated from enum value: ITEM_1000_ACTIVE = 1000;
   */
  ITEM_1000_ACTIVE = 1000,

  /**
   * @generated from enum value: ITEM_9000_CANCELLED = 9000;
   */
  ITEM_9000_CANCELLED = 9000,
}
// Retrieve enum metadata with: proto3.getEnumType(ItemStatusCode)
proto3.util.setEnumType(ItemStatusCode, "api.ItemStatusCode", [
  { no: 0, name: "ITEM_0000_UNKNOWN" },
  { no: 1000, name: "ITEM_1000_ACTIVE" },
  { no: 9000, name: "ITEM_9000_CANCELLED" },
]);

/**
 *
 * 	All statuses for Family entity
 *
 * @generated from enum api.FamilyStatusCode
 */
export enum FamilyStatusCode {
  /**
   * @generated from enum value: FAMILY_0000_UNKNOWN = 0;
   */
  FAMILY_0000_UNKNOWN = 0,

  /**
   * @generated from enum value: FAMILY_1000_ACTIVE = 1000;
   */
  FAMILY_1000_ACTIVE = 1000,

  /**
   * @generated from enum value: FAMILY_9000_CANCELLED = 9000;
   */
  FAMILY_9000_CANCELLED = 9000,
}
// Retrieve enum metadata with: proto3.getEnumType(FamilyStatusCode)
proto3.util.setEnumType(FamilyStatusCode, "api.FamilyStatusCode", [
  { no: 0, name: "FAMILY_0000_UNKNOWN" },
  { no: 1000, name: "FAMILY_1000_ACTIVE" },
  { no: 9000, name: "FAMILY_9000_CANCELLED" },
]);

/**
 * @generated from enum api.IdType
 */
export enum IdType {
  /**
   * @generated from enum value: IDTYPE_UNKNOWN = 0;
   */
  IDTYPE_UNKNOWN = 0,

  /**
   * @generated from enum value: IDTYPE_GLN = 1;
   */
  IDTYPE_GLN = 1,
}
// Retrieve enum metadata with: proto3.getEnumType(IdType)
proto3.util.setEnumType(IdType, "api.IdType", [
  { no: 0, name: "IDTYPE_UNKNOWN" },
  { no: 1, name: "IDTYPE_GLN" },
]);

/**
 * @generated from enum api.ExpiryConstraintType
 */
export enum ExpiryConstraintType {
  /**
   * @generated from enum value: UNKNOWN_DATE = 0;
   */
  UNKNOWN_DATE = 0,

  /**
   * EDIFACT code 36, will expire = true
   *
   * @generated from enum value: USE_BY_DATE = 1;
   */
  USE_BY_DATE = 1,

  /**
   * EDIFACT code 361, will expire = true
   *
   * @generated from enum value: BEST_BEFORE_DATE = 2;
   */
  BEST_BEFORE_DATE = 2,

  /**
   * EDIFACT code 94, will expire = false
   *
   * @generated from enum value: PRODUCTION_DATE = 3;
   */
  PRODUCTION_DATE = 3,

  /**
   * EDIFACT code 360, will expire = true
   *
   * @generated from enum value: SELL_BY_DATE = 4;
   */
  SELL_BY_DATE = 4,
}
// Retrieve enum metadata with: proto3.getEnumType(ExpiryConstraintType)
proto3.util.setEnumType(ExpiryConstraintType, "api.ExpiryConstraintType", [
  { no: 0, name: "UNKNOWN_DATE" },
  { no: 1, name: "USE_BY_DATE" },
  { no: 2, name: "BEST_BEFORE_DATE" },
  { no: 3, name: "PRODUCTION_DATE" },
  { no: 4, name: "SELL_BY_DATE" },
]);

/**
 * @generated from enum api.ActorTypology
 */
export enum ActorTypology {
  /**
   * @generated from enum value: TYPOLOGY_UNKNOWN = 0;
   */
  TYPOLOGY_UNKNOWN = 0,

  /**
   * @generated from enum value: TYPOLOGY_WAREHOUSE = 1;
   */
  TYPOLOGY_WAREHOUSE = 1,

  /**
   * @generated from enum value: TYPOLOGY_STORE = 2;
   */
  TYPOLOGY_STORE = 2,

  /**
   * @generated from enum value: TYPOLOGY_FACTORY = 3;
   */
  TYPOLOGY_FACTORY = 3,

  /**
   * @generated from enum value: TYPOLOGY_COLLECTION_POINT = 4;
   */
  TYPOLOGY_COLLECTION_POINT = 4,

  /**
   * @generated from enum value: TYPOLOGY_OTHER = 5;
   */
  TYPOLOGY_OTHER = 5,

  /**
   * @generated from enum value: TYPOLOGY_OFFICE = 6;
   */
  TYPOLOGY_OFFICE = 6,

  /**
   * @generated from enum value: TYPOLOGY_INDIVIDUAL = 7;
   */
  TYPOLOGY_INDIVIDUAL = 7,

  /**
   * @generated from enum value: TYPOLOGY_CARRIER = 8;
   */
  TYPOLOGY_CARRIER = 8,
}
// Retrieve enum metadata with: proto3.getEnumType(ActorTypology)
proto3.util.setEnumType(ActorTypology, "api.ActorTypology", [
  { no: 0, name: "TYPOLOGY_UNKNOWN" },
  { no: 1, name: "TYPOLOGY_WAREHOUSE" },
  { no: 2, name: "TYPOLOGY_STORE" },
  { no: 3, name: "TYPOLOGY_FACTORY" },
  { no: 4, name: "TYPOLOGY_COLLECTION_POINT" },
  { no: 5, name: "TYPOLOGY_OTHER" },
  { no: 6, name: "TYPOLOGY_OFFICE" },
  { no: 7, name: "TYPOLOGY_INDIVIDUAL" },
  { no: 8, name: "TYPOLOGY_CARRIER" },
]);

/**
 * @generated from message api.ActorStatus
 */
export class ActorStatus extends Message<ActorStatus> {
  /**
   * @generated from field: api.ActorStatusCode StatusCode = 1;
   */
  StatusCode = ActorStatusCode.SITE_0000_UNKNOWN;

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

  /**
   * Status effective date. Set by the event's RefDate that triggered the status change.
   *
   * @generated from field: api.DateTime ActualDate = 3;
   */
  ActualDate?: DateTime;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ActorStatus";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "StatusCode", kind: "enum", T: proto3.getEnumType(ActorStatusCode) },
    { no: 2, name: "Date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ActualDate", kind: "message", T: DateTime },
  ]);

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

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

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

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

/**
 * @generated from message api.ActorStatusStruct
 */
export class ActorStatusStruct extends Message<ActorStatusStruct> {
  /**
   * Current status of the Actor entity
   *
   * @generated from field: api.ActorStatus Current = 1;
   */
  Current?: ActorStatus;

  /**
   * List of all status history of the Actor entity
   *
   * @generated from field: repeated api.ActorStatus History = 2;
   */
  History: ActorStatus[] = [];

  /**
   * @generated from field: string CreationDate = 3;
   */
  CreationDate = "";

  /**
   * @generated from field: uint32 Version = 4;
   */
  Version = 0;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ActorStatusStruct";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: ActorStatus },
    { no: 2, name: "History", kind: "message", T: ActorStatus, repeated: true },
    { no: 3, name: "CreationDate", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Version", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
  ]);

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

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

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

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

/**
 * @generated from message api.PartnerStatus
 */
export class PartnerStatus extends Message<PartnerStatus> {
  /**
   * @generated from field: api.PartnerStatusCode StatusCode = 1;
   */
  StatusCode = PartnerStatusCode.PARTNER_0000_UNKNOWN;

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

  /**
   * Status effective date. Set by the event's RefDate that triggered the status change.
   *
   * @generated from field: api.DateTime ActualDate = 3;
   */
  ActualDate?: DateTime;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.PartnerStatus";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "StatusCode", kind: "enum", T: proto3.getEnumType(PartnerStatusCode) },
    { no: 2, name: "Date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ActualDate", kind: "message", T: DateTime },
  ]);

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

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

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

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

/**
 * @generated from message api.PartnerStatusStruct
 */
export class PartnerStatusStruct extends Message<PartnerStatusStruct> {
  /**
   * Current status of the Partner entity
   *
   * @generated from field: api.PartnerStatus Current = 1;
   */
  Current?: PartnerStatus;

  /**
   * List of all status history of the Partner entity
   *
   * @generated from field: repeated api.PartnerStatus History = 2;
   */
  History: PartnerStatus[] = [];

  /**
   * @generated from field: string CreationDate = 3;
   */
  CreationDate = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.PartnerStatusStruct";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: PartnerStatus },
    { no: 2, name: "History", kind: "message", T: PartnerStatus, repeated: true },
    { no: 3, name: "CreationDate", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 *
 * 	Error entity status structure
 *
 * @generated from message api.ErrorStatus
 */
export class ErrorStatus extends Message<ErrorStatus> {
  /**
   * @generated from field: api.PartnerStatusCode StatusCode = 1;
   */
  StatusCode = PartnerStatusCode.PARTNER_0000_UNKNOWN;

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

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ErrorStatus";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "StatusCode", kind: "enum", T: proto3.getEnumType(PartnerStatusCode) },
    { no: 2, name: "Date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 *
 * 	ErrorStatusStruct statuses structure
 *
 * @generated from message api.ErrorStatusStruct
 */
export class ErrorStatusStruct extends Message<ErrorStatusStruct> {
  /**
   * Current status of the Error entity
   *
   * @generated from field: api.ErrorStatus Current = 1;
   */
  Current?: ErrorStatus;

  /**
   * List of all status history of the Error entity
   *
   * @generated from field: repeated api.ErrorStatus History = 2;
   */
  History: ErrorStatus[] = [];

  /**
   * @generated from field: string CreationDate = 3;
   */
  CreationDate = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ErrorStatusStruct";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: ErrorStatus },
    { no: 2, name: "History", kind: "message", T: ErrorStatus, repeated: true },
    { no: 3, name: "CreationDate", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 *
 * 	Item entity status structure
 *
 * @generated from message api.ItemStatus
 */
export class ItemStatus extends Message<ItemStatus> {
  /**
   * @generated from field: api.ItemStatusCode StatusCode = 1;
   */
  StatusCode = ItemStatusCode.ITEM_0000_UNKNOWN;

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

  /**
   * Status effective date. Set by the event's RefDate that triggered the status change.
   *
   * @generated from field: api.DateTime ActualDate = 3;
   */
  ActualDate?: DateTime;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemStatus";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "StatusCode", kind: "enum", T: proto3.getEnumType(ItemStatusCode) },
    { no: 2, name: "Date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ActualDate", kind: "message", T: DateTime },
  ]);

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

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

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

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

/**
 * @generated from message api.ItemStatusStruct
 */
export class ItemStatusStruct extends Message<ItemStatusStruct> {
  /**
   * Current status of the Item entity
   *
   * @generated from field: api.ItemStatus Current = 1;
   */
  Current?: ItemStatus;

  /**
   * List of all status history of the Item entity
   *
   * @generated from field: repeated api.ItemStatus History = 2;
   */
  History: ItemStatus[] = [];

  /**
   * @generated from field: string CreationDate = 3;
   */
  CreationDate = "";

  /**
   * @generated from field: uint32 Version = 4;
   */
  Version = 0;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ItemStatusStruct";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: ItemStatus },
    { no: 2, name: "History", kind: "message", T: ItemStatus, repeated: true },
    { no: 3, name: "CreationDate", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Version", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
  ]);

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

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

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

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

/**
 *
 * 	Family entity status structure
 *
 * @generated from message api.FamilyStatus
 */
export class FamilyStatus extends Message<FamilyStatus> {
  /**
   * @generated from field: api.FamilyStatusCode StatusCode = 1;
   */
  StatusCode = FamilyStatusCode.FAMILY_0000_UNKNOWN;

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

  /**
   * Status effective date. Set by the event's RefDate that triggered the status change.
   *
   * @generated from field: api.DateTime ActualDate = 3;
   */
  ActualDate?: DateTime;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FamilyStatus";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "StatusCode", kind: "enum", T: proto3.getEnumType(FamilyStatusCode) },
    { no: 2, name: "Date", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ActualDate", kind: "message", T: DateTime },
  ]);

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

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

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

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

/**
 *
 * 	FamilyStatusStruct statuses structure
 *
 * @generated from message api.FamilyStatusStruct
 */
export class FamilyStatusStruct extends Message<FamilyStatusStruct> {
  /**
   * Current status of the Family entity
   *
   * @generated from field: api.FamilyStatus Current = 1;
   */
  Current?: FamilyStatus;

  /**
   * List of all status history of the Family entity
   *
   * @generated from field: repeated api.FamilyStatus History = 2;
   */
  History: FamilyStatus[] = [];

  /**
   * @generated from field: string CreationDate = 3;
   */
  CreationDate = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FamilyStatusStruct";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Current", kind: "message", T: FamilyStatus },
    { no: 2, name: "History", kind: "message", T: FamilyStatus, repeated: true },
    { no: 3, name: "CreationDate", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 *
 * item components
 *
 * @generated from message api.ExpiryConstraint
 */
export class ExpiryConstraint extends Message<ExpiryConstraint> {
  /**
   * @generated from field: bool WillExpire = 1;
   */
  WillExpire = false;

  /**
   * >>> Enum des codes ISO
   *
   * @generated from field: api.ExpiryConstraintType Type = 2;
   */
  Type = ExpiryConstraintType.UNKNOWN_DATE;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ExpiryConstraint";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "WillExpire", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 2, name: "Type", kind: "enum", T: proto3.getEnumType(ExpiryConstraintType) },
  ]);

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

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

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

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

/**
 * @generated from message api.TradeItemDescriptions
 */
export class TradeItemDescriptions extends Message<TradeItemDescriptions> {
  /**
   * @generated from field: string ShortDescription = 1;
   */
  ShortDescription = "";

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

  /**
   * @generated from field: string TechnicalDetails = 3;
   */
  TechnicalDetails = "";

  /**
   * @generated from field: string LanguageCodeISO6391 = 4;
   */
  LanguageCodeISO6391 = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.TradeItemDescriptions";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ShortDescription", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "LongDescription", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "TechnicalDetails", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "LanguageCodeISO6391", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.LogisticVariant
 */
export class LogisticVariant extends Message<LogisticVariant> {
  /**
   * Logistical variant ID
   *
   * @generated from field: string LVID = 13;
   */
  LVID = "";

  /**
   * @generated from field: string Name = 15;
   */
  Name = "";

  /**
   * @generated from field: repeated api.OtherID Codes = 2;
   */
  Codes: OtherID[] = [];

  /**
   * Metadata are characteristics specific to the project. They can be of several data form (string, integer, float, boolean or timestamp)
   *
   * @generated from field: repeated api.MetadataElement MetaData = 3;
   */
  MetaData: MetadataElement[] = [];

  /**
   * @generated from field: bool IsBaseLogisticVariant = 4;
   */
  IsBaseLogisticVariant = false;

  /**
   * ID of the LV in which the quantity is given
   *
   * @generated from field: string RefLV = 5;
   */
  RefLV = "";

  /**
   * Name of the LV in which the quantity is given
   *
   * @generated from field: string RefLVName = 19;
   */
  RefLVName = "";

  /**
   * @generated from field: float QuantityInRefLV = 6;
   */
  QuantityInRefLV = 0;

  /**
   * @generated from field: api.QuantityVolume Volume = 8;
   */
  Volume?: QuantityVolume;

  /**
   * @generated from field: api.QuantityArea Area = 9;
   */
  Area?: QuantityArea;

  /**
   * @generated from field: api.QuantityLength Height = 10;
   */
  Height?: QuantityLength;

  /**
   * @generated from field: api.QuantityLength Width = 11;
   */
  Width?: QuantityLength;

  /**
   * @generated from field: api.QuantityLength Length = 12;
   */
  Length?: QuantityLength;

  /**
   * This field will be computed at aggregation, not exposed through APIs
   *
   * @generated from field: float QuantityInBaseLV = 14;
   */
  QuantityInBaseLV = 0;

  /**
   * @generated from field: api.QuantityWeight NetWeight = 16;
   */
  NetWeight?: QuantityWeight;

  /**
   * @generated from field: api.QuantityWeight GrossWeight = 17;
   */
  GrossWeight?: QuantityWeight;

  /**
   * @generated from field: repeated string BranchIDs = 18;
   */
  BranchIDs: string[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.LogisticVariant";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 13, name: "LVID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 15, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Codes", kind: "message", T: OtherID, repeated: true },
    { no: 3, name: "MetaData", kind: "message", T: MetadataElement, repeated: true },
    { no: 4, name: "IsBaseLogisticVariant", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
    { no: 5, name: "RefLV", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 19, name: "RefLVName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "QuantityInRefLV", kind: "scalar", T: 2 /* ScalarType.FLOAT */ },
    { no: 8, name: "Volume", kind: "message", T: QuantityVolume },
    { no: 9, name: "Area", kind: "message", T: QuantityArea },
    { no: 10, name: "Height", kind: "message", T: QuantityLength },
    { no: 11, name: "Width", kind: "message", T: QuantityLength },
    { no: 12, name: "Length", kind: "message", T: QuantityLength },
    { no: 14, name: "QuantityInBaseLV", kind: "scalar", T: 2 /* ScalarType.FLOAT */ },
    { no: 16, name: "NetWeight", kind: "message", T: QuantityWeight },
    { no: 17, name: "GrossWeight", kind: "message", T: QuantityWeight },
    { no: 18, name: "BranchIDs", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

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

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

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

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

/**
 * @generated from message api.OtherID
 */
export class OtherID extends Message<OtherID> {
  /**
   * @generated from field: string Key = 1;
   */
  Key = "";

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

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

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

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

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

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

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

/**
 * @generated from message api.ErrorTags
 */
export class ErrorTags extends Message<ErrorTags> {
  /**
   * @generated from field: string Name = 1;
   */
  Name = "";

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

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

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

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

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

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

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

/**
 *
 * Family components
 *
 * @generated from message api.FamilyNode
 */
export class FamilyNode extends Message<FamilyNode> {
  /**
   * @generated from field: string NodeID = 1;
   */
  NodeID = "";

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

  /**
   * @generated from field: string ParentNodeID = 3;
   */
  ParentNodeID = "";

  /**
   * @generated from field: string FamilyRefID = 6;
   */
  FamilyRefID = "";

  /**
   * @generated from field: int32 Level = 4;
   */
  Level = 0;

  /**
   * @generated from field: string StringPath = 5;
   */
  StringPath = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.FamilyNode";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "NodeID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Label", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "ParentNodeID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "FamilyRefID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Level", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
    { no: 5, name: "StringPath", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.Address
 */
export class Address extends Message<Address> {
  /**
   * @generated from field: string City = 1;
   */
  City = "";

  /**
   * Country Code in <a href='https://en.wikipedia.org/wiki/ISO_3166-1'>ISO_3166-1</a> format
   *
   * @generated from field: string CountryCode = 2;
   */
  CountryCode = "";

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

  /**
   * @generated from field: string Name = 4;
   */
  Name = "";

  /**
   * @generated from field: string POBoxNumber = 5;
   */
  POBoxNumber = "";

  /**
   * @generated from field: string PostalCode = 6;
   */
  PostalCode = "";

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

  /**
   * @generated from field: string State = 8;
   */
  State = "";

  /**
   * @generated from field: string StreetAddressOne = 9;
   */
  StreetAddressOne = "";

  /**
   * @generated from field: string StreetAddressTwo = 10;
   */
  StreetAddressTwo = "";

  /**
   * @generated from field: string StreetAddressThree = 11;
   */
  StreetAddressThree = "";

  /**
   * @generated from field: string PlusCode = 12;
   */
  PlusCode = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Address";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "City", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "CountryCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "GeographicalCoordinates", kind: "message", T: GeographicalCoordinates },
    { no: 4, name: "Name", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "POBoxNumber", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "PostalCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 7, name: "ProvinceCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 8, name: "State", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 9, name: "StreetAddressOne", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 10, name: "StreetAddressTwo", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 11, name: "StreetAddressThree", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 12, name: "PlusCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 *
 * ActorContact definition
 *
 * @generated from message api.ActorContact
 */
export class ActorContact extends Message<ActorContact> {
  /**
   * 	for examples (GS1) : http://apps.gs1.org/GDD/Pages/clDetails.aspx?semanticURN=urn:gs1:gdd:cl:ContactTypeCode
   *
   * @generated from field: string ContactTypeCode = 1;
   */
  ContactTypeCode = "";

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

  /**
   * @generated from field: string LastName = 3;
   */
  LastName = "";

  /**
   * @generated from field: string JobTitle = 4;
   */
  JobTitle = "";

  /**
   * @generated from field: string DepartmentName = 5;
   */
  DepartmentName = "";

  /**
   * Define how to aggregate these Responsibilities or move to Map
   *
   * @generated from field: repeated string Responsibilities = 6;
   */
  Responsibilities: string[] = [];

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

  /**
   * @generated from field: string FaxNumber = 8;
   */
  FaxNumber = "";

  /**
   * @generated from field: string TelephoneNumber = 9;
   */
  TelephoneNumber = "";

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ActorContact";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ContactTypeCode", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "FirstName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "LastName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "JobTitle", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "DepartmentName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 6, name: "Responsibilities", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 7, name: "EmailAddress", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 8, name: "FaxNumber", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 9, name: "TelephoneNumber", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

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

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

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

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

/**
 * @generated from message api.Interlocutor
 */
export class Interlocutor extends Message<Interlocutor> {
  /**
   * @generated from field: string FirstName = 1;
   */
  FirstName = "";

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

  /**
   * Must be a valid email address
   *
   * @generated from field: repeated string Emails = 3;
   */
  Emails: string[] = [];

  /**
   * @generated from field: repeated string Phones = 4;
   */
  Phones: string[] = [];

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Interlocutor";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "FirstName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "LastName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Emails", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
    { no: 4, name: "Phones", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true },
  ]);

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

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

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

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

/**
 * @generated from message api.GeographicalCoordinates
 */
export class GeographicalCoordinates extends Message<GeographicalCoordinates> {
  /**
   * @generated from field: string Latitude = 1;
   */
  Latitude = "";

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

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

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

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

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

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

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

/**
 * @generated from message api.ActorSnapshot
 */
export class ActorSnapshot extends Message<ActorSnapshot> {
  /**
   * Must be unique ID
   *
   * @generated from field: string ID = 1;
   */
  ID = "";

  /**
   * @generated from field: api.DateTime EndDateTime = 3;
   */
  EndDateTime?: DateTime;

  /**
   * @generated from field: int32 MessageNb = 4;
   */
  MessageNb = 0;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ActorSnapshot";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "ID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "EndDateTime", kind: "message", T: DateTime },
    { no: 4, name: "MessageNb", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
  ]);

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

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

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

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

/**
 * @generated from message api.CarrierService
 */
export class CarrierService extends Message<CarrierService> {
  /**
   * Unique ID
   *
   * @generated from field: string ID = 1;
   */
  ID = "";

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

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

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

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

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

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

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

/**
 * @generated from message api.LVDetailedQuantity
 */
export class LVDetailedQuantity extends Message<LVDetailedQuantity> {
  /**
   * @generated from field: string LVID = 1;
   */
  LVID = "";

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

  /**
   * @generated from field: float Quantity = 3;
   */
  Quantity = 0;

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

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.LVDetailedQuantity";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "LVID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "LVName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 3, name: "Quantity", kind: "scalar", T: 2 /* ScalarType.FLOAT */ },
  ]);

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

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

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

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

