@blackcode_sa/metaestetics-api 1.12.36 → 1.12.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1681,6 +1681,7 @@ interface ZoneItemData {
1681
1681
  productBrandName?: string;
1682
1682
  belongingProcedureId: string;
1683
1683
  type: 'item' | 'note';
1684
+ stage?: 'before' | 'after';
1684
1685
  price?: number;
1685
1686
  currency?: Currency;
1686
1687
  unitOfMeasurement?: PricingMeasure;
@@ -1691,6 +1692,8 @@ interface ZoneItemData {
1691
1692
  notes?: string;
1692
1693
  subtotal?: number;
1693
1694
  ionNumber?: string;
1695
+ createdAt?: string;
1696
+ updatedAt?: string;
1694
1697
  }
1695
1698
  /**
1696
1699
  * @deprecated Use ZoneItemData instead
@@ -1754,15 +1757,24 @@ interface ExtendedProcedureInfo {
1754
1757
  brandName: string;
1755
1758
  }>;
1756
1759
  }
1760
+ interface RecommendedProcedure {
1761
+ procedure: ExtendedProcedureInfo;
1762
+ note: string;
1763
+ timeframe: {
1764
+ value: number;
1765
+ unit: 'day' | 'week' | 'month' | 'year';
1766
+ };
1767
+ }
1757
1768
  /**
1758
1769
  * Interface for appointment metadata containing zone-specific information
1759
1770
  */
1760
1771
  interface AppointmentMetadata {
1761
1772
  selectedZones: string[] | null;
1762
- zonePhotos: Record<string, BeforeAfterPerZone> | null;
1773
+ zonePhotos: Record<string, BeforeAfterPerZone[]> | null;
1763
1774
  zonesData?: Record<string, ZoneItemData[]> | null;
1764
1775
  appointmentProducts?: AppointmentProductMetadata[];
1765
1776
  extendedProcedures?: ExtendedProcedureInfo[];
1777
+ recommendedProcedures: RecommendedProcedure[];
1766
1778
  finalbilling: FinalBilling | null;
1767
1779
  finalizationNotes: string | null;
1768
1780
  /**
@@ -1681,6 +1681,7 @@ interface ZoneItemData {
1681
1681
  productBrandName?: string;
1682
1682
  belongingProcedureId: string;
1683
1683
  type: 'item' | 'note';
1684
+ stage?: 'before' | 'after';
1684
1685
  price?: number;
1685
1686
  currency?: Currency;
1686
1687
  unitOfMeasurement?: PricingMeasure;
@@ -1691,6 +1692,8 @@ interface ZoneItemData {
1691
1692
  notes?: string;
1692
1693
  subtotal?: number;
1693
1694
  ionNumber?: string;
1695
+ createdAt?: string;
1696
+ updatedAt?: string;
1694
1697
  }
1695
1698
  /**
1696
1699
  * @deprecated Use ZoneItemData instead
@@ -1754,15 +1757,24 @@ interface ExtendedProcedureInfo {
1754
1757
  brandName: string;
1755
1758
  }>;
1756
1759
  }
1760
+ interface RecommendedProcedure {
1761
+ procedure: ExtendedProcedureInfo;
1762
+ note: string;
1763
+ timeframe: {
1764
+ value: number;
1765
+ unit: 'day' | 'week' | 'month' | 'year';
1766
+ };
1767
+ }
1757
1768
  /**
1758
1769
  * Interface for appointment metadata containing zone-specific information
1759
1770
  */
1760
1771
  interface AppointmentMetadata {
1761
1772
  selectedZones: string[] | null;
1762
- zonePhotos: Record<string, BeforeAfterPerZone> | null;
1773
+ zonePhotos: Record<string, BeforeAfterPerZone[]> | null;
1763
1774
  zonesData?: Record<string, ZoneItemData[]> | null;
1764
1775
  appointmentProducts?: AppointmentProductMetadata[];
1765
1776
  extendedProcedures?: ExtendedProcedureInfo[];
1777
+ recommendedProcedures: RecommendedProcedure[];
1766
1778
  finalbilling: FinalBilling | null;
1767
1779
  finalizationNotes: string | null;
1768
1780
  /**
@@ -3650,9 +3650,16 @@ var AppointmentAggregationService = class {
3650
3650
  if (!beforeZonePhotos || !afterZonePhotos) {
3651
3651
  return true;
3652
3652
  }
3653
- if (beforeZonePhotos.before !== afterZonePhotos.before || beforeZonePhotos.after !== afterZonePhotos.after || beforeZonePhotos.beforeNote !== afterZonePhotos.beforeNote || beforeZonePhotos.afterNote !== afterZonePhotos.afterNote) {
3653
+ if (beforeZonePhotos.length !== afterZonePhotos.length) {
3654
3654
  return true;
3655
3655
  }
3656
+ for (let i = 0; i < beforeZonePhotos.length; i++) {
3657
+ const beforeEntry = beforeZonePhotos[i];
3658
+ const afterEntry = afterZonePhotos[i];
3659
+ if (beforeEntry.before !== afterEntry.before || beforeEntry.after !== afterEntry.after || beforeEntry.beforeNote !== afterEntry.beforeNote || beforeEntry.afterNote !== afterEntry.afterNote) {
3660
+ return true;
3661
+ }
3662
+ }
3656
3663
  }
3657
3664
  return false;
3658
3665
  }
@@ -3670,24 +3677,43 @@ var AppointmentAggregationService = class {
3670
3677
  const updatedZones = [];
3671
3678
  const newPhotoTypes = [];
3672
3679
  for (const zoneId of Object.keys(afterPhotos)) {
3673
- const beforeZonePhotos = beforePhotos[zoneId];
3674
- const afterZonePhotos = afterPhotos[zoneId];
3675
- if (!beforeZonePhotos) {
3680
+ const beforeZonePhotos = beforePhotos[zoneId] || [];
3681
+ const afterZonePhotos = afterPhotos[zoneId] || [];
3682
+ if (beforeZonePhotos.length === 0 && afterZonePhotos.length > 0) {
3676
3683
  updatedZones.push(zoneId);
3677
- if (afterZonePhotos.before) {
3678
- newPhotoTypes.push({ zoneId, photoType: "before" });
3679
- }
3680
- if (afterZonePhotos.after) {
3681
- newPhotoTypes.push({ zoneId, photoType: "after" });
3682
- }
3684
+ afterZonePhotos.forEach((entry) => {
3685
+ if (entry.before) {
3686
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3687
+ }
3688
+ if (entry.after) {
3689
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3690
+ }
3691
+ });
3692
+ } else if (afterZonePhotos.length > beforeZonePhotos.length) {
3693
+ updatedZones.push(zoneId);
3694
+ const newEntries = afterZonePhotos.slice(beforeZonePhotos.length);
3695
+ newEntries.forEach((entry) => {
3696
+ if (entry.before) {
3697
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3698
+ }
3699
+ if (entry.after) {
3700
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3701
+ }
3702
+ });
3683
3703
  } else {
3684
- if (beforeZonePhotos.before !== afterZonePhotos.before && afterZonePhotos.before) {
3685
- updatedZones.push(zoneId);
3686
- newPhotoTypes.push({ zoneId, photoType: "before" });
3687
- }
3688
- if (beforeZonePhotos.after !== afterZonePhotos.after && afterZonePhotos.after) {
3689
- updatedZones.push(zoneId);
3690
- newPhotoTypes.push({ zoneId, photoType: "after" });
3704
+ for (let i = 0; i < afterZonePhotos.length; i++) {
3705
+ const beforeEntry = beforeZonePhotos[i];
3706
+ const afterEntry = afterZonePhotos[i];
3707
+ if (beforeEntry && afterEntry) {
3708
+ if (beforeEntry.before !== afterEntry.before && afterEntry.before) {
3709
+ updatedZones.push(zoneId);
3710
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3711
+ }
3712
+ if (beforeEntry.after !== afterEntry.after && afterEntry.after) {
3713
+ updatedZones.push(zoneId);
3714
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3715
+ }
3716
+ }
3691
3717
  }
3692
3718
  }
3693
3719
  }
@@ -3707,7 +3733,7 @@ var AppointmentAggregationService = class {
3707
3733
  if (selectedZones.length > 0) {
3708
3734
  const completedZones = selectedZones.filter((zoneId) => {
3709
3735
  const zonePhotos = afterPhotos[zoneId];
3710
- return zonePhotos && (zonePhotos.before || zonePhotos.after);
3736
+ return zonePhotos && zonePhotos.length > 0 && zonePhotos.some((entry) => entry.before || entry.after);
3711
3737
  });
3712
3738
  const completionPercentage = completedZones.length / selectedZones.length * 100;
3713
3739
  Logger.info(
@@ -7706,6 +7732,7 @@ var BookingAdmin = class {
7706
7732
  zonesData: null,
7707
7733
  appointmentProducts,
7708
7734
  extendedProcedures: [],
7735
+ recommendedProcedures: [],
7709
7736
  finalbilling: null,
7710
7737
  finalizationNotes: null
7711
7738
  },
@@ -3588,9 +3588,16 @@ var AppointmentAggregationService = class {
3588
3588
  if (!beforeZonePhotos || !afterZonePhotos) {
3589
3589
  return true;
3590
3590
  }
3591
- if (beforeZonePhotos.before !== afterZonePhotos.before || beforeZonePhotos.after !== afterZonePhotos.after || beforeZonePhotos.beforeNote !== afterZonePhotos.beforeNote || beforeZonePhotos.afterNote !== afterZonePhotos.afterNote) {
3591
+ if (beforeZonePhotos.length !== afterZonePhotos.length) {
3592
3592
  return true;
3593
3593
  }
3594
+ for (let i = 0; i < beforeZonePhotos.length; i++) {
3595
+ const beforeEntry = beforeZonePhotos[i];
3596
+ const afterEntry = afterZonePhotos[i];
3597
+ if (beforeEntry.before !== afterEntry.before || beforeEntry.after !== afterEntry.after || beforeEntry.beforeNote !== afterEntry.beforeNote || beforeEntry.afterNote !== afterEntry.afterNote) {
3598
+ return true;
3599
+ }
3600
+ }
3594
3601
  }
3595
3602
  return false;
3596
3603
  }
@@ -3608,24 +3615,43 @@ var AppointmentAggregationService = class {
3608
3615
  const updatedZones = [];
3609
3616
  const newPhotoTypes = [];
3610
3617
  for (const zoneId of Object.keys(afterPhotos)) {
3611
- const beforeZonePhotos = beforePhotos[zoneId];
3612
- const afterZonePhotos = afterPhotos[zoneId];
3613
- if (!beforeZonePhotos) {
3618
+ const beforeZonePhotos = beforePhotos[zoneId] || [];
3619
+ const afterZonePhotos = afterPhotos[zoneId] || [];
3620
+ if (beforeZonePhotos.length === 0 && afterZonePhotos.length > 0) {
3614
3621
  updatedZones.push(zoneId);
3615
- if (afterZonePhotos.before) {
3616
- newPhotoTypes.push({ zoneId, photoType: "before" });
3617
- }
3618
- if (afterZonePhotos.after) {
3619
- newPhotoTypes.push({ zoneId, photoType: "after" });
3620
- }
3622
+ afterZonePhotos.forEach((entry) => {
3623
+ if (entry.before) {
3624
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3625
+ }
3626
+ if (entry.after) {
3627
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3628
+ }
3629
+ });
3630
+ } else if (afterZonePhotos.length > beforeZonePhotos.length) {
3631
+ updatedZones.push(zoneId);
3632
+ const newEntries = afterZonePhotos.slice(beforeZonePhotos.length);
3633
+ newEntries.forEach((entry) => {
3634
+ if (entry.before) {
3635
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3636
+ }
3637
+ if (entry.after) {
3638
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3639
+ }
3640
+ });
3621
3641
  } else {
3622
- if (beforeZonePhotos.before !== afterZonePhotos.before && afterZonePhotos.before) {
3623
- updatedZones.push(zoneId);
3624
- newPhotoTypes.push({ zoneId, photoType: "before" });
3625
- }
3626
- if (beforeZonePhotos.after !== afterZonePhotos.after && afterZonePhotos.after) {
3627
- updatedZones.push(zoneId);
3628
- newPhotoTypes.push({ zoneId, photoType: "after" });
3642
+ for (let i = 0; i < afterZonePhotos.length; i++) {
3643
+ const beforeEntry = beforeZonePhotos[i];
3644
+ const afterEntry = afterZonePhotos[i];
3645
+ if (beforeEntry && afterEntry) {
3646
+ if (beforeEntry.before !== afterEntry.before && afterEntry.before) {
3647
+ updatedZones.push(zoneId);
3648
+ newPhotoTypes.push({ zoneId, photoType: "before" });
3649
+ }
3650
+ if (beforeEntry.after !== afterEntry.after && afterEntry.after) {
3651
+ updatedZones.push(zoneId);
3652
+ newPhotoTypes.push({ zoneId, photoType: "after" });
3653
+ }
3654
+ }
3629
3655
  }
3630
3656
  }
3631
3657
  }
@@ -3645,7 +3671,7 @@ var AppointmentAggregationService = class {
3645
3671
  if (selectedZones.length > 0) {
3646
3672
  const completedZones = selectedZones.filter((zoneId) => {
3647
3673
  const zonePhotos = afterPhotos[zoneId];
3648
- return zonePhotos && (zonePhotos.before || zonePhotos.after);
3674
+ return zonePhotos && zonePhotos.length > 0 && zonePhotos.some((entry) => entry.before || entry.after);
3649
3675
  });
3650
3676
  const completionPercentage = completedZones.length / selectedZones.length * 100;
3651
3677
  Logger.info(
@@ -7644,6 +7670,7 @@ var BookingAdmin = class {
7644
7670
  zonesData: null,
7645
7671
  appointmentProducts,
7646
7672
  extendedProcedures: [],
7673
+ recommendedProcedures: [],
7647
7674
  finalbilling: null,
7648
7675
  finalizationNotes: null
7649
7676
  },
package/dist/index.d.mts CHANGED
@@ -4435,6 +4435,7 @@ interface ZoneItemData {
4435
4435
  productBrandName?: string;
4436
4436
  belongingProcedureId: string;
4437
4437
  type: 'item' | 'note';
4438
+ stage?: 'before' | 'after';
4438
4439
  price?: number;
4439
4440
  currency?: Currency;
4440
4441
  unitOfMeasurement?: PricingMeasure;
@@ -4445,6 +4446,8 @@ interface ZoneItemData {
4445
4446
  notes?: string;
4446
4447
  subtotal?: number;
4447
4448
  ionNumber?: string;
4449
+ createdAt?: string;
4450
+ updatedAt?: string;
4448
4451
  }
4449
4452
  /**
4450
4453
  * @deprecated Use ZoneItemData instead
@@ -4508,15 +4511,24 @@ interface ExtendedProcedureInfo {
4508
4511
  brandName: string;
4509
4512
  }>;
4510
4513
  }
4514
+ interface RecommendedProcedure {
4515
+ procedure: ExtendedProcedureInfo;
4516
+ note: string;
4517
+ timeframe: {
4518
+ value: number;
4519
+ unit: 'day' | 'week' | 'month' | 'year';
4520
+ };
4521
+ }
4511
4522
  /**
4512
4523
  * Interface for appointment metadata containing zone-specific information
4513
4524
  */
4514
4525
  interface AppointmentMetadata {
4515
4526
  selectedZones: string[] | null;
4516
- zonePhotos: Record<string, BeforeAfterPerZone> | null;
4527
+ zonePhotos: Record<string, BeforeAfterPerZone[]> | null;
4517
4528
  zonesData?: Record<string, ZoneItemData[]> | null;
4518
4529
  appointmentProducts?: AppointmentProductMetadata[];
4519
4530
  extendedProcedures?: ExtendedProcedureInfo[];
4531
+ recommendedProcedures: RecommendedProcedure[];
4520
4532
  finalbilling: FinalBilling | null;
4521
4533
  finalizationNotes: string | null;
4522
4534
  /**
@@ -5629,6 +5641,8 @@ declare class ProcedureService extends BaseService {
5629
5641
  pagination?: number;
5630
5642
  lastDoc?: any;
5631
5643
  isActive?: boolean;
5644
+ practitionerId?: string;
5645
+ clinicId?: string;
5632
5646
  }): Promise<{
5633
5647
  procedures: (Procedure & {
5634
5648
  distance?: number;
@@ -6164,16 +6178,16 @@ declare class AppointmentService extends BaseService {
6164
6178
  * @param zoneId ID of the zone (optional - if not provided, returns all zones)
6165
6179
  * @returns Zone photos data
6166
6180
  */
6167
- getZonePhotos(appointmentId: string, zoneId?: string): Promise<Record<string, BeforeAfterPerZone> | BeforeAfterPerZone | null>;
6181
+ getZonePhotos(appointmentId: string, zoneId?: string): Promise<Record<string, BeforeAfterPerZone[]> | BeforeAfterPerZone[] | null>;
6168
6182
  /**
6169
- * Deletes a zone photo and updates appointment metadata
6183
+ * Deletes a zone photo entry (by index) and updates appointment metadata
6170
6184
  *
6171
6185
  * @param appointmentId ID of the appointment
6172
6186
  * @param zoneId ID of the zone
6173
- * @param photoType Type of photo to delete ('before' or 'after')
6187
+ * @param photoIndex Index of the photo entry to delete in the zone array
6174
6188
  * @returns The updated appointment
6175
6189
  */
6176
- deleteZonePhoto(appointmentId: string, zoneId: string, photoType: 'before' | 'after'): Promise<Appointment>;
6190
+ deleteZonePhoto(appointmentId: string, zoneId: string, photoIndex: number): Promise<Appointment>;
6177
6191
  /**
6178
6192
  * Adds an item (product or note) to a specific zone
6179
6193
  *
@@ -6263,6 +6277,92 @@ declare class AppointmentService extends BaseService {
6263
6277
  * @returns The updated appointment with recalculated billing
6264
6278
  */
6265
6279
  recalculateFinalBilling(appointmentId: string, taxRate?: number): Promise<Appointment>;
6280
+ /**
6281
+ * Adds a recommended procedure to an appointment
6282
+ * Multiple recommendations of the same procedure are allowed (e.g., touch-up in 2 weeks, full treatment in 3 months)
6283
+ *
6284
+ * @param appointmentId ID of the appointment
6285
+ * @param procedureId ID of the procedure to recommend
6286
+ * @param note Note explaining the recommendation
6287
+ * @param timeframe Suggested timeframe for the procedure
6288
+ * @returns The updated appointment
6289
+ */
6290
+ addRecommendedProcedure(appointmentId: string, procedureId: string, note: string, timeframe: {
6291
+ value: number;
6292
+ unit: 'day' | 'week' | 'month' | 'year';
6293
+ }): Promise<Appointment>;
6294
+ /**
6295
+ * Removes a recommended procedure from an appointment by index
6296
+ *
6297
+ * @param appointmentId ID of the appointment
6298
+ * @param recommendationIndex Index of the recommendation to remove
6299
+ * @returns The updated appointment
6300
+ */
6301
+ removeRecommendedProcedure(appointmentId: string, recommendationIndex: number): Promise<Appointment>;
6302
+ /**
6303
+ * Updates a recommended procedure in an appointment by index
6304
+ *
6305
+ * @param appointmentId ID of the appointment
6306
+ * @param recommendationIndex Index of the recommendation to update
6307
+ * @param updates Partial updates (note and/or timeframe)
6308
+ * @returns The updated appointment
6309
+ */
6310
+ updateRecommendedProcedure(appointmentId: string, recommendationIndex: number, updates: {
6311
+ note?: string;
6312
+ timeframe?: {
6313
+ value: number;
6314
+ unit: 'day' | 'week' | 'month' | 'year';
6315
+ };
6316
+ }): Promise<Appointment>;
6317
+ /**
6318
+ * Gets all recommended procedures for an appointment
6319
+ *
6320
+ * @param appointmentId ID of the appointment
6321
+ * @returns Array of recommended procedures
6322
+ */
6323
+ getRecommendedProcedures(appointmentId: string): Promise<RecommendedProcedure[]>;
6324
+ /**
6325
+ * Updates a specific photo entry in a zone by index
6326
+ * Can update before/after photos and their notes
6327
+ *
6328
+ * @param appointmentId ID of the appointment
6329
+ * @param zoneId Zone ID
6330
+ * @param photoIndex Index of the photo entry to update
6331
+ * @param updates Partial updates to apply (before, after, beforeNote, afterNote)
6332
+ * @returns The updated appointment
6333
+ */
6334
+ updateZonePhotoEntry(appointmentId: string, zoneId: string, photoIndex: number, updates: Partial<BeforeAfterPerZone>): Promise<Appointment>;
6335
+ /**
6336
+ * Adds an after photo to an existing before photo entry
6337
+ *
6338
+ * @param appointmentId ID of the appointment
6339
+ * @param zoneId Zone ID
6340
+ * @param photoIndex Index of the entry to add after photo to
6341
+ * @param afterPhotoUrl URL of the after photo
6342
+ * @param afterNote Optional note for the after photo
6343
+ * @returns The updated appointment
6344
+ */
6345
+ addAfterPhotoToEntry(appointmentId: string, zoneId: string, photoIndex: number, afterPhotoUrl: MediaResource, afterNote?: string): Promise<Appointment>;
6346
+ /**
6347
+ * Updates notes for a photo entry
6348
+ *
6349
+ * @param appointmentId ID of the appointment
6350
+ * @param zoneId Zone ID
6351
+ * @param photoIndex Index of the entry
6352
+ * @param beforeNote Optional note for before photo
6353
+ * @param afterNote Optional note for after photo
6354
+ * @returns The updated appointment
6355
+ */
6356
+ updateZonePhotoNotes(appointmentId: string, zoneId: string, photoIndex: number, beforeNote?: string, afterNote?: string): Promise<Appointment>;
6357
+ /**
6358
+ * Gets a specific photo entry from a zone
6359
+ *
6360
+ * @param appointmentId ID of the appointment
6361
+ * @param zoneId Zone ID
6362
+ * @param photoIndex Index of the entry
6363
+ * @returns Photo entry
6364
+ */
6365
+ getZonePhotoEntry(appointmentId: string, zoneId: string, photoIndex: number): Promise<BeforeAfterPerZone>;
6266
6366
  }
6267
6367
 
6268
6368
  declare class UserService extends BaseService {
@@ -7169,4 +7269,4 @@ declare const getFirebaseApp: () => Promise<FirebaseApp>;
7169
7269
  declare const getFirebaseStorage: () => Promise<FirebaseStorage>;
7170
7270
  declare const getFirebaseFunctions: () => Promise<Functions>;
7171
7271
 
7172
- export { AESTHETIC_ANALYSIS_COLLECTION, APPOINTMENTS_COLLECTION, type AddAllergyData, type AddBlockingConditionData, type AddContraindicationData, type AddMedicationData, type AddressData, type AdminInfo, type AdminToken, AdminTokenStatus, type AestheticAnalysis, type AestheticAnalysisStatus, type Allergy, type AllergySubtype, AllergyType, type AllergyTypeWithSubtype, type Appointment, type AppointmentCancelledNotification, type AppointmentMediaItem, type AppointmentMetadata, type AppointmentProductMetadata, type AppointmentReminderNotification, type AppointmentRescheduledProposalNotification, AppointmentService, AppointmentStatus, type AppointmentStatusChangeNotification, type AssessmentScales, AuthService, type BaseDocumentElement, type BaseNotification, BaseService, type BeforeAfterPerZone, type BillingInfo, type BillingPerZone, type BillingTransaction, BillingTransactionType, BillingTransactionsService, type BinaryChoiceElement, BlockingCondition, type Brand, BrandService, CALENDAR_COLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_GROUPS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarServiceV3, CalendarSyncStatus, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicBranchSetupData, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicService, ClinicTag, type ClinicTags, type ClinicalFindingDetail, type ClinicalFindings, ConstantsService, type ContactPerson, Contraindication, type ContraindicationDynamic, CosmeticAllergySubtype, type CreateAdminTokenData, type CreateAestheticAnalysisData, type CreateAppointmentData, type CreateAppointmentHttpData, type CreateAppointmentParams, type CreateBillingTransactionData, type CreateBlockingEventParams, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreateManualPatientData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePatientTokenData, type CreatePractitionerData, type CreatePractitionerInviteData, type CreatePractitionerTokenData, type CreateProcedureData, type CreateSyncedCalendarData, type CreateUserData, Currency, DEFAULT_MEDICAL_INFO, DOCTOR_FORMS_SUBCOLLECTION, DOCUMENTATION_TEMPLATES_COLLECTION, type DatePickerElement, type DateRange, type DigitalSignatureElement, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, type DynamicTextElement, DynamicVariable, type EmergencyContact, EnvironmentalAllergySubtype, type ExtendedProcedureInfo, ExternalCalendarService, FILLED_DOCUMENTS_COLLECTION, type FileUploadElement, type FilledDocument, type FilledDocumentFileValue, FilledDocumentService, FilledDocumentStatus, type FinalBilling, type FirebaseUser, FoodAllergySubtype, type FormReminderNotification, type FormSubmissionConfirmationNotification, type GamificationInfo, Gender, type GeneralMessageNotification, type HeadingElement, HeadingLevel, INVITE_TOKENS_COLLECTION, Language, type LinkedFormInfo, type ListElement, ListType, type LocationData, MEDIA_METADATA_COLLECTION, MediaAccessLevel, type MediaMetadata, type MediaResource, MediaService, MediaType, MedicationAllergySubtype, type MultipleChoiceElement, NOTIFICATIONS_COLLECTION, type Notification, NotificationService, NotificationStatus, NotificationType, PATIENTS_COLLECTION, PATIENT_APPOINTMENTS_COLLECTION, PATIENT_LOCATION_INFO_COLLECTION, PATIENT_MEDICAL_HISTORY_COLLECTION, PATIENT_MEDICAL_INFO_COLLECTION, PATIENT_REQUIREMENTS_SUBCOLLECTION_NAME, PATIENT_SENSITIVE_INFO_COLLECTION, PRACTITIONERS_COLLECTION, PRACTITIONER_INVITES_COLLECTION, PROCEDURES_COLLECTION, type ParagraphElement, type PatientClinic, type PatientDoctor, type PatientGoals, PatientInstructionStatus, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileForDoctor, type PatientProfileInfo, type PatientRequirementInstance, type PatientRequirementInstruction, PatientRequirementOverallStatus, type PatientRequirementsFilters, PatientRequirementsService, type PatientReviewInfo, type PatientSensitiveInfo, PatientService, type PatientToken, PatientTokenStatus, type PaymentConfirmationNotification, PaymentStatus, type PlanDetails, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerBasicInfo, type PractitionerCertification, type PractitionerClinicProcedures, type PractitionerClinicWorkingHours, type PractitionerInvite, type PractitionerInviteFilters, PractitionerInviteService, PractitionerInviteStatus, type PractitionerProfileInfo, type PractitionerReview, type PractitionerReviewInfo, PractitionerService, PractitionerStatus, type PractitionerToken, PractitionerTokenStatus, type PractitionerWorkingHours, type PreRequirementNotification, PricingMeasure, type Procedure, type ProcedureCategorization, type ProcedureExtendedInfo, ProcedureFamily, type ProcedureInfo, type ProcedureProduct, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type ProcedureSummaryInfo, type Product, ProductService, type ProposedWorkingHours, REGISTER_TOKENS_COLLECTION, REVIEWS_COLLECTION, type RatingScaleElement, type RequesterInfo, type Requirement, type RequirementInstructionDueNotification, RequirementType, type Review, type ReviewRequestNotification, ReviewService, SYNCED_CALENDARS_COLLECTION, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type SignatureElement, type SingleChoiceElement, type StripeTransactionData, type Subcategory, SubcategoryService, SubscriptionModel, SubscriptionStatus, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, type Technology, type TechnologyDocumentationTemplate, TechnologyService, type TextInputElement, type TimeSlot, TimeUnit, TreatmentBenefit, type TreatmentBenefitDynamic, USERS_COLLECTION, USER_FORMS_SUBCOLLECTION, type UpdateAestheticAnalysisData, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateBlockingEventParams, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdatePractitionerInviteData, type UpdateProcedureData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type VitalStats, type WorkingHours, type ZoneItemData, type ZonePhotoUploadData, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseFunctions, getFirebaseInstance, getFirebaseStorage, initializeFirebase };
7272
+ export { AESTHETIC_ANALYSIS_COLLECTION, APPOINTMENTS_COLLECTION, type AddAllergyData, type AddBlockingConditionData, type AddContraindicationData, type AddMedicationData, type AddressData, type AdminInfo, type AdminToken, AdminTokenStatus, type AestheticAnalysis, type AestheticAnalysisStatus, type Allergy, type AllergySubtype, AllergyType, type AllergyTypeWithSubtype, type Appointment, type AppointmentCancelledNotification, type AppointmentMediaItem, type AppointmentMetadata, type AppointmentProductMetadata, type AppointmentReminderNotification, type AppointmentRescheduledProposalNotification, AppointmentService, AppointmentStatus, type AppointmentStatusChangeNotification, type AssessmentScales, AuthService, type BaseDocumentElement, type BaseNotification, BaseService, type BeforeAfterPerZone, type BillingInfo, type BillingPerZone, type BillingTransaction, BillingTransactionType, BillingTransactionsService, type BinaryChoiceElement, BlockingCondition, type Brand, BrandService, CALENDAR_COLLECTION, CLINICS_COLLECTION, CLINIC_ADMINS_COLLECTION, CLINIC_GROUPS_COLLECTION, type CalendarEvent, CalendarEventStatus, type CalendarEventTime, CalendarEventType, CalendarServiceV2, CalendarServiceV3, CalendarSyncStatus, type Category, CategoryService, CertificationLevel, CertificationSpecialty, type Clinic, type ClinicAdmin, ClinicAdminService, type ClinicAdminSignupData, type ClinicBranchSetupData, type ClinicContactInfo, type ClinicGroup, ClinicGroupService, type ClinicGroupSetupData, type ClinicInfo, type ClinicLocation, ClinicPhotoTag, type ClinicReview, type ClinicReviewInfo, ClinicService, ClinicTag, type ClinicTags, type ClinicalFindingDetail, type ClinicalFindings, ConstantsService, type ContactPerson, Contraindication, type ContraindicationDynamic, CosmeticAllergySubtype, type CreateAdminTokenData, type CreateAestheticAnalysisData, type CreateAppointmentData, type CreateAppointmentHttpData, type CreateAppointmentParams, type CreateBillingTransactionData, type CreateBlockingEventParams, type CreateCalendarEventData, type CreateClinicAdminData, type CreateClinicData, type CreateClinicGroupData, type CreateDefaultClinicGroupData, type CreateDocumentTemplateData, type CreateDraftPractitionerData, type CreateManualPatientData, type CreatePatientLocationInfoData, type CreatePatientMedicalInfoData, type CreatePatientProfileData, type CreatePatientSensitiveInfoData, type CreatePatientTokenData, type CreatePractitionerData, type CreatePractitionerInviteData, type CreatePractitionerTokenData, type CreateProcedureData, type CreateSyncedCalendarData, type CreateUserData, Currency, DEFAULT_MEDICAL_INFO, DOCTOR_FORMS_SUBCOLLECTION, DOCUMENTATION_TEMPLATES_COLLECTION, type DatePickerElement, type DateRange, type DigitalSignatureElement, type DoctorInfo, type DocumentElement, DocumentElementType, type DocumentTemplate, DocumentationTemplateService, type DynamicTextElement, DynamicVariable, type EmergencyContact, EnvironmentalAllergySubtype, type ExtendedProcedureInfo, ExternalCalendarService, FILLED_DOCUMENTS_COLLECTION, type FileUploadElement, type FilledDocument, type FilledDocumentFileValue, FilledDocumentService, FilledDocumentStatus, type FinalBilling, type FirebaseUser, FoodAllergySubtype, type FormReminderNotification, type FormSubmissionConfirmationNotification, type GamificationInfo, Gender, type GeneralMessageNotification, type HeadingElement, HeadingLevel, INVITE_TOKENS_COLLECTION, Language, type LinkedFormInfo, type ListElement, ListType, type LocationData, MEDIA_METADATA_COLLECTION, MediaAccessLevel, type MediaMetadata, type MediaResource, MediaService, MediaType, MedicationAllergySubtype, type MultipleChoiceElement, NOTIFICATIONS_COLLECTION, type Notification, NotificationService, NotificationStatus, NotificationType, PATIENTS_COLLECTION, PATIENT_APPOINTMENTS_COLLECTION, PATIENT_LOCATION_INFO_COLLECTION, PATIENT_MEDICAL_HISTORY_COLLECTION, PATIENT_MEDICAL_INFO_COLLECTION, PATIENT_REQUIREMENTS_SUBCOLLECTION_NAME, PATIENT_SENSITIVE_INFO_COLLECTION, PRACTITIONERS_COLLECTION, PRACTITIONER_INVITES_COLLECTION, PROCEDURES_COLLECTION, type ParagraphElement, type PatientClinic, type PatientDoctor, type PatientGoals, PatientInstructionStatus, type PatientLocationInfo, type PatientMedicalInfo, type PatientProfile, type PatientProfileComplete, type PatientProfileForDoctor, type PatientProfileInfo, type PatientRequirementInstance, type PatientRequirementInstruction, PatientRequirementOverallStatus, type PatientRequirementsFilters, PatientRequirementsService, type PatientReviewInfo, type PatientSensitiveInfo, PatientService, type PatientToken, PatientTokenStatus, type PaymentConfirmationNotification, PaymentStatus, type PlanDetails, type PostRequirementNotification, PracticeType, type Practitioner, type PractitionerBasicInfo, type PractitionerCertification, type PractitionerClinicProcedures, type PractitionerClinicWorkingHours, type PractitionerInvite, type PractitionerInviteFilters, PractitionerInviteService, PractitionerInviteStatus, type PractitionerProfileInfo, type PractitionerReview, type PractitionerReviewInfo, PractitionerService, PractitionerStatus, type PractitionerToken, PractitionerTokenStatus, type PractitionerWorkingHours, type PreRequirementNotification, PricingMeasure, type Procedure, type ProcedureCategorization, type ProcedureExtendedInfo, ProcedureFamily, type ProcedureInfo, type ProcedureProduct, type ProcedureReview, type ProcedureReviewInfo, ProcedureService, type ProcedureSummaryInfo, type Product, ProductService, type ProposedWorkingHours, REGISTER_TOKENS_COLLECTION, REVIEWS_COLLECTION, type RatingScaleElement, type RecommendedProcedure, type RequesterInfo, type Requirement, type RequirementInstructionDueNotification, RequirementType, type Review, type ReviewRequestNotification, ReviewService, SYNCED_CALENDARS_COLLECTION, type SearchAppointmentsParams, type SearchCalendarEventsParams, SearchLocationEnum, type SearchPatientsParams, type SignatureElement, type SingleChoiceElement, type StripeTransactionData, type Subcategory, SubcategoryService, SubscriptionModel, SubscriptionStatus, type SyncedCalendar, type SyncedCalendarEvent, SyncedCalendarProvider, SyncedCalendarsService, type Technology, type TechnologyDocumentationTemplate, TechnologyService, type TextInputElement, type TimeSlot, TimeUnit, TreatmentBenefit, type TreatmentBenefitDynamic, USERS_COLLECTION, USER_FORMS_SUBCOLLECTION, type UpdateAestheticAnalysisData, type UpdateAllergyData, type UpdateAppointmentData, type UpdateAppointmentParams, type UpdateBlockingConditionData, type UpdateBlockingEventParams, type UpdateCalendarEventData, type UpdateClinicAdminData, type UpdateClinicData, type UpdateClinicGroupData, type UpdateContraindicationData, type UpdateDocumentTemplateData, type UpdateMedicationData, type UpdatePatientLocationInfoData, type UpdatePatientMedicalInfoData, type UpdatePatientProfileData, type UpdatePatientSensitiveInfoData, type UpdatePractitionerData, type UpdatePractitionerInviteData, type UpdateProcedureData, type UpdateSyncedCalendarData, type UpdateVitalStatsData, type User, UserRole, UserService, type VitalStats, type WorkingHours, type ZoneItemData, type ZonePhotoUploadData, getFirebaseApp, getFirebaseAuth, getFirebaseDB, getFirebaseFunctions, getFirebaseInstance, getFirebaseStorage, initializeFirebase };