// This is a generated file - do not edit.
//
// Generated from appointment.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 'repositoryShared.pb.dart' as $2;
import 'shared.pb.dart' as $0;
import 'slotbooking.pb.dart' as $1;

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

///
/// Aggregation object message
class Appointment extends $pb.GeneratedMessage {
  factory Appointment({
    $0.EventHeader? lastEventHeader,
    $0.EntityID? iD,
    AppointmentPayload? payload,
  }) {
    final result = create();
    if (lastEventHeader != null) result.lastEventHeader = lastEventHeader;
    if (iD != null) result.iD = iD;
    if (payload != null) result.payload = payload;
    return result;
  }

  Appointment._();

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

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Appointment', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<$0.EventHeader>(1, _omitFieldNames ? '' : 'LastEventHeader', protoName: 'LastEventHeader', subBuilder: $0.EventHeader.create)
    ..aOM<$0.EntityID>(2, _omitFieldNames ? '' : 'ID', protoName: 'ID', subBuilder: $0.EntityID.create)
    ..aOM<AppointmentPayload>(3, _omitFieldNames ? '' : 'Payload', protoName: 'Payload', subBuilder: AppointmentPayload.create)
    ..hasRequiredFields = false
  ;

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

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

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

  @$pb.TagNumber(1)
  $0.EventHeader get lastEventHeader => $_getN(0);
  @$pb.TagNumber(1)
  set lastEventHeader($0.EventHeader value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasLastEventHeader() => $_has(0);
  @$pb.TagNumber(1)
  void clearLastEventHeader() => $_clearField(1);
  @$pb.TagNumber(1)
  $0.EventHeader ensureLastEventHeader() => $_ensure(0);

  @$pb.TagNumber(2)
  $0.EntityID get iD => $_getN(1);
  @$pb.TagNumber(2)
  set iD($0.EntityID value) => $_setField(2, value);
  @$pb.TagNumber(2)
  $core.bool hasID() => $_has(1);
  @$pb.TagNumber(2)
  void clearID() => $_clearField(2);
  @$pb.TagNumber(2)
  $0.EntityID ensureID() => $_ensure(1);

  @$pb.TagNumber(3)
  AppointmentPayload get payload => $_getN(2);
  @$pb.TagNumber(3)
  set payload(AppointmentPayload value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasPayload() => $_has(2);
  @$pb.TagNumber(3)
  void clearPayload() => $_clearField(3);
  @$pb.TagNumber(3)
  AppointmentPayload ensurePayload() => $_ensure(2);
}

class AppointmentPayload extends $pb.GeneratedMessage {
  factory AppointmentPayload({
    $0.AppointmentType? appointmentType,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<$1.AppointmentCommission>? commissions,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<$1.SegmentationSelection>? segmentationSelections,
    $1.Slot? slot,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<$core.String>? emails,
    $0.AppointmentStatusStruct? status,
  @$core.Deprecated('This field is deprecated.')
    $core.String? creationDate,
    $core.Iterable<$0.MetadataElement>? metaData,
    $core.Iterable<$0.AttachmentSummary>? attachments,
    $core.int? attachmentNumber,
  @$core.Deprecated('This field is deprecated.')
    $core.Iterable<$core.String>? removedEmails,
    $core.String? reason,
    $core.bool? instructionAck,
    $core.Iterable<$0.MetadataElement>? carrierInformation,
  @$core.Deprecated('This field is deprecated.')
    $core.String? actorID,
    $2.Address? address,
    $core.String? siteName,
    $core.String? timeZone,
    $1.AppointmentContent? loading,
    $1.AppointmentContent? unloading,
    $core.Iterable<$core.String>? attendees,
    $core.Iterable<$core.String>? removedAttendees,
    $core.Iterable<$0.MetadataElement>? segmentationKeys,
    $0.DateTime? creationDateTime,
    $core.bool? wMSCreated,
    AppointmentExternalAccess? externalAccess,
    $core.Iterable<$0.ClaimSummary>? claims,
    $core.int? claimNumber,
  }) {
    final result = create();
    if (appointmentType != null) result.appointmentType = appointmentType;
    if (commissions != null) result.commissions.addAll(commissions);
    if (segmentationSelections != null) result.segmentationSelections.addAll(segmentationSelections);
    if (slot != null) result.slot = slot;
    if (emails != null) result.emails.addAll(emails);
    if (status != null) result.status = status;
    if (creationDate != null) result.creationDate = creationDate;
    if (metaData != null) result.metaData.addAll(metaData);
    if (attachments != null) result.attachments.addAll(attachments);
    if (attachmentNumber != null) result.attachmentNumber = attachmentNumber;
    if (removedEmails != null) result.removedEmails.addAll(removedEmails);
    if (reason != null) result.reason = reason;
    if (instructionAck != null) result.instructionAck = instructionAck;
    if (carrierInformation != null) result.carrierInformation.addAll(carrierInformation);
    if (actorID != null) result.actorID = actorID;
    if (address != null) result.address = address;
    if (siteName != null) result.siteName = siteName;
    if (timeZone != null) result.timeZone = timeZone;
    if (loading != null) result.loading = loading;
    if (unloading != null) result.unloading = unloading;
    if (attendees != null) result.attendees.addAll(attendees);
    if (removedAttendees != null) result.removedAttendees.addAll(removedAttendees);
    if (segmentationKeys != null) result.segmentationKeys.addAll(segmentationKeys);
    if (creationDateTime != null) result.creationDateTime = creationDateTime;
    if (wMSCreated != null) result.wMSCreated = wMSCreated;
    if (externalAccess != null) result.externalAccess = externalAccess;
    if (claims != null) result.claims.addAll(claims);
    if (claimNumber != null) result.claimNumber = claimNumber;
    return result;
  }

  AppointmentPayload._();

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

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentPayload', 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<$1.AppointmentCommission>(2, _omitFieldNames ? '' : 'Commissions', $pb.PbFieldType.PM, protoName: 'Commissions', subBuilder: $1.AppointmentCommission.create)
    ..pc<$1.SegmentationSelection>(4, _omitFieldNames ? '' : 'SegmentationSelections', $pb.PbFieldType.PM, protoName: 'SegmentationSelections', subBuilder: $1.SegmentationSelection.create)
    ..aOM<$1.Slot>(6, _omitFieldNames ? '' : 'Slot', protoName: 'Slot', subBuilder: $1.Slot.create)
    ..pPS(7, _omitFieldNames ? '' : 'Emails', protoName: 'Emails')
    ..aOM<$0.AppointmentStatusStruct>(8, _omitFieldNames ? '' : 'Status', protoName: 'Status', subBuilder: $0.AppointmentStatusStruct.create)
    ..aOS(9, _omitFieldNames ? '' : 'CreationDate', protoName: 'CreationDate')
    ..pc<$0.MetadataElement>(10, _omitFieldNames ? '' : 'MetaData', $pb.PbFieldType.PM, protoName: 'MetaData', subBuilder: $0.MetadataElement.create)
    ..pc<$0.AttachmentSummary>(13, _omitFieldNames ? '' : 'Attachments', $pb.PbFieldType.PM, protoName: 'Attachments', subBuilder: $0.AttachmentSummary.create)
    ..a<$core.int>(14, _omitFieldNames ? '' : 'AttachmentNumber', $pb.PbFieldType.O3, protoName: 'AttachmentNumber')
    ..pPS(16, _omitFieldNames ? '' : 'RemovedEmails', protoName: 'RemovedEmails')
    ..aOS(17, _omitFieldNames ? '' : 'Reason', protoName: 'Reason')
    ..aOB(18, _omitFieldNames ? '' : 'InstructionAck', protoName: 'InstructionAck')
    ..pc<$0.MetadataElement>(19, _omitFieldNames ? '' : 'CarrierInformation', $pb.PbFieldType.PM, protoName: 'CarrierInformation', subBuilder: $0.MetadataElement.create)
    ..aOS(20, _omitFieldNames ? '' : 'ActorID', protoName: 'ActorID')
    ..aOM<$2.Address>(21, _omitFieldNames ? '' : 'Address', protoName: 'Address', subBuilder: $2.Address.create)
    ..aOS(22, _omitFieldNames ? '' : 'SiteName', protoName: 'SiteName')
    ..aOS(24, _omitFieldNames ? '' : 'TimeZone', protoName: 'TimeZone')
    ..aOM<$1.AppointmentContent>(25, _omitFieldNames ? '' : 'Loading', protoName: 'Loading', subBuilder: $1.AppointmentContent.create)
    ..aOM<$1.AppointmentContent>(26, _omitFieldNames ? '' : 'Unloading', protoName: 'Unloading', subBuilder: $1.AppointmentContent.create)
    ..pPS(27, _omitFieldNames ? '' : 'Attendees', protoName: 'Attendees')
    ..pPS(28, _omitFieldNames ? '' : 'RemovedAttendees', protoName: 'RemovedAttendees')
    ..pc<$0.MetadataElement>(29, _omitFieldNames ? '' : 'SegmentationKeys', $pb.PbFieldType.PM, protoName: 'SegmentationKeys', subBuilder: $0.MetadataElement.create)
    ..aOM<$0.DateTime>(30, _omitFieldNames ? '' : 'CreationDateTime', protoName: 'CreationDateTime', subBuilder: $0.DateTime.create)
    ..aOB(31, _omitFieldNames ? '' : 'WMSCreated', protoName: 'WMSCreated')
    ..aOM<AppointmentExternalAccess>(32, _omitFieldNames ? '' : 'ExternalAccess', protoName: 'ExternalAccess', subBuilder: AppointmentExternalAccess.create)
    ..pc<$0.ClaimSummary>(33, _omitFieldNames ? '' : 'Claims', $pb.PbFieldType.PM, protoName: 'Claims', subBuilder: $0.ClaimSummary.create)
    ..a<$core.int>(34, _omitFieldNames ? '' : 'ClaimNumber', $pb.PbFieldType.O3, protoName: 'ClaimNumber')
    ..hasRequiredFields = false
  ;

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

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

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

  /// Type of appointment : Loading / Unloading / Both
  @$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);

  /// List of the orders and projects for which the appointment is made, with the quantities
  /// TODO  Remove after upgrade model
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(2)
  $pb.PbList<$1.AppointmentCommission> get commissions => $_getList(1);

  /// Set of segmentation constraining the slot booking
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(4)
  $pb.PbList<$1.SegmentationSelection> get segmentationSelections => $_getList(2);

  /// The slot booked for the appointment
  @$pb.TagNumber(6)
  $1.Slot get slot => $_getN(3);
  @$pb.TagNumber(6)
  set slot($1.Slot value) => $_setField(6, value);
  @$pb.TagNumber(6)
  $core.bool hasSlot() => $_has(3);
  @$pb.TagNumber(6)
  void clearSlot() => $_clearField(6);
  @$pb.TagNumber(6)
  $1.Slot ensureSlot() => $_ensure(3);

  /// User mails being notified on this appointment
  /// TODO Need to add a structure to store platform user identifiers which can act on this appointment ?
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(7)
  $pb.PbList<$core.String> get emails => $_getList(4);

  /// Appointment Status and status history
  @$pb.TagNumber(8)
  $0.AppointmentStatusStruct get status => $_getN(5);
  @$pb.TagNumber(8)
  set status($0.AppointmentStatusStruct value) => $_setField(8, value);
  @$pb.TagNumber(8)
  $core.bool hasStatus() => $_has(5);
  @$pb.TagNumber(8)
  void clearStatus() => $_clearField(8);
  @$pb.TagNumber(8)
  $0.AppointmentStatusStruct ensureStatus() => $_ensure(5);

  /// Creation date of the appointment
  /// TODO Because this attribute is a kpi, when removing it we will have to alter all clickhouse tables to drop the column.
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(9)
  $core.String get creationDate => $_getSZ(6);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(9)
  set creationDate($core.String value) => $_setString(6, value);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(9)
  $core.bool hasCreationDate() => $_has(6);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(9)
  void clearCreationDate() => $_clearField(9);

  @$pb.TagNumber(10)
  $pb.PbList<$0.MetadataElement> get metaData => $_getList(7);

  @$pb.TagNumber(13)
  $pb.PbList<$0.AttachmentSummary> get attachments => $_getList(8);

  @$pb.TagNumber(14)
  $core.int get attachmentNumber => $_getIZ(9);
  @$pb.TagNumber(14)
  set attachmentNumber($core.int value) => $_setSignedInt32(9, value);
  @$pb.TagNumber(14)
  $core.bool hasAttachmentNumber() => $_has(9);
  @$pb.TagNumber(14)
  void clearAttachmentNumber() => $_clearField(14);

  /// Emails removed from the appointment
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(16)
  $pb.PbList<$core.String> get removedEmails => $_getList(10);

  /// The Reason for which the appointment has no commission
  @$pb.TagNumber(17)
  $core.String get reason => $_getSZ(11);
  @$pb.TagNumber(17)
  set reason($core.String value) => $_setString(11, value);
  @$pb.TagNumber(17)
  $core.bool hasReason() => $_has(11);
  @$pb.TagNumber(17)
  void clearReason() => $_clearField(17);

  /// Acknowledgment of the site instructions
  @$pb.TagNumber(18)
  $core.bool get instructionAck => $_getBF(12);
  @$pb.TagNumber(18)
  set instructionAck($core.bool value) => $_setBool(12, value);
  @$pb.TagNumber(18)
  $core.bool hasInstructionAck() => $_has(12);
  @$pb.TagNumber(18)
  void clearInstructionAck() => $_clearField(18);

  /// Carrier information metadata
  @$pb.TagNumber(19)
  $pb.PbList<$0.MetadataElement> get carrierInformation => $_getList(13);

  /// Empty attribute, just used for inpout api payloads to resolve the site resource from project context with actor alias
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(20)
  $core.String get actorID => $_getSZ(14);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(20)
  set actorID($core.String value) => $_setString(14, value);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(20)
  $core.bool hasActorID() => $_has(14);
  @$core.Deprecated('This field is deprecated.')
  @$pb.TagNumber(20)
  void clearActorID() => $_clearField(20);

  /// Address of the appointment site
  @$pb.TagNumber(21)
  $2.Address get address => $_getN(15);
  @$pb.TagNumber(21)
  set address($2.Address value) => $_setField(21, value);
  @$pb.TagNumber(21)
  $core.bool hasAddress() => $_has(15);
  @$pb.TagNumber(21)
  void clearAddress() => $_clearField(21);
  @$pb.TagNumber(21)
  $2.Address ensureAddress() => $_ensure(15);

  /// Name of the appointment site
  @$pb.TagNumber(22)
  $core.String get siteName => $_getSZ(16);
  @$pb.TagNumber(22)
  set siteName($core.String value) => $_setString(16, value);
  @$pb.TagNumber(22)
  $core.bool hasSiteName() => $_has(16);
  @$pb.TagNumber(22)
  void clearSiteName() => $_clearField(22);

  /// time zone of the site on which the appointment is booked
  @$pb.TagNumber(24)
  $core.String get timeZone => $_getSZ(17);
  @$pb.TagNumber(24)
  set timeZone($core.String value) => $_setString(17, value);
  @$pb.TagNumber(24)
  $core.bool hasTimeZone() => $_has(17);
  @$pb.TagNumber(24)
  void clearTimeZone() => $_clearField(24);

  /// Loading content
  @$pb.TagNumber(25)
  $1.AppointmentContent get loading => $_getN(18);
  @$pb.TagNumber(25)
  set loading($1.AppointmentContent value) => $_setField(25, value);
  @$pb.TagNumber(25)
  $core.bool hasLoading() => $_has(18);
  @$pb.TagNumber(25)
  void clearLoading() => $_clearField(25);
  @$pb.TagNumber(25)
  $1.AppointmentContent ensureLoading() => $_ensure(18);

  /// Unoading content
  @$pb.TagNumber(26)
  $1.AppointmentContent get unloading => $_getN(19);
  @$pb.TagNumber(26)
  set unloading($1.AppointmentContent value) => $_setField(26, value);
  @$pb.TagNumber(26)
  $core.bool hasUnloading() => $_has(19);
  @$pb.TagNumber(26)
  void clearUnloading() => $_clearField(26);
  @$pb.TagNumber(26)
  $1.AppointmentContent ensureUnloading() => $_ensure(19);

  /// User being notified on this appointment
  @$pb.TagNumber(27)
  $pb.PbList<$core.String> get attendees => $_getList(20);

  /// Emails removed from the appointment
  @$pb.TagNumber(28)
  $pb.PbList<$core.String> get removedAttendees => $_getList(21);

  /// Set of segmentation constraining the slot booking
  @$pb.TagNumber(29)
  $pb.PbList<$0.MetadataElement> get segmentationKeys => $_getList(22);

  @$pb.TagNumber(30)
  $0.DateTime get creationDateTime => $_getN(23);
  @$pb.TagNumber(30)
  set creationDateTime($0.DateTime value) => $_setField(30, value);
  @$pb.TagNumber(30)
  $core.bool hasCreationDateTime() => $_has(23);
  @$pb.TagNumber(30)
  void clearCreationDateTime() => $_clearField(30);
  @$pb.TagNumber(30)
  $0.DateTime ensureCreationDateTime() => $_ensure(23);

  @$pb.TagNumber(31)
  $core.bool get wMSCreated => $_getBF(24);
  @$pb.TagNumber(31)
  set wMSCreated($core.bool value) => $_setBool(24, value);
  @$pb.TagNumber(31)
  $core.bool hasWMSCreated() => $_has(24);
  @$pb.TagNumber(31)
  void clearWMSCreated() => $_clearField(31);

  @$pb.TagNumber(32)
  AppointmentExternalAccess get externalAccess => $_getN(25);
  @$pb.TagNumber(32)
  set externalAccess(AppointmentExternalAccess value) => $_setField(32, value);
  @$pb.TagNumber(32)
  $core.bool hasExternalAccess() => $_has(25);
  @$pb.TagNumber(32)
  void clearExternalAccess() => $_clearField(32);
  @$pb.TagNumber(32)
  AppointmentExternalAccess ensureExternalAccess() => $_ensure(25);

  @$pb.TagNumber(33)
  $pb.PbList<$0.ClaimSummary> get claims => $_getList(26);

  @$pb.TagNumber(34)
  $core.int get claimNumber => $_getIZ(27);
  @$pb.TagNumber(34)
  set claimNumber($core.int value) => $_setSignedInt32(27, value);
  @$pb.TagNumber(34)
  $core.bool hasClaimNumber() => $_has(27);
  @$pb.TagNumber(34)
  void clearClaimNumber() => $_clearField(34);
}

class AppointmentTriplet extends $pb.GeneratedMessage {
  factory AppointmentTriplet({
    Appointment? current,
    Appointment? previous,
    Appointment? lastEvent,
  }) {
    final result = create();
    if (current != null) result.current = current;
    if (previous != null) result.previous = previous;
    if (lastEvent != null) result.lastEvent = lastEvent;
    return result;
  }

  AppointmentTriplet._();

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

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentTriplet', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOM<Appointment>(1, _omitFieldNames ? '' : 'Current', protoName: 'Current', subBuilder: Appointment.create)
    ..aOM<Appointment>(2, _omitFieldNames ? '' : 'Previous', protoName: 'Previous', subBuilder: Appointment.create)
    ..aOM<Appointment>(3, _omitFieldNames ? '' : 'LastEvent', protoName: 'LastEvent', subBuilder: Appointment.create)
    ..hasRequiredFields = false
  ;

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

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

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

  @$pb.TagNumber(1)
  Appointment get current => $_getN(0);
  @$pb.TagNumber(1)
  set current(Appointment value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasCurrent() => $_has(0);
  @$pb.TagNumber(1)
  void clearCurrent() => $_clearField(1);
  @$pb.TagNumber(1)
  Appointment ensureCurrent() => $_ensure(0);

  @$pb.TagNumber(2)
  Appointment get previous => $_getN(1);
  @$pb.TagNumber(2)
  set previous(Appointment value) => $_setField(2, value);
  @$pb.TagNumber(2)
  $core.bool hasPrevious() => $_has(1);
  @$pb.TagNumber(2)
  void clearPrevious() => $_clearField(2);
  @$pb.TagNumber(2)
  Appointment ensurePrevious() => $_ensure(1);

  @$pb.TagNumber(3)
  Appointment get lastEvent => $_getN(2);
  @$pb.TagNumber(3)
  set lastEvent(Appointment value) => $_setField(3, value);
  @$pb.TagNumber(3)
  $core.bool hasLastEvent() => $_has(2);
  @$pb.TagNumber(3)
  void clearLastEvent() => $_clearField(3);
  @$pb.TagNumber(3)
  Appointment ensureLastEvent() => $_ensure(2);
}

class AppointmentExternalAccess extends $pb.GeneratedMessage {
  factory AppointmentExternalAccess({
    $core.String? hash,
    $core.String? uRL,
    $fixnum.Int64? expirationTime,
  }) {
    final result = create();
    if (hash != null) result.hash = hash;
    if (uRL != null) result.uRL = uRL;
    if (expirationTime != null) result.expirationTime = expirationTime;
    return result;
  }

  AppointmentExternalAccess._();

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

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AppointmentExternalAccess', package: const $pb.PackageName(_omitMessageNames ? '' : 'api'), createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'Hash', protoName: 'Hash')
    ..aOS(2, _omitFieldNames ? '' : 'URL', protoName: 'URL')
    ..aInt64(3, _omitFieldNames ? '' : 'ExpirationTime', protoName: 'ExpirationTime')
    ..hasRequiredFields = false
  ;

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

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

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

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

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

  @$pb.TagNumber(3)
  $fixnum.Int64 get expirationTime => $_getI64(2);
  @$pb.TagNumber(3)
  set expirationTime($fixnum.Int64 value) => $_setInt64(2, value);
  @$pb.TagNumber(3)
  $core.bool hasExpirationTime() => $_has(2);
  @$pb.TagNumber(3)
  void clearExpirationTime() => $_clearField(3);
}


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