// This is a generated file - do not edit.
//
// Generated from slotbooking.proto.

// @dart = 3.3

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names
// ignore_for_file: curly_braces_in_flow_control_structures
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
// ignore_for_file: non_constant_identifier_names

import 'dart:core' as $core;

import 'package:fixnum/fixnum.dart' as $fixnum;
import 'package:protobuf/protobuf.dart' as $pb;

import 'shared.pb.dart' as $0;
import 'slotbooking.pbenum.dart';

export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;

export 'slotbooking.pbenum.dart';

/// avant la def de la sous structure
class Unit extends $pb.GeneratedMessage {
  factory Unit({
    $core.String? unitID,
    $core.Iterable<$0.LabelByLanguage>? labels,
  }) {
    final result = create();
    if (unitID != null) result.unitID = unitID;
    if (labels != null) result.labels.addAll(labels);
    return result;
  }

  Unit._();

  factory Unit.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Unit.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Unit', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'UnitID', protoName: 'UnitID')
    ..pc<$0.LabelByLanguage>(2, _omitFieldNames ? '' : 'Labels', $pb.PbFieldType.PM, protoName: 'Labels', subBuilder: $0.LabelByLanguage.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Unit clone() => Unit()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Unit copyWith(void Function(Unit) updates) => super.copyWith((message) => updates(message as Unit)) as Unit;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Unit create() => Unit._();
  @$core.override
  Unit createEmptyInstance() => create();
  static $pb.PbList<Unit> createRepeated() => $pb.PbList<Unit>();
  @$core.pragma('dart2js:noInline')
  static Unit getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Unit>(create);
  static Unit? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get unitID => $_getSZ(0);
  @$pb.TagNumber(1)
  set unitID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasUnitID() => $_has(0);
  @$pb.TagNumber(1)
  void clearUnitID() => $_clearField(1);

  @$pb.TagNumber(2)
  $pb.PbList<$0.LabelByLanguage> get labels => $_getList(1);
}

class QuantityByUnit extends $pb.GeneratedMessage {
  factory QuantityByUnit({
    $core.String? unitID,
    $core.double? value,
  }) {
    final result = create();
    if (unitID != null) result.unitID = unitID;
    if (value != null) result.value = value;
    return result;
  }

  QuantityByUnit._();

  factory QuantityByUnit.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory QuantityByUnit.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'QuantityByUnit', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'UnitID', protoName: 'UnitID')
    ..a<$core.double>(2, _omitFieldNames ? '' : 'Value', $pb.PbFieldType.OD, protoName: 'Value')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  QuantityByUnit clone() => QuantityByUnit()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  QuantityByUnit copyWith(void Function(QuantityByUnit) updates) => super.copyWith((message) => updates(message as QuantityByUnit)) as QuantityByUnit;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static QuantityByUnit create() => QuantityByUnit._();
  @$core.override
  QuantityByUnit createEmptyInstance() => create();
  static $pb.PbList<QuantityByUnit> createRepeated() => $pb.PbList<QuantityByUnit>();
  @$core.pragma('dart2js:noInline')
  static QuantityByUnit getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<QuantityByUnit>(create);
  static QuantityByUnit? _defaultInstance;

  /// referring to the Unit ID defined by the Site
  @$pb.TagNumber(1)
  $core.String get unitID => $_getSZ(0);
  @$pb.TagNumber(1)
  set unitID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasUnitID() => $_has(0);
  @$pb.TagNumber(1)
  void clearUnitID() => $_clearField(1);

  /// Number of the specified unit
  @$pb.TagNumber(2)
  $core.double get value => $_getN(1);
  @$pb.TagNumber(2)
  set value($core.double value) => $_setDouble(1, value);
  @$pb.TagNumber(2)
  $core.bool hasValue() => $_has(1);
  @$pb.TagNumber(2)
  void clearValue() => $_clearField(2);
}

class Slot extends $pb.GeneratedMessage {
  factory Slot({
    $core.String? startDateTime,
    $fixnum.Int64? durationInSeconds,
    $core.String? endDateTime,
  }) {
    final result = create();
    if (startDateTime != null) result.startDateTime = startDateTime;
    if (durationInSeconds != null) result.durationInSeconds = durationInSeconds;
    if (endDateTime != null) result.endDateTime = endDateTime;
    return result;
  }

  Slot._();

  factory Slot.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Slot.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Slot', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'StartDateTime', protoName: 'StartDateTime')
    ..a<$fixnum.Int64>(3, _omitFieldNames ? '' : 'DurationInSeconds', $pb.PbFieldType.OU6, protoName: 'DurationInSeconds', defaultOrMaker: $fixnum.Int64.ZERO)
    ..aOS(4, _omitFieldNames ? '' : 'EndDateTime', protoName: 'EndDateTime')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Slot clone() => Slot()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Slot copyWith(void Function(Slot) updates) => super.copyWith((message) => updates(message as Slot)) as Slot;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Slot create() => Slot._();
  @$core.override
  Slot createEmptyInstance() => create();
  static $pb.PbList<Slot> createRepeated() => $pb.PbList<Slot>();
  @$core.pragma('dart2js:noInline')
  static Slot getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Slot>(create);
  static Slot? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get startDateTime => $_getSZ(0);
  @$pb.TagNumber(1)
  set startDateTime($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasStartDateTime() => $_has(0);
  @$pb.TagNumber(1)
  void clearStartDateTime() => $_clearField(1);

  /// Slot duration in seconds.
  @$pb.TagNumber(3)
  $fixnum.Int64 get durationInSeconds => $_getI64(1);
  @$pb.TagNumber(3)
  set durationInSeconds($fixnum.Int64 value) => $_setInt64(1, value);
  @$pb.TagNumber(3)
  $core.bool hasDurationInSeconds() => $_has(1);
  @$pb.TagNumber(3)
  void clearDurationInSeconds() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get endDateTime => $_getSZ(2);
  @$pb.TagNumber(4)
  set endDateTime($core.String value) => $_setString(2, value);
  @$pb.TagNumber(4)
  $core.bool hasEndDateTime() => $_has(2);
  @$pb.TagNumber(4)
  void clearEndDateTime() => $_clearField(4);
}

/// Segmentation
class Segmentation extends $pb.GeneratedMessage {
  factory Segmentation({
    $core.String? segmentationID,
    $core.Iterable<$0.LabelByLanguage>? segmentationLabels,
    $core.Iterable<SegmentationValue>? values,
  }) {
    final result = create();
    if (segmentationID != null) result.segmentationID = segmentationID;
    if (segmentationLabels != null) result.segmentationLabels.addAll(segmentationLabels);
    if (values != null) result.values.addAll(values);
    return result;
  }

  Segmentation._();

  factory Segmentation.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Segmentation.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Segmentation', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'SegmentationID', protoName: 'SegmentationID')
    ..pc<$0.LabelByLanguage>(2, _omitFieldNames ? '' : 'SegmentationLabels', $pb.PbFieldType.PM, protoName: 'SegmentationLabels', subBuilder: $0.LabelByLanguage.create)
    ..pc<SegmentationValue>(3, _omitFieldNames ? '' : 'Values', $pb.PbFieldType.PM, protoName: 'Values', subBuilder: SegmentationValue.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Segmentation clone() => Segmentation()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Segmentation copyWith(void Function(Segmentation) updates) => super.copyWith((message) => updates(message as Segmentation)) as Segmentation;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Segmentation create() => Segmentation._();
  @$core.override
  Segmentation createEmptyInstance() => create();
  static $pb.PbList<Segmentation> createRepeated() => $pb.PbList<Segmentation>();
  @$core.pragma('dart2js:noInline')
  static Segmentation getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Segmentation>(create);
  static Segmentation? _defaultInstance;

  /// Identifier of the Segmentation.
  @$pb.TagNumber(1)
  $core.String get segmentationID => $_getSZ(0);
  @$pb.TagNumber(1)
  set segmentationID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasSegmentationID() => $_has(0);
  @$pb.TagNumber(1)
  void clearSegmentationID() => $_clearField(1);

  /// Translated labels of the Segmentation.
  @$pb.TagNumber(2)
  $pb.PbList<$0.LabelByLanguage> get segmentationLabels => $_getList(1);

  /// Possible values of the Segmentation.
  @$pb.TagNumber(3)
  $pb.PbList<SegmentationValue> get values => $_getList(2);
}

class SegmentationValue extends $pb.GeneratedMessage {
  factory SegmentationValue({
    $core.String? iD,
    $core.Iterable<$0.LabelByLanguage>? labels,
  }) {
    final result = create();
    if (iD != null) result.iD = iD;
    if (labels != null) result.labels.addAll(labels);
    return result;
  }

  SegmentationValue._();

  factory SegmentationValue.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SegmentationValue.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SegmentationValue', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ID', protoName: 'ID')
    ..pc<$0.LabelByLanguage>(2, _omitFieldNames ? '' : 'Labels', $pb.PbFieldType.PM, protoName: 'Labels', subBuilder: $0.LabelByLanguage.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationValue clone() => SegmentationValue()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationValue copyWith(void Function(SegmentationValue) updates) => super.copyWith((message) => updates(message as SegmentationValue)) as SegmentationValue;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SegmentationValue create() => SegmentationValue._();
  @$core.override
  SegmentationValue createEmptyInstance() => create();
  static $pb.PbList<SegmentationValue> createRepeated() => $pb.PbList<SegmentationValue>();
  @$core.pragma('dart2js:noInline')
  static SegmentationValue getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SegmentationValue>(create);
  static SegmentationValue? _defaultInstance;

  /// Identifier of the Segmentation value.
  @$pb.TagNumber(1)
  $core.String get iD => $_getSZ(0);
  @$pb.TagNumber(1)
  set iD($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasID() => $_has(0);
  @$pb.TagNumber(1)
  void clearID() => $_clearField(1);

  /// Translated labels of the Segmentation value.
  @$pb.TagNumber(2)
  $pb.PbList<$0.LabelByLanguage> get labels => $_getList(1);
}

class Instruction extends $pb.GeneratedMessage {
  factory Instruction({
    $core.bool? ackRequired,
    $core.Iterable<$0.LabelByLanguage>? instructionByLanguage,
  }) {
    final result = create();
    if (ackRequired != null) result.ackRequired = ackRequired;
    if (instructionByLanguage != null) result.instructionByLanguage.addAll(instructionByLanguage);
    return result;
  }

  Instruction._();

  factory Instruction.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Instruction.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Instruction', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOB(2, _omitFieldNames ? '' : 'AckRequired', protoName: 'AckRequired')
    ..pc<$0.LabelByLanguage>(15, _omitFieldNames ? '' : 'InstructionByLanguage', $pb.PbFieldType.PM, protoName: 'InstructionByLanguage', subBuilder: $0.LabelByLanguage.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Instruction clone() => Instruction()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Instruction copyWith(void Function(Instruction) updates) => super.copyWith((message) => updates(message as Instruction)) as Instruction;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Instruction create() => Instruction._();
  @$core.override
  Instruction createEmptyInstance() => create();
  static $pb.PbList<Instruction> createRepeated() => $pb.PbList<Instruction>();
  @$core.pragma('dart2js:noInline')
  static Instruction getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Instruction>(create);
  static Instruction? _defaultInstance;

  @$pb.TagNumber(2)
  $core.bool get ackRequired => $_getBF(0);
  @$pb.TagNumber(2)
  set ackRequired($core.bool value) => $_setBool(0, value);
  @$pb.TagNumber(2)
  $core.bool hasAckRequired() => $_has(0);
  @$pb.TagNumber(2)
  void clearAckRequired() => $_clearField(2);

  @$pb.TagNumber(15)
  $pb.PbList<$0.LabelByLanguage> get instructionByLanguage => $_getList(1);
}

/// OpeningRule
class OpeningRule extends $pb.GeneratedMessage {
  factory OpeningRule({
    $core.String? startDate,
    $core.String? endDate,
    $core.Iterable<OpeningDay>? openingDays,
    $core.String? calendarID,
    $core.String? label,
  }) {
    final result = create();
    if (startDate != null) result.startDate = startDate;
    if (endDate != null) result.endDate = endDate;
    if (openingDays != null) result.openingDays.addAll(openingDays);
    if (calendarID != null) result.calendarID = calendarID;
    if (label != null) result.label = label;
    return result;
  }

  OpeningRule._();

  factory OpeningRule.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory OpeningRule.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OpeningRule', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'StartDate', protoName: 'StartDate')
    ..aOS(2, _omitFieldNames ? '' : 'EndDate', protoName: 'EndDate')
    ..pc<OpeningDay>(3, _omitFieldNames ? '' : 'OpeningDays', $pb.PbFieldType.PM, protoName: 'OpeningDays', subBuilder: OpeningDay.create)
    ..aOS(4, _omitFieldNames ? '' : 'CalendarID', protoName: 'CalendarID')
    ..aOS(5, _omitFieldNames ? '' : 'Label', protoName: 'Label')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningRule clone() => OpeningRule()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningRule copyWith(void Function(OpeningRule) updates) => super.copyWith((message) => updates(message as OpeningRule)) as OpeningRule;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static OpeningRule create() => OpeningRule._();
  @$core.override
  OpeningRule createEmptyInstance() => create();
  static $pb.PbList<OpeningRule> createRepeated() => $pb.PbList<OpeningRule>();
  @$core.pragma('dart2js:noInline')
  static OpeningRule getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<OpeningRule>(create);
  static OpeningRule? _defaultInstance;

  /// TODO Add time
  @$pb.TagNumber(1)
  $core.String get startDate => $_getSZ(0);
  @$pb.TagNumber(1)
  set startDate($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasStartDate() => $_has(0);
  @$pb.TagNumber(1)
  void clearStartDate() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get endDate => $_getSZ(1);
  @$pb.TagNumber(2)
  set endDate($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasEndDate() => $_has(1);
  @$pb.TagNumber(2)
  void clearEndDate() => $_clearField(2);

  @$pb.TagNumber(3)
  $pb.PbList<OpeningDay> get openingDays => $_getList(2);

  @$pb.TagNumber(4)
  $core.String get calendarID => $_getSZ(3);
  @$pb.TagNumber(4)
  set calendarID($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasCalendarID() => $_has(3);
  @$pb.TagNumber(4)
  void clearCalendarID() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get label => $_getSZ(4);
  @$pb.TagNumber(5)
  set label($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasLabel() => $_has(4);
  @$pb.TagNumber(5)
  void clearLabel() => $_clearField(5);
}

class OpeningDay extends $pb.GeneratedMessage {
  factory OpeningDay({
    $0.WeekDay? weekDay,
    $core.Iterable<OpeningDayDefinition>? definitions,
  }) {
    final result = create();
    if (weekDay != null) result.weekDay = weekDay;
    if (definitions != null) result.definitions.addAll(definitions);
    return result;
  }

  OpeningDay._();

  factory OpeningDay.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory OpeningDay.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OpeningDay', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..e<$0.WeekDay>(1, _omitFieldNames ? '' : 'WeekDay', $pb.PbFieldType.OE, protoName: 'WeekDay', defaultOrMaker: $0.WeekDay.WEEKDAY_UNDEFINED, valueOf: $0.WeekDay.valueOf, enumValues: $0.WeekDay.values)
    ..pc<OpeningDayDefinition>(2, _omitFieldNames ? '' : 'Definitions', $pb.PbFieldType.PM, protoName: 'Definitions', subBuilder: OpeningDayDefinition.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningDay clone() => OpeningDay()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningDay copyWith(void Function(OpeningDay) updates) => super.copyWith((message) => updates(message as OpeningDay)) as OpeningDay;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static OpeningDay create() => OpeningDay._();
  @$core.override
  OpeningDay createEmptyInstance() => create();
  static $pb.PbList<OpeningDay> createRepeated() => $pb.PbList<OpeningDay>();
  @$core.pragma('dart2js:noInline')
  static OpeningDay getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<OpeningDay>(create);
  static OpeningDay? _defaultInstance;

  @$pb.TagNumber(1)
  $0.WeekDay get weekDay => $_getN(0);
  @$pb.TagNumber(1)
  set weekDay($0.WeekDay value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasWeekDay() => $_has(0);
  @$pb.TagNumber(1)
  void clearWeekDay() => $_clearField(1);

  @$pb.TagNumber(2)
  $pb.PbList<OpeningDayDefinition> get definitions => $_getList(1);
}

class OpeningDayDefinition extends $pb.GeneratedMessage {
  factory OpeningDayDefinition({
    $core.Iterable<$0.TimeRange>? timeRanges,
    RuleFilter? filter,
    $core.int? orderAppliance,
    $core.bool? applyCalendarTimetable,
  }) {
    final result = create();
    if (timeRanges != null) result.timeRanges.addAll(timeRanges);
    if (filter != null) result.filter = filter;
    if (orderAppliance != null) result.orderAppliance = orderAppliance;
    if (applyCalendarTimetable != null) result.applyCalendarTimetable = applyCalendarTimetable;
    return result;
  }

  OpeningDayDefinition._();

  factory OpeningDayDefinition.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory OpeningDayDefinition.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'OpeningDayDefinition', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..pc<$0.TimeRange>(2, _omitFieldNames ? '' : 'TimeRanges', $pb.PbFieldType.PM, protoName: 'TimeRanges', subBuilder: $0.TimeRange.create)
    ..aOM<RuleFilter>(3, _omitFieldNames ? '' : 'Filter', protoName: 'Filter', subBuilder: RuleFilter.create)
    ..a<$core.int>(4, _omitFieldNames ? '' : 'OrderAppliance', $pb.PbFieldType.O3, protoName: 'OrderAppliance')
    ..aOB(5, _omitFieldNames ? '' : 'ApplyCalendarTimetable', protoName: 'ApplyCalendarTimetable')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningDayDefinition clone() => OpeningDayDefinition()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  OpeningDayDefinition copyWith(void Function(OpeningDayDefinition) updates) => super.copyWith((message) => updates(message as OpeningDayDefinition)) as OpeningDayDefinition;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static OpeningDayDefinition create() => OpeningDayDefinition._();
  @$core.override
  OpeningDayDefinition createEmptyInstance() => create();
  static $pb.PbList<OpeningDayDefinition> createRepeated() => $pb.PbList<OpeningDayDefinition>();
  @$core.pragma('dart2js:noInline')
  static OpeningDayDefinition getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<OpeningDayDefinition>(create);
  static OpeningDayDefinition? _defaultInstance;

  @$pb.TagNumber(2)
  $pb.PbList<$0.TimeRange> get timeRanges => $_getList(0);

  @$pb.TagNumber(3)
  RuleFilter get filter => $_getN(1);
  @$pb.TagNumber(3)
  set filter(RuleFilter value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasFilter() => $_has(1);
  @$pb.TagNumber(3)
  void clearFilter() => $_clearField(3);
  @$pb.TagNumber(3)
  RuleFilter ensureFilter() => $_ensure(1);

  @$pb.TagNumber(4)
  $core.int get orderAppliance => $_getIZ(2);
  @$pb.TagNumber(4)
  set orderAppliance($core.int value) => $_setSignedInt32(2, value);
  @$pb.TagNumber(4)
  $core.bool hasOrderAppliance() => $_has(2);
  @$pb.TagNumber(4)
  void clearOrderAppliance() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.bool get applyCalendarTimetable => $_getBF(3);
  @$pb.TagNumber(5)
  set applyCalendarTimetable($core.bool value) => $_setBool(3, value);
  @$pb.TagNumber(5)
  $core.bool hasApplyCalendarTimetable() => $_has(3);
  @$pb.TagNumber(5)
  void clearApplyCalendarTimetable() => $_clearField(5);
}

/// CapacityRule
class CapacityRule extends $pb.GeneratedMessage {
  factory CapacityRule({
    $core.String? startDate,
    $core.String? endDate,
    $core.Iterable<$0.WeekDay>? days,
    $core.Iterable<CapacityDefinition>? capacities,
    $core.String? label,
  }) {
    final result = create();
    if (startDate != null) result.startDate = startDate;
    if (endDate != null) result.endDate = endDate;
    if (days != null) result.days.addAll(days);
    if (capacities != null) result.capacities.addAll(capacities);
    if (label != null) result.label = label;
    return result;
  }

  CapacityRule._();

  factory CapacityRule.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory CapacityRule.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CapacityRule', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'StartDate', protoName: 'StartDate')
    ..aOS(2, _omitFieldNames ? '' : 'EndDate', protoName: 'EndDate')
    ..pc<$0.WeekDay>(3, _omitFieldNames ? '' : 'Days', $pb.PbFieldType.KE, protoName: 'Days', valueOf: $0.WeekDay.valueOf, enumValues: $0.WeekDay.values, defaultEnumValue: $0.WeekDay.WEEKDAY_UNDEFINED)
    ..pc<CapacityDefinition>(4, _omitFieldNames ? '' : 'Capacities', $pb.PbFieldType.PM, protoName: 'Capacities', subBuilder: CapacityDefinition.create)
    ..aOS(5, _omitFieldNames ? '' : 'Label', protoName: 'Label')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  CapacityRule clone() => CapacityRule()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  CapacityRule copyWith(void Function(CapacityRule) updates) => super.copyWith((message) => updates(message as CapacityRule)) as CapacityRule;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static CapacityRule create() => CapacityRule._();
  @$core.override
  CapacityRule createEmptyInstance() => create();
  static $pb.PbList<CapacityRule> createRepeated() => $pb.PbList<CapacityRule>();
  @$core.pragma('dart2js:noInline')
  static CapacityRule getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<CapacityRule>(create);
  static CapacityRule? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get startDate => $_getSZ(0);
  @$pb.TagNumber(1)
  set startDate($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasStartDate() => $_has(0);
  @$pb.TagNumber(1)
  void clearStartDate() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get endDate => $_getSZ(1);
  @$pb.TagNumber(2)
  set endDate($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasEndDate() => $_has(1);
  @$pb.TagNumber(2)
  void clearEndDate() => $_clearField(2);

  @$pb.TagNumber(3)
  $pb.PbList<$0.WeekDay> get days => $_getList(2);

  @$pb.TagNumber(4)
  $pb.PbList<CapacityDefinition> get capacities => $_getList(3);

  @$pb.TagNumber(5)
  $core.String get label => $_getSZ(4);
  @$pb.TagNumber(5)
  set label($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasLabel() => $_has(4);
  @$pb.TagNumber(5)
  void clearLabel() => $_clearField(5);
}

class CapacityDefinition extends $pb.GeneratedMessage {
  factory CapacityDefinition({
    RuleFilter? filter,
    CapacityRuleScope? scope,
    $fixnum.Int64? maximalCapacity,
    $core.String? unitID,
  }) {
    final result = create();
    if (filter != null) result.filter = filter;
    if (scope != null) result.scope = scope;
    if (maximalCapacity != null) result.maximalCapacity = maximalCapacity;
    if (unitID != null) result.unitID = unitID;
    return result;
  }

  CapacityDefinition._();

  factory CapacityDefinition.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory CapacityDefinition.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CapacityDefinition', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<RuleFilter>(1, _omitFieldNames ? '' : 'Filter', protoName: 'Filter', subBuilder: RuleFilter.create)
    ..e<CapacityRuleScope>(2, _omitFieldNames ? '' : 'Scope', $pb.PbFieldType.OE, protoName: 'Scope', defaultOrMaker: CapacityRuleScope.CAPACITY_RULE_SCOPE_UNKNOWN, valueOf: CapacityRuleScope.valueOf, enumValues: CapacityRuleScope.values)
    ..aInt64(3, _omitFieldNames ? '' : 'MaximalCapacity', protoName: 'MaximalCapacity')
    ..aOS(4, _omitFieldNames ? '' : 'UnitID', protoName: 'UnitID')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  CapacityDefinition clone() => CapacityDefinition()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  CapacityDefinition copyWith(void Function(CapacityDefinition) updates) => super.copyWith((message) => updates(message as CapacityDefinition)) as CapacityDefinition;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static CapacityDefinition create() => CapacityDefinition._();
  @$core.override
  CapacityDefinition createEmptyInstance() => create();
  static $pb.PbList<CapacityDefinition> createRepeated() => $pb.PbList<CapacityDefinition>();
  @$core.pragma('dart2js:noInline')
  static CapacityDefinition getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<CapacityDefinition>(create);
  static CapacityDefinition? _defaultInstance;

  @$pb.TagNumber(1)
  RuleFilter get filter => $_getN(0);
  @$pb.TagNumber(1)
  set filter(RuleFilter value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasFilter() => $_has(0);
  @$pb.TagNumber(1)
  void clearFilter() => $_clearField(1);
  @$pb.TagNumber(1)
  RuleFilter ensureFilter() => $_ensure(0);

  @$pb.TagNumber(2)
  CapacityRuleScope get scope => $_getN(1);
  @$pb.TagNumber(2)
  set scope(CapacityRuleScope value) => $_setField(2, value);
  @$pb.TagNumber(2)
  $core.bool hasScope() => $_has(1);
  @$pb.TagNumber(2)
  void clearScope() => $_clearField(2);

  @$pb.TagNumber(3)
  $fixnum.Int64 get maximalCapacity => $_getI64(2);
  @$pb.TagNumber(3)
  set maximalCapacity($fixnum.Int64 value) => $_setInt64(2, value);
  @$pb.TagNumber(3)
  $core.bool hasMaximalCapacity() => $_has(2);
  @$pb.TagNumber(3)
  void clearMaximalCapacity() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get unitID => $_getSZ(3);
  @$pb.TagNumber(4)
  set unitID($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasUnitID() => $_has(3);
  @$pb.TagNumber(4)
  void clearUnitID() => $_clearField(4);
}

/// DurationRule
class DurationRule extends $pb.GeneratedMessage {
  factory DurationRule({
    RuleFilter? filter,
    $fixnum.Int64? baseDurationInSeconds,
    $core.Iterable<VariableDuration>? variableDurations,
    $core.int? orderAppliance,
  }) {
    final result = create();
    if (filter != null) result.filter = filter;
    if (baseDurationInSeconds != null) result.baseDurationInSeconds = baseDurationInSeconds;
    if (variableDurations != null) result.variableDurations.addAll(variableDurations);
    if (orderAppliance != null) result.orderAppliance = orderAppliance;
    return result;
  }

  DurationRule._();

  factory DurationRule.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory DurationRule.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DurationRule', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<RuleFilter>(1, _omitFieldNames ? '' : 'Filter', protoName: 'Filter', subBuilder: RuleFilter.create)
    ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'BaseDurationInSeconds', $pb.PbFieldType.OU6, protoName: 'BaseDurationInSeconds', defaultOrMaker: $fixnum.Int64.ZERO)
    ..pc<VariableDuration>(3, _omitFieldNames ? '' : 'VariableDurations', $pb.PbFieldType.PM, protoName: 'VariableDurations', subBuilder: VariableDuration.create)
    ..a<$core.int>(4, _omitFieldNames ? '' : 'OrderAppliance', $pb.PbFieldType.O3, protoName: 'OrderAppliance')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  DurationRule clone() => DurationRule()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  DurationRule copyWith(void Function(DurationRule) updates) => super.copyWith((message) => updates(message as DurationRule)) as DurationRule;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static DurationRule create() => DurationRule._();
  @$core.override
  DurationRule createEmptyInstance() => create();
  static $pb.PbList<DurationRule> createRepeated() => $pb.PbList<DurationRule>();
  @$core.pragma('dart2js:noInline')
  static DurationRule getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DurationRule>(create);
  static DurationRule? _defaultInstance;

  /// Validity filters for this duration rule definition.
  @$pb.TagNumber(1)
  RuleFilter get filter => $_getN(0);
  @$pb.TagNumber(1)
  set filter(RuleFilter value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasFilter() => $_has(0);
  @$pb.TagNumber(1)
  void clearFilter() => $_clearField(1);
  @$pb.TagNumber(1)
  RuleFilter ensureFilter() => $_ensure(0);

  @$pb.TagNumber(2)
  $fixnum.Int64 get baseDurationInSeconds => $_getI64(1);
  @$pb.TagNumber(2)
  set baseDurationInSeconds($fixnum.Int64 value) => $_setInt64(1, value);
  @$pb.TagNumber(2)
  $core.bool hasBaseDurationInSeconds() => $_has(1);
  @$pb.TagNumber(2)
  void clearBaseDurationInSeconds() => $_clearField(2);

  /// Variable duration definition by site unit.
  @$pb.TagNumber(3)
  $pb.PbList<VariableDuration> get variableDurations => $_getList(2);

  @$pb.TagNumber(4)
  $core.int get orderAppliance => $_getIZ(3);
  @$pb.TagNumber(4)
  set orderAppliance($core.int value) => $_setSignedInt32(3, value);
  @$pb.TagNumber(4)
  $core.bool hasOrderAppliance() => $_has(3);
  @$pb.TagNumber(4)
  void clearOrderAppliance() => $_clearField(4);
}

class VariableDuration extends $pb.GeneratedMessage {
  factory VariableDuration({
    $core.String? unitID,
    $fixnum.Int64? durationInSeconds,
  }) {
    final result = create();
    if (unitID != null) result.unitID = unitID;
    if (durationInSeconds != null) result.durationInSeconds = durationInSeconds;
    return result;
  }

  VariableDuration._();

  factory VariableDuration.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory VariableDuration.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'VariableDuration', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'UnitID', protoName: 'UnitID')
    ..a<$fixnum.Int64>(2, _omitFieldNames ? '' : 'DurationInSeconds', $pb.PbFieldType.OU6, protoName: 'DurationInSeconds', defaultOrMaker: $fixnum.Int64.ZERO)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  VariableDuration clone() => VariableDuration()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  VariableDuration copyWith(void Function(VariableDuration) updates) => super.copyWith((message) => updates(message as VariableDuration)) as VariableDuration;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static VariableDuration create() => VariableDuration._();
  @$core.override
  VariableDuration createEmptyInstance() => create();
  static $pb.PbList<VariableDuration> createRepeated() => $pb.PbList<VariableDuration>();
  @$core.pragma('dart2js:noInline')
  static VariableDuration getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<VariableDuration>(create);
  static VariableDuration? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get unitID => $_getSZ(0);
  @$pb.TagNumber(1)
  set unitID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasUnitID() => $_has(0);
  @$pb.TagNumber(1)
  void clearUnitID() => $_clearField(1);

  @$pb.TagNumber(2)
  $fixnum.Int64 get durationInSeconds => $_getI64(1);
  @$pb.TagNumber(2)
  set durationInSeconds($fixnum.Int64 value) => $_setInt64(1, value);
  @$pb.TagNumber(2)
  $core.bool hasDurationInSeconds() => $_has(1);
  @$pb.TagNumber(2)
  void clearDurationInSeconds() => $_clearField(2);
}

/// Conditions on ProjectID, AppointmentType or/and Segmentation keys
class RuleFilter extends $pb.GeneratedMessage {
  factory RuleFilter({
    $0.AppointmentType? type,
    $core.Iterable<$core.String>? projectID,
    $core.Iterable<SegmentationFilter>? segmentationKeys,
  }) {
    final result = create();
    if (type != null) result.type = type;
    if (projectID != null) result.projectID.addAll(projectID);
    if (segmentationKeys != null) result.segmentationKeys.addAll(segmentationKeys);
    return result;
  }

  RuleFilter._();

  factory RuleFilter.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory RuleFilter.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RuleFilter', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..e<$0.AppointmentType>(1, _omitFieldNames ? '' : 'Type', $pb.PbFieldType.OE, protoName: 'Type', defaultOrMaker: $0.AppointmentType.APPOINTMENT_TYPE_UNKNOWN, valueOf: $0.AppointmentType.valueOf, enumValues: $0.AppointmentType.values)
    ..pPS(2, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..pc<SegmentationFilter>(3, _omitFieldNames ? '' : 'SegmentationKeys', $pb.PbFieldType.PM, protoName: 'SegmentationKeys', subBuilder: SegmentationFilter.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  RuleFilter clone() => RuleFilter()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  RuleFilter copyWith(void Function(RuleFilter) updates) => super.copyWith((message) => updates(message as RuleFilter)) as RuleFilter;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static RuleFilter create() => RuleFilter._();
  @$core.override
  RuleFilter createEmptyInstance() => create();
  static $pb.PbList<RuleFilter> createRepeated() => $pb.PbList<RuleFilter>();
  @$core.pragma('dart2js:noInline')
  static RuleFilter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<RuleFilter>(create);
  static RuleFilter? _defaultInstance;

  /// Filter on appointment type (loading or unloading).
  @$pb.TagNumber(1)
  $0.AppointmentType get type => $_getN(0);
  @$pb.TagNumber(1)
  set type($0.AppointmentType value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasType() => $_has(0);
  @$pb.TagNumber(1)
  void clearType() => $_clearField(1);

  /// Filter on project identifier.
  @$pb.TagNumber(2)
  $pb.PbList<$core.String> get projectID => $_getList(1);

  /// Filter on site Segmentation keys.
  @$pb.TagNumber(3)
  $pb.PbList<SegmentationFilter> get segmentationKeys => $_getList(2);
}

class SegmentationFilter extends $pb.GeneratedMessage {
  factory SegmentationFilter({
    $core.String? segmentationID,
    $core.Iterable<$core.String>? segmentationValueIDs,
  }) {
    final result = create();
    if (segmentationID != null) result.segmentationID = segmentationID;
    if (segmentationValueIDs != null) result.segmentationValueIDs.addAll(segmentationValueIDs);
    return result;
  }

  SegmentationFilter._();

  factory SegmentationFilter.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SegmentationFilter.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SegmentationFilter', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'SegmentationID', protoName: 'SegmentationID')
    ..pPS(2, _omitFieldNames ? '' : 'SegmentationValueIDs', protoName: 'SegmentationValueIDs')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationFilter clone() => SegmentationFilter()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationFilter copyWith(void Function(SegmentationFilter) updates) => super.copyWith((message) => updates(message as SegmentationFilter)) as SegmentationFilter;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SegmentationFilter create() => SegmentationFilter._();
  @$core.override
  SegmentationFilter createEmptyInstance() => create();
  static $pb.PbList<SegmentationFilter> createRepeated() => $pb.PbList<SegmentationFilter>();
  @$core.pragma('dart2js:noInline')
  static SegmentationFilter getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SegmentationFilter>(create);
  static SegmentationFilter? _defaultInstance;

  /// Identifier of the Segmentation key.
  @$pb.TagNumber(1)
  $core.String get segmentationID => $_getSZ(0);
  @$pb.TagNumber(1)
  set segmentationID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasSegmentationID() => $_has(0);
  @$pb.TagNumber(1)
  void clearSegmentationID() => $_clearField(1);

  /// Identifiers of the Segmentation key values.
  @$pb.TagNumber(2)
  $pb.PbList<$core.String> get segmentationValueIDs => $_getList(1);
}

class SegmentationSelection extends $pb.GeneratedMessage {
  factory SegmentationSelection({
    $core.String? segmentationID,
    $core.String? segmentationValueID,
  }) {
    final result = create();
    if (segmentationID != null) result.segmentationID = segmentationID;
    if (segmentationValueID != null) result.segmentationValueID = segmentationValueID;
    return result;
  }

  SegmentationSelection._();

  factory SegmentationSelection.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SegmentationSelection.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SegmentationSelection', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'SegmentationID', protoName: 'SegmentationID')
    ..aOS(2, _omitFieldNames ? '' : 'SegmentationValueID', protoName: 'SegmentationValueID')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationSelection clone() => SegmentationSelection()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationSelection copyWith(void Function(SegmentationSelection) updates) => super.copyWith((message) => updates(message as SegmentationSelection)) as SegmentationSelection;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SegmentationSelection create() => SegmentationSelection._();
  @$core.override
  SegmentationSelection createEmptyInstance() => create();
  static $pb.PbList<SegmentationSelection> createRepeated() => $pb.PbList<SegmentationSelection>();
  @$core.pragma('dart2js:noInline')
  static SegmentationSelection getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SegmentationSelection>(create);
  static SegmentationSelection? _defaultInstance;

  /// Identifier of the Segmentation key.
  @$pb.TagNumber(1)
  $core.String get segmentationID => $_getSZ(0);
  @$pb.TagNumber(1)
  set segmentationID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasSegmentationID() => $_has(0);
  @$pb.TagNumber(1)
  void clearSegmentationID() => $_clearField(1);

  /// Identifiers of the Segmentation key values.
  @$pb.TagNumber(2)
  $core.String get segmentationValueID => $_getSZ(1);
  @$pb.TagNumber(2)
  set segmentationValueID($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasSegmentationValueID() => $_has(1);
  @$pb.TagNumber(2)
  void clearSegmentationValueID() => $_clearField(2);
}

/// Document
/// We anticipate that they want to put several but if they only have one with all the language, it should still work
class Document extends $pb.GeneratedMessage {
  factory Document({
    $core.String? docID,
    $core.Iterable<DocumentByLanguage>? docsByLang,
    $core.bool? ackRequired,
  }) {
    final result = create();
    if (docID != null) result.docID = docID;
    if (docsByLang != null) result.docsByLang.addAll(docsByLang);
    if (ackRequired != null) result.ackRequired = ackRequired;
    return result;
  }

  Document._();

  factory Document.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Document.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Document', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'DocID', protoName: 'DocID')
    ..pc<DocumentByLanguage>(2, _omitFieldNames ? '' : 'DocsByLang', $pb.PbFieldType.PM, protoName: 'DocsByLang', subBuilder: DocumentByLanguage.create)
    ..aOB(3, _omitFieldNames ? '' : 'AckRequired', protoName: 'AckRequired')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Document clone() => Document()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Document copyWith(void Function(Document) updates) => super.copyWith((message) => updates(message as Document)) as Document;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Document create() => Document._();
  @$core.override
  Document createEmptyInstance() => create();
  static $pb.PbList<Document> createRepeated() => $pb.PbList<Document>();
  @$core.pragma('dart2js:noInline')
  static Document getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Document>(create);
  static Document? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get docID => $_getSZ(0);
  @$pb.TagNumber(1)
  set docID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasDocID() => $_has(0);
  @$pb.TagNumber(1)
  void clearDocID() => $_clearField(1);

  @$pb.TagNumber(2)
  $pb.PbList<DocumentByLanguage> get docsByLang => $_getList(1);

  @$pb.TagNumber(3)
  $core.bool get ackRequired => $_getBF(2);
  @$pb.TagNumber(3)
  set ackRequired($core.bool value) => $_setBool(2, value);
  @$pb.TagNumber(3)
  $core.bool hasAckRequired() => $_has(2);
  @$pb.TagNumber(3)
  void clearAckRequired() => $_clearField(3);
}

class DocumentByLanguage extends $pb.GeneratedMessage {
  factory DocumentByLanguage({
    $core.String? name,
    $core.String? languageCodeISO6391,
    $core.String? uRI,
    $core.String? fileName,
    $core.String? longURI,
  }) {
    final result = create();
    if (name != null) result.name = name;
    if (languageCodeISO6391 != null) result.languageCodeISO6391 = languageCodeISO6391;
    if (uRI != null) result.uRI = uRI;
    if (fileName != null) result.fileName = fileName;
    if (longURI != null) result.longURI = longURI;
    return result;
  }

  DocumentByLanguage._();

  factory DocumentByLanguage.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory DocumentByLanguage.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DocumentByLanguage', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'Name', protoName: 'Name')
    ..aOS(3, _omitFieldNames ? '' : 'LanguageCodeISO6391', protoName: 'LanguageCodeISO6391')
    ..aOS(4, _omitFieldNames ? '' : 'URI', protoName: 'URI')
    ..aOS(5, _omitFieldNames ? '' : 'FileName', protoName: 'FileName')
    ..aOS(6, _omitFieldNames ? '' : 'LongURI', protoName: 'LongURI')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  DocumentByLanguage clone() => DocumentByLanguage()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  DocumentByLanguage copyWith(void Function(DocumentByLanguage) updates) => super.copyWith((message) => updates(message as DocumentByLanguage)) as DocumentByLanguage;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static DocumentByLanguage create() => DocumentByLanguage._();
  @$core.override
  DocumentByLanguage createEmptyInstance() => create();
  static $pb.PbList<DocumentByLanguage> createRepeated() => $pb.PbList<DocumentByLanguage>();
  @$core.pragma('dart2js:noInline')
  static DocumentByLanguage getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DocumentByLanguage>(create);
  static DocumentByLanguage? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get name => $_getSZ(0);
  @$pb.TagNumber(1)
  set name($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasName() => $_has(0);
  @$pb.TagNumber(1)
  void clearName() => $_clearField(1);

  @$pb.TagNumber(3)
  $core.String get languageCodeISO6391 => $_getSZ(1);
  @$pb.TagNumber(3)
  set languageCodeISO6391($core.String value) => $_setString(1, value);
  @$pb.TagNumber(3)
  $core.bool hasLanguageCodeISO6391() => $_has(1);
  @$pb.TagNumber(3)
  void clearLanguageCodeISO6391() => $_clearField(3);

  /// bytes Doc = 2;
  @$pb.TagNumber(4)
  $core.String get uRI => $_getSZ(2);
  @$pb.TagNumber(4)
  set uRI($core.String value) => $_setString(2, value);
  @$pb.TagNumber(4)
  $core.bool hasURI() => $_has(2);
  @$pb.TagNumber(4)
  void clearURI() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get fileName => $_getSZ(3);
  @$pb.TagNumber(5)
  set fileName($core.String value) => $_setString(3, value);
  @$pb.TagNumber(5)
  $core.bool hasFileName() => $_has(3);
  @$pb.TagNumber(5)
  void clearFileName() => $_clearField(5);

  @$pb.TagNumber(6)
  $core.String get longURI => $_getSZ(4);
  @$pb.TagNumber(6)
  set longURI($core.String value) => $_setString(4, value);
  @$pb.TagNumber(6)
  $core.bool hasLongURI() => $_has(4);
  @$pb.TagNumber(6)
  void clearLongURI() => $_clearField(6);
}

/// Authorisation
class ProjectAuthorisation extends $pb.GeneratedMessage {
  factory ProjectAuthorisation({
    $core.String? projectID,
    ProjectConstraint? unloadingConstraint,
    ProjectConstraint? loadingConstraint,
  }) {
    final result = create();
    if (projectID != null) result.projectID = projectID;
    if (unloadingConstraint != null) result.unloadingConstraint = unloadingConstraint;
    if (loadingConstraint != null) result.loadingConstraint = loadingConstraint;
    return result;
  }

  ProjectAuthorisation._();

  factory ProjectAuthorisation.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory ProjectAuthorisation.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ProjectAuthorisation', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..aOM<ProjectConstraint>(2, _omitFieldNames ? '' : 'UnloadingConstraint', protoName: 'UnloadingConstraint', subBuilder: ProjectConstraint.create)
    ..aOM<ProjectConstraint>(3, _omitFieldNames ? '' : 'LoadingConstraint', protoName: 'LoadingConstraint', subBuilder: ProjectConstraint.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectAuthorisation clone() => ProjectAuthorisation()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectAuthorisation copyWith(void Function(ProjectAuthorisation) updates) => super.copyWith((message) => updates(message as ProjectAuthorisation)) as ProjectAuthorisation;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ProjectAuthorisation create() => ProjectAuthorisation._();
  @$core.override
  ProjectAuthorisation createEmptyInstance() => create();
  static $pb.PbList<ProjectAuthorisation> createRepeated() => $pb.PbList<ProjectAuthorisation>();
  @$core.pragma('dart2js:noInline')
  static ProjectAuthorisation getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ProjectAuthorisation>(create);
  static ProjectAuthorisation? _defaultInstance;

  /// Identifier of the project.
  @$pb.TagNumber(1)
  $core.String get projectID => $_getSZ(0);
  @$pb.TagNumber(1)
  set projectID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasProjectID() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjectID() => $_clearField(1);

  /// TODO Do we need explicit flags to show if receipt / ship is allowed / forbidden ?
  /// Constraints applied for unloading appointment.
  @$pb.TagNumber(2)
  ProjectConstraint get unloadingConstraint => $_getN(1);
  @$pb.TagNumber(2)
  set unloadingConstraint(ProjectConstraint value) => $_setField(2, value);
  @$pb.TagNumber(2)
  $core.bool hasUnloadingConstraint() => $_has(1);
  @$pb.TagNumber(2)
  void clearUnloadingConstraint() => $_clearField(2);
  @$pb.TagNumber(2)
  ProjectConstraint ensureUnloadingConstraint() => $_ensure(1);

  /// Constraints applied for loading appointment.
  @$pb.TagNumber(3)
  ProjectConstraint get loadingConstraint => $_getN(2);
  @$pb.TagNumber(3)
  set loadingConstraint(ProjectConstraint value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasLoadingConstraint() => $_has(2);
  @$pb.TagNumber(3)
  void clearLoadingConstraint() => $_clearField(3);
  @$pb.TagNumber(3)
  ProjectConstraint ensureLoadingConstraint() => $_ensure(2);
}

class ProjectConstraint extends $pb.GeneratedMessage {
  factory ProjectConstraint({
    $core.Iterable<SegmentationFilter>? segmentationFilters,
    $0.Period? minNoticePeriod,
    $0.Period? maxBookingPeriod,
  }) {
    final result = create();
    if (segmentationFilters != null) result.segmentationFilters.addAll(segmentationFilters);
    if (minNoticePeriod != null) result.minNoticePeriod = minNoticePeriod;
    if (maxBookingPeriod != null) result.maxBookingPeriod = maxBookingPeriod;
    return result;
  }

  ProjectConstraint._();

  factory ProjectConstraint.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory ProjectConstraint.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ProjectConstraint', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..pc<SegmentationFilter>(1, _omitFieldNames ? '' : 'SegmentationFilters', $pb.PbFieldType.PM, protoName: 'SegmentationFilters', subBuilder: SegmentationFilter.create)
    ..aOM<$0.Period>(2, _omitFieldNames ? '' : 'MinNoticePeriod', protoName: 'MinNoticePeriod', subBuilder: $0.Period.create)
    ..aOM<$0.Period>(3, _omitFieldNames ? '' : 'MaxBookingPeriod', protoName: 'MaxBookingPeriod', subBuilder: $0.Period.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectConstraint clone() => ProjectConstraint()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectConstraint copyWith(void Function(ProjectConstraint) updates) => super.copyWith((message) => updates(message as ProjectConstraint)) as ProjectConstraint;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ProjectConstraint create() => ProjectConstraint._();
  @$core.override
  ProjectConstraint createEmptyInstance() => create();
  static $pb.PbList<ProjectConstraint> createRepeated() => $pb.PbList<ProjectConstraint>();
  @$core.pragma('dart2js:noInline')
  static ProjectConstraint getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ProjectConstraint>(create);
  static ProjectConstraint? _defaultInstance;

  /// Specific Segmentation constraints applicable for the project.
  @$pb.TagNumber(1)
  $pb.PbList<SegmentationFilter> get segmentationFilters => $_getList(0);

  /// Minimal notice delay to book or cancel an appointment.
  @$pb.TagNumber(2)
  $0.Period get minNoticePeriod => $_getN(1);
  @$pb.TagNumber(2)
  set minNoticePeriod($0.Period value) => $_setField(2, value);
  @$pb.TagNumber(2)
  $core.bool hasMinNoticePeriod() => $_has(1);
  @$pb.TagNumber(2)
  void clearMinNoticePeriod() => $_clearField(2);
  @$pb.TagNumber(2)
  $0.Period ensureMinNoticePeriod() => $_ensure(1);

  /// Maximal delay to book an appointment.
  @$pb.TagNumber(3)
  $0.Period get maxBookingPeriod => $_getN(2);
  @$pb.TagNumber(3)
  set maxBookingPeriod($0.Period value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasMaxBookingPeriod() => $_has(2);
  @$pb.TagNumber(3)
  void clearMaxBookingPeriod() => $_clearField(3);
  @$pb.TagNumber(3)
  $0.Period ensureMaxBookingPeriod() => $_ensure(2);
}

class ActorAuthorisation extends $pb.GeneratedMessage {
  factory ActorAuthorisation({
    ActorConstraint? unloadingConstraint,
    ActorConstraint? loadingConstraint,
  }) {
    final result = create();
    if (unloadingConstraint != null) result.unloadingConstraint = unloadingConstraint;
    if (loadingConstraint != null) result.loadingConstraint = loadingConstraint;
    return result;
  }

  ActorAuthorisation._();

  factory ActorAuthorisation.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory ActorAuthorisation.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ActorAuthorisation', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<ActorConstraint>(3, _omitFieldNames ? '' : 'UnloadingConstraint', protoName: 'UnloadingConstraint', subBuilder: ActorConstraint.create)
    ..aOM<ActorConstraint>(4, _omitFieldNames ? '' : 'LoadingConstraint', protoName: 'LoadingConstraint', subBuilder: ActorConstraint.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ActorAuthorisation clone() => ActorAuthorisation()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ActorAuthorisation copyWith(void Function(ActorAuthorisation) updates) => super.copyWith((message) => updates(message as ActorAuthorisation)) as ActorAuthorisation;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ActorAuthorisation create() => ActorAuthorisation._();
  @$core.override
  ActorAuthorisation createEmptyInstance() => create();
  static $pb.PbList<ActorAuthorisation> createRepeated() => $pb.PbList<ActorAuthorisation>();
  @$core.pragma('dart2js:noInline')
  static ActorAuthorisation getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ActorAuthorisation>(create);
  static ActorAuthorisation? _defaultInstance;

  /// Constraints applied for unloading appointment.
  @$pb.TagNumber(3)
  ActorConstraint get unloadingConstraint => $_getN(0);
  @$pb.TagNumber(3)
  set unloadingConstraint(ActorConstraint value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasUnloadingConstraint() => $_has(0);
  @$pb.TagNumber(3)
  void clearUnloadingConstraint() => $_clearField(3);
  @$pb.TagNumber(3)
  ActorConstraint ensureUnloadingConstraint() => $_ensure(0);

  /// Constraints applied for loading appointment.
  @$pb.TagNumber(4)
  ActorConstraint get loadingConstraint => $_getN(1);
  @$pb.TagNumber(4)
  set loadingConstraint(ActorConstraint value) => $_setField(4, value);
  @$pb.TagNumber(4)
  $core.bool hasLoadingConstraint() => $_has(1);
  @$pb.TagNumber(4)
  void clearLoadingConstraint() => $_clearField(4);
  @$pb.TagNumber(4)
  ActorConstraint ensureLoadingConstraint() => $_ensure(1);
}

class ActorConstraint extends $pb.GeneratedMessage {
  factory ActorConstraint({
    $core.Iterable<SegmentationActorConstraint>? segmentationConstraints,
    $0.Period? maxBookingPeriod,
    $core.bool? isBookingEnabledForUnknownUsers,
    CommandIdentifierEntry? commandIdentifierEntry,
  }) {
    final result = create();
    if (segmentationConstraints != null) result.segmentationConstraints.addAll(segmentationConstraints);
    if (maxBookingPeriod != null) result.maxBookingPeriod = maxBookingPeriod;
    if (isBookingEnabledForUnknownUsers != null) result.isBookingEnabledForUnknownUsers = isBookingEnabledForUnknownUsers;
    if (commandIdentifierEntry != null) result.commandIdentifierEntry = commandIdentifierEntry;
    return result;
  }

  ActorConstraint._();

  factory ActorConstraint.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory ActorConstraint.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ActorConstraint', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..pc<SegmentationActorConstraint>(1, _omitFieldNames ? '' : 'SegmentationConstraints', $pb.PbFieldType.PM, protoName: 'SegmentationConstraints', subBuilder: SegmentationActorConstraint.create)
    ..aOM<$0.Period>(3, _omitFieldNames ? '' : 'MaxBookingPeriod', protoName: 'MaxBookingPeriod', subBuilder: $0.Period.create)
    ..aOB(4, _omitFieldNames ? '' : 'IsBookingEnabledForUnknownUsers', protoName: 'IsBookingEnabledForUnknownUsers')
    ..e<CommandIdentifierEntry>(5, _omitFieldNames ? '' : 'CommandIdentifierEntry', $pb.PbFieldType.OE, protoName: 'CommandIdentifierEntry', defaultOrMaker: CommandIdentifierEntry.CommandIdentifierEntry_MandatoryExceptForAllowedUsers, valueOf: CommandIdentifierEntry.valueOf, enumValues: CommandIdentifierEntry.values)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ActorConstraint clone() => ActorConstraint()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ActorConstraint copyWith(void Function(ActorConstraint) updates) => super.copyWith((message) => updates(message as ActorConstraint)) as ActorConstraint;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ActorConstraint create() => ActorConstraint._();
  @$core.override
  ActorConstraint createEmptyInstance() => create();
  static $pb.PbList<ActorConstraint> createRepeated() => $pb.PbList<ActorConstraint>();
  @$core.pragma('dart2js:noInline')
  static ActorConstraint getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ActorConstraint>(create);
  static ActorConstraint? _defaultInstance;

  /// Specific Segmentation constraints applicable for the project.
  @$pb.TagNumber(1)
  $pb.PbList<SegmentationActorConstraint> get segmentationConstraints => $_getList(0);

  /// Maximal delay to book an appointment
  @$pb.TagNumber(3)
  $0.Period get maxBookingPeriod => $_getN(1);
  @$pb.TagNumber(3)
  set maxBookingPeriod($0.Period value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasMaxBookingPeriod() => $_has(1);
  @$pb.TagNumber(3)
  void clearMaxBookingPeriod() => $_clearField(3);
  @$pb.TagNumber(3)
  $0.Period ensureMaxBookingPeriod() => $_ensure(1);

  /// Enable booking for unknown users
  @$pb.TagNumber(4)
  $core.bool get isBookingEnabledForUnknownUsers => $_getBF(2);
  @$pb.TagNumber(4)
  set isBookingEnabledForUnknownUsers($core.bool value) => $_setBool(2, value);
  @$pb.TagNumber(4)
  $core.bool hasIsBookingEnabledForUnknownUsers() => $_has(2);
  @$pb.TagNumber(4)
  void clearIsBookingEnabledForUnknownUsers() => $_clearField(4);

  /// CommandIdentifierEntry
  @$pb.TagNumber(5)
  CommandIdentifierEntry get commandIdentifierEntry => $_getN(3);
  @$pb.TagNumber(5)
  set commandIdentifierEntry(CommandIdentifierEntry value) => $_setField(5, value);
  @$pb.TagNumber(5)
  $core.bool hasCommandIdentifierEntry() => $_has(3);
  @$pb.TagNumber(5)
  void clearCommandIdentifierEntry() => $_clearField(5);
}

class SegmentationActorConstraint extends $pb.GeneratedMessage {
  factory SegmentationActorConstraint({
    $core.String? segmentationID,
    $core.Iterable<$core.String>? restrictedValueIDs,
    SegmentationConstraintType? type,
    $core.String? attributePath,
  }) {
    final result = create();
    if (segmentationID != null) result.segmentationID = segmentationID;
    if (restrictedValueIDs != null) result.restrictedValueIDs.addAll(restrictedValueIDs);
    if (type != null) result.type = type;
    if (attributePath != null) result.attributePath = attributePath;
    return result;
  }

  SegmentationActorConstraint._();

  factory SegmentationActorConstraint.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SegmentationActorConstraint.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SegmentationActorConstraint', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'SegmentationID', protoName: 'SegmentationID')
    ..pPS(2, _omitFieldNames ? '' : 'RestrictedValueIDs', protoName: 'RestrictedValueIDs')
    ..e<SegmentationConstraintType>(4, _omitFieldNames ? '' : 'Type', $pb.PbFieldType.OE, protoName: 'Type', defaultOrMaker: SegmentationConstraintType.SEGMENTATION_CONSTRAINT_TYPE_UNKNOWN, valueOf: SegmentationConstraintType.valueOf, enumValues: SegmentationConstraintType.values)
    ..aOS(5, _omitFieldNames ? '' : 'AttributePath', protoName: 'AttributePath')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationActorConstraint clone() => SegmentationActorConstraint()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SegmentationActorConstraint copyWith(void Function(SegmentationActorConstraint) updates) => super.copyWith((message) => updates(message as SegmentationActorConstraint)) as SegmentationActorConstraint;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SegmentationActorConstraint create() => SegmentationActorConstraint._();
  @$core.override
  SegmentationActorConstraint createEmptyInstance() => create();
  static $pb.PbList<SegmentationActorConstraint> createRepeated() => $pb.PbList<SegmentationActorConstraint>();
  @$core.pragma('dart2js:noInline')
  static SegmentationActorConstraint getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SegmentationActorConstraint>(create);
  static SegmentationActorConstraint? _defaultInstance;

  /// Identifier of the Segmentation key to constraint.
  @$pb.TagNumber(1)
  $core.String get segmentationID => $_getSZ(0);
  @$pb.TagNumber(1)
  set segmentationID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasSegmentationID() => $_has(0);
  @$pb.TagNumber(1)
  void clearSegmentationID() => $_clearField(1);

  /// If some Segmentation values are restricted, define here the identifiers to keep.
  @$pb.TagNumber(2)
  $pb.PbList<$core.String> get restrictedValueIDs => $_getList(1);

  /// Define the type of restriction applied on the Segmentation key.
  @$pb.TagNumber(4)
  SegmentationConstraintType get type => $_getN(2);
  @$pb.TagNumber(4)
  set type(SegmentationConstraintType value) => $_setField(4, value);
  @$pb.TagNumber(4)
  $core.bool hasType() => $_has(2);
  @$pb.TagNumber(4)
  void clearType() => $_clearField(4);

  /// In case of order attribute choice, to define the attribute path.
  @$pb.TagNumber(5)
  $core.String get attributePath => $_getSZ(3);
  @$pb.TagNumber(5)
  set attributePath($core.String value) => $_setString(3, value);
  @$pb.TagNumber(5)
  $core.bool hasAttributePath() => $_has(3);
  @$pb.TagNumber(5)
  void clearAttributePath() => $_clearField(5);
}

class AppointmentCommission extends $pb.GeneratedMessage {
  factory AppointmentCommission({
    $core.String? projectID,
    $core.String? orderID,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<QuantityByUnit>? quantities,
    $core.String? organisationID,
    $core.String? partnerAppID,
    $core.String? executionflowID,
    $core.String? actorID,
    $core.Iterable<$0.MetadataElement>? unitQuantities,
  }) {
    final result = create();
    if (projectID != null) result.projectID = projectID;
    if (orderID != null) result.orderID = orderID;
    if (quantities != null) result.quantities.addAll(quantities);
    if (organisationID != null) result.organisationID = organisationID;
    if (partnerAppID != null) result.partnerAppID = partnerAppID;
    if (executionflowID != null) result.executionflowID = executionflowID;
    if (actorID != null) result.actorID = actorID;
    if (unitQuantities != null) result.unitQuantities.addAll(unitQuantities);
    return result;
  }

  AppointmentCommission._();

  factory AppointmentCommission.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory AppointmentCommission.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentCommission', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..aOS(2, _omitFieldNames ? '' : 'OrderID', protoName: 'OrderID')
    ..pc<QuantityByUnit>(3, _omitFieldNames ? '' : 'Quantities', $pb.PbFieldType.PM, protoName: 'Quantities', subBuilder: QuantityByUnit.create)
    ..aOS(4, _omitFieldNames ? '' : 'OrganisationID', protoName: 'OrganisationID')
    ..aOS(5, _omitFieldNames ? '' : 'PartnerAppID', protoName: 'PartnerAppID')
    ..aOS(6, _omitFieldNames ? '' : 'ExecutionflowID', protoName: 'ExecutionflowID')
    ..aOS(7, _omitFieldNames ? '' : 'ActorID', protoName: 'ActorID')
    ..pc<$0.MetadataElement>(8, _omitFieldNames ? '' : 'UnitQuantities', $pb.PbFieldType.PM, protoName: 'UnitQuantities', subBuilder: $0.MetadataElement.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentCommission clone() => AppointmentCommission()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentCommission copyWith(void Function(AppointmentCommission) updates) => super.copyWith((message) => updates(message as AppointmentCommission)) as AppointmentCommission;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static AppointmentCommission create() => AppointmentCommission._();
  @$core.override
  AppointmentCommission createEmptyInstance() => create();
  static $pb.PbList<AppointmentCommission> createRepeated() => $pb.PbList<AppointmentCommission>();
  @$core.pragma('dart2js:noInline')
  static AppointmentCommission getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<AppointmentCommission>(create);
  static AppointmentCommission? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get projectID => $_getSZ(0);
  @$pb.TagNumber(1)
  set projectID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasProjectID() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjectID() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get orderID => $_getSZ(1);
  @$pb.TagNumber(2)
  set orderID($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasOrderID() => $_has(1);
  @$pb.TagNumber(2)
  void clearOrderID() => $_clearField(2);

  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(3)
  $pb.PbList<QuantityByUnit> get quantities => $_getList(2);

  @$pb.TagNumber(4)
  $core.String get organisationID => $_getSZ(3);
  @$pb.TagNumber(4)
  set organisationID($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasOrganisationID() => $_has(3);
  @$pb.TagNumber(4)
  void clearOrganisationID() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get partnerAppID => $_getSZ(4);
  @$pb.TagNumber(5)
  set partnerAppID($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasPartnerAppID() => $_has(4);
  @$pb.TagNumber(5)
  void clearPartnerAppID() => $_clearField(5);

  @$pb.TagNumber(6)
  $core.String get executionflowID => $_getSZ(5);
  @$pb.TagNumber(6)
  set executionflowID($core.String value) => $_setString(5, value);
  @$pb.TagNumber(6)
  $core.bool hasExecutionflowID() => $_has(5);
  @$pb.TagNumber(6)
  void clearExecutionflowID() => $_clearField(6);

  @$pb.TagNumber(7)
  $core.String get actorID => $_getSZ(6);
  @$pb.TagNumber(7)
  set actorID($core.String value) => $_setString(6, value);
  @$pb.TagNumber(7)
  $core.bool hasActorID() => $_has(6);
  @$pb.TagNumber(7)
  void clearActorID() => $_clearField(7);

  /// Unit quantities
  @$pb.TagNumber(8)
  $pb.PbList<$0.MetadataElement> get unitQuantities => $_getList(7);
}

class AppointmentContent extends $pb.GeneratedMessage {
  factory AppointmentContent({
    $core.Iterable<AppointmentProjectContent>? projects,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<QuantityByUnit>? totalQuantities,
    $core.Iterable<$0.MetadataElement>? unitQuantities,
  }) {
    final result = create();
    if (projects != null) result.projects.addAll(projects);
    if (totalQuantities != null) result.totalQuantities.addAll(totalQuantities);
    if (unitQuantities != null) result.unitQuantities.addAll(unitQuantities);
    return result;
  }

  AppointmentContent._();

  factory AppointmentContent.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory AppointmentContent.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentContent', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..pc<AppointmentProjectContent>(1, _omitFieldNames ? '' : 'Projects', $pb.PbFieldType.PM, protoName: 'Projects', subBuilder: AppointmentProjectContent.create)
    ..pc<QuantityByUnit>(2, _omitFieldNames ? '' : 'TotalQuantities', $pb.PbFieldType.PM, protoName: 'TotalQuantities', subBuilder: QuantityByUnit.create)
    ..pc<$0.MetadataElement>(3, _omitFieldNames ? '' : 'UnitQuantities', $pb.PbFieldType.PM, protoName: 'UnitQuantities', subBuilder: $0.MetadataElement.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentContent clone() => AppointmentContent()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentContent copyWith(void Function(AppointmentContent) updates) => super.copyWith((message) => updates(message as AppointmentContent)) as AppointmentContent;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static AppointmentContent create() => AppointmentContent._();
  @$core.override
  AppointmentContent createEmptyInstance() => create();
  static $pb.PbList<AppointmentContent> createRepeated() => $pb.PbList<AppointmentContent>();
  @$core.pragma('dart2js:noInline')
  static AppointmentContent getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<AppointmentContent>(create);
  static AppointmentContent? _defaultInstance;

  @$pb.TagNumber(1)
  $pb.PbList<AppointmentProjectContent> get projects => $_getList(0);

  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(2)
  $pb.PbList<QuantityByUnit> get totalQuantities => $_getList(1);

  /// Unit quantities
  @$pb.TagNumber(3)
  $pb.PbList<$0.MetadataElement> get unitQuantities => $_getList(2);
}

class AppointmentProjectContent extends $pb.GeneratedMessage {
  factory AppointmentProjectContent({
    $core.String? projectID,
    $core.Iterable<AppointmentCommission>? commissions,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<QuantityByUnit>? projectQuantities,
    $core.Iterable<$0.MetadataElement>? unitQuantities,
  }) {
    final result = create();
    if (projectID != null) result.projectID = projectID;
    if (commissions != null) result.commissions.addAll(commissions);
    if (projectQuantities != null) result.projectQuantities.addAll(projectQuantities);
    if (unitQuantities != null) result.unitQuantities.addAll(unitQuantities);
    return result;
  }

  AppointmentProjectContent._();

  factory AppointmentProjectContent.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory AppointmentProjectContent.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentProjectContent', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..pc<AppointmentCommission>(2, _omitFieldNames ? '' : 'Commissions', $pb.PbFieldType.PM, protoName: 'Commissions', subBuilder: AppointmentCommission.create)
    ..pc<QuantityByUnit>(3, _omitFieldNames ? '' : 'ProjectQuantities', $pb.PbFieldType.PM, protoName: 'ProjectQuantities', subBuilder: QuantityByUnit.create)
    ..pc<$0.MetadataElement>(4, _omitFieldNames ? '' : 'UnitQuantities', $pb.PbFieldType.PM, protoName: 'UnitQuantities', subBuilder: $0.MetadataElement.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentProjectContent clone() => AppointmentProjectContent()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  AppointmentProjectContent copyWith(void Function(AppointmentProjectContent) updates) => super.copyWith((message) => updates(message as AppointmentProjectContent)) as AppointmentProjectContent;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static AppointmentProjectContent create() => AppointmentProjectContent._();
  @$core.override
  AppointmentProjectContent createEmptyInstance() => create();
  static $pb.PbList<AppointmentProjectContent> createRepeated() => $pb.PbList<AppointmentProjectContent>();
  @$core.pragma('dart2js:noInline')
  static AppointmentProjectContent getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<AppointmentProjectContent>(create);
  static AppointmentProjectContent? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get projectID => $_getSZ(0);
  @$pb.TagNumber(1)
  set projectID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasProjectID() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjectID() => $_clearField(1);

  @$pb.TagNumber(2)
  $pb.PbList<AppointmentCommission> get commissions => $_getList(1);

  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(3)
  $pb.PbList<QuantityByUnit> get projectQuantities => $_getList(2);

  /// Unit quantities
  @$pb.TagNumber(4)
  $pb.PbList<$0.MetadataElement> get unitQuantities => $_getList(3);
}

class Commission extends $pb.GeneratedMessage {
  factory Commission({
    $core.String? projectID,
    $core.String? orderID,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<QuantityByUnit>? quantities,
    $core.String? actorID,
    $core.String? executionflowID,
  }) {
    final result = create();
    if (projectID != null) result.projectID = projectID;
    if (orderID != null) result.orderID = orderID;
    if (quantities != null) result.quantities.addAll(quantities);
    if (actorID != null) result.actorID = actorID;
    if (executionflowID != null) result.executionflowID = executionflowID;
    return result;
  }

  Commission._();

  factory Commission.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Commission.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Commission', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..aOS(2, _omitFieldNames ? '' : 'OrderID', protoName: 'OrderID')
    ..pc<QuantityByUnit>(3, _omitFieldNames ? '' : 'Quantities', $pb.PbFieldType.PM, protoName: 'Quantities', subBuilder: QuantityByUnit.create)
    ..aOS(4, _omitFieldNames ? '' : 'ActorID', protoName: 'ActorID')
    ..aOS(5, _omitFieldNames ? '' : 'ExecutionflowID', protoName: 'ExecutionflowID')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Commission clone() => Commission()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Commission copyWith(void Function(Commission) updates) => super.copyWith((message) => updates(message as Commission)) as Commission;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Commission create() => Commission._();
  @$core.override
  Commission createEmptyInstance() => create();
  static $pb.PbList<Commission> createRepeated() => $pb.PbList<Commission>();
  @$core.pragma('dart2js:noInline')
  static Commission getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Commission>(create);
  static Commission? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get projectID => $_getSZ(0);
  @$pb.TagNumber(1)
  set projectID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasProjectID() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjectID() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get orderID => $_getSZ(1);
  @$pb.TagNumber(2)
  set orderID($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasOrderID() => $_has(1);
  @$pb.TagNumber(2)
  void clearOrderID() => $_clearField(2);

  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(3)
  $pb.PbList<QuantityByUnit> get quantities => $_getList(2);

  @$pb.TagNumber(4)
  $core.String get actorID => $_getSZ(3);
  @$pb.TagNumber(4)
  set actorID($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasActorID() => $_has(3);
  @$pb.TagNumber(4)
  void clearActorID() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get executionflowID => $_getSZ(4);
  @$pb.TagNumber(5)
  set executionflowID($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasExecutionflowID() => $_has(4);
  @$pb.TagNumber(5)
  void clearExecutionflowID() => $_clearField(5);
}

class WMSCommission extends $pb.GeneratedMessage {
  factory WMSCommission({
    $core.String? projectID,
    $core.String? orderID,
    $core.String? actorID,
    $core.String? executionflowID,
  }) {
    final result = create();
    if (projectID != null) result.projectID = projectID;
    if (orderID != null) result.orderID = orderID;
    if (actorID != null) result.actorID = actorID;
    if (executionflowID != null) result.executionflowID = executionflowID;
    return result;
  }

  WMSCommission._();

  factory WMSCommission.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory WMSCommission.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'WMSCommission', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'ProjectID', protoName: 'ProjectID')
    ..aOS(2, _omitFieldNames ? '' : 'OrderID', protoName: 'OrderID')
    ..aOS(4, _omitFieldNames ? '' : 'ActorID', protoName: 'ActorID')
    ..aOS(5, _omitFieldNames ? '' : 'ExecutionflowID', protoName: 'ExecutionflowID')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  WMSCommission clone() => WMSCommission()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  WMSCommission copyWith(void Function(WMSCommission) updates) => super.copyWith((message) => updates(message as WMSCommission)) as WMSCommission;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static WMSCommission create() => WMSCommission._();
  @$core.override
  WMSCommission createEmptyInstance() => create();
  static $pb.PbList<WMSCommission> createRepeated() => $pb.PbList<WMSCommission>();
  @$core.pragma('dart2js:noInline')
  static WMSCommission getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<WMSCommission>(create);
  static WMSCommission? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get projectID => $_getSZ(0);
  @$pb.TagNumber(1)
  set projectID($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasProjectID() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjectID() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get orderID => $_getSZ(1);
  @$pb.TagNumber(2)
  set orderID($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasOrderID() => $_has(1);
  @$pb.TagNumber(2)
  void clearOrderID() => $_clearField(2);

  @$pb.TagNumber(4)
  $core.String get actorID => $_getSZ(2);
  @$pb.TagNumber(4)
  set actorID($core.String value) => $_setString(2, value);
  @$pb.TagNumber(4)
  $core.bool hasActorID() => $_has(2);
  @$pb.TagNumber(4)
  void clearActorID() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get executionflowID => $_getSZ(3);
  @$pb.TagNumber(5)
  set executionflowID($core.String value) => $_setString(3, value);
  @$pb.TagNumber(5)
  $core.bool hasExecutionflowID() => $_has(3);
  @$pb.TagNumber(5)
  void clearExecutionflowID() => $_clearField(5);
}

class Booking extends $pb.GeneratedMessage {
  factory Booking({
    $0.AppointmentType? appointmentType,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<Commission>? commissions,
    $core.Iterable<SegmentationSelection>? segmentationSelections,
    $core.Iterable<Slot>? slots,
    $core.String? appointmentKind,
    $core.bool? hasReference,
    $core.Iterable<$core.String>? emails,
    $core.String? reason,
    AppointmentContent? loading,
    AppointmentContent? unloading,
    $core.String? lastUpdate,
    $core.bool? locked,
  }) {
    final result = create();
    if (appointmentType != null) result.appointmentType = appointmentType;
    if (commissions != null) result.commissions.addAll(commissions);
    if (segmentationSelections != null) result.segmentationSelections.addAll(segmentationSelections);
    if (slots != null) result.slots.addAll(slots);
    if (appointmentKind != null) result.appointmentKind = appointmentKind;
    if (hasReference != null) result.hasReference = hasReference;
    if (emails != null) result.emails.addAll(emails);
    if (reason != null) result.reason = reason;
    if (loading != null) result.loading = loading;
    if (unloading != null) result.unloading = unloading;
    if (lastUpdate != null) result.lastUpdate = lastUpdate;
    if (locked != null) result.locked = locked;
    return result;
  }

  Booking._();

  factory Booking.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory Booking.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Booking', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..e<$0.AppointmentType>(1, _omitFieldNames ? '' : 'AppointmentType', $pb.PbFieldType.OE, protoName: 'AppointmentType', defaultOrMaker: $0.AppointmentType.APPOINTMENT_TYPE_UNKNOWN, valueOf: $0.AppointmentType.valueOf, enumValues: $0.AppointmentType.values)
    ..pc<Commission>(2, _omitFieldNames ? '' : 'Commissions', $pb.PbFieldType.PM, protoName: 'Commissions', subBuilder: Commission.create)
    ..pc<SegmentationSelection>(3, _omitFieldNames ? '' : 'SegmentationSelections', $pb.PbFieldType.PM, protoName: 'SegmentationSelections', subBuilder: SegmentationSelection.create)
    ..pc<Slot>(4, _omitFieldNames ? '' : 'Slots', $pb.PbFieldType.PM, protoName: 'Slots', subBuilder: Slot.create)
    ..aOS(5, _omitFieldNames ? '' : 'AppointmentKind', protoName: 'AppointmentKind')
    ..aOB(6, _omitFieldNames ? '' : 'HasReference', protoName: 'HasReference')
    ..pPS(7, _omitFieldNames ? '' : 'Emails', protoName: 'Emails')
    ..aOS(8, _omitFieldNames ? '' : 'Reason', protoName: 'Reason')
    ..aOM<AppointmentContent>(9, _omitFieldNames ? '' : 'Loading', protoName: 'Loading', subBuilder: AppointmentContent.create)
    ..aOM<AppointmentContent>(10, _omitFieldNames ? '' : 'Unloading', protoName: 'Unloading', subBuilder: AppointmentContent.create)
    ..aOS(12, _omitFieldNames ? '' : 'LastUpdate', protoName: 'LastUpdate')
    ..aOB(13, _omitFieldNames ? '' : 'Locked', protoName: 'Locked')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Booking clone() => Booking()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  Booking copyWith(void Function(Booking) updates) => super.copyWith((message) => updates(message as Booking)) as Booking;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static Booking create() => Booking._();
  @$core.override
  Booking createEmptyInstance() => create();
  static $pb.PbList<Booking> createRepeated() => $pb.PbList<Booking>();
  @$core.pragma('dart2js:noInline')
  static Booking getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Booking>(create);
  static Booking? _defaultInstance;

  @$pb.TagNumber(1)
  $0.AppointmentType get appointmentType => $_getN(0);
  @$pb.TagNumber(1)
  set appointmentType($0.AppointmentType value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasAppointmentType() => $_has(0);
  @$pb.TagNumber(1)
  void clearAppointmentType() => $_clearField(1);

  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(2)
  $pb.PbList<Commission> get commissions => $_getList(1);

  @$pb.TagNumber(3)
  $pb.PbList<SegmentationSelection> get segmentationSelections => $_getList(2);

  @$pb.TagNumber(4)
  $pb.PbList<Slot> get slots => $_getList(3);

  @$pb.TagNumber(5)
  $core.String get appointmentKind => $_getSZ(4);
  @$pb.TagNumber(5)
  set appointmentKind($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasAppointmentKind() => $_has(4);
  @$pb.TagNumber(5)
  void clearAppointmentKind() => $_clearField(5);

  @$pb.TagNumber(6)
  $core.bool get hasReference => $_getBF(5);
  @$pb.TagNumber(6)
  set hasReference($core.bool value) => $_setBool(5, value);
  @$pb.TagNumber(6)
  $core.bool hasHasReference() => $_has(5);
  @$pb.TagNumber(6)
  void clearHasReference() => $_clearField(6);

  @$pb.TagNumber(7)
  $pb.PbList<$core.String> get emails => $_getList(6);

  @$pb.TagNumber(8)
  $core.String get reason => $_getSZ(7);
  @$pb.TagNumber(8)
  set reason($core.String value) => $_setString(7, value);
  @$pb.TagNumber(8)
  $core.bool hasReason() => $_has(7);
  @$pb.TagNumber(8)
  void clearReason() => $_clearField(8);

  @$pb.TagNumber(9)
  AppointmentContent get loading => $_getN(8);
  @$pb.TagNumber(9)
  set loading(AppointmentContent value) => $_setField(9, value);
  @$pb.TagNumber(9)
  $core.bool hasLoading() => $_has(8);
  @$pb.TagNumber(9)
  void clearLoading() => $_clearField(9);
  @$pb.TagNumber(9)
  AppointmentContent ensureLoading() => $_ensure(8);

  @$pb.TagNumber(10)
  AppointmentContent get unloading => $_getN(9);
  @$pb.TagNumber(10)
  set unloading(AppointmentContent value) => $_setField(10, value);
  @$pb.TagNumber(10)
  $core.bool hasUnloading() => $_has(9);
  @$pb.TagNumber(10)
  void clearUnloading() => $_clearField(10);
  @$pb.TagNumber(10)
  AppointmentContent ensureUnloading() => $_ensure(9);

  @$pb.TagNumber(12)
  $core.String get lastUpdate => $_getSZ(10);
  @$pb.TagNumber(12)
  set lastUpdate($core.String value) => $_setString(10, value);
  @$pb.TagNumber(12)
  $core.bool hasLastUpdate() => $_has(10);
  @$pb.TagNumber(12)
  void clearLastUpdate() => $_clearField(12);

  @$pb.TagNumber(13)
  $core.bool get locked => $_getBF(11);
  @$pb.TagNumber(13)
  set locked($core.bool value) => $_setBool(11, value);
  @$pb.TagNumber(13)
  $core.bool hasLocked() => $_has(11);
  @$pb.TagNumber(13)
  void clearLocked() => $_clearField(13);
}

class SlotGroup extends $pb.GeneratedMessage {
  factory SlotGroup({
    $core.Iterable<Slot>? slots,
    $core.int? availability,
  }) {
    final result = create();
    if (slots != null) result.slots.addAll(slots);
    if (availability != null) result.availability = availability;
    return result;
  }

  SlotGroup._();

  factory SlotGroup.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SlotGroup.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SlotGroup', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..pc<Slot>(1, _omitFieldNames ? '' : 'Slots', $pb.PbFieldType.PM, protoName: 'Slots', subBuilder: Slot.create)
    ..a<$core.int>(2, _omitFieldNames ? '' : 'Availability', $pb.PbFieldType.O3, protoName: 'Availability')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SlotGroup clone() => SlotGroup()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SlotGroup copyWith(void Function(SlotGroup) updates) => super.copyWith((message) => updates(message as SlotGroup)) as SlotGroup;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SlotGroup create() => SlotGroup._();
  @$core.override
  SlotGroup createEmptyInstance() => create();
  static $pb.PbList<SlotGroup> createRepeated() => $pb.PbList<SlotGroup>();
  @$core.pragma('dart2js:noInline')
  static SlotGroup getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SlotGroup>(create);
  static SlotGroup? _defaultInstance;

  @$pb.TagNumber(1)
  $pb.PbList<Slot> get slots => $_getList(0);

  @$pb.TagNumber(2)
  $core.int get availability => $_getIZ(1);
  @$pb.TagNumber(2)
  set availability($core.int value) => $_setSignedInt32(1, value);
  @$pb.TagNumber(2)
  $core.bool hasAvailability() => $_has(1);
  @$pb.TagNumber(2)
  void clearAvailability() => $_clearField(2);
}

class SlotGroupAndReason extends $pb.GeneratedMessage {
  factory SlotGroupAndReason({
    SlotGroup? slotGroup,
    $core.String? reason,
  }) {
    final result = create();
    if (slotGroup != null) result.slotGroup = slotGroup;
    if (reason != null) result.reason = reason;
    return result;
  }

  SlotGroupAndReason._();

  factory SlotGroupAndReason.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory SlotGroupAndReason.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'SlotGroupAndReason', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<SlotGroup>(1, _omitFieldNames ? '' : 'SlotGroup', protoName: 'SlotGroup', subBuilder: SlotGroup.create)
    ..aOS(2, _omitFieldNames ? '' : 'Reason', protoName: 'Reason')
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SlotGroupAndReason clone() => SlotGroupAndReason()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  SlotGroupAndReason copyWith(void Function(SlotGroupAndReason) updates) => super.copyWith((message) => updates(message as SlotGroupAndReason)) as SlotGroupAndReason;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static SlotGroupAndReason create() => SlotGroupAndReason._();
  @$core.override
  SlotGroupAndReason createEmptyInstance() => create();
  static $pb.PbList<SlotGroupAndReason> createRepeated() => $pb.PbList<SlotGroupAndReason>();
  @$core.pragma('dart2js:noInline')
  static SlotGroupAndReason getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SlotGroupAndReason>(create);
  static SlotGroupAndReason? _defaultInstance;

  @$pb.TagNumber(1)
  SlotGroup get slotGroup => $_getN(0);
  @$pb.TagNumber(1)
  set slotGroup(SlotGroup value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasSlotGroup() => $_has(0);
  @$pb.TagNumber(1)
  void clearSlotGroup() => $_clearField(1);
  @$pb.TagNumber(1)
  SlotGroup ensureSlotGroup() => $_ensure(0);

  @$pb.TagNumber(2)
  $core.String get reason => $_getSZ(1);
  @$pb.TagNumber(2)
  set reason($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasReason() => $_has(1);
  @$pb.TagNumber(2)
  void clearReason() => $_clearField(2);
}

class BookableSlot extends $pb.GeneratedMessage {
  factory BookableSlot({
    Slot? slot,
    $core.int? availability,
    $core.String? reason,
    SlotAvailabilityReasonCode? reasonCode,
    $core.Iterable<CapacityDefinition>? reachedLimitations,
  }) {
    final result = create();
    if (slot != null) result.slot = slot;
    if (availability != null) result.availability = availability;
    if (reason != null) result.reason = reason;
    if (reasonCode != null) result.reasonCode = reasonCode;
    if (reachedLimitations != null) result.reachedLimitations.addAll(reachedLimitations);
    return result;
  }

  BookableSlot._();

  factory BookableSlot.fromBuffer($core.List<$core.int> data, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(data, registry);
  factory BookableSlot.fromJson($core.String json, [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'BookableSlot', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<Slot>(1, _omitFieldNames ? '' : 'Slot', protoName: 'Slot', subBuilder: Slot.create)
    ..a<$core.int>(2, _omitFieldNames ? '' : 'Availability', $pb.PbFieldType.O3, protoName: 'Availability')
    ..aOS(3, _omitFieldNames ? '' : 'Reason', protoName: 'Reason')
    ..e<SlotAvailabilityReasonCode>(4, _omitFieldNames ? '' : 'ReasonCode', $pb.PbFieldType.OE, protoName: 'ReasonCode', defaultOrMaker: SlotAvailabilityReasonCode.SLOT_REASON_0000_UNKNOWN, valueOf: SlotAvailabilityReasonCode.valueOf, enumValues: SlotAvailabilityReasonCode.values)
    ..pc<CapacityDefinition>(5, _omitFieldNames ? '' : 'ReachedLimitations', $pb.PbFieldType.PM, protoName: 'ReachedLimitations', subBuilder: CapacityDefinition.create)
    ..hasRequiredFields = false
  ;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  BookableSlot clone() => BookableSlot()..mergeFromMessage(this);
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  BookableSlot copyWith(void Function(BookableSlot) updates) => super.copyWith((message) => updates(message as BookableSlot)) as BookableSlot;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static BookableSlot create() => BookableSlot._();
  @$core.override
  BookableSlot createEmptyInstance() => create();
  static $pb.PbList<BookableSlot> createRepeated() => $pb.PbList<BookableSlot>();
  @$core.pragma('dart2js:noInline')
  static BookableSlot getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<BookableSlot>(create);
  static BookableSlot? _defaultInstance;

  @$pb.TagNumber(1)
  Slot get slot => $_getN(0);
  @$pb.TagNumber(1)
  set slot(Slot value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasSlot() => $_has(0);
  @$pb.TagNumber(1)
  void clearSlot() => $_clearField(1);
  @$pb.TagNumber(1)
  Slot ensureSlot() => $_ensure(0);

  @$pb.TagNumber(2)
  $core.int get availability => $_getIZ(1);
  @$pb.TagNumber(2)
  set availability($core.int value) => $_setSignedInt32(1, value);
  @$pb.TagNumber(2)
  $core.bool hasAvailability() => $_has(1);
  @$pb.TagNumber(2)
  void clearAvailability() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get reason => $_getSZ(2);
  @$pb.TagNumber(3)
  set reason($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasReason() => $_has(2);
  @$pb.TagNumber(3)
  void clearReason() => $_clearField(3);

  @$pb.TagNumber(4)
  SlotAvailabilityReasonCode get reasonCode => $_getN(3);
  @$pb.TagNumber(4)
  set reasonCode(SlotAvailabilityReasonCode value) => $_setField(4, value);
  @$pb.TagNumber(4)
  $core.bool hasReasonCode() => $_has(3);
  @$pb.TagNumber(4)
  void clearReasonCode() => $_clearField(4);

  @$pb.TagNumber(5)
  $pb.PbList<CapacityDefinition> get reachedLimitations => $_getList(4);
}


const $core.bool _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names');
const $core.bool _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names');
